diff --git a/.browserslistrc b/.browserslistrc index 4c86570bcd4..e94f8140cc0 100644 --- a/.browserslistrc +++ b/.browserslistrc @@ -1,5 +1 @@ -last 2 versions -Firefox ESR -not dead -not IE 11 -not ios 10 +defaults diff --git a/.changeset/config.json b/.changeset/config.json index 6f10a7e8aae..de004ceff83 100644 --- a/.changeset/config.json +++ b/.changeset/config.json @@ -11,7 +11,8 @@ "example-graphiql-webpack", "example-monaco-graphql-nextjs", "example-monaco-graphql-react-vite", - "example-monaco-graphql-webpack" + "example-monaco-graphql-webpack", + "graphiql-e2e" ], "updateInternalDependencies": "patch", "privatePackages": { diff --git a/.github/ISSUE_TEMPLATE/graphiql-feature.md b/.github/ISSUE_TEMPLATE/graphiql-feature.md index f9dc3092ce0..bc5a74a2ebb 100644 --- a/.github/ISSUE_TEMPLATE/graphiql-feature.md +++ b/.github/ISSUE_TEMPLATE/graphiql-feature.md @@ -20,11 +20,6 @@ labels: [graphiql, enhancement] api: https://graphiql-test.netlify.app/typedoc/modules/graphiql_react.html#graphiqlplugin-2 - examples: - - https://github.com/graphql/graphiql/tree/main/packages/graphiql-plugin-explorer - - In the event that the plugin API doesn't allow you to build a feature, it may be that expanding the plugin API *itself* is the best place for the feature to be introduced! diff --git a/.github/scripts/update-cdn-versions.mjs b/.github/scripts/update-cdn-versions.mjs index 667da65518b..b1ce56a034c 100644 --- a/.github/scripts/update-cdn-versions.mjs +++ b/.github/scripts/update-cdn-versions.mjs @@ -7,19 +7,25 @@ import fs from 'node:fs'; import path from 'node:path'; import crypto from 'node:crypto'; +import { parseArgs } from 'node:util'; + +const { values } = parseArgs({ + options: { + 'graphiql-tag': { type: 'string', default: 'latest' }, + }, +}); const PACKAGES = [ 'react', 'react-dom', 'graphiql', - '@graphiql/plugin-explorer', '@graphiql/react', '@graphiql/toolkit', 'graphql', ]; /** - * Given the name of an npm package, return a tuple of: [name, latest version] + * Given the name of an npm package, return a tuple of: [name, version at the selected tag] * * @example * @@ -27,7 +33,11 @@ const PACKAGES = [ * => ['left-pad', '1.0.1'] */ async function fetchLatestVersion(packageName) { - const url = `https://registry.npmjs.org/${packageName}/latest`; + const tag = + packageName === 'graphiql' || packageName.startsWith('@graphiql/') + ? values['graphiql-tag'] + : 'latest'; + const url = `https://registry.npmjs.org/${packageName}/${encodeURIComponent(tag)}`; const response = await fetch(url); if (!response.ok) { throw new Error(`Failed to fetch ${packageName}: ${response.statusText}`); @@ -60,6 +70,7 @@ async function main() { ); const cdnUrl = packageName => `https://esm.sh/${packageName}@${versions[packageName]}`; + const setupWorkers = `${cdnUrl('graphiql')}/setup-workers/esm.sh?deps=@graphiql/react@${versions['@graphiql/react']}`; // JS const imports = { @@ -69,7 +80,7 @@ async function main() { 'react-dom/': `${cdnUrl('react-dom')}/`, graphiql: `${cdnUrl('graphiql')}?standalone&external=react,react-dom,@graphiql/react,graphql`, 'graphiql/': `${cdnUrl('graphiql')}/`, - '@graphiql/plugin-explorer': `${cdnUrl('@graphiql/plugin-explorer')}?standalone&external=react,@graphiql/react,graphql`, + 'graphiql/setup-workers/esm.sh': setupWorkers, '@graphiql/react': `${cdnUrl('@graphiql/react')}?standalone&external=react,react-dom,graphql,@graphiql/toolkit,@emotion/is-prop-valid`, '@graphiql/toolkit': `${cdnUrl('@graphiql/toolkit')}?standalone&external=graphql`, graphql: cdnUrl('graphql'), @@ -82,8 +93,8 @@ async function main() { cdnUrl('react'), cdnUrl('react-dom'), cdnUrl('graphiql'), + setupWorkers, `${cdnUrl('graphiql')}?standalone&external=react,react-dom,@graphiql/react,graphql`, - cdnUrl('@graphiql/plugin-explorer'), `${cdnUrl('@graphiql/react')}?standalone&external=react,react-dom,graphql,@graphiql/toolkit,@emotion/is-prop-valid`, `${cdnUrl('@graphiql/toolkit')}?standalone&external=graphql`, cdnUrl('graphql'), @@ -96,10 +107,6 @@ async function main() { // CSS const graphiqlCss = `${cdnUrl('graphiql')}/dist/style.css`; const graphiqlCssHash = (await fetchIntegrityHash(graphiqlCss))[1]; - const graphiqlPluginExplorer = `${cdnUrl('@graphiql/plugin-explorer')}/dist/style.css`; - const graphiqlPluginExplorerHash = ( - await fetchIntegrityHash(graphiqlPluginExplorer) - )[1]; // Generate index.html const templatePath = path.join( @@ -119,11 +126,9 @@ async function main() { const output = template .replace('{{IMPORTMAP}}', importMap) .replace('{{GRAPHIQL_CSS_URL}}', graphiqlCss) - .replace('{{GRAPHIQL_CSS_INTEGRITY}}', graphiqlCssHash) - .replace('{{PLUGIN_EXPLORER_CSS_URL}}', graphiqlPluginExplorer) - .replace('{{PLUGIN_EXPLORER_CSS_INTEGRITY}}', graphiqlPluginExplorerHash); + .replace('{{GRAPHIQL_CSS_INTEGRITY}}', graphiqlCssHash); - console.log(output); + process.stdout.write(output); } main(); diff --git a/.github/workflows/pr-graphql-compat-check.yml b/.github/workflows/pr-graphql-compat-check.yml index 6c4cbea6bf1..859271bddc7 100644 --- a/.github/workflows/pr-graphql-compat-check.yml +++ b/.github/workflows/pr-graphql-compat-check.yml @@ -26,14 +26,14 @@ jobs: # test against the latest 16.x version, which might be newer than what we have - '^16' # test against the oldest version we support - - '^16.0.0' - # test against the latest alpha - - '^17.0.0-alpha' + - '16.11.0' + # test against the latest 17.x version + - '^17' steps: - name: Checkout Code uses: actions/checkout@v6 - - uses: pnpm/action-setup@v4 + - uses: pnpm/action-setup@v6 - uses: actions/setup-node@v6 with: node-version-file: '.node-version' @@ -44,6 +44,9 @@ jobs: path: node_modules key: node_modules-${{hashFiles('pnpm-lock.yaml')}} restore-keys: node_modules- + - name: Install dependencies + run: pnpm install --frozen-lockfile + - name: Force GraphQL ${{ matrix.release }} solution run: pnpm repo:resolve graphql@${{ matrix.release }} @@ -52,10 +55,21 @@ jobs: - name: Turbo cache uses: ./.github/actions/turbo-cache + - name: Build + run: pnpm build + - name: Unit Tests run: pnpm test - - name: Cypress - run: | - pnpm --filter graphiql exec cypress install - pnpm e2e + - name: Install Cypress + run: pnpm --filter graphiql-e2e exec cypress install + + - name: Cypress (GraphQL 16) + if: matrix.release != '^17' + env: + CYPRESS_excludeSpecPattern: cypress/e2e/incremental-delivery.cy.ts + run: pnpm e2e + + - name: Cypress (GraphQL 17) + if: matrix.release == '^17' + run: pnpm e2e diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index 6599be21e44..87d22c2297b 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -13,7 +13,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 - - uses: pnpm/action-setup@v4 + - uses: pnpm/action-setup@v6 - uses: actions/setup-node@v6 with: node-version-file: '.node-version' @@ -21,14 +21,14 @@ jobs: - run: pnpm install --frozen-lockfile - name: Turbo cache uses: ./.github/actions/turbo-cache - - run: pnpm build + - run: pnpm build --output-logs=new-only cspell: name: CSpell runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 - - uses: pnpm/action-setup@v4 + - uses: pnpm/action-setup@v6 - uses: actions/setup-node@v6 with: node-version-file: '.node-version' @@ -41,7 +41,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 - - uses: pnpm/action-setup@v4 + - uses: pnpm/action-setup@v6 - uses: actions/setup-node@v6 with: node-version-file: '.node-version' @@ -56,7 +56,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 - - uses: pnpm/action-setup@v4 + - uses: pnpm/action-setup@v6 - uses: actions/setup-node@v6 with: node-version-file: '.node-version' @@ -70,7 +70,7 @@ jobs: needs: [build] steps: - uses: actions/checkout@v6 - - uses: pnpm/action-setup@v4 + - uses: pnpm/action-setup@v6 - uses: actions/setup-node@v6 with: node-version-file: '.node-version' @@ -80,43 +80,39 @@ jobs: uses: ./.github/actions/turbo-cache with: restore-build: true - - run: pnpm test + - run: pnpm --filter @graphiql/react exec playwright install --with-deps chromium + - run: pnpm test --output-logs=new-only - graphql-17-fragment-arguments: - name: GraphQL 17 Fragment Arguments + graphql-16-compatibility: + name: GraphQL 16 Compatibility runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 - - uses: pnpm/action-setup@v4 + - uses: pnpm/action-setup@v6 - uses: actions/setup-node@v6 with: node-version-file: '.node-version' cache: pnpm - run: pnpm install --frozen-lockfile - - run: pnpm --filter graphql-language-service add --save-dev graphql@17.0.2 - - name: Build and typecheck graphql-language-service - run: pnpm --filter graphql-language-service exec tsc - - name: Test fragment argument integration - run: >- - pnpm exec vitest run packages/graphql-language-service/src/parser/__tests__/OnlineParser.test.ts packages/graphql-language-service/src/interface/__tests__/getAutocompleteSuggestions.test.ts packages/graphql-language-service/src/interface/__tests__/getDiagnostics.test.ts packages/graphql-language-service/src/interface/__tests__/getHoverInformation.test.ts + - run: pnpm repo:resolve graphql@16.14.2 + - run: pnpm install --no-frozen-lockfile + - name: Turbo cache + uses: ./.github/actions/turbo-cache + - run: pnpm build --output-logs=new-only + - run: pnpm --filter @graphiql/react exec playwright install --with-deps chromium + - run: pnpm test --output-logs=new-only lint: name: Lint runs-on: ubuntu-latest - needs: [build] steps: - uses: actions/checkout@v6 - - uses: pnpm/action-setup@v4 + - uses: pnpm/action-setup@v6 - uses: actions/setup-node@v6 with: node-version-file: '.node-version' cache: pnpm - run: pnpm install --frozen-lockfile - - name: Turbo cache - uses: ./.github/actions/turbo-cache - with: - restore-build: true - - run: pnpm build - run: pnpm oxlint types-check: @@ -125,7 +121,7 @@ jobs: needs: [build] steps: - uses: actions/checkout@v6 - - uses: pnpm/action-setup@v4 + - uses: pnpm/action-setup@v6 - uses: actions/setup-node@v6 with: node-version-file: '.node-version' @@ -135,7 +131,9 @@ jobs: uses: ./.github/actions/turbo-cache with: restore-build: true - - run: pnpm types:check + - run: | + pnpm exec turbo run types:check --output-logs=new-only + pnpm exec tsc --noEmit -p scripts/tsconfig.json e2e: name: Cypress @@ -143,7 +141,7 @@ jobs: needs: [build] steps: - uses: actions/checkout@v6 - - uses: pnpm/action-setup@v4 + - uses: pnpm/action-setup@v6 - uses: actions/setup-node@v6 with: node-version-file: '.node-version' @@ -153,29 +151,29 @@ jobs: uses: ./.github/actions/turbo-cache with: restore-build: true - - run: pnpm build + - run: pnpm build:graphiql --output-logs=new-only - uses: actions/cache@v5 with: path: | ~/.cache/Cypress key: cypress-${{ runner.os }}-${{ hashFiles('pnpm-lock.yaml') }} - - run: pnpm --filter graphiql exec cypress install + - run: pnpm --filter graphiql-e2e exec cypress install - name: Cypress run uses: cypress-io/github-action@v7 with: install: false - command: pnpm e2e + command: pnpm --filter graphiql-e2e e2e:built - uses: actions/upload-artifact@v7 if: failure() with: name: cypress-screenshots - path: packages/graphiql/cypress/screenshots + path: packages/graphiql-e2e/cypress/screenshots if-no-files-found: ignore - uses: actions/upload-artifact@v7 if: failure() with: name: cypress-videos - path: packages/graphiql/cypress/videos + path: packages/graphiql-e2e/cypress/videos if-no-files-found: ignore pkg-pr-new: @@ -184,7 +182,7 @@ jobs: needs: [build, lint, vitest, e2e] steps: - uses: actions/checkout@v6 - - uses: pnpm/action-setup@v4 + - uses: pnpm/action-setup@v6 - uses: actions/setup-node@v6 with: node-version-file: '.node-version' @@ -194,7 +192,7 @@ jobs: uses: ./.github/actions/turbo-cache with: restore-build: true - - run: pnpm build + - run: pnpm build --output-logs=new-only - run: pnpm dlx pkg-pr-new publish --comment=off './packages/*' license-check: @@ -202,7 +200,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 - - uses: pnpm/action-setup@v4 + - uses: pnpm/action-setup@v6 - uses: actions/setup-node@v6 with: node-version-file: '.node-version' diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 71cbc924bb6..7345066364c 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -5,6 +5,7 @@ on: branches: - main - release/* + - graphiql-6 concurrency: group: ${{ github.workflow }}-${{ github.ref }} @@ -41,7 +42,7 @@ jobs: with: fetch-depth: 0 - - uses: pnpm/action-setup@v4 + - uses: pnpm/action-setup@v6 - uses: actions/setup-node@v6 with: node-version-file: '.node-version' @@ -103,7 +104,7 @@ jobs: steps: - uses: actions/checkout@v5 - - uses: pnpm/action-setup@v4 + - uses: pnpm/action-setup@v6 - uses: actions/setup-node@v6 with: node-version-file: '.node-version' diff --git a/.gitignore b/.gitignore index 9921a85d6b2..63a73525778 100644 --- a/.gitignore +++ b/.gitignore @@ -41,13 +41,16 @@ packages/codemirror-graphql/*.d.ts packages/codemirror-graphql/*.map !packages/codemirror-graphql/*.config.js -packages/graphiql/cypress/screenshots/ -packages/graphiql/cypress/downloads/ -packages/graphiql/cypress/videos/ +packages/graphiql-e2e/cypress/screenshots/ +packages/graphiql-e2e/cypress/downloads/ +packages/graphiql-e2e/cypress/videos/ +packages/graphiql/index.html +packages/graphiql/e2e/ packages/graphiql/typedoc/ packages/graphiql/webpack/ packages/graphiql/monaco/ .react-router/ +storybook-static/ .claude diff --git a/DEVELOPMENT.md b/DEVELOPMENT.md index 80430c70bd1..0d58c359fbd 100644 --- a/DEVELOPMENT.md +++ b/DEVELOPMENT.md @@ -26,7 +26,7 @@ Build the repository's default package and example set: pnpm build ``` -Build GraphiQL and its dependencies: +Build GraphiQL, its dependencies, and the private end-to-end test application: ```sh pnpm build:graphiql @@ -54,7 +54,7 @@ Start GraphiQL and watch its dependencies: pnpm dev:graphiql ``` -Open the Vite URL printed in the terminal. The GraphQL test server runs on port 8080. Turbo rebuilds dependencies and restarts the application when their inputs change. Select only the application for `dev`; its build prerequisites include the required libraries, so separate library watchers aren't needed. +The private `graphiql-e2e` workspace serves GraphiQL from source. Open the Vite URL printed in the terminal. The GraphQL test server runs on port 8080. Turbo rebuilds dependencies and restarts the application when their inputs change. Select only the application for `dev`; its build prerequisites include the required libraries, so separate library watchers aren't needed. To develop the Vite example instead, run: @@ -109,7 +109,17 @@ Check types across the repository: pnpm types:check ``` -Use `pnpm lint` for lint, formatting, and spelling checks. Use `pnpm format` to apply formatting. To run GraphiQL's end-to-end tests against the compiled app, build it with `pnpm build:graphiql`, then run `CI=true pnpm e2e`. The `CI` setting makes the test server serve the built app on port 8080. +Use `pnpm lint` for lint, formatting, and spelling checks. Use `pnpm format` to apply formatting. + +Run GraphiQL's end-to-end tests against its built package: + +```sh +pnpm e2e +``` + +The command builds GraphiQL and the private `graphiql-e2e` application, then runs Cypress against the built app on port 8080. `pnpm e2e:built` is an alias. Use `pnpm e2e:source` to run the same suite against source, or `pnpm cypress-open` to open Cypress interactively. + +For the React, history plugin, and query builder stories, run `pnpm storybook`. Turbo builds the React package and its dependencies before starting Storybook, then rebuilds them when their inputs change. Use `pnpm build-storybook` to generate the static site in `packages/graphiql-react/storybook-static`. Changes to either plugin's story sources invalidate the static site and React's Storybook test cache. ## Clean and rebuild @@ -145,10 +155,10 @@ Build the VS Code extension bundles into their `out` directories: pnpm build-bundles ``` -Build and stage the registered webpack demos for the GraphiQL site: +Build and stage the local GraphiQL application and registered webpack demos for the GraphiQL site: ```sh pnpm build-demo ``` -Turbo builds each demo's dependencies first. Staging replaces the demo's directory under `packages/graphiql` on every run, including when the example build comes from cache. The CDN and CM6 example directories aren't registered workspaces and aren't included in this command. +Turbo builds each demo's dependencies first. The private `graphiql-e2e` workspace stages the local ESM application at `packages/graphiql/index.html` with assets in `packages/graphiql/e2e`. The webpack examples stage their own directories under `packages/graphiql`. Staging runs even when builds come from cache. The CDN and CM6 example directories aren't registered workspaces and aren't included in this command. diff --git a/babel.config.js b/babel.config.js index 9c5e9b20fe5..cfa2fb45f8c 100644 --- a/babel.config.js +++ b/babel.config.js @@ -27,10 +27,10 @@ module.exports = { }, }, plugins: [ - require.resolve('@babel/plugin-proposal-class-properties'), + require.resolve('@babel/plugin-transform-class-properties'), - require.resolve('@babel/plugin-proposal-nullish-coalescing-operator'), - require.resolve('@babel/plugin-proposal-optional-chaining'), + require.resolve('@babel/plugin-transform-nullish-coalescing-operator'), + require.resolve('@babel/plugin-transform-optional-chaining'), require.resolve('@babel/plugin-transform-private-methods'), ['babel-plugin-transform-import-meta', { module: 'ES6' }], ], diff --git a/docs/migration/graphiql-6.0.0.md b/docs/migration/graphiql-6.0.0.md new file mode 100644 index 00000000000..ca8d29f5d8c --- /dev/null +++ b/docs/migration/graphiql-6.0.0.md @@ -0,0 +1,909 @@ +# Upgrading `graphiql` to `6.0.0` + +GraphiQL 6 ships with a complete visual overhaul, new first-party features and APIs, and removals of deprecated APIs. This guide explains what changed and how to update your integration. If you run into an issue that this guide doesn't cover, [open an issue](https://github.com/graphql/graphiql/issues/new). + +## Contents + +1. [Overview](#overview) +2. [CSS and retheming](#css-and-retheming) +3. [New first-party plugins](#new-first-party-plugins) +4. [New `transport` API](#new-transport-api) +5. [Theme, density, and font-size settings](#theme-density-and-font-size-settings) +6. [Monaco Editor 0.56 and 0.57 worker setup](#monaco-editor-056-and-057-worker-setup) +7. [GraphQL.js minimum version](#graphqljs-minimum-version) +8. [`@graphiql/plugin-explorer` removal](#graphiqlplugin-explorer-removal) +9. [Removed hooks](#removed-hooks) +10. [Removed `operationName` prop](#removed-operationname-prop) +11. [Removed `GraphiQL.Toolbar` and `GraphiQL.Logo`](#removed-graphiqltoolbar-and-graphiqllogo) +12. [Deprecated APIs](#deprecated-apis) +13. [Other notes](#other-notes) +14. [Other new features](#other-new-features) + +## Overview + +GraphiQL 6 introduces an OKLCH-based design-token system and redesigns the app shell and component library. If your integration or plugin uses the v5 `--color-*` variables, follow [CSS and retheming](#css-and-retheming) to migrate your styles. Integrations and plugins that don't customize GraphiQL's CSS don't need styling changes. + +Two new first-party plugins are installed by default: a visual query builder and operation collections. The query builder replaces `@graphiql/plugin-explorer`, which is removed in v6. + +The new `Transport` API exposes HTTP status, headers, timing, and request and response sizes to GraphiQL. The existing `Fetcher` API still works, but it is deprecated in favor of `Transport`. + +Other breaking changes include: + +- The hooks deprecated in v5, including `useEditorContext` and `usePluginContext`, are removed. Use the new store selectors and actions instead. +- The `GraphiQL.Toolbar` and `GraphiQL.Logo` children are removed. Use plugin `sessionActions` and the top bar's `brand` prop instead. +- `GraphiQLProps` is now a union that accepts either `fetcher` or `transport`, but not both. If your wrapper uses `interface AppProps extends GraphiQLProps`, switch to a type intersection such as `type AppProps = GraphiQLProps & { applicationName: string }`, even if you keep using `fetcher`. +- The `operationName` prop is removed from `` and ``. Requests use the operation selected in the active tab. +- Applications that configure Monaco workers directly must update to Monaco's exported worker entry points. +- The `graphql` peer dependency now requires `^16.11.0 || ^17.0.0`. + +## CSS and retheming + +If your application already imports `graphiql/style.css` and doesn't override it, no styling migration is required. + +These examples assume your application imports GraphiQL's aggregate stylesheet once at its entry point: + +```tsx +import 'graphiql/style.css'; +``` + +This stylesheet includes `@graphiql/react` and all default first-party plugin styles. Don't import those plugin styles separately unless you assemble an interface without the `graphiql` meta-package. + +If you retheme GraphiQL with CSS custom properties, v6 adds a second token system and deprecates the old one. It does not replace the old variables with new values under the same names. + +The v5 variables (`--color-primary`, `--color-neutral`, `--color-base`, and others) remain defined under `.graphiql-container` at their v5 values. They contain `h, s%, l%` triplets for use with `hsl(var(--x))`. Your custom CSS can keep reading these variables, but no v6 component uses them. All restyled surfaces use the new OKLCH tokens in `tokens.css`. + +Practically, that means: + +- **Overriding a `--color-*` variable no longer re-themes GraphiQL's built-in UI.** The variables still resolve, so custom CSS of your own that reads them won't break, but because no component reads them, setting `--color-primary` or `--color-neutral` has no effect on the redesigned surfaces. To retheme v6, set the OKLCH tokens instead. +- **There is no automatic conversion** between the two systems and no compatibility shim. The formats differ: v5 represents a color as `h, s%, l%` for `hsl()`, while v6 uses `L% C H` for `oklch()`. An old variable therefore can't simply alias a new one. See [Migrating `--color-*` overrides](#migrating---color--overrides) below. + +### The new variable names + +The new tokens are stored as `L% C H` component triplets (lightness percent, chroma, hue), consumed via `oklch(var(--x))`, so you can layer opacity at the call site with `oklch(var(--fg-default) / 0.6)` instead of needing a separate alpha variable per color. They're scoped to `[data-theme='dark']` and `[data-theme='light']` rather than a media query, so a value applies regardless of which theme is active. The full set, defined in `tokens.css`: + +- **Backgrounds:** `--bg-canvas`, `--bg-elevated`, `--bg-subtle`, `--bg-overlay` +- **Borders:** `--border-default`, `--border-muted`, `--border-strong` +- **Foreground:** `--fg-default`, `--fg-strong`, `--fg-muted`, `--fg-subtle`, `--fg-disabled`, `--fg-dim` +- **Accents:** `--accent-blue`, `--accent-green`, `--accent-green-light`, `--accent-yellow`, `--accent-orange`, `--accent-red`, `--accent-purple`, `--accent-pink` +- **Type-name categories:** `--type-composite`, `--type-scalar`, `--type-enum`, `--type-input` +- **Run button:** `--btn-primary`, `--btn-primary-border` +- **Radii:** `--radius-sm`, `--radius-md`, `--radius-lg` +- **Shadow:** `--shadow-popover` + +The nine v5 `--color-*` names don't have a published 1:1 mapping to the new palette. Some v5 roles split into several v6 tokens. For example, one `--color-base` background becomes `--bg-canvas`, `--bg-elevated`, `--bg-subtle`, and `--bg-overlay`. v6 also introduces categories that v5 didn't have, including a three-step border scale and separate `--fg-disabled` and `--fg-dim` values. If you have a bespoke theme, map your brand colors to the new tokens instead of treating the migration as a mechanical find-and-replace. + +Both token sets are documented in the [`@graphiql/react` README](../../packages/graphiql-react/README.md#theming); [`tokens.css`](../../packages/graphiql-react/src/style/tokens.css) remains the canonical source for exact values. + +### Migrating `--color-*` overrides + +A single v5 variable often maps to several v6 tokens, depending on the surface. Use this table as a starting point for mapping GraphiQL's old internal variables to the new tokens: + +| v5 variable | Role | v6 token(s) GraphiQL now uses | +| ------------------------------------------------------- | --------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `--color-base` | Surfaces / backgrounds | `--bg-canvas` (page), `--bg-elevated` (menus/popovers), `--bg-subtle` (inputs, resting fills), `--bg-overlay` (hover) | +| `--color-neutral` | Body text, icons, borders, subtle fills | Text: `--fg-default` (default), `--fg-muted` (secondary), `--fg-subtle` (icons); borders: `--border-default`, `--border-strong`; translucent fills: `oklch(var(--fg-default) / )` | +| `--color-primary` | Links, primary accent | `--accent-blue` (links, accent text/icons); `--btn-primary` + `--btn-primary-border` (filled action buttons) | +| `--color-warning` | Deprecation / warning | `--accent-orange` (text/border; `oklch(var(--accent-orange) / 0.1)` for fills) | +| `--color-error` | Errors | `--accent-red` | +| `--color-success` | Success | `--accent-green` | +| `--color-secondary`, `--color-tertiary`, `--color-info` | Secondary accents, editor syntax | The `--accent-*` set in `tokens.css`; editor syntax colors are defined in the Monaco theme, not via CSS variables | + +Remember these are OKLCH triplets composed with `oklch(var(--x))` (and `oklch(var(--x) / )` for transparency), not `hsl()`/`hsla()`. + +### Type-name colors + +In schema-aware plugins such as the doc explorer and query builder, type-name references are colored by their GraphQL kind. This makes field lists easier to scan because leaf types stand out from the objects you can open. + +| Kind | Token | Default | +| ------------------------ | ------------------ | ------- | +| object, interface, union | `--type-composite` | orange | +| scalar | `--type-scalar` | blue | +| enum | `--type-enum` | green | +| input object | `--type-input` | gold | + +These four `--type-*` tokens are the supported surface for retheming type-name colors. By default each aliases an accent token (`--type-scalar` resolves to `--accent-blue`, and so on), so you can retint either the accent or the `--type-*` token directly: + +```css +[data-theme='dark'] { + --type-scalar: 75% 0.15 200; /* recolor scalar type names */ +} +``` + +If you're building your own plugin that renders type names and want it to match, `@graphiql/react` exports a `typeCategory(type)` helper that maps any GraphQL type to `'scalar' | 'enum' | 'input' | 'composite'` (unwrapping list and non-null wrappers). Apply the corresponding `--type-*` token to your markup; the attribute and class names GraphiQL uses internally are not part of the public API. + +The Monaco query editor is not schema-aware, so it can't tell a scalar from an object by name alone. Type names in the query text therefore keep a single color. This categorization applies only to the schema-driven plugin interfaces. + +### Retheming example + +To retint the accent color and canvas background for dark mode: + +```css +[data-theme='dark'] { + --accent-blue: 70% 0.16 250; /* brighter primary accent */ + --bg-canvas: 12% 0.02 260; /* darker canvas */ +} +``` + +Load your custom stylesheet after `graphiql/style.css`. The `[data-theme='dark']` selector has the same specificity as the built-in token selector, so the later declaration wins. If you can't control stylesheet order, use a more specific selector targeting your GraphiQL container. + +### Theme is now an attribute, not just a class + +v5 toggled `body.graphiql-light` / `body.graphiql-dark` classes and used a `prefers-color-scheme` media query. v6 applies the new token cascade through `data-theme="light"` / `data-theme="dark"` instead. The old `body.graphiql-*` classes remain available for backwards compatibility, so CSS that uses them still works. If your JavaScript reads the theme from `document.body.classList`, consider using `useGraphiQLSettings()` (see [Theme, density, and font-size settings](#theme-density-and-font-size-settings)) or reading the `data-theme` attribute directly. + +## New first-party plugins + +Two new plugins ship in v6 and are **installed by default** in the `graphiql` meta-package: a visual query builder and operation collections. Most integrations don't need to configure `plugins`. If you pass your own array, it replaces the default set entirely; use the exported `DEFAULT_PLUGINS` array as the starting point when you need to add, remove, or configure plugins. + +### `@graphiql/plugin-query-builder` + +The query builder is a schema-driven alternative to writing operations by hand. Select fields from a collapsible tree to add them to the current operation, or clear them to remove them. You can also provide field arguments, promote scalar arguments to variables, create named fragments, and select type conditions for unions and interfaces. This resolves the long-standing [#734](https://github.com/graphql/graphiql/issues/734). + +It is available without configuration when you omit the `plugins` prop: + +```tsx +import { GraphiQL } from 'graphiql'; + +; +``` + +### `@graphiql/plugin-collections` + +Save named operations into folder collections and reuse them later: a collapsible tree UI with inline rename, drag-and-drop (or keyboard) reordering, JSON import/export that merges by stable id instead of duplicating, and clipboard copy/share for individual operations or whole collections. Saving is wired to `Cmd`/`Ctrl`+`S` and the tab-strip Save button. + +It is also available without configuration. Use `collectionsPlugin(options)` when you need a custom storage backend or want to restrict write, import, export, or replace operations. Replace the default plugin rather than registering both: + +```tsx +import { COLLECTIONS_PLUGIN, DEFAULT_PLUGINS, GraphiQL } from 'graphiql'; +import { collectionsPlugin } from '@graphiql/plugin-collections'; + +const configuredCollections = collectionsPlugin({ readOnly: true }); +const plugins = DEFAULT_PLUGINS.map(plugin => + plugin === COLLECTIONS_PLUGIN ? configuredCollections : plugin, +); + +; +``` + +Declare `@graphiql/plugin-collections` as a direct dependency when importing its factory. See the [package README](../../packages/graphiql-plugin-collections/README.md) for the full option list and the import and merge behavior. + +#### Saving with your own plugin + +The Save button and `Cmd`/`Ctrl`+`S` call the handler registered with `useGraphiQLActions().registerSaveHandler`. A plugin can register that handler from its `sessionActions` component, which stays mounted even when its panel is hidden. Only one handler can be registered. Collections registers one by default, so omit `COLLECTIONS_PLUGIN` when adding a plugin that owns Save: + +```tsx +import { useEffect } from 'react'; +import { useGraphiQLActions, type GraphiQLPlugin } from '@graphiql/react'; +import { COLLECTIONS_PLUGIN, DEFAULT_PLUGINS, GraphiQL } from 'graphiql'; + +function RegisterSave() { + const { registerSaveHandler } = useGraphiQLActions(); + + useEffect( + () => + registerSaveHandler(async tab => { + const response = await fetch('/api/operations', { + method: 'PUT', + headers: { 'content-type': 'application/json' }, + body: JSON.stringify({ + id: tab.id, + query: tab.query, + variables: tab.variables, + headers: tab.headers, + }), + }); + if (!response.ok) { + throw new Error(`Save failed (${response.status})`); + } + return true; + }), + [registerSaveHandler], + ); + + return null; +} + +const customSavePlugin: GraphiQLPlugin = { + title: 'Saved operations', + icon: () => , + content: () =>

Operations are saved to this application's server.

, + sessionActions: RegisterSave, +}; + +const plugins = [ + ...DEFAULT_PLUGINS.filter(plugin => plugin !== COLLECTIONS_PLUGIN), + customSavePlugin, +]; + +; +``` + +A handler receives the tab and editor contents captured when Save was invoked and returns a `Promise`. Resolve to `true` after the write commits, or `false` when the user cancels. Reject on failure; GraphiQL shows the error and leaves the tab unsaved. A dialog can return a promise that settles when the user saves or cancels. The tab's saved marker tracks the submitted query snapshot, so edits made while a save is pending remain dirty. Saves requested again for the same tab run in order. The dirty indicator compares query text; variables and headers are included in the handler input but do not independently change that indicator. If a save must reach several backends, coordinate those writes in one handler and return success only when your chosen commit policy is met. + +If you want Collections to remain the save owner with a different persistence backend, use `collectionsPlugin({ storage })`. The adapter's `save(collections)` promise must resolve after its write commits and reject on failure. See [custom storage](../../packages/graphiql-plugin-collections/README.md#custom-storage) for the complete adapter shape and setup. + +### Opting out + +Both plugins are part of `DEFAULT_PLUGINS`, alongside History. Filter the defaults to drop one or both: + +```tsx +import { + COLLECTIONS_PLUGIN, + DEFAULT_PLUGINS, + GraphiQL, + QUERY_BUILDER_PLUGIN, +} from 'graphiql'; + +const plugins = DEFAULT_PLUGINS.filter( + plugin => plugin !== QUERY_BUILDER_PLUGIN && plugin !== COLLECTIONS_PLUGIN, +); + +// History only: no query builder or collections. +; +``` + +`DEFAULT_PLUGINS` is immutable. Create a new array with `filter`, `map`, or spread syntax rather than mutating it, and define that array outside render to keep its identity stable. + +## New `transport` API + +`@graphiql/toolkit` introduces `createTransport`, which creates a `Transport` that exposes the HTTP status, headers, response body, timing, and request and response byte sizes. The `` component accepts it through the new `transport` prop. The existing `fetcher` prop remains functional, but it is deprecated in favor of `transport`. + +### `createGraphiQLFetcher` → `createTransport` + +To migrate from `createGraphiQLFetcher` to `createTransport`: + +1. Replace the `createGraphiQLFetcher` import and call with `createTransport`. +2. Keep the shared HTTP options, such as `url`, `headers`, and `fetch`. +3. For subscriptions, create a `graphql-ws` v6 or `graphql-sse` client and pass it as `subscriptionClient`. The client must expose `iterate(request)`. The `subscriptionUrl`, `wsClient`, `legacyWsClient`, and `wsConnectionParams` options are not available on `createTransport`. + +If you continue using `createGraphiQLFetcher` for now, replace the removed `legacyClient` option with `legacyWsClient`. + +**Before:** + +```ts +import { createGraphiQLFetcher } from '@graphiql/toolkit'; + +const fetcher = createGraphiQLFetcher({ + url: 'https://my.endpoint/graphql', + subscriptionUrl: 'wss://my.endpoint/graphql', +}); +``` + +**After (WebSocket subscriptions):** + +```ts +import { createClient } from 'graphql-ws'; +import { createTransport } from '@graphiql/toolkit'; + +const transport = createTransport({ + url: 'https://my.endpoint/graphql', + subscriptionClient: createClient({ url: 'wss://my.endpoint/graphql' }), +}); +``` + +**After (SSE subscriptions):** + +`graphql-sse`'s `createClient()` exposes the same `iterate()` method as `graphql-ws`, so the same option drives either protocol: + +```ts +import { createClient } from 'graphql-sse'; +import { createTransport } from '@graphiql/toolkit'; + +const transport = createTransport({ + url: 'https://my.endpoint/graphql', + subscriptionClient: createClient({ + url: 'https://my.endpoint/graphql/stream', + }), +}); +``` + +If you only run queries and mutations, leave `subscriptionClient` off. A subscription dispatched without it throws with a pointer back to this page. + +Older `graphql-ws` clients without `iterate()` remain supported by the deprecated `createGraphiQLFetcher` API, but they don't satisfy the new `Transport` subscription contract. + +### `` → `` + +**Before:** + +```tsx +import { createGraphiQLFetcher } from '@graphiql/toolkit'; +import { GraphiQL } from 'graphiql'; + +const fetcher = createGraphiQLFetcher({ url: 'https://my.endpoint/graphql' }); + +function App() { + return ; +} +``` + +**After:** + +```tsx +import { createTransport } from '@graphiql/toolkit'; +import { GraphiQL } from 'graphiql'; + +const transport = createTransport({ url: 'https://my.endpoint/graphql' }); + +function App() { + return ; +} +``` + +### `Transport` benefits + +With a `Transport`, the response pane header shows the HTTP status code, elapsed time, and response byte size. `TransportResponse` also exposes request bytes and HTTP response headers for your integration to use. The standard GraphiQL UI does not display those fields or provide a response-details panel. + +The `Fetcher` contract returns only the parsed GraphQL result, so GraphiQL can't show this HTTP metadata when you use `fetcher`. + +### Plugin transport hooks + +Plugins can use `useGraphiQLPluginContext().transport` to register hooks when the host passes a `transport` prop. The `transport` field is absent when the host uses the legacy `fetcher` prop. For a request header that remains active even when the plugin pane is closed, register the hook from the plugin's `sessionActions` component: + +```tsx +import { useEffect } from 'react'; +import { useGraphiQLPluginContext } from '@graphiql/react'; + +function RequestHeaderHook() { + const { transport } = useGraphiQLPluginContext(); + + useEffect(() => { + if (!transport) { + return; + } + return transport.onBeforeSend(request => ({ + ...request, + headers: { ...request.headers, 'X-GraphiQL-Plugin': 'example' }, + })); + }, [transport]); + + return null; +} +``` + +Set `sessionActions: RequestHeaderHook` on your `GraphiQLPlugin`. `onBeforeSend` must return the request, with any changes, and can do so asynchronously. Each registration returns a cleanup function; returning it from the effect removes the hook when the component unmounts or its context changes. + +Use `onResponse(response => { ... })` to observe each `TransportResponse`, including HTTP or GraphQL error results and each streamed chunk. Use `onError((error, request) => { ... })` for a rejected request or stream, such as a network failure or a thrown `onBeforeSend` hook. A resolved error response goes to `onResponse`, not `onError`. The `onResponse` and `onError` hooks are for observation only; exceptions they throw are logged and do not replace the response or original error. + +### Request methods + +`createTransport` automatically selects the first supported method in this order for queries: + +1. [`QUERY`](https://www.rfc-editor.org/rfc/rfc10008.html) sends a JSON request body and is defined as safe and idempotent. +2. `POST` sends a JSON request body. +3. `GET` sends the query, operation name, variables, and extensions in the URL without a request body. + +Before its first HTTP operation, including introspection, the transport discovers available methods with an `OPTIONS` request without a body. It reads the endpoint's `Allow` header using the effective request headers, including changes made by `onBeforeSend` hooks. Concurrent operations share discovery; changing the headers triggers it again. If you supply a schema, discovery waits until you execute an HTTP operation. + +If discovery fails, exceeds two seconds, or returns no usable `Allow` header, the transport falls back to POST (or the configured `method` override). A valid advertisement containing no usable methods blocks HTTP requests. Discovery does not automatically retry operations or negotiate QUERY request formats through `Accept-Query`. + +For cross-origin discovery, the server must permit OPTIONS and expose `Allow` with `Access-Control-Expose-Headers: Allow`. Browser preflight and its `Access-Control-Allow-Methods` header do not replace endpoint discovery. + +Use `method` to override the automatic query method for testing. The override fails if discovery says the method is unavailable. To skip discovery, also pass a nonempty `supportedMethods` array listing the endpoint's capabilities: + +```ts +const transport = createTransport({ + url: 'https://my.endpoint/graphql', + method: 'GET', + supportedMethods: ['GET', 'POST'], +}); + +transport.setMethod?.('POST'); // Override subsequent queries. +transport.setMethod?.(); // Restore automatic selection (POST for this endpoint). +``` + +This example sends queries through GET and mutations through POST. Omitting `method` would prefer POST over GET. If discovery is unavailable with `method: 'GET'` and no explicit capabilities, only GET is assumed available; configure `supportedMethods: ['GET', 'POST']` when both methods are known to work. + +Mutations always require POST. If POST is unavailable, the transport rejects the mutation without sending it. Operations whose type cannot be determined also require POST. Discovery uses the current request headers before making this decision. + +`Transport.method` reflects the effective query method, which can differ from the method used for a mutation. Use `TransportResponse.method` to read the actual HTTP method for an execution. This field is optional and is omitted for WebSocket events or custom transports that cannot report it. GraphiQL delegates HTTP method policy to the transport; custom transports must also keep mutations off GET and QUERY. + +### Custom transports (FAQ) + +If you hand-rolled a `Fetcher` rather than using `createGraphiQLFetcher`, migrate by implementing the `Transport` interface directly. A `Transport` declares its endpoint `url`, effective query `method`, `supportedMethods`, and a `send(request)` method. For queries and mutations it returns a `Promise`; for subscriptions and incremental delivery it returns an `AsyncIterable`, one entry per event or chunk. + +Include the actual HTTP method in each `TransportResponse.method` when your transport can observe it. Custom transports own capability discovery and method routing. + +To support method selection, implement the optional `setMethod(method?)` API. Calling it without an argument restores automatic selection. Expose the optional `methodOverride` property to distinguish an explicit query preference from Auto: `undefined` means Auto when the property is present; omitting the property means the policy is not observable. + +Implement the optional `subscribe(listener)` API to notify GraphiQL when the preference or supported methods change, and return an unsubscribe function. GraphiQL rereads `method`, `methodOverride`, and `supportedMethods` after each notification. This observes transport state, independently of GraphQL subscriptions and the plugin request lifecycle hooks. `createTransport` implements these APIs. Custom transports that omit them remain supported, but external state changes do not automatically refresh the method selector. + +**Before (custom fetcher):** + +```ts +import type { Fetcher } from '@graphiql/toolkit'; + +const fetcher: Fetcher = async params => { + const res = await fetch('/graphql', { + method: 'POST', + headers: { 'content-type': 'application/json' }, + body: JSON.stringify(params), + }); + return res.json(); +}; +``` + +**After (custom transport):** + +```ts +import type { Transport } from '@graphiql/toolkit'; +import { GraphQLError } from 'graphql'; +import type { ExecutionResult } from 'graphql'; + +const transport: Transport = { + url: '/graphql', + method: 'POST', + supportedMethods: ['POST'], + async send(request) { + const startMs = performance.now(); + const requestBody = JSON.stringify({ + query: request.query, + operationName: request.operationName, + variables: request.variables, + extensions: request.extensions, + }); + const response = await fetch('/graphql', { + method: 'POST', + headers: { 'content-type': 'application/json', ...request.headers }, + body: requestBody, + signal: request.signal, + }); + const responseText = await response.text(); + let body: ExecutionResult; + try { + body = JSON.parse(responseText) as ExecutionResult; + } catch { + body = { + errors: [ + new GraphQLError( + `HTTP ${response.status}: The response was not valid JSON.`, + ), + ], + }; + } + const headers: Record = {}; + response.headers.forEach((value, key) => { + headers[key] = value; + }); + return { + ok: response.ok && !body.errors?.length, + method: 'POST', + status: response.status, + statusText: response.statusText, + headers, + body, + timing: { totalMs: performance.now() - startMs }, + size: { + request: new TextEncoder().encode(requestBody).length, + response: new TextEncoder().encode(responseText).length, + }, + }; + }, +}; +``` + +The fallback error is created by the client when the HTTP response is not JSON; it is not a GraphQL error returned by the server. This lets `send()` retain the actual HTTP status, headers, timing, and response size. Network failures and aborted requests still reject. + +### CDN usage + +Use the [CDN example](../../examples/graphiql-cdn) as a starting point. To add subscriptions, map `graphql-ws` in its import map and pass a subscription client to the transport: + +```html + +``` + +## Theme, density, and font-size settings + +v6 adds a settings dialog (the gear icon in the activity rail) with controls for theme, density, and font size. The new `useGraphiQLSettings()` hook in `@graphiql/react` exposes the active values and setters. GraphiQL saves these settings to `localStorage` and reflects them as `data-*` attributes on its container. Custom integrations can use those attributes to adjust their own spacing, typography, or colors when a user changes a setting. + +These preferences use the `graphiql:settings` key in `localStorage`, shared by GraphiQL instances on the same origin. They aren't scoped to individual instances and don't use GraphiQL's `storage` prop. Providing a custom storage adapter therefore doesn't change where these preferences are saved. + +```ts +import { useGraphiQLSettings } from '@graphiql/react'; + +const { + theme, + resolvedTheme, + density, + fontSize, + setTheme, + setDensity, + setFontSize, +} = useGraphiQLSettings(); +``` + +| Setting | Values | Default | +| ---------- | ------------------------------------------------- | --------------- | +| `theme` | `'auto'` \| `'light'` \| `'dark'` | `'auto'` | +| `density` | `'compact'` \| `'comfortable'` \| `'spacious'` | `'comfortable'` | +| `fontSize` | `'compact'` \| `'default'` \| `'large'` \| `'xl'` | `'default'` | + +`'auto'` theme follows `prefers-color-scheme` and updates live if the OS setting changes while GraphiQL is open. +`resolvedTheme` is always `'light'` or `'dark'` and updates when either the saved theme or the OS preference changes. Use it when rendering JavaScript-driven UI such as charts. The `theme` field retains the user's `'auto'` selection. + +### CSS attribute selectors + +Each setting is reflected as an attribute (`data-theme`, `data-density`, `data-font-size`) on the container, with `tokens.css` defining the values each preset resolves to (see [CSS and retheming](#css-and-retheming) for the color tokens; density and font-size presets fill in things like `--row-padding-y`, `--top-bar-height`, and `--font-size-body`). If you write custom CSS that needs to vary by density or font size, target the same attributes: + +```css +[data-density='compact'] .my-custom-toolbar { + padding-block: 2px; +} +``` + +## Monaco Editor 0.56 and 0.57 worker setup + +GraphiQL 6 supports Monaco Editor 0.56 and 0.57, and installs 0.57 by default. This also moves `monaco-graphql` to its next major version because Monaco changed its worker API and replaced the legacy `monaco-editor/esm/vs/*` deep imports with exported entry points. + +If you use one of GraphiQL's worker setup helpers, keep the same import. The helpers now load the Monaco 0.57 worker entry points for you: + +```ts +import 'graphiql/setup-workers/vite'; +// or: graphiql/setup-workers/webpack +// or: graphiql/setup-workers/esm.sh +``` + +If your application installs or configures Monaco directly, make these changes: + +1. Upgrade `monaco-editor` to `0.57.x`, or remain on `0.56.x` if needed. `monaco-graphql@2` accepts `>=0.56.0 <0.58.0`. +2. Replace `monaco-editor/esm/vs/*` imports with Monaco's exported entry points. For example, import the editor worker from `monaco-editor/editor/editor.worker` and the JSON worker from `monaco-editor/languages/features/json/json.worker`. +3. Configure `globalThis.MonacoEnvironment.getWorker` to return the GraphQL worker for the `graphql` label. Returning a URL from `getWorkerUrl` is not sufficient for the new worker contract. + +```ts +import EditorWorker from 'monaco-editor/editor/editor.worker.js?worker'; +import JsonWorker from 'monaco-editor/languages/features/json/json.worker.js?worker'; +import GraphQLWorker from 'monaco-graphql/esm/graphql.worker.js?worker'; + +globalThis.MonacoEnvironment = { + getWorker(_workerId: string, label: string) { + if (label === 'json') { + return new JsonWorker(); + } + if (label === 'graphql') { + return new GraphQLWorker(); + } + return new EditorWorker(); + }, +}; +``` + +### Vite development and production + +The explicit Vite worker factories above don't require dependency optimization. If you use `graphiql/setup-workers/vite` instead, exclude its two setup modules from pre-bundling: + +```js +import { defineConfig } from 'vite'; +import react from '@vitejs/plugin-react'; + +export default defineConfig({ + plugins: [react()], + optimizeDeps: { + exclude: [ + 'graphiql/setup-workers/vite', + '@graphiql/react/setup-workers/vite', + ], + }, +}); +``` + +The setup modules are excluded because Vite must process their `?worker` imports instead of pre-bundling them. The `graphiql` helper delegates to the `@graphiql/react` helper, so both entries must remain visible to Vite. No dependencies need to be forced into optimization, and Vite's default worker format is sufficient. Restart Vite after updating the configuration, using `--force` if its dependency cache is stale. A successful production build does not verify development workers: check schema completion, an unknown-field diagnostic, JSON validation, and Prettify in the browser. See the [Vite example](../../examples/graphiql-vite). + +Custom GraphQL workers must call Monaco's `initialize` function as soon as the worker module loads. Don't wrap it in an additional `onmessage` handler. To pass functions or other values that structured cloning can't transfer to the worker, subclass `GraphQLWorker` and override its `initialize` method. See the [`monaco-graphql` custom worker example](../../packages/monaco-graphql/README.md#custom-webworker-for-passing-non-static-config-to-worker) for the complete worker and bundler configuration. + +## GraphQL.js minimum version + +GraphiQL 6 requires `graphql` `^16.11.0 || ^17.0.0`. Upgrade `graphql` before upgrading GraphiQL. + +If you must remain on GraphQL.js 15 or 16.0–16.10, stay on `graphiql` 5.x and the matching previous majors of the other packages. + +## `@graphiql/plugin-explorer` removal + +`@graphiql/plugin-explorer`, which wraps OneGraph's `graphiql-explorer` library, is **removed in v6**. The upstream library is no longer actively maintained. The default-installed `@graphiql/plugin-query-builder` replaces it and supports fragments, variables, unions, and interfaces. + +The package is no longer published from the v6 line. If you can't migrate yet, use its last `5.x` release from npm and remain on the **v5 LTS branch**. New development targets the query builder. + +### Migrating + +An explicit `plugins` array replaces GraphiQL's defaults in both v5 and v6. Include History and the other plugins you want to retain. These snippets assume your app already creates `fetcher` or `transport` as shown above. + +**Before (v5):** + +```tsx +import { GraphiQL, HISTORY_PLUGIN } from 'graphiql'; +import { explorerPlugin } from '@graphiql/plugin-explorer'; +import '@graphiql/plugin-explorer/style.css'; + +const plugins = [HISTORY_PLUGIN, explorerPlugin()]; + +; +``` + +**After (v6):** + +```tsx +import { GraphiQL } from 'graphiql'; + +; +``` + +Remove `@graphiql/plugin-explorer` from your dependencies. If Explorer was the only reason you passed `plugins`, remove that prop to use the v6 defaults. If your array also contains custom plugins, preserve them alongside the defaults: + +```tsx +import { DEFAULT_PLUGINS, GraphiQL } from 'graphiql'; + +const plugins = [...DEFAULT_PLUGINS, myPlugin]; + +; +``` + +If you cannot migrate the Explorer integration, stay on GraphiQL 5 and its matching plugin release. + +## Removed hooks + +The following hooks were deprecated in v5 and are removed in v6. Importing or calling one is now a build error. Each has a direct replacement; swap in the right-hand column and the behavior stays the same. + +| Removed | Package | Replacement | +| ------------------------------------------- | ------------------------------- | --------------------------------------------------------------- | +| `usePrettifyEditors` | `@graphiql/react` | `const { prettifyEditors } = useGraphiQLActions()` | +| `useCopyQuery` | `@graphiql/react` | `const { copyQuery } = useGraphiQLActions()` | +| `useMergeQuery` | `@graphiql/react` | `const { mergeQuery } = useGraphiQLActions()` | +| `useEditorContext` / `useEditorStore` | `@graphiql/react` | `useGraphiQL` + `useGraphiQLActions` | +| `useExecutionContext` / `useExecutionStore` | `@graphiql/react` | `useGraphiQL` + `useGraphiQLActions` | +| `usePluginContext` / `usePluginStore` | `@graphiql/react` | `useGraphiQL` + `useGraphiQLActions` | +| `useSchemaContext` / `useSchemaStore` | `@graphiql/react` | `useGraphiQL` + `useGraphiQLActions` | +| `useStorageContext` / `useStorage` | `@graphiql/react` | `const storage = useGraphiQL(state => state.storage)` | +| `useTheme` | `@graphiql/react` | `useGraphiQL` + `useGraphiQLActions` (or `useGraphiQLSettings`) | +| `useExplorerContext` | `@graphiql/plugin-doc-explorer` | `useDocExplorer` + `useDocExplorerActions` | +| `useHistoryContext` | `@graphiql/plugin-history` | `useHistory` + `useHistoryActions` | + +The old hooks bundled state and the actions that modify it into one object. The replacements separate reads from writes: use `useGraphiQL(selector)` for state and `useGraphiQLActions()` for actions. A component that only calls an action can then skip re-rendering when unrelated state changes. + +**Before:** + +```tsx +import { usePluginContext } from '@graphiql/react'; + +function MyComponent() { + const { plugins, visiblePlugin, setVisiblePlugin } = usePluginContext(); + return ( + + ); +} +``` + +**After:** + +```tsx +import { useGraphiQL, useGraphiQLActions } from '@graphiql/react'; + +function MyComponent() { + const plugins = useGraphiQL(state => state.plugins); + const visiblePlugin = useGraphiQL(state => state.visiblePlugin); + const { setVisiblePlugin } = useGraphiQLActions(); + return ( + + ); +} +``` + +The doc explorer and history plugins follow the same split, scoped to their own store: + +**Before:** + +```tsx +import { useExplorerContext } from '@graphiql/plugin-doc-explorer'; + +const { explorerNavStack, push, pop } = useExplorerContext(); +``` + +**After:** + +```tsx +import { + useDocExplorer, + useDocExplorerActions, +} from '@graphiql/plugin-doc-explorer'; + +const explorerNavStack = useDocExplorer(); +const { push, pop } = useDocExplorerActions(); +``` + +```tsx +import { useHistoryContext } from '@graphiql/plugin-history'; + +const { items, addToHistory } = useHistoryContext(); +``` + +```tsx +import { useHistory, useHistoryActions } from '@graphiql/plugin-history'; + +const items = useHistory(); +const { addToHistory } = useHistoryActions(); +``` + +See the [`@graphiql/react` README](../../packages/graphiql-react/README.md#available-stores) for the full list of available store selectors and actions. + +## Removed `operationName` prop + +Remove the `operationName` prop from `` or ``. It predated tabs and overrode the operation sent with every request, regardless of which tab was active. Across tabs, the same name could refer to different operations or be absent from the current document. Each tab now keeps its own selection; moving the cursor within a document, choosing an operation from the Run picker, or calling `useGraphiQLActions().setOperationName(name)` selects the operation to run in the active tab. The request sent through your `transport` or `fetcher` still includes `operationName` when appropriate. + +The `onEditOperationName` callback remains available if you need to observe selection changes or update a URL. If you previously fed that value back through the prop, stop passing it to GraphiQL. There is no longer a way to pin execution to one name across every tab. + +## Removed `GraphiQL.Toolbar` and `GraphiQL.Logo` + +`` and `` are removed. Use a plugin's `sessionActions` for custom editor actions and the `brand` prop for branding. `` still works as before. + +### `GraphiQL.Toolbar` → plugin `sessionActions` + +Custom editor actions now live in the tab strip, next to prettify/merge/copy/save, through a plugin's `sessionActions`: an always-mounted component every registered plugin can provide, regardless of whether that plugin's pane is visible. + +**Before:** + +```tsx +import { GraphiQL } from 'graphiql'; +import { ToolbarButton } from '@graphiql/react'; + +function App() { + return ( + + + {({ prettify, merge, copy }) => ( + <> + {prettify} + {merge} + {copy} + + My custom action + + + )} + + + ); +} +``` + +**After:** + +```tsx +import { DEFAULT_PLUGINS, GraphiQL } from 'graphiql'; +import { + ToolbarButton, + useGraphiQL, + useGraphiQLActions, + type GraphiQLPlugin, +} from '@graphiql/react'; + +function ExampleAction() { + const queryEditor = useGraphiQL(state => state.queryEditor); + const { prettifyEditors } = useGraphiQLActions(); + return ( + { + if (!queryEditor) { + return; + } + queryEditor.setValue('query Loaded{__typename}'); + await prettifyEditors(); + }} + > + Load example + + ); +} + +const myActionsPlugin: GraphiQLPlugin = { + title: 'Migration notes', + icon: () => , + content: () =>

Load example replaces and formats the active operation.

, + sessionActions: ExampleAction, +}; +const plugins = [...DEFAULT_PLUGINS, myActionsPlugin]; + +function App() { + return ; +} +``` + +Assign the component itself to `sessionActions`. GraphiQL renders one action component for each registered plugin, including when its pane is hidden. Give every plugin a unique title. `ToolbarButton` needs a `label` for its accessible name and children for its visible content. The editor can be absent while Monaco initializes, so disable the action or guard access until it exists. Await `prettifyEditors()` after replacing its value. + +Prettify, merge, and copy are built into the tab strip. Starting with `DEFAULT_PLUGINS` keeps History, Query Builder, and Collections alongside the custom action. + +### `GraphiQL.Logo` → the top bar's `brand` prop + +Pass the `brand` prop to `` to customize its branding. If you compose your own layout with `GraphiQLInterface`, pass the prop directly to ``. It accepts any `ReactNode` and replaces the default hexagon icon and "GraphiQL" wordmark. Omit the prop to keep the default branding. + +**Before:** + +```tsx + + My Company + +``` + +**After:** + +```tsx + +``` + +`brand` can contain any element, including a logo image and label. + +## Deprecated APIs + +The following APIs still work in v6, but they are deprecated: + +| Deprecated | Replacement | +| ------------------------------------------------ | ----------------- | +| `createGraphiQLFetcher` from `@graphiql/toolkit` | `createTransport` | +| `fetcher` prop on `` | `transport` prop | +| `Fetcher` type from `@graphiql/toolkit` | `Transport` | + +The v5 `--color-*` variables are also deprecated. They remain defined at their v5 values for custom CSS, but GraphiQL's components no longer read them. Migrate to the OKLCH tokens described in [CSS and retheming](#css-and-retheming). + +## Other notes + +- **Active operation follows the cursor.** In a document with more than one operation, moving the cursor into a different named operation updates the active tab's selection. The Run button, operation dropdown, and operation-aware plugins therefore reflect the operation you are editing. Previously, the selection changed only on run-at-cursor (`Cmd`/`Ctrl`+`Enter`) or when selected from the operation dropdown. + - The `onEditOperationName` callback now fires when the cursor crosses into a different named operation, not only on edit or run. If you mirror the selected name into your URL or app state, expect it to update as the user navigates between operations. + - A tab holding multiple operations shows the active operation name followed by a `+N` count of the others (for example, `GetUser +2`). +- **Browserslist.** v6 replaces the project's custom `.browserslistrc` contents with the single `defaults` browserslist preset (`> 0.5%, last 2 versions, Firefox ESR, not dead`). That range covers the modern browsers that support the OKLCH color functions the new token system relies on. If your previous bespoke config deliberately targeted very old browsers, check `defaults` against your support matrix. +- **Monaco editor theme registration.** The built-in Monaco themes (`graphiql-DARK` and `graphiql-LIGHT`) use the v6 accent palette. GraphQL tokens and the surrounding editor interface now use the same palette as the rest of GraphiQL. Register custom themes with `monaco.editor.defineTheme` on the same Monaco instance GraphiQL uses, then pass their names as `editorTheme={{ dark: 'company-dark', light: 'company-light' }}`. The prop accepts names, not inline theme definitions. If a screenshot test depends on the previous built-in theme values, update its expected colors. +- **`cn` removed from `@graphiql/react`.** The `cn` helper was just a re-export of `clsx`. It's gone now, so import `clsx` directly from the `clsx` package instead. + +To register a custom editor theme before rendering GraphiQL in a browser integration: + +```tsx +import { editor } from 'monaco-graphql/monaco-editor'; +import { GraphiQL } from 'graphiql'; + +editor.defineTheme('company-light', { + base: 'vs', + inherit: true, + rules: [{ token: 'keyword', foreground: '006D77' }], + colors: { 'editor.background': '#fff4dc' }, +}); +editor.defineTheme('company-dark', { + base: 'vs-dark', + inherit: true, + rules: [{ token: 'keyword', foreground: '80CBC4' }], + colors: { 'editor.background': '#112f35' }, +}); + +; +``` + +Declare `monaco-graphql` as a direct dependency when importing it here. For server-rendered apps, register themes on the client rather than importing Monaco on the server. + +## Other new features + +These additions are optional. You don't need to adopt them solely to migrate to v6, but they may be useful after upgrading: + +- **Response views.** The response pane offers JSON, Tree, and Table views and remembers the selected view through GraphiQL's storage. The views work with both `fetcher` and `transport`. +- **Custom saving.** If you save operations to your own backend, see [Saving with your own plugin](#saving-with-your-own-plugin) to register a custom save handler, including asynchronous saves. +- **Plugin transport hooks.** Plugins can change outgoing requests and observe responses or transport failures. See [Plugin transport hooks](#plugin-transport-hooks). +- **Display settings.** Users can change theme, density, and font size; integrations can read and set them with `useGraphiQLSettings()`. See [Theme, density, and font-size settings](#theme-density-and-font-size-settings). diff --git a/examples/cm6-graphql-legacy-parcel/package.json b/examples/cm6-graphql-legacy-parcel/package.json index 8fd6a5e18bf..fff50a43218 100644 --- a/examples/cm6-graphql-legacy-parcel/package.json +++ b/examples/cm6-graphql-legacy-parcel/package.json @@ -25,7 +25,7 @@ "@codemirror/basic-setup": "^0.20", "@codemirror/language": "^0.20", "codemirror-graphql": "^2", - "graphql": "^16" + "graphql": "^16.14.2" }, "devDependencies": { "parcel-bundler": "^1", diff --git a/examples/cm6-graphql-parcel/package.json b/examples/cm6-graphql-parcel/package.json index 4daf5bee584..4d2f38e7c95 100644 --- a/examples/cm6-graphql-parcel/package.json +++ b/examples/cm6-graphql-parcel/package.json @@ -30,7 +30,7 @@ "@codemirror/theme-one-dark": "^6", "@codemirror/view": "^6", "cm6-graphql": "^0.0", - "graphql": "^16" + "graphql": "^16.14.2" }, "devDependencies": { "parcel": "^2", diff --git a/examples/graphiql-cdn/README.md b/examples/graphiql-cdn/README.md index 62e87a67b35..8f056fa58dc 100644 --- a/examples/graphiql-cdn/README.md +++ b/examples/graphiql-cdn/README.md @@ -1,23 +1,25 @@ # GraphiQL CDN Example -This is a simple example of using **GraphiQL** directly from a CDN, including the [GraphiQL Explorer plugin](../../packages/graphiql-plugin-explorer/README.md). +This is a simple example of using **GraphiQL** directly from a CDN. -It loads the latest GraphiQL version from [esm.sh](https://esm.sh), an ESM-based CDN that serves npm packages as ES modules. +It loads GraphiQL from [esm.sh](https://esm.sh), an ESM-based CDN that serves npm packages as ES modules. ## Setup -No installation or build step is required — just open the `index.html` file in your browser: +No installation or build step is required. Serve the example from the repository root so its Monaco workers can load: -- macOS: +```sh +python3 -m http.server 8000 --directory examples/graphiql-cdn +``` - ```sh - open index.html - ``` +Open [the example](http://localhost:8000/) in your browser. -- Linux: +## Update dependencies - ```sh - firefox index.html - # or - chromium index.html - ``` +The checked-in example uses the GraphiQL 6 release candidate. Regenerate it from the repository root with: + +```sh +node .github/scripts/update-cdn-versions.mjs --graphiql-tag rc > examples/graphiql-cdn/index.html +``` + +`--graphiql-tag` selects the npm tag for `graphiql`, `@graphiql/react`, and `@graphiql/toolkit`. React, React DOM, and GraphQL use `latest`. Omit the option to use `latest` for every package once GraphiQL 6 is stable. diff --git a/examples/graphiql-cdn/index.html b/examples/graphiql-cdn/index.html index bb9bce4f892..7e8b942d8b6 100644 --- a/examples/graphiql-cdn/index.html +++ b/examples/graphiql-cdn/index.html @@ -10,7 +10,7 @@ - GraphiQL 5 with React 19 and GraphiQL Explorer + GraphiQL 6 with React 19 - - - - - - - - - - -
-
Loading…
-
- - diff --git a/packages/graphiql/package.json b/packages/graphiql/package.json index 976ceb48ca8..759e591298b 100644 --- a/packages/graphiql/package.json +++ b/packages/graphiql/package.json @@ -1,6 +1,6 @@ { "name": "graphiql", - "version": "5.4.0", + "version": "6.0.0", "sideEffects": [ "dist/setup-workers/*", "*.css" @@ -25,10 +25,7 @@ "types": "dist/index.d.ts", "files": [ "dist", - "!dist/e2e.*", - "!dist/workers/*", - "!dist/index.umd.*", - "!dist/cdn.*" + "!dist/e2e/**" ], "exports": { "./package.json": "./package.json", @@ -41,50 +38,44 @@ } }, "scripts": { - "types:check": "tsgo --noEmit", - "build": "pnpm types:check && vite build && UMD=true vite build", - "cypress-open": "cypress open --browser electron", - "dev": "concurrently 'cross-env PORT=8080 node test/e2e-server' vite", - "e2e": "pnpm e2e-server 'cypress run'", - "e2e-server": "start-server-and-test 'cross-env PORT=8080 node test/e2e-server' 'http-get://localhost:8080/graphql?query={test { id }}'", + "types:check": "tsc --noEmit", + "build": "pnpm types:check && vite build", "test": "vitest run" }, "dependencies": { - "@graphiql/plugin-doc-explorer": "^0.4.4", - "@graphiql/plugin-history": "^0.4.4", - "@graphiql/react": "^0.39.0", - "react-compiler-runtime": "19.1.0-rc.3" + "@graphiql/plugin-collections": "^1.0.0", + "@graphiql/plugin-doc-explorer": "^1.0.0", + "@graphiql/plugin-history": "^1.0.0", + "@graphiql/plugin-query-builder": "^1.0.0", + "@graphiql/react": "^1.0.0", + "clsx": "^2.1.1", + "react-compiler-runtime": "^1.0.0" }, "peerDependencies": { - "graphql": "^15.5.0 || ^16.0.0 || ^17.0.0", + "graphql": "^16.11.0 || ^17.0.0", "react": "^18 || ^19", "react-dom": "^18 || ^19" }, "devDependencies": { - "@graphiql/toolkit": "^0.12.1", + "@graphiql/toolkit": "^1.0.0", "@testing-library/dom": "^10.4.0", "@testing-library/jest-dom": "^7.0.1", "@testing-library/react": "^16.3.0", "@types/react": "^19", "@types/react-dom": "^19", - "@typescript/native-preview": "^7.0.0-dev.20260707.2", + "@typescript/native": "npm:typescript@7.1.0-beta", "@vitejs/plugin-react": "^5.2.0", - "@vitest/web-worker": "4.1.11", - "babel-plugin-react-compiler": "19.1.0-rc.3", - "concurrently": "^10.0.5", - "cross-env": "^10.1.0", - "cypress": "^16.0.0", - "graphql": "^16.11.0", + "@vitest/web-worker": "^5.0.3", + "babel-plugin-react-compiler": "1.0.0", + "graphql": "^17.0.2", "lightningcss": "^1.29.3", - "monaco-editor": "0.52.2", + "monaco-editor": ">=0.56.0 <0.58.0", "react": "^19.1.0", - "react-18": "npm:react@18.3.1", "react-dom": "^19.1.0", - "start-server-and-test": "^1.10.11", "typescript": "^5.8.0", "vite": "^8.2.4", "vite-plugin-dts": "^4.5.3", - "vitest-canvas-mock": "^1.1.4", + "vitest-canvas-mock": "^1.2.0", "zustand": "^5" }, "browser": { diff --git a/packages/graphiql/setup-files.ts b/packages/graphiql/setup-files.ts index 67c458a03f1..44ef2ceb60b 100644 --- a/packages/graphiql/setup-files.ts +++ b/packages/graphiql/setup-files.ts @@ -9,6 +9,32 @@ afterEach(cleanup); // to make it works like Jest (auto-mocking) vi.mock('zustand'); vi.mock('monaco-editor'); +// These UI tests do not inspect Monaco worker responses. Loading the simulated +// workers can race Vitest 5's module cache when the suite tears down. +vi.mock('monaco-editor/editor/editor.worker.js?worker', () => ({ + default: class { + postMessage() {} + terminate() {} + addEventListener() {} + removeEventListener() {} + }, +})); +vi.mock('monaco-editor/languages/features/json/json.worker.js?worker', () => ({ + default: class { + postMessage() {} + terminate() {} + addEventListener() {} + removeEventListener() {} + }, +})); +vi.mock('monaco-graphql/esm/graphql.worker.js?worker', () => ({ + default: class { + postMessage() {} + terminate() {} + addEventListener() {} + removeEventListener() {} + }, +})); // Since we load `monaco-editor` dynamically, we need to allow more time for tests that assert editor values configure({ asyncUtilTimeout: 9_000 }); diff --git a/packages/graphiql/setup-window.ts b/packages/graphiql/setup-window.ts index 0f6d47331fe..70754eb381c 100644 --- a/packages/graphiql/setup-window.ts +++ b/packages/graphiql/setup-window.ts @@ -21,4 +21,22 @@ if (!window.matchMedia) { }); } +// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition +if (!globalThis.ResizeObserver) { + class ResizeObserverMock { + observe() {} + unobserve() {} + disconnect() {} + } + Object.defineProperty(globalThis, 'ResizeObserver', { + writable: false, + value: ResizeObserverMock, + }); +} + +Object.defineProperty(document, 'queryCommandSupported', { + writable: false, + value: vi.fn().mockReturnValue(false), +}); + export {}; diff --git a/packages/graphiql/src/GraphiQL.spec.tsx b/packages/graphiql/src/GraphiQL.spec.tsx index 9785848a5c1..c4151964c4a 100644 --- a/packages/graphiql/src/GraphiQL.spec.tsx +++ b/packages/graphiql/src/GraphiQL.spec.tsx @@ -1,6 +1,6 @@ 'use no memo'; -import { describe, it, expect, vi, beforeEach } from 'vitest'; +import { describe, it, expect, vi, beforeAll, beforeEach } from 'vitest'; /** * Copyright (c) 2021 GraphQL Contributors. @@ -10,14 +10,17 @@ import { describe, it, expect, vi, beforeEach } from 'vitest'; */ import { act, render, waitFor, fireEvent } from '@testing-library/react'; import { Component, FC, useEffect } from 'react'; -import { GraphiQL } from './GraphiQL'; -import type { Fetcher } from '@graphiql/toolkit'; +import { DEFAULT_PLUGINS, GraphiQL } from './GraphiQL'; +import { StorageAPI, type Fetcher, type Transport } from '@graphiql/toolkit'; import { buildSchema, introspectionFromSchema } from 'graphql'; import { ToolbarButton, + GraphiQLProvider, useGraphiQL, + useMonaco, useOperationsEditorState, MonacoEditor, + isMacOs, } from '@graphiql/react'; import '@graphiql/react/setup-workers/vite'; @@ -35,13 +38,80 @@ describe('GraphiQL', () => { // @ts-expect-error -- fixme const noOpFetcher: Fetcher = () => {}; + it('exports immutable default plugins', () => { + expect(Object.isFrozen(DEFAULT_PLUGINS)).toBe(true); + expect(DEFAULT_PLUGINS.map(plugin => plugin.title)).toEqual([ + 'History', + 'Query Builder', + 'Collections', + ]); + }); + + beforeAll(async () => { + let isMonacoReady = false; + + const MonacoReady: FC = () => { + isMonacoReady = useMonaco(state => Boolean(state.monaco)); + return null; + }; + + const { unmount } = render( + + + , + ); + + try { + await waitFor( + () => { + if (!isMonacoReady) { + throw new Error('Monaco is not initialized'); + } + }, + { timeout: 60_000 }, + ); + } finally { + unmount(); + } + }, 65_000); + describe('fetcher', () => { - it('should throw error without fetcher', () => { + it('should throw error without fetcher or transport', () => { const spy = vi.spyOn(console, 'error').mockImplementation(() => {}); - // @ts-expect-error fetcher is a required prop to GraphiQL + // @ts-expect-error -- one of fetcher | transport is required on GraphiQL expect(() => render()).toThrow( - 'The `GraphiQLProvider` component requires a `fetcher` function to be passed as prop.', + 'The `GraphiQLProvider` component requires either a `transport` or a `fetcher` prop.', + ); + spy.mockRestore(); + }); + + it('is a type error to pass both `fetcher` and `transport`', () => { + // The assertion that matters here is the `@ts-expect-error` directive: + // if the XOR on `GraphiQLProps` regresses and both props become valid, + // tsc reports the directive as unused and this test fails to compile. + // The runtime guard in `GraphiQLProvider` belt-and-suspenders the type + // check. + const transport: Transport = { + url: 'https://example.com/graphql', + method: 'POST', + supportedMethods: ['POST'], + send: async () => ({ + ok: true, + body: { data: {} }, + timing: { totalMs: 0 }, + size: {}, + }), + }; + const spy = vi.spyOn(console, 'error').mockImplementation(() => {}); + + expect(() => + render( + // @ts-expect-error -- `fetcher` and `transport` are mutually exclusive + , + ), + ).toThrow( + 'The `fetcher` and `transport` props are mutually exclusive. Pass one or the other, not both.', ); spy.mockRestore(); }); @@ -167,38 +237,56 @@ describe('GraphiQL', () => { }); // schema describe('default query', () => { - // First test to boot Monaco's editor worker; cold start needs extra time under - // Vitest 4's forks pool. Both the it() testTimeout and the waitFor() - // asyncUtilTimeout (configured at 9s in setup-files.ts) must be bumped. + const InitialQuery: FC = () => { + const initialQuery = useGraphiQL(state => state.initialQuery); + return {initialQuery}; + }; + it('defaults to the built-in default query', async () => { - const { container } = render(); + const { findByTestId } = render( + + + , + ); - await waitFor( - () => { - const queryEditor = container.querySelector( - '.graphiql-editor .monaco-scrollable-element', - ); - expect(queryEditor).toBeVisible(); - expect(queryEditor!.textContent).toBe('# Welcome to GraphiQL'); - }, - { timeout: 15_000 }, + expect((await findByTestId('initial-query')).textContent).toMatch( + /^# Welcome to GraphiQL/, ); - }, 20000); + }); it('accepts a custom default query', async () => { - const { container } = render( - , + const { findByTestId } = render( + + + , ); + expect((await findByTestId('initial-query')).textContent).toBe( + 'GraphQL Party!!', + ); + }); + }); // default query + + describe('brand', () => { + it('shows the default GraphiQL wordmark when brand is unset', async () => { + const { getByText } = render(); + await waitFor(() => { - const queryEditor = container.querySelector( - '.graphiql-editor .monaco-scrollable-element', - ); - expect(queryEditor).toBeVisible(); - expect(queryEditor!.textContent).toBe('GraphQL Party!!'); + expect(getByText('GraphiQL')).toBeInTheDocument(); }); }); - }); // default query + + it('overrides the top bar branding with the brand prop', async () => { + const { getByText, queryByText } = render( + , + ); + + await waitFor(() => { + expect(getByText('My Company')).toBeInTheDocument(); + expect(queryByText('GraphiQL')).not.toBeInTheDocument(); + }); + }); + }); // TODO: rewrite these plugin tests after plugin API has more structure describe('plugins', () => { @@ -223,6 +311,34 @@ describe('GraphiQL', () => { expect(container.querySelector('.graphiql-plugin')).not.toBeVisible(); }); }); + + it('reveals the plugin pane when Cmd/Ctrl+K opens the doc explorer', async () => { + const { container } = render(); + + const pane = container.querySelector('.graphiql-plugin'); + await waitFor(() => { + expect(pane).not.toBeVisible(); + }); + + act(() => { + window.dispatchEvent( + new KeyboardEvent('keydown', { + code: 'KeyK', + metaKey: isMacOs, + ctrlKey: !isMacOs, + bubbles: true, + cancelable: true, + }), + ); + }); + + await waitFor(() => { + expect(pane).toBeVisible(); + expect( + container.querySelector('.graphiql-doc-explorer'), + ).toBeInTheDocument(); + }); + }); }); // plugins describe('editor tools', () => { @@ -260,9 +376,15 @@ describe('GraphiQL', () => { />, ); await waitFor(() => { - expect( - container.querySelector('[aria-label="Variables"]'), - ).toBeVisible(); + // The editor tools section should be visible and the Variables radio checked + const section = container.querySelector( + '[aria-label="Variables and Headers"]', + ); + expect(section).toBeVisible(); + const variablesRadio = container.querySelector( + 'input[type="radio"][value="variables"]', + ); + expect(variablesRadio).toBeChecked(); }); }); @@ -274,7 +396,15 @@ describe('GraphiQL', () => { />, ); await waitFor(() => { - expect(container.querySelector('[aria-label="Headers"]')).toBeVisible(); + // The editor tools section should be visible and the Headers radio checked + const section = container.querySelector( + '[aria-label="Variables and Headers"]', + ); + expect(section).toBeVisible(); + const headersRadio = container.querySelector( + 'input[type="radio"][value="headers"]', + ); + expect(headersRadio).toBeChecked(); }); }); @@ -311,8 +441,9 @@ describe('GraphiQL', () => { const { container } = render(); const dragBar = container.querySelector('.graphiql-horizontal-drag-bar')!; - const editors = - container.querySelector('.graphiql-editors')!; + const editorColumn = container.querySelector( + '.graphiql-editor-column', + )!; act(() => { fireEvent.mouseDown(dragBar, { @@ -330,7 +461,7 @@ describe('GraphiQL', () => { await waitFor(() => { // 700 / (900 - 700) = 3.5 - expect(editors.style.flexGrow).toEqual('3.5'); + expect(editorColumn.style.flexGrow).toEqual('3.5'); }); clientWidthSpy.mockRestore(); @@ -384,57 +515,47 @@ describe('GraphiQL', () => { }); }); // panel resizing - it('allows the user to control persisting headers if it is true', async () => { - const { container, findByText } = render( - , - ); + describe('Settings dialog', () => { + async function openSettings(container: HTMLElement) { + await act(async () => { + fireEvent.click(container.querySelector('[aria-label="Settings"]')!); + await new Promise(resolve => setTimeout(resolve, 0)); + }); + return document.querySelector('[role="dialog"]')!; + } - act(() => { - fireEvent.click( - container.querySelector('[aria-label="Open settings dialog"]')!, + it('shows the persist-headers control when shouldPersistHeaders is true', async () => { + const { container } = render( + , ); + const dialog = await openSettings(container); + expect(dialog).toHaveTextContent('Persist headers'); }); - const element = await findByText('Persist headers'); - expect(element).toBeInTheDocument(); - }); - - it('allows the user to control persisting headers if it is not passed in', async () => { - const { container, findByText } = render( - , - ); + it('shows the persist-headers control by default', async () => { + const { container } = render(); + const dialog = await openSettings(container); + expect(dialog).toHaveTextContent('Persist headers'); + }); - act(() => { - fireEvent.click( - container.querySelector('[aria-label="Open settings dialog"]')!, + it('hides the persist-headers control when shouldPersistHeaders is false', async () => { + const { container } = render( + , ); + const dialog = await openSettings(container); + // "Density" confirms the dialog is open before asserting absence. + expect(dialog).toHaveTextContent('Density'); + expect(dialog).not.toHaveTextContent('Persist headers'); }); - const element = await findByText('Persist headers'); - expect(element).toBeInTheDocument(); - }); - - it('does not allow the user to control persisting headers is false', async () => { - const { container, findByText } = render( - , - ); - - act(() => { - fireEvent.click( - container.querySelector('[aria-label="Open settings dialog"]')!, + it('hides the theme control when forcedTheme is set', async () => { + const { container } = render( + , ); + const dialog = await openSettings(container); + expect(dialog).toHaveTextContent('Density'); + expect(dialog).not.toHaveTextContent('Theme'); }); - - const callback = async () => { - try { - // Expecting non-existence; short-circuit instead of waiting the default. - await findByText('Persist headers', undefined, { timeout: 1000 }); - } catch { - // eslint-disable-next-line no-throw-literal - throw 'failed'; - } - }; - await expect(callback).rejects.toEqual('failed'); }); describe('Tabs', () => { @@ -575,6 +696,61 @@ describe('GraphiQL', () => { ).toHaveTextContent('Second'); }); + it('restores the active stored tab when individual editor keys are absent', async () => { + const storage = new StorageAPI(); + const query = 'query Second { second }'; + const variables = '{"id": 2}'; + const headers = '{"X-Test": "second"}'; + storage.set( + 'tabState', + JSON.stringify({ + activeTabIndex: 1, + tabs: ['query First { first }', query].map((tabQuery, index) => ({ + id: String(index), + title: index === 0 ? 'First' : 'Second', + query: tabQuery, + variables, + headers, + operationName: index === 0 ? 'First' : 'Second', + response: null, + })), + }), + ); + + function InitialEditorState() { + const state = useGraphiQL(value => ({ + activeTabIndex: value.activeTabIndex, + tabCount: value.tabs.length, + query: value.initialQuery, + variables: value.initialVariables, + headers: value.initialHeaders, + })); + return {JSON.stringify(state)}; + } + + const { container } = render( + + + , + ); + + await waitFor(() => { + expect(container.querySelector('output')?.textContent).toBe( + JSON.stringify({ + activeTabIndex: 1, + tabCount: 2, + query, + variables, + headers, + }), + ); + }); + }); + it('shows default tabs', async () => { const { container } = render( { ); - const { container, getByRole } = render( + const { container } = render( {myFragment}, ); @@ -619,13 +795,14 @@ describe('GraphiQL', () => { expect( container.querySelector('.graphiql-container'), ).toBeInTheDocument(); - expect(container.querySelector('.graphiql-logo')).toBeInTheDocument(); - expect(getByRole('toolbar')).toBeInTheDocument(); + expect( + container.querySelector('.graphiql-footer'), + ).not.toBeInTheDocument(); }); }); it('properly ignores non-override children components', async () => { - const { container, getByRole } = render( + const { container } = render( , @@ -635,8 +812,9 @@ describe('GraphiQL', () => { expect( container.querySelector('.graphiql-container'), ).toBeInTheDocument(); - expect(container.querySelector('.graphiql-logo')).toBeInTheDocument(); - expect(getByRole('toolbar')).toBeInTheDocument(); + expect( + container.querySelector('.graphiql-footer'), + ).not.toBeInTheDocument(); }); }); @@ -648,7 +826,7 @@ describe('GraphiQL', () => { } } - const { container, getByRole } = render( + const { container } = render( , @@ -658,42 +836,9 @@ describe('GraphiQL', () => { expect( container.querySelector('.graphiql-container'), ).toBeInTheDocument(); - expect(container.querySelector('.graphiql-logo')).toBeInTheDocument(); - expect(getByRole('toolbar')).toBeInTheDocument(); - }); - }); - - describe('GraphiQL.Logo', () => { - it('can be overridden using the exported type', async () => { - const { getByText } = render( - - My Exported Type Logo - , - ); - - await waitFor(() => { - expect(getByText('My Exported Type Logo')).toBeInTheDocument(); - }); - }); - }); - - describe('GraphiQL.Toolbar', () => { - it('can be overridden using the exported type', async () => { - const { container } = render( - - - {() => } - - , - ); - - await waitFor(() => { - expect( - container.querySelectorAll( - '[role="toolbar"] .graphiql-toolbar-button', - ), - ).toHaveLength(1); - }); + expect( + container.querySelector('.graphiql-footer'), + ).not.toBeInTheDocument(); }); }); @@ -716,6 +861,73 @@ describe('GraphiQL', () => { }); }); + describe('tab strip actions', () => { + it('renders exactly one prettify, merge, copy, and save action', async () => { + const { container } = render(); + + await waitFor(() => { + expect( + container.querySelectorAll('[aria-label="Prettify editors"]'), + ).toHaveLength(1); + expect( + container.querySelectorAll('[aria-label="Merge fragments"]'), + ).toHaveLength(1); + expect( + container.querySelectorAll('[aria-label="Copy operation"]'), + ).toHaveLength(1); + expect( + container.querySelectorAll('[aria-label="Save operation"]'), + ).toHaveLength(1); + }); + }); + + it('merges fragments into the operation when Merge Fragments is clicked', async () => { + let queryEditor: MonacoEditor; + let documentAST: unknown; + + const HookConsumer: FC = () => { + const $queryEditor = useGraphiQL(state => state.queryEditor); + const $documentAST = useGraphiQL(state => state.documentAST); + useEffect(() => { + queryEditor = $queryEditor!; + documentAST = $documentAST; + }, [$queryEditor, $documentAST]); + return null; + }; + + const { getByLabelText } = render( + + + , + ); + + const query = `fragment NameFragment on Query { q } +query TestQuery { ...NameFragment }`; + + await waitFor(() => { + expect(queryEditor).toBeTruthy(); + }); + act(() => { + queryEditor.setValue(query); + }); + + await waitFor(() => { + expect(queryEditor.getValue()).toContain('...NameFragment'); + // The editor debounces content-change handling before it updates the + // document AST that `mergeQuery` reads from. + expect(documentAST).toBeTruthy(); + }); + + fireEvent.click(getByLabelText('Merge fragments')); + + await waitFor(() => { + const merged = queryEditor.getValue(); + expect(merged).not.toContain('...NameFragment'); + expect(merged).toContain('q'); + }); + }, 15_000); + }); + it('should support multiple instances', async () => { const queryEditors: Record<0 | 1, MonacoEditor> = Object.create(null); diff --git a/packages/graphiql/src/GraphiQL.tsx b/packages/graphiql/src/GraphiQL.tsx index fff56ce2a91..488cef9c9d8 100644 --- a/packages/graphiql/src/GraphiQL.tsx +++ b/packages/graphiql/src/GraphiQL.tsx @@ -10,48 +10,76 @@ import type { FC, ComponentPropsWithoutRef, } from 'react'; -import { useState, Children, useRef, Fragment } from 'react'; +import { Children, useEffect, useRef, useState, Fragment } from 'react'; +import { clsx } from 'clsx'; import { ChevronDownIcon, ChevronUpIcon, - ExecuteButton, + CopyIcon, GraphiQLProvider, - HeaderEditor, + MergeIcon, PlusIcon, + PortalProvider, + PrettifyIcon, QueryEditor, ResponseEditor, + SaveIcon, + SidePanel, Spinner, Tab, Tabs, Tooltip, + TopBar, + StatusBar, UnStyledButton, + VarHeadersStrip, useDragResize, useGraphiQL, + useGraphiQLSettings, pick, - VariableEditor, EditorProps, - cn, useGraphiQLActions, useMonaco, + VariableEditor, + HeaderEditor, + type GraphiQLPlugin, } from '@graphiql/react'; +import type { Fetcher, Transport } from '@graphiql/toolkit'; import { HistoryStore, HISTORY_PLUGIN } from '@graphiql/plugin-history'; import { DocExplorerStore, DOC_EXPLORER_PLUGIN, } from '@graphiql/plugin-doc-explorer'; -import { GraphiQLLogo, GraphiQLToolbar, GraphiQLFooter, Sidebar } from './ui'; +import { QUERY_BUILDER_PLUGIN } from '@graphiql/plugin-query-builder'; +import { COLLECTIONS_PLUGIN } from '@graphiql/plugin-collections'; +import { ActivityBar, GraphiQLFooter } from './ui'; + +export const DEFAULT_PLUGINS: readonly GraphiQLPlugin[] = Object.freeze([ + HISTORY_PLUGIN, + QUERY_BUILDER_PLUGIN, + COLLECTIONS_PLUGIN, +]); /** * API docs for this live here: * * https://graphiql-test.netlify.app/typedoc/modules/graphiql.html#graphiqlprops + * + * Note: the XOR between `fetcher` and `transport` is preserved here explicitly. + * `Omit` flattens discriminated unions, so it has to be re-applied at this + * level so passing both props is a compile error at the `` call site. */ -export interface GraphiQLProps - // `children` prop should be optional - extends - GraphiQLInterfaceProps, - Omit, 'children'>, - Omit, 'children'> {} +export type GraphiQLProps = GraphiQLInterfaceProps & + Omit, 'children'> & + Omit< + ComponentPropsWithoutRef, + 'children' | 'fetcher' | 'plugins' | 'transport' + > & { + plugins?: readonly GraphiQLPlugin[]; + } & ( + | { fetcher: Fetcher; transport?: never } + | { transport: Transport; fetcher?: never } + ); /** * The top-level React component for GraphiQL, intended to encompass the entire @@ -61,7 +89,7 @@ export interface GraphiQLProps */ const GraphiQL_: FC = ({ maxHistoryLength, - plugins = [HISTORY_PLUGIN], + plugins = DEFAULT_PLUGINS, referencePlugin = DOC_EXPLORER_PLUGIN, onEditQuery, onEditVariables, @@ -73,22 +101,11 @@ const GraphiQL_: FC = ({ forcedTheme, confirmCloseTab, className, + brand, children, ...props }) => { - // @ts-expect-error -- Prop is removed - if (props.toolbar?.additionalContent) { - throw new TypeError( - 'The `toolbar.additionalContent` prop has been removed. Use render props on `GraphiQL.Toolbar` component instead.', - ); - } - // @ts-expect-error -- Prop is removed - if (props.toolbar?.additionalComponent) { - throw new TypeError( - 'The `toolbar.additionalComponent` prop has been removed. Use render props on `GraphiQL.Toolbar` component instead.', - ); - } // @ts-expect-error -- Prop is removed if (props.keyMap) { throw new TypeError( @@ -112,6 +129,7 @@ const GraphiQL_: FC = ({ forcedTheme, confirmCloseTab, className, + brand, }; const hasHistoryPlugin = plugins.includes(HISTORY_PLUGIN); const HistoryToUse = hasHistoryPlugin ? HistoryStore : Fragment; @@ -150,9 +168,10 @@ export interface GraphiQLInterfaceProps AddSuffix, 'Headers'>, Pick, Pick< - ComponentPropsWithoutRef, + ComponentPropsWithoutRef, 'forcedTheme' | 'showPersistHeadersSettings' - > { + >, + Pick, 'brand'> { children?: ReactNode; /** * Set the default state for the editor tools. @@ -190,12 +209,16 @@ type ButtonHandler = MouseEventHandler; const LABEL = { newTab: 'New tab', + prettify: 'Prettify editors', + merge: 'Merge fragments', + copy: 'Copy operation', + save: 'Save operation', }; -export function GraphiQLInterface({ +export const GraphiQLInterface: FC = ({ forcedTheme, - isHeadersEditorEnabled = true, defaultEditorToolsVisibility, + isHeadersEditorEnabled = true, children: $children, confirmCloseTab, className, @@ -204,29 +227,59 @@ export function GraphiQLInterface({ onEditHeaders, responseTooltip, showPersistHeadersSettings, -}: GraphiQLInterfaceProps) { - const { addTab, moveTab, closeTab, changeTab, setVisiblePlugin } = - useGraphiQLActions(); + brand, +}) => { + const { + addTab, + moveTab, + closeTab, + changeTab, + setVisiblePlugin, + saveQuery, + copyQuery, + prettifyEditors, + mergeQuery, + } = useGraphiQLActions(); const { initialVariables, initialHeaders, tabs, activeTabIndex, - isFetching, visiblePlugin, + operations, + plugins, + saveHandlers, + savingTabIds, + saveError, } = useGraphiQL( pick( 'initialVariables', 'initialHeaders', 'tabs', 'activeTabIndex', - 'isFetching', 'visiblePlugin', + 'operations', + 'plugins', + 'saveHandlers', + 'savingTabIds', + 'saveError', ), ); + const canSave = saveHandlers.size > 0; + const isSaving = Boolean( + tabs[activeTabIndex] && savingTabIds.has(tabs[activeTabIndex]!.id), + ); const hasMonaco = useMonaco(state => Boolean(state.monaco)); - const PluginContent = visiblePlugin?.content; + const containerRef = useRef(null); + const [portalContainer, setPortalContainer] = useState( + null, + ); + const setContainerRef = (node: HTMLDivElement | null) => { + containerRef.current = node; + setPortalContainer(node); + }; + useGraphiQLSettings(containerRef); const { hiddenElement: pluginHiddenElement, @@ -276,36 +329,12 @@ export function GraphiQLInterface({ storageKey: 'secondaryEditorFlex', }); - const [activeSecondaryEditor, setActiveSecondaryEditor] = useState< - 'variables' | 'headers' - >(() => { - if ( - defaultEditorToolsVisibility === 'variables' || - defaultEditorToolsVisibility === 'headers' - ) { - return defaultEditorToolsVisibility; - } - return !initialVariables && initialHeaders && isHeadersEditorEnabled - ? 'headers' - : 'variables'; - }); - - const { logo, toolbar, footer, children } = Children.toArray( - $children, - ).reduce<{ - logo?: ReactNode; - toolbar?: ReactNode; + const { footer, children } = Children.toArray($children).reduce<{ footer?: ReactNode; children: ReactNode[]; }>( (acc, curr) => { switch (getChildComponentType(curr)) { - case GraphiQL.Logo: - acc.logo = curr; - break; - case GraphiQL.Toolbar: - acc.toolbar = curr; - break; case GraphiQL.Footer: acc.footer = curr; break; @@ -315,25 +344,20 @@ export function GraphiQLInterface({ return acc; }, { - logo: , - toolbar: , children: [], }, ); - function onClickReference() { - if (pluginHiddenElement === 'first') { + // `visiblePlugin` and the pane's collapsed state are separate: the store + // tracks which plugin is active, while `useDragResize` owns the pane width. + // Reveal the pane whenever a plugin becomes visible through any path that + // doesn't manage the drag-resize state itself (the ⌘K shortcut, the + // `visiblePlugin` prop, or a plugin calling `setVisiblePlugin` directly). + useEffect(() => { + if (visiblePlugin && pluginHiddenElement === 'first') { setPluginHiddenElement(null); } - } - - const handleToolsTabClick: ButtonHandler = event => { - if (editorToolsHiddenElement === 'second') { - setEditorToolsHiddenElement(null); - } - const tabName = event.currentTarget.dataset.name as 'variables' | 'headers'; - setActiveSecondaryEditor(tabName); - }; + }, [visiblePlugin, pluginHiddenElement, setPluginHiddenElement]); const toggleEditorTools: ButtonHandler = () => { setEditorToolsHiddenElement( @@ -365,59 +389,16 @@ export function GraphiQLInterface({ editorToolsHiddenElement === 'second' ? ChevronUpIcon : ChevronDownIcon; const editors = ( -
+
- {hasMonaco ? ( - - ) : ( - - )} - -
- - {toolbar} -
+ {hasMonaco ? : }
- - Variables - - {isHeadersEditorEnabled && ( - - Headers - - )} - - { + if (d === 'variables' || d === 'headers') { + return d; + } + return !initialVariables && initialHeaders && isHeadersEditorEnabled + ? 'headers' + : 'variables'; + })(defaultEditorToolsVisibility)} + headersEditorEnabled={isHeadersEditorEnabled} + onEditVariables={onEditVariables} + onEditHeaders={onEditHeaders} /> - {isHeadersEditorEnabled && ( - - )}
); @@ -458,94 +440,195 @@ export function GraphiQLInterface({ return ( -
- -
-
- {PluginContent && } -
- {visiblePlugin && ( -
+
+ +
+ - )} -
-
- - {tabs.map((tab, index, arr) => ( - - +
+ +
+ {visiblePlugin && ( +
+ )} +
+
+
+
+ + {tabs.map((tab, index) => { + const isActive = index === activeTabIndex; + // For the active tab, surface how many other operations the + // document holds alongside the one the cursor is in. Only + // when the active operation is named, so the title reads as + // ` +N`; an anonymous active operation has no name to + // anchor the count to. + const otherOperations = + isActive && tab.operationName && operations + ? operations.length - 1 + : 0; + const tabTitle = + otherOperations > 0 + ? `${tab.title} +${otherOperations}` + : tab.title; + return ( + + + {tabTitle} + + {tabs.length > 1 && ( + + )} + + ); + })} + + + + + +
+ + + + + + + + + + + + + {canSave && ( + + + {isSaving ? ( + + + )} + {saveError && ( + + Save failed: {saveError} + + )} + {plugins.map(plugin => + plugin.sessionActions ? ( + + ) : null, + )} +
+
+
- {tab.title} - - {arr.length > 1 && } - - ))} - - - - - - {logo} -
-
- {editors} -
-
- {isFetching && } - - {footer} + {editors} +
+
+
+
+
+ + {footer} +
+
+
+
-
- {children} + {children} + ); -} +}; function getChildComponentType(child: ReactNode) { if ( @@ -560,7 +643,5 @@ function getChildComponentType(child: ReactNode) { // Export main windows/panes to be used separately if desired. export const GraphiQL = Object.assign(GraphiQL_, { - Logo: GraphiQLLogo, - Toolbar: GraphiQLToolbar, Footer: GraphiQLFooter, }); diff --git a/packages/graphiql/src/cdn.ts b/packages/graphiql/src/cdn.ts deleted file mode 100644 index 84a1296ba61..00000000000 --- a/packages/graphiql/src/cdn.ts +++ /dev/null @@ -1,50 +0,0 @@ -/** - * Copyright (c) 2025 GraphQL Contributors. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ -import { version } from 'react'; -import * as GraphiQLReact from '@graphiql/react'; -import { createGraphiQLFetcher, createLocalStorage } from '@graphiql/toolkit'; -import * as GraphQL from 'graphql'; -import { GraphiQL } from './GraphiQL'; -import './setup-workers/vite'; - -const majorVersion = parseInt(version.slice(0, 2), 10); - -if (majorVersion < 16) { - throw new Error( - [ - 'GraphiQL 0.18.0 and after is not compatible with React 15 or below.', - 'If you are using a CDN source (jsdelivr, unpkg, etc), follow this example:', - 'https://github.com/graphql/graphiql/blob/master/examples/graphiql-cdn/index.html#L49', - ].join('\n'), - ); -} - -/** - * For the CDN bundle we add some static properties to the component function - * so that they can be accessed in the inline-script in the HTML file. - */ -export default Object.assign(GraphiQL, { - /** - * This function is needed in order to easily create a fetcher function. - */ - createFetcher: createGraphiQLFetcher, - /** - * This function is needed in order to easily generate a custom storage namespace - */ - createLocalStorage, - /** - * We also add the complete `graphiql-js` exports so that this instance of - * `graphiql-js` can be reused from plugin CDN bundles. - */ - GraphQL, - /** - * We also add the complete `@graphiql/react` exports. These will be included - * in the bundle anyway since they make up the `GraphiQL` component, so by - * doing this we can reuse them from plugin CDN bundles. - */ - React: GraphiQLReact, -}); diff --git a/packages/graphiql/src/graphiql.css b/packages/graphiql/src/graphiql.css index 3c60e5bba22..b743982ec94 100644 --- a/packages/graphiql/src/graphiql.css +++ b/packages/graphiql/src/graphiql.css @@ -1,70 +1,86 @@ /* Everything */ .graphiql-container { - background-color: hsl(var(--color-base)); + background: oklch(var(--bg-canvas)); display: flex; + flex-direction: column; height: 100%; margin: 0; overflow: hidden; width: 100%; } -/* The sidebar */ -.graphiql-container .graphiql-sidebar { +/* Activity rail + main content row (below the top bar and above the status bar) */ +.graphiql-container .graphiql-body { display: flex; - flex-direction: column; - padding: var(--px-8); - width: var(--sidebar-width); - gap: var(--px-8); - overflow-y: auto; + flex: 1; + min-height: 0; + overflow: hidden; } -.graphiql-container .graphiql-sidebar > button { +/* The main content, i.e. everything except the activity rail */ +.graphiql-container .graphiql-main { display: flex; - align-items: center; - justify-content: center; - color: hsla(var(--color-neutral), var(--alpha-secondary)); - height: calc(var(--sidebar-width) - (2 * var(--px-8))); - width: calc(var(--sidebar-width) - (2 * var(--px-8))); - flex-shrink: 0; + flex: 1; + min-width: 0; } -.graphiql-container .graphiql-sidebar button.active { - color: hsl(var(--color-neutral)); +/* The current session and tabs */ +.graphiql-container .graphiql-sessions { + background: oklch(var(--bg-canvas)); + display: flex; + flex-direction: column; + flex: 1; + max-height: 100%; + min-width: 0; } -.graphiql-container .graphiql-sidebar button > svg { - height: var(--px-20); - width: var(--px-20); +/* The editor and response panes, split by the horizontal drag bar */ +.graphiql-container .graphiql-session-row { + display: flex; + flex: 1; + min-height: 0; } -/* The main content, i.e. everything except the sidebar */ -.graphiql-container .graphiql-main { +/* The editor side of the split: session header stacked above the editors. + The divider between the two panes is drawn by the drag bar's sash. */ +.graphiql-container .graphiql-editor-column { display: flex; - flex: 1; + flex-direction: column; min-width: 0; } -/* The current session and tabs */ -.graphiql-container .graphiql-sessions { - background-color: hsla(var(--color-neutral), var(--alpha-background-light)); - /* Adding the 8px of padding to the inner border radius of the operation editor */ - border-radius: calc(var(--border-radius-12) + var(--px-8)); +/* The response side of the split */ +.graphiql-container .graphiql-response-column { display: flex; flex-direction: column; - flex: 1; - max-height: 100%; - margin: var(--px-16); - margin-left: 0; min-width: 0; } -/* The session header containing tabs and the logo */ +/* Match the response header's height to the editor's session header so the + view picker lines up with the tabs and action buttons across the split. The + default horizontal padding keeps the status off the divider. */ +.graphiql-container .graphiql-response-header { + height: var(--session-header-height); +} + +/* The session header (tabs + action buttons) reads as a toolbar strip, matching + the elevated surface and divider of the response header across the split. */ .graphiql-container .graphiql-session-header { height: var(--session-header-height); align-items: center; display: flex; - padding: var(--px-8) var(--px-8) 0; gap: var(--px-8); + background: oklch(var(--bg-elevated)); + border-bottom: 1px solid oklch(var(--border-default)); +} + +/* The tab strip carries its own shorter height + bottom divider by default, + which double-lines against the header divider. Stretch it to the full header + height and drop its border so the header shows a single divider. */ +.graphiql-container .graphiql-session-header .graphiql-tabs { + height: auto; + align-self: stretch; + border-bottom: none; } /* The button to add a new tab */ @@ -72,43 +88,70 @@ button.graphiql-tab-add { padding: var(--px-4); & > svg { - color: hsla(var(--color-neutral), var(--alpha-secondary)); + color: oklch(var(--fg-muted)); display: block; - height: var(--px-16); - width: var(--px-16); + height: var(--icon-size-lg); + width: var(--icon-size-lg); } } -/* The GraphiQL logo */ -.graphiql-container .graphiql-logo { +/* Right-side tab strip action buttons (prettify, merge, copy, save) */ +.graphiql-tab-strip-actions { + display: flex; + align-items: center; margin-left: auto; - color: hsla(var(--color-neutral), var(--alpha-secondary)); - font-size: var(--font-size-h4); - font-weight: var(--font-weight-medium); + gap: 0; } -/* Undo default link styling for the default GraphiQL logo link */ -.graphiql-container .graphiql-logo .graphiql-logo-link { - color: hsla(var(--color-neutral), var(--alpha-secondary)); - text-decoration: none; +button.graphiql-tab-strip-action { + display: flex; + align-items: center; + justify-content: center; + padding: var(--px-6); + color: oklch(var(--fg-subtle)); - &:focus { - outline: hsla(var(--color-neutral), var(--alpha-background-heavy)) auto 1px; + & > svg { + display: block; + height: var(--icon-size-lg); + width: var(--icon-size-lg); } + + &:hover { + color: oklch(var(--fg-default)); + } +} + +.graphiql-tab-save-spinner { + height: var(--icon-size-lg); + width: var(--icon-size-lg); + margin: 0; + + &::after { + height: var(--icon-size-lg); + width: var(--icon-size-lg); + border-width: 2px; + border-top-width: 2px; + } +} + +.graphiql-save-error { + color: oklch(var(--accent-red)); + max-width: 180px; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; } /* The editor of the session */ .graphiql-container #graphiql-session { display: flex; flex: 1; - padding: 0 var(--px-8) var(--px-8); + min-height: 0; } /* All editors (operation, variable, request headers) */ .graphiql-container .graphiql-editors { - background-color: hsl(var(--color-base)); - border-radius: 0 0 var(--border-radius-12) var(--border-radius-12); - box-shadow: var(--popover-box-shadow); + background: oklch(var(--bg-canvas)); display: flex; flex: 1; flex-direction: column; @@ -116,34 +159,13 @@ button.graphiql-tab-add { /* The operation editor and the toolbar */ .graphiql-container .graphiql-query-editor { - border-bottom: 1px solid - hsla(var(--color-neutral), var(--alpha-background-heavy)); + border-bottom: 1px solid oklch(var(--border-default)); padding: var(--px-16); column-gap: var(--px-16); display: flex; width: 100%; } -/* The vertical toolbar next to the operation editor */ -.graphiql-container .graphiql-toolbar { - width: var(--toolbar-width); - display: flex; - flex-direction: column; - gap: var(--px-8); -} - -.graphiql-container .graphiql-toolbar > button { - flex-shrink: 0; -} - -/* The toolbar icons */ -.graphiql-toolbar-icon { - color: hsla(var(--color-neutral), var(--alpha-tertiary)); - display: block; - height: calc(var(--toolbar-width) - (var(--px-8) * 2)); - width: calc(var(--toolbar-width) - (var(--px-8) * 2)); -} - /* The tab bar for editor tools */ .graphiql-container .graphiql-editor-tools { cursor: row-resize; @@ -154,11 +176,11 @@ button.graphiql-tab-add { } .graphiql-container .graphiql-editor-tools button { - color: hsla(var(--color-neutral), var(--alpha-secondary)); + color: oklch(var(--fg-muted)); } .graphiql-container .graphiql-editor-tools button.active { - color: hsl(var(--color-neutral)); + color: oklch(var(--fg-default)); } /* The tab buttons to switch between editor tools */ @@ -174,8 +196,10 @@ button.graphiql-tab-add { /* An editor tool, e.g. variables or request headers editor */ .graphiql-container .graphiql-editor-tool { + display: flex; + flex-direction: column; flex: 1; - padding: var(--px-16); + min-height: 0; } /** @@ -184,7 +208,6 @@ button.graphiql-tab-add { * setting the position of this to `relative` makes sure this element will * always be on top of any editors. */ -.graphiql-container .graphiql-toolbar, .graphiql-container .graphiql-editor-tools, .graphiql-container .graphiql-editor-tool { position: relative; @@ -192,9 +215,9 @@ button.graphiql-tab-add { /* The response view */ .graphiql-container .graphiql-response { - /* Add some padding so it doesn’t touch the tabs */ - padding-top: var(--px-16); display: flex; + flex: 1; + min-height: 0; width: 100%; flex-direction: column; } @@ -207,41 +230,57 @@ button.graphiql-tab-add { /* The footer below the response view */ .graphiql-container .graphiql-footer { - border-top: 1px solid - hsla(var(--color-neutral), var(--alpha-background-heavy)); + border-top: 1px solid oklch(var(--border-default)); } -/* The plugin container */ +/* The plugin container — sizing controlled by useDragResize; chrome handled by */ .graphiql-container .graphiql-plugin { - border-left: 1px solid - hsla(var(--color-neutral), var(--alpha-background-heavy)); + display: flex; flex: 1; - overflow-y: auto; - padding: var(--px-16); + min-width: 0; + overflow: hidden; } -/* Generic drag bar for horizontal resizing */ +/* Horizontal resizer, styled as a "sash": zero layout width so the panes sit + flush, an invisible expanded hit area straddling the seam, and a 1px divider + line. Width 0 also keeps the resize math (which subtracts the bar's + clientWidth) pixel-exact. */ .graphiql-horizontal-drag-bar { - width: var(--px-12); + width: 0; + position: relative; + z-index: 1; cursor: col-resize; } -.graphiql-horizontal-drag-bar:hover::after { - border: var(--px-2) solid - hsla(var(--color-neutral), var(--alpha-background-heavy)); - border-radius: var(--border-radius-2); +/* The grab zone: 8px straddling the seam, with no layout footprint. */ +.graphiql-horizontal-drag-bar::before { content: ''; - display: block; - height: 25%; - margin: 0 auto; - position: relative; - /* (100% - 25%) / 2 = 37.5% */ - top: 37.5%; - width: 0; + position: absolute; + inset-block: 0; + left: calc(var(--px-8) / -2); + width: var(--px-8); + cursor: col-resize; +} + +/* The visible divider line, centered on the seam. */ +.graphiql-horizontal-drag-bar::after { + content: ''; + position: absolute; + inset-block: 0; + left: -0.5px; + width: 1px; + background: oklch(var(--border-default)); +} + +/* Thicken the divider on hover/drag as the resize affordance. */ +.graphiql-horizontal-drag-bar:hover::after, +.graphiql-horizontal-drag-bar:active::after { + left: -1px; + width: 2px; } .graphiql-container .graphiql-chevron-icon { - color: hsla(var(--color-neutral), var(--alpha-tertiary)); + color: oklch(var(--fg-subtle)); display: block; height: var(--px-12); margin: var(--px-12); @@ -280,8 +319,7 @@ button.graphiql-tab-add { /* A section inside the settings dialog */ .graphiql-dialog .graphiql-dialog-section { align-items: center; - border-top: 1px solid - hsla(var(--color-neutral), var(--alpha-background-heavy)); + border-top: 1px solid oklch(var(--border-default)); display: flex; justify-content: space-between; padding: var(--px-24); @@ -299,11 +337,11 @@ button.graphiql-tab-add { /* The section caption in the settings dialog */ .graphiql-dialog .graphiql-dialog-section-caption { - color: hsla(var(--color-neutral), var(--alpha-secondary)); + color: oklch(var(--fg-muted)); } .graphiql-dialog .graphiql-warning-text { - color: hsl(var(--color-warning)); + color: oklch(var(--accent-orange)); font-weight: var(--font-weight-medium); } @@ -313,13 +351,13 @@ button.graphiql-tab-add { } .graphiql-dialog .graphiql-table :is(th, td) { - border: 1px solid hsla(var(--color-neutral), var(--alpha-background-heavy)); + border: 1px solid oklch(var(--border-default)); padding: var(--px-8) var(--px-12); } /* A single key the short-key dialog */ .graphiql-dialog .graphiql-key { - background-color: hsla(var(--color-neutral), var(--alpha-background-medium)); + background-color: oklch(var(--bg-overlay)); border-radius: var(--border-radius-4); padding: var(--px-4); } diff --git a/packages/graphiql/src/index.ts b/packages/graphiql/src/index.ts index 534b272ed1c..8a8c1acbdb6 100644 --- a/packages/graphiql/src/index.ts +++ b/packages/graphiql/src/index.ts @@ -13,8 +13,11 @@ export { GraphiQL, // https://github.com/graphql/graphiql/issues/4057 GraphiQLInterface, + DEFAULT_PLUGINS, type GraphiQLProps, type GraphiQLInterfaceProps, } from './GraphiQL'; export { HISTORY_PLUGIN } from '@graphiql/plugin-history'; +export { QUERY_BUILDER_PLUGIN } from '@graphiql/plugin-query-builder'; +export { COLLECTIONS_PLUGIN } from '@graphiql/plugin-collections'; diff --git a/packages/graphiql/src/style.css b/packages/graphiql/src/style.css index c9462281dad..2056277c386 100644 --- a/packages/graphiql/src/style.css +++ b/packages/graphiql/src/style.css @@ -1,11 +1,13 @@ -/* Monaco import is only needed for CDN bundle */ -@import 'monaco-editor/min/vs/editor/editor.main.css'; +/* Monaco doesn't export its aggregate CSS file. This physical import is only needed for the CDN bundle. */ +@import '../node_modules/monaco-editor/min/vs/editor/editor.main.css'; @import '@graphiql/react/font/roboto.css'; @import '@graphiql/react/font/fira-code.css'; @import '@graphiql/react/style.css'; @import '@graphiql/plugin-history/style.css'; @import '@graphiql/plugin-doc-explorer/style.css'; +@import '@graphiql/plugin-query-builder/style.css'; +@import '@graphiql/plugin-collections/style.css'; /** * Separate CSS without importing fonts/etc diff --git a/packages/graphiql/src/ui/activity-bar.tsx b/packages/graphiql/src/ui/activity-bar.tsx new file mode 100644 index 00000000000..a001e004cd3 --- /dev/null +++ b/packages/graphiql/src/ui/activity-bar.tsx @@ -0,0 +1,104 @@ +import { type FC, useEffect, useRef, useState } from 'react'; +import { + ActivityRail, + Dialog, + isMacOs, + SettingsDialog, + useDragResize, + VisuallyHidden, + type GraphiQLPlugin, +} from '@graphiql/react'; +import { ShortKeys } from './short-keys'; + +export interface ActivityBarProps { + /** + * Enforce a specific theme; hides the theme control in the settings dialog. + */ + forcedTheme?: 'light' | 'dark' | 'system'; + /** + * Whether the "persist headers" control appears in the settings dialog. + */ + showPersistHeadersSettings?: boolean; + setHiddenElement: ReturnType['setHiddenElement']; +} + +export const ActivityBar: FC = ({ + forcedTheme, + showPersistHeadersSettings, + setHiddenElement, +}) => { + const [showDialog, setShowDialog] = useState< + 'settings' | 'short-keys' | null + >(null); + const settingsButtonRef = useRef(null); + + useEffect(() => { + function openSettings(event: KeyboardEvent) { + if ((isMacOs ? event.metaKey : event.ctrlKey) && event.key === ',') { + event.preventDefault(); + setShowDialog(prev => (prev === 'settings' ? null : 'settings')); + } + } + window.addEventListener('keydown', openSettings); + return () => { + window.removeEventListener('keydown', openSettings); + }; + }, []); + + function handleOpenSettingsDialog(isOpen: boolean) { + if (!isOpen) { + setShowDialog(null); + } + } + + function handleOpenShortKeysDialog(isOpen: boolean) { + if (!isOpen) { + setShowDialog(null); + } + } + + function handlePluginToggle(nextPlugin: GraphiQLPlugin | null) { + if (nextPlugin === null) { + setHiddenElement('first'); + } else { + setHiddenElement(null); + } + } + + return ( + <> + setShowDialog('settings')} + settingsButtonRef={settingsButtonRef} + /> + +
+ + Short Keys + + + + This modal provides a list of available keyboard shortcuts and + their functions. + + + +
+
+ +
+
+ + + ); +}; diff --git a/packages/graphiql/src/ui/index.ts b/packages/graphiql/src/ui/index.ts index ee953edb0b4..4a629a1160f 100644 --- a/packages/graphiql/src/ui/index.ts +++ b/packages/graphiql/src/ui/index.ts @@ -1,5 +1,4 @@ +export { ActivityBar } from './activity-bar'; +export type { ActivityBarProps } from './activity-bar'; export { GraphiQLFooter } from './footer'; -export { GraphiQLLogo } from './logo'; export { ShortKeys } from './short-keys'; -export { Sidebar } from './sidebar'; -export { GraphiQLToolbar } from './toolbar'; diff --git a/packages/graphiql/src/ui/logo.tsx b/packages/graphiql/src/ui/logo.tsx deleted file mode 100644 index dbee3f4c7e2..00000000000 --- a/packages/graphiql/src/ui/logo.tsx +++ /dev/null @@ -1,21 +0,0 @@ -import type { FC, ReactNode } from 'react'; - -const defaultGraphiqlLogo = ( - - Graph - i - QL - -); - -// Configure the UI by providing this Component as a child of GraphiQL. -export const GraphiQLLogo: FC<{ children?: ReactNode }> = ({ - children = defaultGraphiqlLogo, -}) => { - return
{children}
; -}; diff --git a/packages/graphiql/src/ui/short-keys.tsx b/packages/graphiql/src/ui/short-keys.tsx index 5b890f795d3..775913f0686 100644 --- a/packages/graphiql/src/ui/short-keys.tsx +++ b/packages/graphiql/src/ui/short-keys.tsx @@ -2,10 +2,10 @@ import { FC, Fragment } from 'react'; import { formatShortcutForOS, KEY_MAP } from '@graphiql/react'; const SHORT_KEYS = Object.entries({ - 'Execute query': formatShortcutForOS(KEY_MAP.runQuery.key), + 'Run operation': formatShortcutForOS(KEY_MAP.runQuery.key), 'Open the Command Palette (you must have focus in the editor)': 'F1', 'Prettify editors': KEY_MAP.prettify.key, - 'Copy query': KEY_MAP.copyQuery.key, + 'Copy operation': KEY_MAP.copyQuery.key, 'Re-fetch schema using introspection': KEY_MAP.refetchSchema.key, 'Search in documentation': formatShortcutForOS(KEY_MAP.searchInDocs.key), 'Search in editor': formatShortcutForOS(KEY_MAP.searchInEditor.key), diff --git a/packages/graphiql/src/ui/sidebar.tsx b/packages/graphiql/src/ui/sidebar.tsx deleted file mode 100644 index 7551ee51c78..00000000000 --- a/packages/graphiql/src/ui/sidebar.tsx +++ /dev/null @@ -1,340 +0,0 @@ -import { FC, type MouseEventHandler, useEffect, useState } from 'react'; -import { - Button, - ButtonGroup, - cn, - Dialog, - isMacOs, - KEY_MAP, - KeyboardShortcutIcon, - pick, - ReloadIcon, - SettingsIcon, - Tooltip, - UnStyledButton, - useDragResize, - useGraphiQL, - useGraphiQLActions, - VisuallyHidden, -} from '@graphiql/react'; -import { ShortKeys } from './short-keys'; - -type ButtonHandler = MouseEventHandler; - -const LABEL = { - refetchSchema: `Re-fetch GraphQL schema (${KEY_MAP.refetchSchema.key})`, - shortCutDialog: 'Open short keys dialog', - settingsDialogs: 'Open settings dialog', -}; - -const THEMES = ['light', 'dark', 'system'] as const; - -interface SidebarProps { - /** - * `forcedTheme` allows enforcement of a specific theme for GraphiQL. - * This is useful when you want to make sure that GraphiQL is always - * rendered with a specific theme. - */ - forcedTheme?: (typeof THEMES)[number]; - - /** - * Indicates if settings for persisting headers should appear in the - * settings modal. - */ - showPersistHeadersSettings?: boolean; - - setHiddenElement: ReturnType['setHiddenElement']; -} - -export const Sidebar: FC = ({ - forcedTheme: $forcedTheme, - showPersistHeadersSettings, - setHiddenElement, -}) => { - const forcedTheme = - $forcedTheme && THEMES.includes($forcedTheme) ? $forcedTheme : undefined; - const { setShouldPersistHeaders, introspect, setVisiblePlugin, setTheme } = - useGraphiQLActions(); - const { - shouldPersistHeaders, - isIntrospecting, - visiblePlugin, - plugins, - theme, - storage, - } = useGraphiQL( - pick( - 'shouldPersistHeaders', - 'isIntrospecting', - 'visiblePlugin', - 'plugins', - 'theme', - 'storage', - ), - ); - - useEffect(() => { - if (forcedTheme === 'system') { - setTheme(null); - } else if (forcedTheme === 'light' || forcedTheme === 'dark') { - setTheme(forcedTheme); - } - }, [forcedTheme, setTheme]); - - const [showDialog, setShowDialog] = useState< - 'settings' | 'short-keys' | null - >(null); - const [clearStorageStatus, setClearStorageStatus] = useState< - 'success' | 'error' | undefined - >(); - - useEffect(() => { - function openSettings(event: KeyboardEvent) { - if ((isMacOs ? event.metaKey : event.ctrlKey) && event.key === ',') { - event.preventDefault(); // prevent default browser settings dialog - setShowDialog(prev => (prev === 'settings' ? null : 'settings')); - } - } - - window.addEventListener('keydown', openSettings); - return () => { - window.removeEventListener('keydown', openSettings); - }; - }, []); - - function handleOpenShortKeysDialog(isOpen: boolean) { - if (!isOpen) { - setShowDialog(null); - } - } - - function handleOpenSettingsDialog(isOpen: boolean) { - if (!isOpen) { - setShowDialog(null); - setClearStorageStatus(undefined); - } - } - - function handleClearData() { - try { - storage.clear(); - setClearStorageStatus('success'); - } catch { - setClearStorageStatus('error'); - } - } - - const handlePersistHeaders: ButtonHandler = event => { - setShouldPersistHeaders(event.currentTarget.dataset.value === 'true'); - }; - - const handleChangeTheme: ButtonHandler = event => { - const selectedTheme = event.currentTarget.dataset.theme as - | 'light' - | 'dark' - | undefined; - setTheme(selectedTheme || null); - }; - - const handleShowDialog: ButtonHandler = event => { - setShowDialog( - event.currentTarget.dataset.value as 'short-keys' | 'settings', - ); - }; - - const handlePluginClick: ButtonHandler = event => { - const pluginIndex = Number(event.currentTarget.dataset.index!); - const plugin = plugins.find((_, index) => pluginIndex === index)!; - const isVisible = plugin === visiblePlugin; - if (isVisible) { - setVisiblePlugin(null); - setHiddenElement('first'); - } else { - setVisiblePlugin(plugin); - setHiddenElement(null); - } - }; - - return ( -
- {plugins.map((plugin, index) => { - const isVisible = plugin === visiblePlugin; - const label = `${isVisible ? 'Hide' : 'Show'} ${plugin.title}`; - return ( - - - - - ); - })} - - - - - - - - - - - - - -
- - Short Keys - - - {/* Fixes Warning: Missing `Description` or `aria-describedby={undefined}` for {DialogContent} */} - - This modal provides a list of available keyboard shortcuts and - their functions. - - - -
-
- -
-
- -
- - Settings - - - {/* Fixes Warning: Missing `Description` or `aria-describedby={undefined}` for {DialogContent} */} - - This modal lets you adjust header persistence, interface theme, - and clear local storage. - - - -
- {showPersistHeadersSettings ? ( -
-
-
- Persist headers -
-
- Save headers upon reloading.{' '} - - Only enable if you trust this device. - -
-
- - - - -
- ) : null} - {!forcedTheme && ( -
-
-
Theme
-
- Adjust how the interface appears. -
-
- - - - - -
- )} -
-
-
Clear storage
-
- Remove all locally stored data and start fresh. -
-
- -
-
-
- ); -}; diff --git a/packages/graphiql/src/ui/toolbar.tsx b/packages/graphiql/src/ui/toolbar.tsx deleted file mode 100644 index 20ebbc169cd..00000000000 --- a/packages/graphiql/src/ui/toolbar.tsx +++ /dev/null @@ -1,64 +0,0 @@ -import type { FC, ReactElement, ReactNode } from 'react'; -import { - CopyIcon, - KEY_MAP, - MergeIcon, - PrettifyIcon, - ToolbarButton, - useGraphiQLActions, -} from '@graphiql/react'; - -const DefaultToolbarRenderProps: FC<{ - prettify: ReactNode; - copy: ReactNode; - merge: ReactNode; -}> = ({ prettify, copy, merge }) => ( - <> - {prettify} - {merge} - {copy} - -); - -/** - * Configure the UI by providing this Component as a child of GraphiQL. - */ -export const GraphiQLToolbar: FC<{ - children?: typeof DefaultToolbarRenderProps | ReactNode; -}> = ({ children = DefaultToolbarRenderProps }) => { - const isRenderProp = typeof children === 'function'; - const { copyQuery, prettifyEditors, mergeQuery } = useGraphiQLActions(); - - if (!isRenderProp) { - return children as ReactElement; - } - - const prettify = ( - - - ); - - const merge = ( - - - ); - - const copy = ( - - - ); - - return children({ prettify, copy, merge }); -}; diff --git a/packages/graphiql/tsconfig.json b/packages/graphiql/tsconfig.json index f31e58dbaee..272959b9016 100644 --- a/packages/graphiql/tsconfig.json +++ b/packages/graphiql/tsconfig.json @@ -1,5 +1,4 @@ { "extends": "../graphiql-react/tsconfig.json", - // https://github.com/testing-library/jest-dom/issues/546#issuecomment-2558621842 - "exclude": ["cypress", "cypress.config.ts", "typedoc"] + "exclude": ["typedoc"] } diff --git a/packages/graphiql/vite.config.mts b/packages/graphiql/vite.config.mts index 27d8607ecdf..94d1fb1a323 100644 --- a/packages/graphiql/vite.config.mts +++ b/packages/graphiql/vite.config.mts @@ -1,14 +1,11 @@ import path from 'node:path'; -import { createRequire } from 'node:module'; -import { defineConfig, esmExternalRequirePlugin, PluginOption } from 'vite'; +import { defineConfig, PluginOption } from 'vite'; import dts from 'vite-plugin-dts'; import react from '@vitejs/plugin-react'; import { reactCompilerConfig as $reactCompilerConfig } from '../graphiql-react/vite.config.mjs'; import type { PluginOptions as ReactCompilerConfig } from 'babel-plugin-react-compiler'; import packageJSON from './package.json' with { type: 'json' }; -const require = createRequire(import.meta.url); - const reactCompilerConfig: Partial = { ...$reactCompilerConfig, sources(filename) { @@ -30,66 +27,7 @@ export const plugins: PluginOption[] = [ }), ]; -const umdConfig = defineConfig({ - resolve: { - alias: { - 'react/jsx-dev-runtime': require.resolve('react-18/jsx-dev-runtime'), - 'react/jsx-runtime': require.resolve('react-18/jsx-runtime'), - }, - }, - define: { - // graphql v17 - 'globalThis.process.env.NODE_ENV': 'true', - // https://github.com/graphql/graphql-js/blob/16.x.x/website/pages/docs/going-to-production.mdx - 'globalThis.process': 'true', - 'process.env.NODE_ENV': '"production"', - }, - plugins: [ - ...plugins, - esmExternalRequirePlugin({ - external: ['react', 'react-dom', 'react-dom/client'], - }), - ], - css: { - transformer: 'lightningcss', - }, - build: { - minify: 'terser', // produce less bundle size - sourcemap: true, - emptyOutDir: false, - lib: { - entry: 'src/cdn.ts', - /** - * The name of the exposed global variable. Required when the `formats` option includes `umd` - * or `iife`. - */ - name: 'GraphiQL', - fileName: 'index', - formats: ['umd'], - }, - rollupOptions: { - output: { - globals: { - react: 'React', - 'react-dom': 'ReactDOM', - 'react-dom/client': 'ReactDOM', - }, - }, - }, - }, - worker: { - format: 'es', - rollupOptions: { - output: { - entryFileNames: 'workers/[name].js', - // Just to group worker assets, add shared/internal chunks too - chunkFileNames: 'workers/[name].js', - }, - }, - }, -}); - -const esmConfig = defineConfig({ +export default defineConfig({ build: { cssCodeSplit: true, minify: false, @@ -97,7 +35,6 @@ const esmConfig = defineConfig({ lib: { entry: [ 'src/index.ts', - 'src/e2e.ts', 'src/setup-workers/webpack.ts', 'src/setup-workers/vite.ts', 'src/setup-workers/esm.sh.ts', @@ -122,21 +59,8 @@ const esmConfig = defineConfig({ }, }, }, - server: { - // Prevent a browser window from opening automatically - open: false, - proxy: { - '/graphql': 'http://localhost:8080', - '/subscriptions': { - target: 'ws://localhost:8081', - ws: true, - }, - }, - }, plugins: [ ...plugins, - htmlPlugin(), - process.env.NODE_ENV === 'production' && removeImportsFromE2EFile(), dts({ include: ['src/**'], outDir: ['dist'], @@ -147,47 +71,3 @@ const esmConfig = defineConfig({ format: 'es', }, }); - -function htmlPlugin(): PluginOption { - return { - name: 'html-replace-umd-with-src', - transformIndexHtml: { - order: 'pre', - handler(html) { - const start = ''; - const end = ''; - const contentToReplace = html.slice( - html.indexOf(start), - html.indexOf(end) + end.length, - ); - return html.replace( - contentToReplace, - '', - ); - }, - }, - }; -} - -function removeImportsFromE2EFile(): PluginOption { - return { - name: 'remove-imports-from-e2e-file', - enforce: 'pre', // Ensure it runs before Vite's own transformers - transform(code: string, id: string) { - if (id.endsWith('e2e.ts')) { - const transformedCode = code - .split('\n') - .filter(line => !line.startsWith('import ')) - .join('\n'); - return { - code: transformedCode, - // Remove source map to clean vite warning: - // a plugin (remove-imports-from-e2e-file) was used to transform files, but didn't generate a sourcemap for the transformation - map: null, - }; - } - }, - }; -} - -export default process.env.UMD === 'true' ? umdConfig : esmConfig; diff --git a/packages/graphql-language-service-cli/CHANGELOG.md b/packages/graphql-language-service-cli/CHANGELOG.md index 0a2e4bf41b5..c671dcbe9a5 100644 --- a/packages/graphql-language-service-cli/CHANGELOG.md +++ b/packages/graphql-language-service-cli/CHANGELOG.md @@ -1,5 +1,68 @@ # graphql-language-service-cli +## 4.0.0 + +### Major Changes + +- [#4478](https://github.com/graphql/graphiql/pull/4478) [`066528a`](https://github.com/graphql/graphiql/commit/066528a6bb7706d685536888d7b5549d6fd5a109) Thanks [@trevor-scheer](https://github.com/trevor-scheer)! - GraphQL.js 15 and 16.0–16.10 are no longer supported peer dependencies. The supported range is `^16.11.0 || ^17.0.0`. GraphQL.js 16.11 fixes OneOf input validation for nullable variables and tightens input-object coercion to reject arrays, giving GraphiQL 6 a correct baseline for OneOf inputs. Upgrade `graphql` before upgrading these packages. + +### Patch Changes + +- [#4642](https://github.com/graphql/graphiql/pull/4642) [`009944b`](https://github.com/graphql/graphiql/commit/009944b0cf4968aa1f9e49cbc24bc3e7ccc3d02f) Thanks [@trevor-scheer](https://github.com/trevor-scheer)! - Stop loading the deprecated `@babel/polyfill` package. The CLI output targets ES2018 and runs on Node versions with native support for the required runtime features. + +- Updated dependencies [[`4225e29`](https://github.com/graphql/graphiql/commit/4225e29ebea023591aeb5c54a84cf98b226f6df7), [`066528a`](https://github.com/graphql/graphiql/commit/066528a6bb7706d685536888d7b5549d6fd5a109), [`5affc68`](https://github.com/graphql/graphiql/commit/5affc680b14dc04feb02fc8713a18dfdd56b4a81), [`3d368ba`](https://github.com/graphql/graphiql/commit/3d368ba8747ac2ad0bd73c8bf6f46f952122cfc8)]: + - graphql-language-service-server@3.0.0 + - graphql-language-service@6.0.0 + +## 4.0.0-rc.2 + +### Patch Changes + +- [#4642](https://github.com/graphql/graphiql/pull/4642) [`009944b`](https://github.com/graphql/graphiql/commit/009944b0cf4968aa1f9e49cbc24bc3e7ccc3d02f) Thanks [@trevor-scheer](https://github.com/trevor-scheer)! - Stop loading the deprecated `@babel/polyfill` package. The CLI output targets ES2018 and runs on Node versions with native support for the required runtime features. + +- Updated dependencies [[`4225e29`](https://github.com/graphql/graphiql/commit/4225e29ebea023591aeb5c54a84cf98b226f6df7), [`3d368ba`](https://github.com/graphql/graphiql/commit/3d368ba8747ac2ad0bd73c8bf6f46f952122cfc8)]: + - graphql-language-service-server@3.0.0-rc.2 + - graphql-language-service@6.0.0-rc.1 + +## 4.0.0-rc.1 + +### Patch Changes + +- [#4474](https://github.com/graphql/graphiql/pull/4474) [`a539b83`](https://github.com/graphql/graphiql/commit/a539b83cac07d3987a8098346b1647a0ddec67f4) Thanks [@trevor-scheer](https://github.com/trevor-scheer)! - Restore caret ranges for internal GraphiQL dependencies. The RC versions sort after the stale canary and `next` versions that beta ranges selected, so the exact pins from the beta cycle are no longer necessary. + +- Updated dependencies [[`a539b83`](https://github.com/graphql/graphiql/commit/a539b83cac07d3987a8098346b1647a0ddec67f4)]: + - graphql-language-service-server@3.0.0-rc.1 + +## 4.0.0-rc.0 + +### Patch Changes + +- [#4595](https://github.com/graphql/graphiql/pull/4595) [`bcd13dc`](https://github.com/graphql/graphiql/commit/bcd13dca46e2bb75837b33fce9f574712c669457) Thanks [@trevor-scheer](https://github.com/trevor-scheer)! - Move the GraphiQL 6 package family from beta to release candidate versions. + +- Updated dependencies [[`bcd13dc`](https://github.com/graphql/graphiql/commit/bcd13dca46e2bb75837b33fce9f574712c669457)]: + - graphql-language-service-server@3.0.0-rc.0 + - graphql-language-service@6.0.0-rc.0 + +## 4.0.0-beta.1 + +### Patch Changes + +- Updated dependencies [[`5affc68`](https://github.com/graphql/graphiql/commit/5affc680b14dc04feb02fc8713a18dfdd56b4a81)]: + - graphql-language-service@6.0.0-beta.1 + - graphql-language-service-server@3.0.0-beta.1 + +## 4.0.0-beta.0 + +### Major Changes + +- [#4478](https://github.com/graphql/graphiql/pull/4478) [`066528a`](https://github.com/graphql/graphiql/commit/066528a6bb7706d685536888d7b5549d6fd5a109) Thanks [@trevor-scheer](https://github.com/trevor-scheer)! - GraphQL.js 15 and 16.0–16.10 are no longer supported peer dependencies. The supported range is `^16.11.0 || ^17.0.0`. GraphQL.js 16.11 fixes OneOf input validation for nullable variables and tightens input-object coercion to reject arrays, giving GraphiQL 6 a correct baseline for OneOf inputs. Upgrade `graphql` before upgrading these packages. + +### Patch Changes + +- Updated dependencies [[`066528a`](https://github.com/graphql/graphiql/commit/066528a6bb7706d685536888d7b5549d6fd5a109)]: + - graphql-language-service@6.0.0-beta.0 + - graphql-language-service-server@3.0.0-beta.0 + ## 3.5.0 ### Minor Changes @@ -31,7 +94,6 @@ note that `schemaCacheTTL` can only be set in extension settings or graphql config at the top level - it will be ignored if configured per-project in the graphql config **Code Improvements** - - Fixes flaky tests, and `schemaCacheTTL` setting not being passed to the cache - Adds a test to validate network schema changes are reflected in the cache @@ -57,7 +119,6 @@ This fixes multiple cacheing bugs, upon addomg some in-depth integration test coverage for the LSP server. It also solves several bugs regarding loading config types, and properly restarts the server and invalidates schema when there are config changes. ### Bugfix Summary - - configurable polling updates for network and other code first schema configuration, set to a 30s interval by default. powered by `schemaCacheTTL` which can be configured in the IDE settings (vscode, nvim) or in the graphql config file. (1) - jump to definition in embedded files offset bug, for both fragments and code files with SDL strings - cache invalidation for fragments (fragment lookup/autcoomplete data is more accurate, but incomplete/invalid fragments still do not autocomplete or validate, and remember fragment options always filter/validate by the `on` type!) @@ -65,11 +126,9 @@ - schema definition lookups & autocomplete crossing over into the wrong project **Notes** - 1. If possible, configuring for your locally running framework or a schema registry client to handle schema updates and output to a `schema.graphql` or `introspection.json` will always provide a better experience. many graphql frameworks have this built in! Otherwise, we must use this new lazy polling approach if you provide a url schema (this includes both introspection URLs and remote file URLs, and the combination of these). ### Known Bugs Fixed - - #3318 - #2357 - #3469 @@ -78,7 +137,6 @@ - many more! ### Test Improvements - - new, high level integration spec suite for the LSP with a matching test utility - more unit test coverage - **total increased test coverage of about 25% in the LSP server codebase.** @@ -94,7 +152,6 @@ ### Patch Changes - [#3521](https://github.com/graphql/graphiql/pull/3521) [`aa6dbbb4`](https://github.com/graphql/graphiql/commit/aa6dbbb45bf51c1966537640fbe5c4f375735c8d) Thanks [@acao](https://github.com/acao)! - Fixes several issues with Type System (SDL) completion across the ecosystem: - - restores completion for object and input type fields when the document context is not detectable or parseable - correct top-level completions for either of the unknown, type system or executable definitions. this leads to mixed top level completions when the document is unparseable, but now you are not seemingly restricted to only executable top level definitions - `.graphqls` ad-hoc standard functionality remains, but is not required, as it is not part of the official spec, and the spec also allows mixed mode documents in theory, and this concept is required when the type is unknown @@ -111,7 +168,7 @@ ```ts // import it - import { locateCommand } from './graphql/tooling/lsp/locate.js'; + import { locateCommand } from "./graphql/tooling/lsp/locate.js"; export default { languageService: { locateCommand, @@ -119,12 +176,12 @@ projects: { a: { - schema: 'https://localhost:8000/graphql', - documents: './a/**/*.{ts,tsx,jsx,js,graphql}', + schema: "https://localhost:8000/graphql", + documents: "./a/**/*.{ts,tsx,jsx,js,graphql}", }, b: { - schema: './schema/ascode.ts', - documents: './b/**/*.{ts,tsx,jsx,js,graphql}', + schema: "./schema/ascode.ts", + documents: "./b/**/*.{ts,tsx,jsx,js,graphql}", }, }, }; @@ -133,7 +190,7 @@ ```ts // or define it inline - import { type LocateCommand } from 'graphql-language-service-server'; + import { type LocateCommand } from "graphql-language-service-server"; // relay LSP style const locateCommand = (projectName: string, typePath: string) => { @@ -159,8 +216,8 @@ languageService: { locateCommand, }, - schema: 'https://localhost:8000/graphql', - documents: './**/*.{ts,tsx,jsx,js,graphql}', + schema: "https://localhost:8000/graphql", + documents: "./**/*.{ts,tsx,jsx,js,graphql}", }; ``` diff --git a/packages/graphql-language-service-cli/bin/graphql.js b/packages/graphql-language-service-cli/bin/graphql.js index fe1a8014b50..0b8cceb0d96 100755 --- a/packages/graphql-language-service-cli/bin/graphql.js +++ b/packages/graphql-language-service-cli/bin/graphql.js @@ -11,5 +11,4 @@ if (process?.env) { process.env.GRAPHQL_NO_NAME_WARNING = true; } -require('@babel/polyfill'); require('../dist/cli'); diff --git a/packages/graphql-language-service-cli/package.json b/packages/graphql-language-service-cli/package.json index 3e6b43f8b60..6dbbc442143 100644 --- a/packages/graphql-language-service-cli/package.json +++ b/packages/graphql-language-service-cli/package.json @@ -1,6 +1,6 @@ { "name": "graphql-language-service-cli", - "version": "3.5.0", + "version": "4.0.0", "description": "An interface for building GraphQL language services for IDEs", "contributors": [ "Hyohyeon Jeong ", @@ -25,8 +25,8 @@ "src" ], "scripts": { - "build": "tsgo -p tsconfig.json && tsgo -p tsconfig.esm.json", - "types:check": "tsgo --noEmit", + "build": "tsc -p tsconfig.json && tsc -p tsconfig.esm.json", + "types:check": "tsc --noEmit", "test": "vitest run" }, "keywords": [ @@ -37,17 +37,16 @@ "LSP" ], "peerDependencies": { - "graphql": "^15.5.0 || ^16.0.0 || ^17.0.0" + "graphql": "^16.11.0 || ^17.0.0" }, "dependencies": { - "@babel/polyfill": "^7.12.1", "@types/yargs": "16.0.5", - "graphql-language-service": "^5.3.0", - "graphql-language-service-server": "^2.14.0", + "graphql-language-service": "^6.0.0", + "graphql-language-service-server": "^3.0.0", "yargs": "^16.2.0" }, "devDependencies": { - "@typescript/native-preview": "^7.0.0-dev.20260707.2", - "graphql": "^16.9.0" + "@typescript/native": "npm:typescript@7.1.0-beta", + "graphql": "^17.0.2" } } diff --git a/packages/graphql-language-service-cli/src/__tests__/client.test.ts b/packages/graphql-language-service-cli/src/__tests__/client.test.ts index 5c8dac01439..684efcd88f4 100644 --- a/packages/graphql-language-service-cli/src/__tests__/client.test.ts +++ b/packages/graphql-language-service-cli/src/__tests__/client.test.ts @@ -9,38 +9,29 @@ import { describe, it, expect, vi, afterEach } from 'vitest'; import main from '../client'; -describe('process.stderr.write', () => { +describe('error output', () => { afterEach(() => { vi.restoreAllMocks(); }); - it('is passed information on error of string type', () => { - const argv = { - schemaPath: '...', - text: 'foo', - }; - const mockStdErrWrite = vi - .spyOn(process.stderr, 'write') - .mockImplementation(); - vi.spyOn(process, 'exit').mockImplementation(() => {}); - const undefinedWithNewLine = /^undefined\n$/; + it.each(['autocomplete', 'outline', 'validate'])( + 'writes the %s error to stderr', + command => { + const argv = { + schemaPath: '...', + text: 'foo', + }; + const mockStdErrWrite = vi + .spyOn(process.stderr, 'write') + .mockImplementation(() => true); + const mockExit = vi.spyOn(process, 'exit').mockImplementation(() => {}); + main(command, argv); - main('autocomplete', argv); - expect(mockStdErrWrite).toHaveBeenLastCalledWith(expect.any(String)); - expect(mockStdErrWrite).toHaveBeenLastCalledWith( - expect.not.stringMatching(undefinedWithNewLine), - ); - - main('outline', argv); - expect(mockStdErrWrite).toHaveBeenLastCalledWith(expect.any(String)); - expect(mockStdErrWrite).toHaveBeenLastCalledWith( - expect.not.stringMatching(undefinedWithNewLine), - ); - - main('validate', argv); - expect(mockStdErrWrite).toHaveBeenLastCalledWith(expect.any(String)); - expect(mockStdErrWrite).toHaveBeenLastCalledWith( - expect.not.stringMatching(undefinedWithNewLine), - ); - }); + expect(mockStdErrWrite).toHaveBeenCalledOnce(); + expect(mockStdErrWrite).toHaveBeenCalledWith( + expect.stringMatching(/^(?!undefined\n$).+\n$/s), + ); + expect(mockExit).toHaveBeenCalledWith(1); + }, + ); }); diff --git a/packages/graphql-language-service-cli/tsconfig.esm.json b/packages/graphql-language-service-cli/tsconfig.esm.json index 7f3a870ebd8..f9147a12538 100644 --- a/packages/graphql-language-service-cli/tsconfig.esm.json +++ b/packages/graphql-language-service-cli/tsconfig.esm.json @@ -1,5 +1,5 @@ { - "extends": "../../resources/tsconfig.base.esm.json", + "extends": "../../resources/tsconfig.graphql17.esm.json", "compilerOptions": { "rootDir": "./src", "outDir": "./esm", diff --git a/packages/graphql-language-service-server/CHANGELOG.md b/packages/graphql-language-service-server/CHANGELOG.md index 52fbe1c6f1c..cfaecd8a2fa 100644 --- a/packages/graphql-language-service-server/CHANGELOG.md +++ b/packages/graphql-language-service-server/CHANGELOG.md @@ -1,5 +1,60 @@ # graphql-language-service-server +## 3.0.0 + +### Major Changes + +- [#4478](https://github.com/graphql/graphiql/pull/4478) [`066528a`](https://github.com/graphql/graphiql/commit/066528a6bb7706d685536888d7b5549d6fd5a109) Thanks [@trevor-scheer](https://github.com/trevor-scheer)! - GraphQL.js 15 and 16.0–16.10 are no longer supported peer dependencies. The supported range is `^16.11.0 || ^17.0.0`. GraphQL.js 16.11 fixes OneOf input validation for nullable variables and tightens input-object coercion to reject arrays, giving GraphiQL 6 a correct baseline for OneOf inputs. Upgrade `graphql` before upgrading these packages. + +### Patch Changes + +- [#4632](https://github.com/graphql/graphiql/pull/4632) [`4225e29`](https://github.com/graphql/graphiql/commit/4225e29ebea023591aeb5c54a84cf98b226f6df7) Thanks [@trevor-scheer](https://github.com/trevor-scheer)! - Update Astro parsing to compiler 4 while preserving GraphQL query locations. + +- Updated dependencies [[`066528a`](https://github.com/graphql/graphiql/commit/066528a6bb7706d685536888d7b5549d6fd5a109), [`5affc68`](https://github.com/graphql/graphiql/commit/5affc680b14dc04feb02fc8713a18dfdd56b4a81), [`3d368ba`](https://github.com/graphql/graphiql/commit/3d368ba8747ac2ad0bd73c8bf6f46f952122cfc8)]: + - graphql-language-service@6.0.0 + +## 3.0.0-rc.2 + +### Patch Changes + +- [#4632](https://github.com/graphql/graphiql/pull/4632) [`4225e29`](https://github.com/graphql/graphiql/commit/4225e29ebea023591aeb5c54a84cf98b226f6df7) Thanks [@trevor-scheer](https://github.com/trevor-scheer)! - Update Astro parsing to compiler 4 while preserving GraphQL query locations. + +- Updated dependencies [[`3d368ba`](https://github.com/graphql/graphiql/commit/3d368ba8747ac2ad0bd73c8bf6f46f952122cfc8)]: + - graphql-language-service@6.0.0-rc.1 + +## 3.0.0-rc.1 + +### Patch Changes + +- [#4474](https://github.com/graphql/graphiql/pull/4474) [`a539b83`](https://github.com/graphql/graphiql/commit/a539b83cac07d3987a8098346b1647a0ddec67f4) Thanks [@trevor-scheer](https://github.com/trevor-scheer)! - Restore caret ranges for internal GraphiQL dependencies. The RC versions sort after the stale canary and `next` versions that beta ranges selected, so the exact pins from the beta cycle are no longer necessary. + +## 3.0.0-rc.0 + +### Patch Changes + +- [#4595](https://github.com/graphql/graphiql/pull/4595) [`bcd13dc`](https://github.com/graphql/graphiql/commit/bcd13dca46e2bb75837b33fce9f574712c669457) Thanks [@trevor-scheer](https://github.com/trevor-scheer)! - Move the GraphiQL 6 package family from beta to release candidate versions. + +- Updated dependencies [[`bcd13dc`](https://github.com/graphql/graphiql/commit/bcd13dca46e2bb75837b33fce9f574712c669457)]: + - graphql-language-service@6.0.0-rc.0 + +## 3.0.0-beta.1 + +### Patch Changes + +- Updated dependencies [[`5affc68`](https://github.com/graphql/graphiql/commit/5affc680b14dc04feb02fc8713a18dfdd56b4a81)]: + - graphql-language-service@6.0.0-beta.1 + +## 3.0.0-beta.0 + +### Major Changes + +- [#4478](https://github.com/graphql/graphiql/pull/4478) [`066528a`](https://github.com/graphql/graphiql/commit/066528a6bb7706d685536888d7b5549d6fd5a109) Thanks [@trevor-scheer](https://github.com/trevor-scheer)! - GraphQL.js 15 and 16.0–16.10 are no longer supported peer dependencies. The supported range is `^16.11.0 || ^17.0.0`. GraphQL.js 16.11 fixes OneOf input validation for nullable variables and tightens input-object coercion to reject arrays, giving GraphiQL 6 a correct baseline for OneOf inputs. Upgrade `graphql` before upgrading these packages. + +### Patch Changes + +- Updated dependencies [[`066528a`](https://github.com/graphql/graphiql/commit/066528a6bb7706d685536888d7b5549d6fd5a109)]: + - graphql-language-service@6.0.0-beta.0 + ## 2.15.0 ### Minor Changes diff --git a/packages/graphql-language-service-server/package.json b/packages/graphql-language-service-server/package.json index 99934502015..16ee12a2311 100644 --- a/packages/graphql-language-service-server/package.json +++ b/packages/graphql-language-service-server/package.json @@ -1,6 +1,6 @@ { "name": "graphql-language-service-server", - "version": "2.15.0", + "version": "3.0.0", "description": "Server process backing the GraphQL Language Service", "contributors": [ "Greg Hurrell (https://greg.hurrell.net)", @@ -31,19 +31,19 @@ "typescript" ], "scripts": { - "build": "tsgo -p tsconfig.json && tsgo -p tsconfig.esm.json", + "build": "tsc -p tsconfig.json && tsc -p tsconfig.esm.json", "test": "vitest run", - "types:check": "tsgo --noEmit" + "types:check": "tsc --noEmit" }, "main": "dist/index.js", "module": "esm/index.js", "typings": "esm/index.d.ts", "peerDependencies": { - "graphql": "^16.0.0" + "graphql": "^16.11.0 || ^17.0.0" }, "COMMENT": "please do not remove dependencies without thorough testing. many dependencies are not imported directly, as they are peer dependencies", "dependencies": { - "@astrojs/compiler": "^2.10.1", + "@astrojs/compiler": "^4.0.0", "@babel/parser": "^8.0.4", "@babel/types": "^8.0.4", "@graphql-tools/code-file-loader": "8.0.3", @@ -54,7 +54,7 @@ "fast-glob": "^3.2.7", "glob": "^13.0.6", "graphql-config": "^5.1.6", - "graphql-language-service": "^5.7.0", + "graphql-language-service": "^6.0.0", "lru-cache": "^11.5.2", "node-abort-controller": "^3.0.1", "nullthrows": "^1.0.0", @@ -71,8 +71,8 @@ "devDependencies": { "@types/debounce-promise": "^3.1.9", "@types/glob": "^8.1.0", - "@typescript/native-preview": "^7.0.0-dev.20260707.2", - "graphql": "^16.9.0", + "@typescript/native": "npm:typescript@7.1.0-beta", + "graphql": "^17.0.2", "msw": "^2.13.4", "vscode-languageserver-protocol": "^3.17.1" } diff --git a/packages/graphql-language-service-server/src/__tests__/MessageProcessor.spec.ts b/packages/graphql-language-service-server/src/__tests__/MessageProcessor.spec.ts index 902e718c64a..14f3fc65bf7 100644 --- a/packages/graphql-language-service-server/src/__tests__/MessageProcessor.spec.ts +++ b/packages/graphql-language-service-server/src/__tests__/MessageProcessor.spec.ts @@ -18,7 +18,7 @@ import { http, HttpResponse } from 'msw'; import { setupServer } from 'msw/node'; import * as graphql from 'graphql'; -import { createSchema } from '../../../graphiql/test/schema.js'; +import { createSchema } from '../../../graphiql-e2e/test/schema.js'; const graphiqlSchema = createSchema(graphql); @@ -436,7 +436,7 @@ describe('MessageProcessor with config', () => { character: 0, }, end: { - line: 109 + offset, + line: 112 + offset, character: 1, }, }); @@ -450,11 +450,11 @@ describe('MessageProcessor with config', () => { // this might break, please adjust if you see a failure here expect(serializeRange(schemaDefs[0].range)).toEqual({ start: { - line: 111 + offset, + line: 114 + offset, character: 0, }, end: { - line: 119 + offset, + line: 122 + offset, character: 1, }, }); diff --git a/packages/graphql-language-service-server/src/__tests__/__utils__/runServer.js b/packages/graphql-language-service-server/src/__tests__/__utils__/runServer.js deleted file mode 100644 index 0e328a55450..00000000000 --- a/packages/graphql-language-service-server/src/__tests__/__utils__/runServer.js +++ /dev/null @@ -1 +0,0 @@ -exports.default = require('../../../../graphiql/test/e2e-server.js'); diff --git a/packages/graphql-language-service-server/src/__tests__/findGraphQLTags.test.ts b/packages/graphql-language-service-server/src/__tests__/findGraphQLTags.test.ts index 3ca87b8b9f4..77d3a679514 100644 --- a/packages/graphql-language-service-server/src/__tests__/findGraphQLTags.test.ts +++ b/packages/graphql-language-service-server/src/__tests__/findGraphQLTags.test.ts @@ -619,5 +619,6 @@ export function Example(arg: string) {}`;

Year: {film.releaseDate}

`; const contents = await findGraphQLTags(text, '.astro'); expect(contents.length).toEqual(1); + expect(contents[0].range.start.line).toEqual(8); }); }); diff --git a/packages/graphql-language-service-server/src/parsers/astro.ts b/packages/graphql-language-service-server/src/parsers/astro.ts index cf2417ded08..dd212c5bdf5 100644 --- a/packages/graphql-language-service-server/src/parsers/astro.ts +++ b/packages/graphql-language-service-server/src/parsers/astro.ts @@ -12,9 +12,7 @@ type ParseAstroResult = }; async function parseAstro(source: string): Promise { - const { ast, diagnostics } = await parse(source, { - position: false, // defaults to `true` - }); + const { ast, diagnostics } = await parse(source); if (diagnostics.some(d => d.severity === /* Error */ 1)) { return { diff --git a/packages/graphql-language-service-server/src/parsers/svelte.ts b/packages/graphql-language-service-server/src/parsers/svelte.ts index e838271ff29..11992049c1b 100644 --- a/packages/graphql-language-service-server/src/parsers/svelte.ts +++ b/packages/graphql-language-service-server/src/parsers/svelte.ts @@ -11,6 +11,9 @@ export const svelteParser: SourceParser = (text, uri, logger) => { const consumer = new SourceMapConsumer({ ...svelteResult.map, + sourcesContent: svelteResult.map.sourcesContent?.map( + sourceContent => sourceContent ?? '', + ), version: String(svelteResult.map.version), }); diff --git a/packages/graphql-language-service-server/tsconfig.esm.json b/packages/graphql-language-service-server/tsconfig.esm.json index 4f9b0d14856..61025ba50e8 100644 --- a/packages/graphql-language-service-server/tsconfig.esm.json +++ b/packages/graphql-language-service-server/tsconfig.esm.json @@ -1,5 +1,5 @@ { - "extends": "../../resources/tsconfig.base.esm.json", + "extends": "../../resources/tsconfig.graphql17.esm.json", "compilerOptions": { "target": "ES2018", "composite": true, diff --git a/packages/graphql-language-service-server/vitest.config.mts b/packages/graphql-language-service-server/vitest.config.mts index 87c487e939f..787cecd8d4a 100644 --- a/packages/graphql-language-service-server/vitest.config.mts +++ b/packages/graphql-language-service-server/vitest.config.mts @@ -26,7 +26,7 @@ export default defineConfig({ { find: /^graphql-language-service$/, replacement: path.resolve( - __dirname, + import.meta.dirname, '../graphql-language-service/src/index.ts', ), }, diff --git a/packages/graphql-language-service/CHANGELOG.md b/packages/graphql-language-service/CHANGELOG.md index fa37cc11583..b04119a355f 100644 --- a/packages/graphql-language-service/CHANGELOG.md +++ b/packages/graphql-language-service/CHANGELOG.md @@ -1,5 +1,41 @@ # graphql-language-service +## 6.0.0 + +### Major Changes + +- [#4478](https://github.com/graphql/graphiql/pull/4478) [`066528a`](https://github.com/graphql/graphiql/commit/066528a6bb7706d685536888d7b5549d6fd5a109) Thanks [@trevor-scheer](https://github.com/trevor-scheer)! - GraphQL.js 15 and 16.0–16.10 are no longer supported peer dependencies. The supported range is `^16.11.0 || ^17.0.0`. GraphQL.js 16.11 fixes OneOf input validation for nullable variables and tightens input-object coercion to reject arrays, giving GraphiQL 6 a correct baseline for OneOf inputs. Upgrade `graphql` before upgrading these packages. + +- [#4635](https://github.com/graphql/graphiql/pull/4635) [`3d368ba`](https://github.com/graphql/graphiql/commit/3d368ba8747ac2ad0bd73c8bf6f46f952122cfc8) Thanks [@trevor-scheer](https://github.com/trevor-scheer)! - Remove the deprecated `graphql` executable. Install `graphql-language-service-cli` and use `graphql-lsp` for the language server CLI. + +### Patch Changes + +- [#4590](https://github.com/graphql/graphiql/pull/4590) [`5affc68`](https://github.com/graphql/graphiql/commit/5affc680b14dc04feb02fc8713a18dfdd56b4a81) Thanks [@trevor-scheer](https://github.com/trevor-scheer)! - Remove the CommonJS-only `nullthrows` dependency and replace `picomatch-browser` with an ESM-compatible glob matcher. + +## 6.0.0-rc.1 + +### Major Changes + +- [#4635](https://github.com/graphql/graphiql/pull/4635) [`3d368ba`](https://github.com/graphql/graphiql/commit/3d368ba8747ac2ad0bd73c8bf6f46f952122cfc8) Thanks [@trevor-scheer](https://github.com/trevor-scheer)! - Remove the deprecated `graphql` executable. Install `graphql-language-service-cli` and use `graphql-lsp` for the language server CLI. + +## 6.0.0-rc.0 + +### Patch Changes + +- [#4595](https://github.com/graphql/graphiql/pull/4595) [`bcd13dc`](https://github.com/graphql/graphiql/commit/bcd13dca46e2bb75837b33fce9f574712c669457) Thanks [@trevor-scheer](https://github.com/trevor-scheer)! - Move the GraphiQL 6 package family from beta to release candidate versions. + +## 6.0.0-beta.1 + +### Patch Changes + +- [#4590](https://github.com/graphql/graphiql/pull/4590) [`5affc68`](https://github.com/graphql/graphiql/commit/5affc680b14dc04feb02fc8713a18dfdd56b4a81) Thanks [@trevor-scheer](https://github.com/trevor-scheer)! - Remove the CommonJS-only `nullthrows` dependency and replace `picomatch-browser` with an ESM-compatible glob matcher. + +## 6.0.0-beta.0 + +### Major Changes + +- [#4478](https://github.com/graphql/graphiql/pull/4478) [`066528a`](https://github.com/graphql/graphiql/commit/066528a6bb7706d685536888d7b5549d6fd5a109) Thanks [@trevor-scheer](https://github.com/trevor-scheer)! - GraphQL.js 15 and 16.0–16.10 are no longer supported peer dependencies. The supported range is `^16.11.0 || ^17.0.0`. GraphQL.js 16.11 fixes OneOf input validation for nullable variables and tightens input-object coercion to reject arrays, giving GraphiQL 6 a correct baseline for OneOf inputs. Upgrade `graphql` before upgrading these packages. + ## 5.7.0 ### Minor Changes diff --git a/packages/graphql-language-service/package.json b/packages/graphql-language-service/package.json index 342c4a72635..d864bf6c322 100644 --- a/packages/graphql-language-service/package.json +++ b/packages/graphql-language-service/package.json @@ -1,6 +1,6 @@ { "name": "graphql-language-service", - "version": "5.7.0", + "version": "6.0.0", "description": "The official, runtime independent Language Service for GraphQL", "contributors": [ "GraphQL Contributors" @@ -28,24 +28,20 @@ "main": "dist/index.js", "module": "esm/index.js", "types": "dist/index.d.ts", - "bin": { - "graphql": "./dist/temp-bin.js" - }, "peerDependencies": { - "graphql": "^15.5.0 || ^16.0.0 || ^17.0.0" + "graphql": "^16.11.0 || ^17.0.0" }, "dependencies": { "debounce-promise": "^3.1.2", - "nullthrows": "^1.0.0", "vscode-languageserver-types": "^3.17.1" }, "devDependencies": { "@types/benchmark": "^2.1.5", "@types/debounce-promise": "^3.1.9", "@types/json-schema": "7.0.9", - "@typescript/native-preview": "^7.0.0-dev.20260707.2", + "@typescript/native": "npm:typescript@7.1.0-beta", "benchmark": "^2.1.4", - "graphql": "^16.9.0", + "graphql": "^17.0.2", "graphql-config": "^5.1.6", "lodash": "^4.18.1", "platform": "^1.3.5", @@ -53,8 +49,8 @@ "typescript": "^5.8.0" }, "scripts": { - "build": "tsgo -p tsconfig.json && tsgo -p tsconfig.esm.json", - "types:check": "tsgo --noEmit", + "build": "tsc -p tsconfig.json && tsc -p tsconfig.esm.json", + "types:check": "tsc --noEmit", "benchmark": "ts-node benchmark/index.ts", "test": "vitest run" } diff --git a/packages/graphql-language-service/src/temp-bin.ts b/packages/graphql-language-service/src/temp-bin.ts deleted file mode 100644 index 51f7710b74c..00000000000 --- a/packages/graphql-language-service/src/temp-bin.ts +++ /dev/null @@ -1,39 +0,0 @@ -#!/bin/node -'use strict'; - -function bright(str: string) { - return `\x1b[1m${str}\x1b[0m`; -} - -function yellow(str: string) { - return `\x1b[33m${str}\x1b[0m`; -} - -process.stderr.write(` - ${bright(yellow('WARNING!'))} - - ${bright('graphql-language-service')} command line interface has been moved to - - ${bright('graphql-language-service-cli')} - - as of version 3.0.0 - - - ${bright('Re-Installation:')} - - yarn: - ${bright('yarn global remove graphql-language-service')} - ${bright('yarn global add graphql-language-service-cli')} - - npm: - ${bright('npm uninstall -g graphql-language-service')} - ${bright('npm i -g graphql-language-service-cli')} - - - ${bright('New Binary Path:')} - - the executable will now be available as ${bright( - 'graphql-lsp', - )} instead of ${bright('graphql')} - -`); diff --git a/packages/graphql-language-service/src/utils/__tests__/__schema__/StarWarsSchema.graphql b/packages/graphql-language-service/src/utils/__tests__/__schema__/StarWarsSchema.graphql index b7f5eb6af96..a566fb4855e 100644 --- a/packages/graphql-language-service/src/utils/__tests__/__schema__/StarWarsSchema.graphql +++ b/packages/graphql-language-service/src/utils/__tests__/__schema__/StarWarsSchema.graphql @@ -98,5 +98,7 @@ type Query { hero(episode: Episode): Character human(id: String!): Human droid(id: String!): Droid - inputTypeTest(args: InputType = { key: "key" }): TestType + inputTypeTest( + args: InputType = { key: "key", exampleObject: { isChild: true } } + ): TestType } diff --git a/packages/graphql-language-service/src/utils/fragmentDependencies.ts b/packages/graphql-language-service/src/utils/fragmentDependencies.ts index f6c2e02712f..fabb095b290 100644 --- a/packages/graphql-language-service/src/utils/fragmentDependencies.ts +++ b/packages/graphql-language-service/src/utils/fragmentDependencies.ts @@ -6,7 +6,6 @@ */ import { DocumentNode, FragmentDefinitionNode, visit } from 'graphql'; -import nullthrows from 'nullthrows'; import { parseDocument } from '../parser'; import type { GraphQLLanguageServiceOptions } from '../types'; @@ -55,8 +54,9 @@ export const getFragmentDependenciesForAST = ( const asts = new Set(); for (const name of referencedFragNames) { - if (!existingFrags.has(name) && fragmentDefinitions.has(name)) { - asts.add(nullthrows(fragmentDefinitions.get(name))); + const fragment = fragmentDefinitions.get(name); + if (!existingFrags.has(name) && fragment) { + asts.add(fragment); } } @@ -65,11 +65,9 @@ export const getFragmentDependenciesForAST = ( for (const ast of asts) { visit(ast, { FragmentSpread(node) { - if ( - !referencedFragNames.has(node.name.value) && - fragmentDefinitions.get(node.name.value) - ) { - asts.add(nullthrows(fragmentDefinitions.get(node.name.value))); + const fragment = fragmentDefinitions.get(node.name.value); + if (!referencedFragNames.has(node.name.value) && fragment) { + asts.add(fragment); referencedFragNames.add(node.name.value); } }, diff --git a/packages/graphql-language-service/src/utils/getVariablesJSONSchema.ts b/packages/graphql-language-service/src/utils/getVariablesJSONSchema.ts index 7aa77c66cdd..ec931faee9c 100644 --- a/packages/graphql-language-service/src/utils/getVariablesJSONSchema.ts +++ b/packages/graphql-language-service/src/utils/getVariablesJSONSchema.ts @@ -6,6 +6,7 @@ */ import { + type ConstValueNode, GraphQLInputField, GraphQLInputType, isEnumType, @@ -13,6 +14,7 @@ import { isListType, isNonNullType, isScalarType, + valueFromAST, } from 'graphql'; import type { @@ -284,10 +286,22 @@ function getJSONSchemaFromGraphQLType( } } - if ('defaultValue' in fieldOrType && fieldOrType.defaultValue !== undefined) { - definition.default = fieldOrType.defaultValue as - | JSONSchema4Type - | undefined; + // GraphQL 17 uses `default`; remove the `defaultValue` fallback with GraphQL 16 support. + if ('default' in fieldOrType && fieldOrType.default != null) { + const defaultInput = fieldOrType.default as { + literal?: ConstValueNode; + value?: unknown; + }; + definition.default = ( + defaultInput.literal + ? valueFromAST(defaultInput.literal, type) + : defaultInput.value + ) as JSONSchema4Type | undefined; + } else if ( + 'defaultValue' in fieldOrType && + fieldOrType.defaultValue !== undefined + ) { + definition.default = fieldOrType.defaultValue as JSONSchema4Type; } // append to type descriptions, or schema description diff --git a/packages/monaco-graphql/CHANGELOG.md b/packages/monaco-graphql/CHANGELOG.md index fcb032d0a59..92b88ec76c6 100644 --- a/packages/monaco-graphql/CHANGELOG.md +++ b/packages/monaco-graphql/CHANGELOG.md @@ -1,5 +1,57 @@ # Change Log +## 2.0.0 + +### Major Changes + +- [#4478](https://github.com/graphql/graphiql/pull/4478) [`066528a`](https://github.com/graphql/graphiql/commit/066528a6bb7706d685536888d7b5549d6fd5a109) Thanks [@trevor-scheer](https://github.com/trevor-scheer)! - GraphQL.js 15 and 16.0–16.10 are no longer supported peer dependencies. The supported range is `^16.11.0 || ^17.0.0`. GraphQL.js 16.11 fixes OneOf input validation for nullable variables and tightens input-object coercion to reject arrays, giving GraphiQL 6 a correct baseline for OneOf inputs. Upgrade `graphql` before upgrading these packages. + +- [#4566](https://github.com/graphql/graphiql/pull/4566) [`f916fd6`](https://github.com/graphql/graphiql/commit/f916fd6ba17c23cedd459b5bf16c55dea3b826e8) Thanks [@trevor-scheer](https://github.com/trevor-scheer)! - Upgrade the bundled Monaco Editor to 0.57 and adopt the worker and ESM entry points introduced in 0.56. Published packages accept `monaco-editor` `>=0.56.0 <0.58.0`. If you configure Monaco directly, use Monaco 0.56 or 0.57, replace `monaco-editor/esm/vs/*` imports with exported entry points, and configure `MonacoEnvironment.getWorker` to return the GraphQL worker for the `graphql` label. Custom GraphQL workers must initialize immediately and provide non-cloneable configuration by overriding `GraphQLWorker.initialize`. GraphiQL's worker setup helpers handle these changes and load the matching `monaco-graphql` major. See the [GraphiQL 6 migration guide](https://github.com/graphql/graphiql/blob/c2e792bc446d5d6751bd7cd1d9ac283a4a1d8fc4/docs/migration/graphiql-6.0.0.md#monaco-editor-056-and-057-worker-setup) for examples. This update builds on the initial worker migration contributed by @lukasbash. + +### Patch Changes + +- [#4590](https://github.com/graphql/graphiql/pull/4590) [`5affc68`](https://github.com/graphql/graphiql/commit/5affc680b14dc04feb02fc8713a18dfdd56b4a81) Thanks [@trevor-scheer](https://github.com/trevor-scheer)! - Remove the CommonJS-only `nullthrows` dependency and replace `picomatch-browser` with an ESM-compatible glob matcher. + +- Updated dependencies [[`066528a`](https://github.com/graphql/graphiql/commit/066528a6bb7706d685536888d7b5549d6fd5a109), [`5affc68`](https://github.com/graphql/graphiql/commit/5affc680b14dc04feb02fc8713a18dfdd56b4a81), [`3d368ba`](https://github.com/graphql/graphiql/commit/3d368ba8747ac2ad0bd73c8bf6f46f952122cfc8)]: + - graphql-language-service@6.0.0 + +## 2.0.0-rc.1 + +### Patch Changes + +- [#4474](https://github.com/graphql/graphiql/pull/4474) [`a539b83`](https://github.com/graphql/graphiql/commit/a539b83cac07d3987a8098346b1647a0ddec67f4) Thanks [@trevor-scheer](https://github.com/trevor-scheer)! - Restore caret ranges for internal GraphiQL dependencies. The RC versions sort after the stale canary and `next` versions that beta ranges selected, so the exact pins from the beta cycle are no longer necessary. + +## 2.0.0-rc.0 + +### Patch Changes + +- [#4595](https://github.com/graphql/graphiql/pull/4595) [`bcd13dc`](https://github.com/graphql/graphiql/commit/bcd13dca46e2bb75837b33fce9f574712c669457) Thanks [@trevor-scheer](https://github.com/trevor-scheer)! - Move the GraphiQL 6 package family from beta to release candidate versions. + +- Updated dependencies [[`bcd13dc`](https://github.com/graphql/graphiql/commit/bcd13dca46e2bb75837b33fce9f574712c669457)]: + - graphql-language-service@6.0.0-rc.0 + +## 2.0.0-beta.1 + +### Patch Changes + +- [#4590](https://github.com/graphql/graphiql/pull/4590) [`5affc68`](https://github.com/graphql/graphiql/commit/5affc680b14dc04feb02fc8713a18dfdd56b4a81) Thanks [@trevor-scheer](https://github.com/trevor-scheer)! - Remove the CommonJS-only `nullthrows` dependency and replace `picomatch-browser` with an ESM-compatible glob matcher. + +- Updated dependencies [[`5affc68`](https://github.com/graphql/graphiql/commit/5affc680b14dc04feb02fc8713a18dfdd56b4a81)]: + - graphql-language-service@6.0.0-beta.1 + +## 2.0.0-beta.0 + +### Major Changes + +- [#4478](https://github.com/graphql/graphiql/pull/4478) [`066528a`](https://github.com/graphql/graphiql/commit/066528a6bb7706d685536888d7b5549d6fd5a109) Thanks [@trevor-scheer](https://github.com/trevor-scheer)! - GraphQL.js 15 and 16.0–16.10 are no longer supported peer dependencies. The supported range is `^16.11.0 || ^17.0.0`. GraphQL.js 16.11 fixes OneOf input validation for nullable variables and tightens input-object coercion to reject arrays, giving GraphiQL 6 a correct baseline for OneOf inputs. Upgrade `graphql` before upgrading these packages. + +- [#4566](https://github.com/graphql/graphiql/pull/4566) [`f916fd6`](https://github.com/graphql/graphiql/commit/f916fd6ba17c23cedd459b5bf16c55dea3b826e8) Thanks [@trevor-scheer](https://github.com/trevor-scheer)! - Upgrade the bundled Monaco Editor to 0.57 and adopt the worker and ESM entry points introduced in 0.56. Published packages accept `monaco-editor` `>=0.56.0 <0.58.0`. If you configure Monaco directly, use Monaco 0.56 or 0.57, replace `monaco-editor/esm/vs/*` imports with exported entry points, and configure `MonacoEnvironment.getWorker` to return the GraphQL worker for the `graphql` label. Custom GraphQL workers must initialize immediately and provide non-cloneable configuration by overriding `GraphQLWorker.initialize`. GraphiQL's worker setup helpers handle these changes automatically. See the [GraphiQL 6 migration guide](../../docs/migration/graphiql-6.0.0.md#monaco-editor-056-and-057-worker-setup) for examples. This update builds on the initial worker migration contributed by @lukasbash. + +### Patch Changes + +- Updated dependencies [[`066528a`](https://github.com/graphql/graphiql/commit/066528a6bb7706d685536888d7b5549d6fd5a109)]: + - graphql-language-service@6.0.0-beta.0 + ## 1.9.0 ### Minor Changes diff --git a/packages/monaco-graphql/README.md b/packages/monaco-graphql/README.md index 12702bacb78..1ed57be57ae 100644 --- a/packages/monaco-graphql/README.md +++ b/packages/monaco-graphql/README.md @@ -42,6 +42,11 @@ It provides the following features while editing GraphQL files: For now, we use `language` id of `graphql` until we can ensure we can dovetail nicely with the official `graphql` language ID. +`monaco-graphql@2` supports `monaco-editor` 0.56 and 0.57. Applications must +configure +`globalThis.MonacoEnvironment.getWorker` to return the GraphQL worker when the +worker label is `graphql`. + To use with webpack, here is an example to get you started: ```sh @@ -51,7 +56,7 @@ yarn add monaco-graphql ## Sync Example ```ts -import * as monaco from 'monaco-editor/esm/vs/editor/editor.api'; +import * as monaco from 'monaco-graphql/monaco-editor'; import { initializeMode } from 'monaco-graphql/initializeMode'; // `monaco-graphql/esm/initializeMode` is deprecated but still works @@ -99,7 +104,7 @@ The existing API works as before in terms of instantiating the schema. To avoid manually calling getWorker(), you can use the monaco editor plugins for webpack or vite (see examples, and below) ```ts -import * as monaco from 'monaco-editor/esm/vs/editor/editor.api'; +import * as monaco from 'monaco-graphql/monaco-editor'; // enables our language worker right away, despite no schema import 'monaco-graphql'; @@ -152,7 +157,7 @@ any given set of operations ## Full Sync Demo with Variables JSON ```ts -import * as monaco from 'monaco-editor/esm/vs/editor/editor.api'; +import * as monaco from 'monaco-graphql/monaco-editor'; import { initializeMode } from 'monaco-graphql/initializeMode'; @@ -257,7 +262,7 @@ Warning: by default, completion and other features will not work, only highlight import { initializeMode } from 'monaco-graphql/lite'; // enable completion -import 'monaco-editor/esm/vs/editor/contrib/inlineCompletions/browser/inlineCompletions.contribution'; +import 'monaco-editor/features/inlineCompletions/register'; const api = initializeMode({ schemas: [ @@ -460,8 +465,7 @@ should give you a starting point to see how to implement it with yourself using `useEffect` on `didMount` to prevent breaking SSR. - it may work with other libraries by using a similar strategy to [this](https://github.com/graphql/graphiql/blob/9df315b44896efa313ed6744445fc8f9e702ebc3/examples/monaco-graphql-webpack/src/editors.ts#L15). - you can also provide `MonacoEnvironment.getWorkerUrl` which works better as an - async import of your pre-build worker files + configure `MonacoEnvironment.getWorker` to return your pre-built worker. ## Custom Webworker (for passing non-static config to worker) @@ -484,7 +488,7 @@ config such as `schemaLoader` to `createData`: import type * as monaco from 'monaco-editor'; import type { ICreateData } from 'monaco-graphql'; // @ts-expect-error -- ignore missing types -import { initialize } from 'monaco-editor/esm/vs/editor/editor.worker'; +import { initialize } from 'monaco-editor/editor/editor.worker'; import { GraphQLWorker } from 'monaco-graphql/esm/GraphQLWorker'; import { GraphQLError, ValidationRule } from 'graphql'; @@ -503,21 +507,23 @@ const RequireOperationNameRule: ValidationRule = context => { }; }; -globalThis.onmessage = () => { - initialize((ctx: monaco.worker.IWorkerContext, createData: ICreateData) => { +class CustomGraphQLWorker extends GraphQLWorker { + override initialize(createData: ICreateData) { createData.languageConfig.customValidationRules = [ RequireOperationNameRule, ]; - return new GraphQLWorker(ctx, createData); - }); -}; + super.initialize(createData); + } +} + +initialize((ctx: monaco.worker.IWorkerContext) => new CustomGraphQLWorker(ctx)); ``` then, in your application: ```ts // Vite query suffixes https://vite.dev/guide/features.html#import-with-query-suffixes -import EditorWorker from 'monaco-editor/esm/vs/editor/editor.worker?worker'; +import EditorWorker from 'monaco-editor/editor/editor.worker?worker'; import GraphQLWorker from './my-graphql.worker?worker'; globalThis.MonacoEnvironment = { @@ -531,8 +537,15 @@ or, if you have webpack configured for it: ```ts globalThis.MonacoEnvironment = { - getWorkerUrl(_workerId: string, label: string) { - return label === 'graphql' ? 'my-graphql.worker.js' : 'editor.worker.js'; + getWorker(_workerId: string, label: string) { + return new Worker( + new URL( + label === 'graphql' + ? './my-graphql.worker.js' + : 'monaco-editor/editor/editor.worker.js', + import.meta.url, + ), + ); }, }; ``` diff --git a/packages/monaco-graphql/__fixtures__/bundle-test/index.html b/packages/monaco-graphql/__fixtures__/bundle-test/index.html new file mode 100644 index 00000000000..b78bb95423a --- /dev/null +++ b/packages/monaco-graphql/__fixtures__/bundle-test/index.html @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/packages/monaco-graphql/__fixtures__/bundle-test/index.ts b/packages/monaco-graphql/__fixtures__/bundle-test/index.ts new file mode 100644 index 00000000000..6492a7a603c --- /dev/null +++ b/packages/monaco-graphql/__fixtures__/bundle-test/index.ts @@ -0,0 +1,16 @@ +import JsonWorker from 'monaco-editor/languages/features/json/json.worker.js?worker'; +import EditorWorker from 'monaco-editor/editor/editor.worker.js?worker'; +import GraphQLWorker from 'monaco-graphql/esm/graphql.worker.js?worker'; +import 'monaco-graphql'; + +globalThis.MonacoEnvironment = { + getWorker(_workerId: string, label: string) { + switch (label) { + case 'json': + return new JsonWorker(); + case 'graphql': + return new GraphQLWorker(); + } + return new EditorWorker(); + }, +}; diff --git a/packages/monaco-graphql/__tests__/LanguageService.test.ts b/packages/monaco-graphql/__tests__/LanguageService.test.ts new file mode 100644 index 00000000000..eedbb8efdcc --- /dev/null +++ b/packages/monaco-graphql/__tests__/LanguageService.test.ts @@ -0,0 +1,38 @@ +import { describe, expect, it } from 'vitest'; +import { buildSchema } from 'graphql'; +import { LanguageService } from '../src/LanguageService'; + +const schema = buildSchema('type Query { hello: String }'); + +describe('LanguageService.getSchemaForFile', () => { + it('matches document URIs to schemas using fileMatch globs', () => { + const service = new LanguageService({ + schemas: [ + { + uri: 'admin-schema.graphql', + schema, + fileMatch: ['**/admin/**/*.graphql'], + }, + { + uri: 'storefront-schema.graphql', + schema, + fileMatch: ['**/storefront/**/*.graphql'], + }, + ], + }); + + expect( + service.getSchemaForFile( + 'file:///workspace/packages/admin/operations/query.graphql', + )?.uri, + ).toBe('admin-schema.graphql'); + expect( + service.getSchemaForFile( + 'file:///workspace/packages/storefront/operations/query.graphql', + )?.uri, + ).toBe('storefront-schema.graphql'); + expect(service.getSchemaForFile('file:///workspace/query.graphql')).toBe( + undefined, + ); + }); +}); diff --git a/packages/monaco-graphql/__tests__/monaco-editor.test.ts b/packages/monaco-graphql/__tests__/monaco-editor.test.ts index baa0c82ee53..abde426af94 100644 --- a/packages/monaco-graphql/__tests__/monaco-editor.test.ts +++ b/packages/monaco-graphql/__tests__/monaco-editor.test.ts @@ -1,38 +1,69 @@ import { describe, it, expect } from 'vitest'; -import { $ } from 'execa'; +import { build, type UserConfig } from 'vite'; +import path from 'node:path'; -// eslint-disable-next-line no-control-regex -const ANSI_COLOR_REGEX = /\u001b\[\d+m/g; +const FIXTURE_ROOT = path.resolve( + import.meta.dirname, + '../__fixtures__/bundle-test', +); describe('monaco-editor', () => { - it('should include in bundle only graphql/json languages', async () => { - const { stdout } = - await $`pnpm --filter example-monaco-graphql-react-vite build`; - // When process.env.CI is set, stdout contains ANSI color codes, and vite doesn't have - // `--no-colors` flag - const files = stdout - .replaceAll(ANSI_COLOR_REGEX, '') - .split('\n') - .map(line => line.replaceAll(/\s{2,}.*/gm, '').trim()) - .filter(line => line.startsWith('dist/')); + it('should not bundle Monaco language modules beyond graphql and json', async () => { + const result = await build({ + root: FIXTURE_ROOT, + logLevel: 'warn', + build: { + write: false, + minify: false, + target: 'esnext', + reportCompressedSize: false, + rollupOptions: { + treeshake: false, + output: { + entryFileNames: '[name].js', + chunkFileNames: 'assets/[name].js', + assetFileNames: 'assets/[name].[ext]', + }, + }, + }, + worker: { + format: 'es', + rollupOptions: { + treeshake: false, + output: { + entryFileNames: 'workers/[name].js', + chunkFileNames: 'workers/[name].js', + }, + }, + }, + } satisfies UserConfig); + + const mainOutput = Array.isArray(result) ? result[0] : result; + const files = mainOutput.output.map(chunk => chunk.fileName).sort(); + + // Explicit negative assertion: importing monaco-graphql must not pull in + // TypeScript, CSS, or HTML language services. A consumer who only wants + // GraphQL + JSON should not be forced to ship them. + for (const file of files) { + expect(file).not.toMatch( + /typescript|tsMode|tsWorker|ts\.worker|cssMode|css\.worker|htmlMode|html\.worker/i, + ); + } + expect(files).toMatchInlineSnapshot(` [ - "dist/index.html", - "dist/workers/graphql.js", - "dist/assets/codicon.ttf", - "dist/workers/standalone.js", - "dist/workers/editor.worker.js", - "dist/workers/json.worker.js", - "dist/workers/graphql.worker.js", - "dist/workers/ts.worker.js", - "dist/assets/index.css", - "dist/assets/graphql.js", - "dist/assets/typescript.js", - "dist/assets/dist.js", - "dist/assets/tsMode.js", - "dist/assets/jsonMode.js", - "dist/assets/graphqlMode.js", - "dist/index.js", + "assets/codicon.ttf", + "assets/graphql.js", + "assets/graphqlMode.js", + "assets/index.css", + "assets/jsonMode.js", + "index.html", + "index.js", + "workers/editor.worker.js", + "workers/graphql.js", + "workers/graphql.worker.js", + "workers/json.worker.js", + "workers/standalone.js", ] `); }, 60_000); diff --git a/packages/monaco-graphql/package.json b/packages/monaco-graphql/package.json index 8cd3bcfe33d..d4b3ac85d42 100644 --- a/packages/monaco-graphql/package.json +++ b/packages/monaco-graphql/package.json @@ -1,7 +1,7 @@ { "name": "monaco-graphql", "description": "full service, official monaco mode for GraphQL", - "version": "1.9.0", + "version": "2.0.0", "license": "MIT", "main": "dist/monaco.contribution.js", "module": "esm/monaco.contribution.js", @@ -65,28 +65,29 @@ }, "files": [ "dist", - "esm" + "esm", + "src" ], "scripts": { - "build": "tsgo -p tsconfig.json && tsgo -p tsconfig.esm.json && node ../../resources/patch-monaco-editor-type.mts", - "types:check": "tsgo --noEmit", + "build": "tsc -p tsconfig.json && tsc -p tsconfig.esm.json", + "types:check": "tsc --noEmit", "test": "vitest run" }, "dependencies": { - "graphql-language-service": "^5.7.0", - "picomatch-browser": "^2.2.6" + "graphql-language-service": "^6.0.0", + "minimatch": "^10.2.6" }, "devDependencies": { - "@typescript/native-preview": "^7.0.0-dev.20260707.2", - "execa": "^10.0.1", - "graphql": "^16.9.0", - "monaco-editor": "0.52.2", + "@typescript/native": "npm:typescript@7.1.0-beta", + "graphql": "^17.0.2", + "monaco-editor": "0.57.0", "prettier": "3.3.2", + "vite": "^8.2.2", "vscode-languageserver-types": "^3.17.1" }, "peerDependencies": { - "graphql": "^15.5.0 || ^16.0.0 || ^17.0.0", - "monaco-editor": ">= 0.20.0 < 0.53", + "graphql": "^16.11.0 || ^17.0.0", + "monaco-editor": ">=0.56.0 <0.58.0", "prettier": "^2.8.0 || ^3.0.0" } } diff --git a/packages/monaco-graphql/src/GraphQLWorker.ts b/packages/monaco-graphql/src/GraphQLWorker.ts index c5c76985852..0f47daf0b8a 100644 --- a/packages/monaco-graphql/src/GraphQLWorker.ts +++ b/packages/monaco-graphql/src/GraphQLWorker.ts @@ -22,8 +22,15 @@ export class GraphQLWorker { private _languageService: LanguageService; private _formattingOptions: FormattingOptions | undefined; - constructor(ctx: monaco.worker.IWorkerContext, createData: ICreateData) { + constructor(ctx: monaco.worker.IWorkerContext, createData?: ICreateData) { this._ctx = ctx; + this._languageService = new LanguageService( + createData?.languageConfig ?? {}, + ); + this._formattingOptions = createData?.formattingOptions; + } + + public initialize(createData: ICreateData) { this._languageService = new LanguageService(createData.languageConfig); this._formattingOptions = createData.formattingOptions; } diff --git a/packages/monaco-graphql/src/LanguageService.ts b/packages/monaco-graphql/src/LanguageService.ts index 4d61f622cf1..6b3fa7bd9e2 100644 --- a/packages/monaco-graphql/src/LanguageService.ts +++ b/packages/monaco-graphql/src/LanguageService.ts @@ -14,7 +14,7 @@ import { DocumentNode, Source, } from 'graphql'; -import picomatch from 'picomatch-browser'; +import { minimatch } from 'minimatch'; import type { Diagnostic, Hover } from 'vscode-languageserver-types'; import type { AutocompleteSuggestionOptions, @@ -123,10 +123,7 @@ export class LanguageService { if (!schemaConfig.fileMatch) { return false; } - return schemaConfig.fileMatch.some(glob => { - const isMatch = picomatch(glob); - return isMatch(uri); - }); + return schemaConfig.fileMatch.some(glob => minimatch(uri, glob)); }); if (schema) { const cacheEntry = this._schemaCache.get(schema.uri); diff --git a/packages/monaco-graphql/src/full.ts b/packages/monaco-graphql/src/full.ts index f5855ae2ad8..1151a305aa4 100644 --- a/packages/monaco-graphql/src/full.ts +++ b/packages/monaco-graphql/src/full.ts @@ -1,8 +1 @@ -import 'monaco-editor/esm/vs/editor/contrib/inlineCompletions/browser/inlineCompletions.contribution'; -import 'monaco-editor/esm/vs/editor/contrib/format/browser/formatActions'; -import 'monaco-editor/esm/vs/editor/contrib/bracketMatching/browser/bracketMatching'; -import 'monaco-editor/esm/vs/editor/browser/coreCommands'; -import 'monaco-editor/esm/vs/editor/contrib/clipboard/browser/clipboard'; -import 'monaco-editor/esm/vs/editor/contrib/cursorUndo/browser/cursorUndo'; -import 'monaco-editor/esm/vs/editor/contrib/contextmenu/browser/contextmenu'; -import 'monaco-editor/esm/vs/editor/contrib/find/browser/findController'; +import 'monaco-editor/features/register.all'; diff --git a/packages/monaco-graphql/src/graphql.worker.ts b/packages/monaco-graphql/src/graphql.worker.ts index be4f5c8b7b4..e07ce642802 100644 --- a/packages/monaco-graphql/src/graphql.worker.ts +++ b/packages/monaco-graphql/src/graphql.worker.ts @@ -9,13 +9,11 @@ import type * as monaco from './monaco-editor'; import { ICreateData } from './typings'; // @ts-expect-error -import { initialize } from 'monaco-editor/esm/vs/editor/editor.worker'; +import { initialize } from 'monaco-editor/editor/editor.worker'; import { GraphQLWorker } from './GraphQLWorker'; -globalThis.onmessage = () => { - initialize( - (ctx: monaco.worker.IWorkerContext, createData: ICreateData) => - new GraphQLWorker(ctx, createData), - ); -}; +initialize( + (ctx: monaco.worker.IWorkerContext, createData: ICreateData) => + new GraphQLWorker(ctx, createData), +); diff --git a/packages/monaco-graphql/src/languageFeatures.ts b/packages/monaco-graphql/src/languageFeatures.ts index 951ace5752a..a568c2391e1 100644 --- a/packages/monaco-graphql/src/languageFeatures.ts +++ b/packages/monaco-graphql/src/languageFeatures.ts @@ -9,7 +9,8 @@ import { GraphQLWorker } from './GraphQLWorker'; import type { MonacoGraphQLAPI } from './api'; import type * as monaco from './monaco-editor'; import { Uri, languages } from './monaco-editor'; -import { editor } from 'monaco-editor/esm/vs/editor/editor.api'; +import { editor } from 'monaco-editor/editor/editor.api'; +import { jsonDefaults } from 'monaco-editor/languages/features/json/register'; import { CompletionItemKind as lsCompletionItemKind } from 'graphql-language-service'; import { getModelLanguageId, GraphQLWorkerCompletionItem } from './utils'; @@ -127,9 +128,6 @@ export class DiagnosticsAdapter { editor.setModelMarkers(editor.getModel(resource)!, languageId, diagnostics); if (variablesUris) { - // only import the JSON mode if users configure it - await import('monaco-editor/esm/vs/language/json/monaco.contribution.js'); - if (!variablesUris.length) { throw new Error('No variables URI strings provided to validate'); } @@ -149,12 +147,12 @@ export class DiagnosticsAdapter { fileMatch: variablesUris, }; const currentSchemas = - languages.json.jsonDefaults.diagnosticsOptions.schemas?.filter( - s => s.uri !== schemaUri, + jsonDefaults.diagnosticsOptions.schemas?.filter( + (s: { uri: string }) => s.uri !== schemaUri, ) || []; // TODO: export from api somehow? - languages.json.jsonDefaults.setDiagnosticsOptions({ + jsonDefaults.setDiagnosticsOptions({ schemaValidation: 'error', validate: true, ...this.defaults.diagnosticSettings.jsonDiagnosticSettings, diff --git a/packages/monaco-graphql/src/monaco-editor.ts b/packages/monaco-graphql/src/monaco-editor.ts index 03665989a07..38496955da4 100644 --- a/packages/monaco-graphql/src/monaco-editor.ts +++ b/packages/monaco-graphql/src/monaco-editor.ts @@ -1,22 +1,5 @@ -/* - * Importing `monaco-editor` imports all languages, and can expand bundle size. - * When you import `monaco-editor`, under the hood you import - * `monaco-editor/esm/vs/editor/editor.main.js` (described in its `package.json#module` field) - * Inside this file there are the following: - * - * ```js - * import '../basic-languages/monaco.contribution'; // ⚠️ a lot of languages; we only need graphql - * import '../language/css/monaco.contribution'; // ❌ throw out - * import '../language/html/monaco.contribution'; // ❌ throw out - * import '../language/json/monaco.contribution'; // ✅ json language for variables/response editor - * import '../language/typescript/monaco.contribution'; // ❌ throw out - * export * from './edcore.main'; // ✅ editor, languages, Uri,... exports - * ``` - * - * Types for `monaco-editor/esm/vs/editor/edcore.main` are also left out; - * we enhance them in `monaco.d.ts` 😎 - */ -import 'monaco-editor/esm/vs/basic-languages/graphql/graphql.contribution.js'; -import 'monaco-editor/esm/vs/language/json/monaco.contribution.js'; +import 'monaco-editor/features/register.all'; +import 'monaco-editor/languages/definitions/graphql/register.js'; +import 'monaco-editor/languages/features/json/register.js'; -export * from 'monaco-editor/esm/vs/editor/edcore.main.js'; +export * from 'monaco-editor/editor'; diff --git a/packages/monaco-graphql/src/typings/index.ts b/packages/monaco-graphql/src/typings/index.ts index 68e4331f55d..4d8753236df 100644 --- a/packages/monaco-graphql/src/typings/index.ts +++ b/packages/monaco-graphql/src/typings/index.ts @@ -1,4 +1,4 @@ -import type * as monaco from '../monaco-editor'; +import type { DiagnosticsOptions as JSONDiagnosticsOptions } from 'monaco-editor/languages/features/json/register'; import { IntrospectionQuery, DocumentNode, @@ -31,7 +31,7 @@ export type SchemaConfig = { uri: string; /** * An array of URIs or globs to associate with this schema in the language worker - * Uses `picomatch` which supports many common expressions except brackets + * Uses `minimatch` glob patterns * Only necessary if you provide more than one schema, otherwise it defaults to the sole schema */ fileMatch?: string[]; @@ -204,7 +204,7 @@ export type DiagnosticSettings = { * - `validateSchema: 'warning'` * - `trailingComments` is `error` by default, and can be `warning` or `ignore` */ - jsonDiagnosticSettings?: monaco.languages.json.DiagnosticsOptions; + jsonDiagnosticSettings?: JSONDiagnosticsOptions; }; export type CompletionSettings = AutocompleteSuggestionOptions & { diff --git a/packages/monaco-graphql/src/typings/monaco-editor.d.ts b/packages/monaco-graphql/src/typings/monaco-editor.d.ts index 5a11951a8cb..c761d85a35e 100644 --- a/packages/monaco-graphql/src/typings/monaco-editor.d.ts +++ b/packages/monaco-graphql/src/typings/monaco-editor.d.ts @@ -1,10 +1,6 @@ /* eslint-disable @typescript-eslint/no-restricted-imports -- * in this file is allowed to import monaco-editor */ -declare module 'monaco-editor/esm/vs/editor/edcore.main.js' { - export * from 'monaco-editor'; -} - -declare module 'monaco-editor/esm/vs/editor/common/standalone/standaloneEnums.js' { +declare module 'monaco-editor/editor/common/standalone/standaloneEnums.js' { export { MarkerSeverity } from 'monaco-editor'; } diff --git a/packages/monaco-graphql/src/typings/picomatch-browser.d.ts b/packages/monaco-graphql/src/typings/picomatch-browser.d.ts deleted file mode 100644 index 4bff9a9802c..00000000000 --- a/packages/monaco-graphql/src/typings/picomatch-browser.d.ts +++ /dev/null @@ -1 +0,0 @@ -declare module 'picomatch-browser'; diff --git a/packages/monaco-graphql/src/utils.ts b/packages/monaco-graphql/src/utils.ts index aa821c71b1d..47a0b27acaa 100644 --- a/packages/monaco-graphql/src/utils.ts +++ b/packages/monaco-graphql/src/utils.ts @@ -16,7 +16,7 @@ import type * as monaco from './monaco-editor'; import { buildASTSchema, printSchema } from 'graphql'; import { Position } from 'graphql-language-service'; // Importing from 'monaco-editor' in a worker throws “ReferenceError: window is not defined” -import { MarkerSeverity } from 'monaco-editor/esm/vs/editor/common/standalone/standaloneEnums.js'; +import { MarkerSeverity } from 'monaco-editor/editor/common/standalone/standaloneEnums.js'; // for backwards compatibility export const getModelLanguageId = (model: monaco.editor.ITextModel) => { diff --git a/packages/monaco-graphql/src/workerManager.ts b/packages/monaco-graphql/src/workerManager.ts index 50272b1eacc..a526d6d85eb 100644 --- a/packages/monaco-graphql/src/workerManager.ts +++ b/packages/monaco-graphql/src/workerManager.ts @@ -68,29 +68,35 @@ export class WorkerManager { completionSettings, experimentalFragmentArguments, } = this._defaults; - this._worker = editor.createWebWorker({ - // module that exports the create() method and returns a `GraphQLWorker` instance - moduleId: 'monaco-graphql/esm/GraphQLWorker.js', - - label: languageId, - // passed in to the create() method - createData: { - languageId, - formattingOptions, - // only string-based config can be passed from the main process - languageConfig: { - schemas: schemas?.map(getStringSchema), - externalFragmentDefinitions, - experimentalFragmentArguments, - // TODO: make this overridable - // MonacoAPI possibly another configuration object for this I think? - // all of this could be organized better - fillLeafsOnComplete: - completionSettings.__experimental__fillLeafsOnComplete, - }, - } as ICreateData, - }); + const createData: ICreateData = { + languageId, + formattingOptions, + diagnosticSettings: this._defaults.diagnosticSettings, + // only string-based config can be passed from the main process + languageConfig: { + schemas: schemas?.map(getStringSchema), + externalFragmentDefinitions, + experimentalFragmentArguments, + // TODO: make this overridable + // MonacoAPI possibly another configuration object for this I think? + // all of this could be organized better + fillLeafsOnComplete: + completionSettings.__experimental__fillLeafsOnComplete, + }, + }; + const worker = globalThis.MonacoEnvironment?.getWorker?.( + 'monaco-graphql/esm/GraphQLWorker.js', + languageId, + ); + if (!worker) { + throw new Error( + 'monaco-graphql requires `MonacoEnvironment.getWorker` to be configured. ' + + 'See https://microsoft.github.io/monaco-editor/docs.html#functions/editor.createWebWorker.html', + ); + } + this._worker = editor.createWebWorker({ worker }); this._client = this._worker.getProxy(); + await this._client.then(client => client.initialize(createData)); } catch (error) { // eslint-disable-next-line no-console console.error('error loading worker', error); diff --git a/packages/monaco-graphql/tsconfig.esm.json b/packages/monaco-graphql/tsconfig.esm.json index 2e4171738bb..9d315693897 100644 --- a/packages/monaco-graphql/tsconfig.esm.json +++ b/packages/monaco-graphql/tsconfig.esm.json @@ -1,5 +1,5 @@ { - "extends": "../../resources/tsconfig.base.esm.json", + "extends": "../../resources/tsconfig.graphql17.esm.json", "compilerOptions": { "target": "ESNext", "rootDir": "./src", diff --git a/packages/vscode-graphql-execution/CHANGELOG.md b/packages/vscode-graphql-execution/CHANGELOG.md index e1301e841da..36c61ff1bf2 100644 --- a/packages/vscode-graphql-execution/CHANGELOG.md +++ b/packages/vscode-graphql-execution/CHANGELOG.md @@ -1,5 +1,23 @@ # vscode-graphql-execution +## 1.0.0 + +### Major Changes + +- [#4478](https://github.com/graphql/graphiql/pull/4478) [`066528a`](https://github.com/graphql/graphiql/commit/066528a6bb7706d685536888d7b5549d6fd5a109) Thanks [@trevor-scheer](https://github.com/trevor-scheer)! - Update the extensions' bundled GraphQL.js runtime to 16.14.2. GraphQL.js is included in each extension rather than supplied as a peer dependency; updating the extension does not require installing or upgrading `graphql` in your project. + +## 1.0.0-rc.0 + +### Patch Changes + +- [#4595](https://github.com/graphql/graphiql/pull/4595) [`bcd13dc`](https://github.com/graphql/graphiql/commit/bcd13dca46e2bb75837b33fce9f574712c669457) Thanks [@trevor-scheer](https://github.com/trevor-scheer)! - Move the GraphiQL 6 package family from beta to release candidate versions. + +## 1.0.0-beta.0 + +### Major Changes + +- [#4478](https://github.com/graphql/graphiql/pull/4478) [`066528a`](https://github.com/graphql/graphiql/commit/066528a6bb7706d685536888d7b5549d6fd5a109) Thanks [@trevor-scheer](https://github.com/trevor-scheer)! - GraphQL.js 15 and 16.0–16.10 are no longer supported peer dependencies. The supported range is `^16.11.0 || ^17.0.0`. GraphQL.js 16.11 fixes OneOf input validation for nullable variables and tightens input-object coercion to reject arrays, giving GraphiQL 6 a correct baseline for OneOf inputs. Upgrade `graphql` before upgrading these packages. + ## 0.3.7 ### Patch Changes diff --git a/packages/vscode-graphql-execution/esbuild.js b/packages/vscode-graphql-execution/esbuild.js index 6405ad15f00..cf3d15cf24d 100644 --- a/packages/vscode-graphql-execution/esbuild.js +++ b/packages/vscode-graphql-execution/esbuild.js @@ -22,6 +22,8 @@ build({ 'babel-core', 'htmling', 'ractive', + 'react', + 'react-dom/server', 'mote', 'eco', 'jqtpl', diff --git a/packages/vscode-graphql-execution/package.json b/packages/vscode-graphql-execution/package.json index 4f513d44495..3c931f13c33 100644 --- a/packages/vscode-graphql-execution/package.json +++ b/packages/vscode-graphql-execution/package.json @@ -1,6 +1,6 @@ { "name": "vscode-graphql-execution", - "version": "0.3.7", + "version": "1.0.0", "displayName": "GraphQL: Inline Operation Execution", "description": "Execute graphql operations from your code (revived!)", "publisher": "GraphQL", @@ -82,19 +82,18 @@ }, "homepage": "https://github.com/graphql/graphiql/blob/main/packages/vscode-graphql-execution/README.md", "scripts": { - "build": "tsgo -p tsconfig.json", - "types:check": "tsgo --noEmit", + "build": "tsc -p tsconfig.json", + "types:check": "tsc --noEmit", "compile": "node esbuild.js", "build-bundles": "pnpm compile", "vsce:package": "pnpm compile && vsce package --no-dependencies" }, "devDependencies": { "@types/capitalize": "2.0.0", - "@types/dotenv": "8.2.0", "@types/node": "^24", "@types/vscode": "1.62.0", "@types/ws": "8.2.2", - "@typescript/native-preview": "^7.0.0-dev.20260707.2", + "@typescript/native": "npm:typescript@7.1.0-beta", "@vscode/vsce": "^3.9.2", "esbuild": "0.28.2", "ovsx": "0.8.3" @@ -106,12 +105,13 @@ "capitalize": "2.0.4", "cosmiconfig-toml-loader": "^1.0.0", "dotenv": "10.0.0", - "graphql": "^16.9.0 || ^17.0.0-rc.0", + "graphql": "^16.14.2", "graphql-config": "^5.1.6", "graphql-ws": "6.0.8", "nullthrows": "1.1.1", "svelte": "^5.55.7", "svelte2tsx": "^0.7.61", + "typescript": "^5.8.0", "wonka": "^6.3.6", "ws": "8.21.0" } diff --git a/packages/vscode-graphql-syntax/package.json b/packages/vscode-graphql-syntax/package.json index 0df4a6869ae..e72df6732e8 100644 --- a/packages/vscode-graphql-syntax/package.json +++ b/packages/vscode-graphql-syntax/package.json @@ -153,7 +153,7 @@ "directory": "packages/vscode-graphql-syntax" }, "devDependencies": { - "@typescript/native-preview": "^7.0.0-dev.20260707.2", + "@typescript/native": "npm:typescript@7.1.0-beta", "@vscode/vsce": "^3.9.2", "ovsx": "0.8.3", "vscode-oniguruma": "^1.7.0", @@ -161,7 +161,7 @@ }, "homepage": "https://github.com/graphql/graphiql/blob/main/packages/vscode-graphql-syntax/README.md", "scripts": { - "types:check": "tsgo --noEmit", + "types:check": "tsc --noEmit", "vsce:package": "vsce package --no-dependencies", "test": "vitest run" } diff --git a/packages/vscode-graphql/CHANGELOG.md b/packages/vscode-graphql/CHANGELOG.md index d548e2865ed..0f0aed837f0 100644 --- a/packages/vscode-graphql/CHANGELOG.md +++ b/packages/vscode-graphql/CHANGELOG.md @@ -1,5 +1,52 @@ # Change Log +## 1.0.0 + +### Major Changes + +- [#4478](https://github.com/graphql/graphiql/pull/4478) [`066528a`](https://github.com/graphql/graphiql/commit/066528a6bb7706d685536888d7b5549d6fd5a109) Thanks [@trevor-scheer](https://github.com/trevor-scheer)! - Update the extensions' bundled GraphQL.js runtime to 16.14.2. GraphQL.js is included in each extension rather than supplied as a peer dependency; updating the extension does not require installing or upgrading `graphql` in your project. + +### Patch Changes + +- Updated dependencies [[`4225e29`](https://github.com/graphql/graphiql/commit/4225e29ebea023591aeb5c54a84cf98b226f6df7), [`066528a`](https://github.com/graphql/graphiql/commit/066528a6bb7706d685536888d7b5549d6fd5a109)]: + - graphql-language-service-server@3.0.0 + +## 1.0.0-rc.1 + +### Patch Changes + +- [#4474](https://github.com/graphql/graphiql/pull/4474) [`a539b83`](https://github.com/graphql/graphiql/commit/a539b83cac07d3987a8098346b1647a0ddec67f4) Thanks [@trevor-scheer](https://github.com/trevor-scheer)! - Restore caret ranges for internal GraphiQL dependencies. The RC versions sort after the stale canary and `next` versions that beta ranges selected, so the exact pins from the beta cycle are no longer necessary. + +- Updated dependencies [[`a539b83`](https://github.com/graphql/graphiql/commit/a539b83cac07d3987a8098346b1647a0ddec67f4)]: + - graphql-language-service-server@3.0.0-rc.1 + +## 1.0.0-rc.0 + +### Patch Changes + +- [#4595](https://github.com/graphql/graphiql/pull/4595) [`bcd13dc`](https://github.com/graphql/graphiql/commit/bcd13dca46e2bb75837b33fce9f574712c669457) Thanks [@trevor-scheer](https://github.com/trevor-scheer)! - Move the GraphiQL 6 package family from beta to release candidate versions. + +- Updated dependencies [[`bcd13dc`](https://github.com/graphql/graphiql/commit/bcd13dca46e2bb75837b33fce9f574712c669457)]: + - graphql-language-service-server@3.0.0-rc.0 + +## 1.0.0-beta.1 + +### Patch Changes + +- Updated dependencies []: + - graphql-language-service-server@3.0.0-beta.1 + +## 1.0.0-beta.0 + +### Major Changes + +- [#4478](https://github.com/graphql/graphiql/pull/4478) [`066528a`](https://github.com/graphql/graphiql/commit/066528a6bb7706d685536888d7b5549d6fd5a109) Thanks [@trevor-scheer](https://github.com/trevor-scheer)! - GraphQL.js 15 and 16.0–16.10 are no longer supported peer dependencies. The supported range is `^16.11.0 || ^17.0.0`. GraphQL.js 16.11 fixes OneOf input validation for nullable variables and tightens input-object coercion to reject arrays, giving GraphiQL 6 a correct baseline for OneOf inputs. Upgrade `graphql` before upgrading these packages. + +### Patch Changes + +- Updated dependencies [[`066528a`](https://github.com/graphql/graphiql/commit/066528a6bb7706d685536888d7b5549d6fd5a109)]: + - graphql-language-service-server@3.0.0-beta.0 + ## 0.13.5 ### Patch Changes diff --git a/packages/vscode-graphql/esbuild.js b/packages/vscode-graphql/esbuild.js index 13b0caf5794..f170088c532 100644 --- a/packages/vscode-graphql/esbuild.js +++ b/packages/vscode-graphql/esbuild.js @@ -29,6 +29,8 @@ build({ 'babel-core', 'htmling', 'ractive', + 'react', + 'react-dom/server', 'mote', 'eco', 'jqtpl', diff --git a/packages/vscode-graphql/package.json b/packages/vscode-graphql/package.json index b0503bbbb25..e1b2677e68b 100644 --- a/packages/vscode-graphql/package.json +++ b/packages/vscode-graphql/package.json @@ -1,6 +1,6 @@ { "name": "vscode-graphql", - "version": "0.13.5", + "version": "1.0.0", "private": true, "license": "MIT", "displayName": "GraphQL: Language Feature Support", @@ -171,8 +171,8 @@ ] }, "scripts": { - "build": "tsgo -p tsconfig.json", - "types:check": "tsgo --noEmit", + "build": "tsc -p tsconfig.json", + "types:check": "tsc --noEmit", "vscode:prepublish": "npm run compile -- --minify", "compile": "node esbuild", "build-bundles": "pnpm compile", @@ -182,14 +182,14 @@ "devDependencies": { "@types/capitalize": "2.0.0", "@types/vscode": "1.62.0", - "@typescript/native-preview": "^7.0.0-dev.20260707.2", + "@typescript/native": "npm:typescript@7.1.0-beta", "@vscode/vsce": "^3.9.2", "esbuild": "0.28.2", "ovsx": "0.8.3" }, "dependencies": { - "graphql": "^16.9.0 || ^17.0.0-rc.0", - "graphql-language-service-server": "^2.14.9", + "graphql": "^16.14.2", + "graphql-language-service-server": "^3.0.0", "typescript": "^5.8.0", "vscode-languageclient": "8.0.2" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f3be93294a7..43f2bed388a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -6,6 +6,7 @@ settings: overrides: '@babel/traverse': ^7.23.2 + eslint: ^10.12.0 vscode-languageserver-types: 3.17.3 markdown-it: 15.0.3 react: 19.2.7 @@ -17,7 +18,7 @@ patchedDependencies: hash: 0fc7c43756688691ae3bb1f4b33c9923718cd69a483fb6a02ed35679c32d3f23 path: resources/patches/@changesets+assemble-release-plan+6.0.3.patch js-green-licenses@4.0.0: - hash: 9767ba756b878e055efbe878325a54d51a84423a8f46e2cccb72f741010f4ec8 + hash: 3d6851659e615ef4e3f6d4363b1d3cf0042ff1536f83d11c92b872cb11caaec0 path: resources/patches/js-green-licenses+4.0.0.patch importers: @@ -30,24 +31,21 @@ importers: '@babel/core': specifier: ^7.29.6 version: 7.29.7 - '@babel/plugin-proposal-class-properties': - specifier: ^7.18.6 - version: 7.18.6(@babel/core@7.29.7) - '@babel/plugin-proposal-nullish-coalescing-operator': - specifier: ^7.18.6 - version: 7.18.6(@babel/core@7.29.7) - '@babel/plugin-proposal-optional-chaining': - specifier: ^7.21.0 - version: 7.21.0(@babel/core@7.29.7) '@babel/plugin-syntax-dynamic-import': specifier: ^7.8.3 version: 7.8.3(@babel/core@7.29.7) + '@babel/plugin-transform-class-properties': + specifier: ^7.29.7 + version: 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-nullish-coalescing-operator': + specifier: ^7.29.7 + version: 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-optional-chaining': + specifier: ^7.29.7 + version: 7.29.7(@babel/core@7.29.7) '@babel/plugin-transform-private-methods': specifier: ^7.24.7 version: 7.29.7(@babel/core@7.29.7) - '@babel/polyfill': - specifier: ^7.12.1 - version: 7.12.1 '@babel/preset-env': specifier: ^7.29.7 version: 7.29.7(@babel/core@7.29.7) @@ -78,9 +76,9 @@ importers: '@types/ws': specifier: 8.2.2 version: 8.2.2 - '@typescript/native-preview': - specifier: ^7.0.0-dev.20260707.2 - version: 7.0.0-dev.20260707.2 + '@typescript/native': + specifier: npm:typescript@7.1.0-beta + version: typescript@7.1.0-beta babel-plugin-macros: specifier: ^3.1.0 version: 3.1.0 @@ -95,13 +93,13 @@ importers: version: 0.3.2 eslint-plugin-react-hooks: specifier: ^7.1.1 - version: 7.1.1(eslint@9.39.5(jiti@2.6.1)) + version: 7.1.1(eslint@10.12.0(jiti@2.6.1)) execa: specifier: ^10.0.1 version: 10.0.1 js-green-licenses: specifier: 4.0.0 - version: 4.0.0(patch_hash=9767ba756b878e055efbe878325a54d51a84423a8f46e2cccb72f741010f4ec8)(encoding@0.1.13) + version: 4.0.0(patch_hash=3d6851659e615ef4e3f6d4363b1d3cf0042ff1536f83d11c92b872cb11caaec0)(encoding@0.1.13) msw: specifier: ^2.13.4 version: 2.13.4(@types/node@24.12.2)(typescript@5.9.3) @@ -130,8 +128,8 @@ importers: specifier: ^5.8.0 version: 5.9.3 vitest: - specifier: 4.1.11 - version: 4.1.11(@types/node@24.12.2)(jsdom@29.0.2)(msw@2.13.4(@types/node@24.12.2)(typescript@5.9.3))(vite@8.2.4(@types/node@24.12.2)(esbuild@0.28.2)(jiti@2.6.1)(terser@5.46.2)(yaml@2.9.0)) + specifier: ^5.0.3 + version: 5.0.3(@types/node@24.12.2)(@vitest/browser-playwright@5.0.3)(@vitest/ui@5.0.3)(jsdom@29.0.2)(msw@2.13.4(@types/node@24.12.2)(typescript@5.9.3))(vite@8.2.4(@types/node@24.12.2)(esbuild@0.28.2)(jiti@2.6.1)(terser@5.46.2)(yaml@2.9.0)) wgutils: specifier: ^1.2.5 version: 1.2.5 @@ -154,12 +152,15 @@ importers: examples/graphiql-vite: dependencies: + '@graphiql/toolkit': + specifier: ^1.0.0 + version: link:../../packages/graphiql-toolkit graphiql: - specifier: ^5.4.0 + specifier: ^6.0.0 version: link:../../packages/graphiql graphql: - specifier: ^16 - version: 16.13.2 + specifier: ^16.14.2 + version: 16.14.2 react: specifier: 19.2.7 version: 19.2.7 @@ -173,15 +174,24 @@ importers: vite: specifier: 8.2.4 version: 8.2.4(@types/node@24.12.2)(esbuild@0.28.2)(jiti@2.6.1)(terser@5.46.2)(yaml@2.9.0) - vite-plugin-monaco-editor: - specifier: ^1 - version: 1.1.0(monaco-editor@0.52.2) examples/graphiql-vite-react-router: dependencies: + '@graphiql/plugin-collections': + specifier: ^1.0.0 + version: link:../../packages/graphiql-plugin-collections + '@graphiql/plugin-history': + specifier: ^1.0.0 + version: link:../../packages/graphiql-plugin-history + '@graphiql/plugin-query-builder': + specifier: ^1.0.0 + version: link:../../packages/graphiql-plugin-query-builder '@graphiql/react': - specifier: ^0.39.1 + specifier: ^1.0.0 version: link:../../packages/graphiql-react + '@graphiql/toolkit': + specifier: ^1.0.0 + version: link:../../packages/graphiql-toolkit '@react-router/fs-routes': specifier: ^8.3.1 version: 8.3.1(@react-router/dev@8.3.1(@react-router/serve@8.3.1(react-router@8.3.1(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(typescript@5.9.3))(babel-plugin-macros@3.1.0)(react-router@8.3.1(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(typescript@5.9.3)(vite@8.2.4(@types/node@24.12.2)(esbuild@0.28.2)(jiti@2.6.1)(terser@5.46.2)(yaml@2.9.0)))(typescript@5.9.3) @@ -192,7 +202,7 @@ importers: specifier: ^8.3.1 version: 8.3.1(react-router@8.3.1(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(typescript@5.9.3) graphiql: - specifier: ^5.4.0 + specifier: ^6.0.0 version: link:../../packages/graphiql isbot: specifier: ^5 @@ -226,26 +236,23 @@ importers: examples/graphiql-webpack: dependencies: '@graphiql/plugin-code-exporter': - specifier: ^5.1.4 + specifier: ^6.0.0 version: link:../../packages/graphiql-plugin-code-exporter - '@graphiql/plugin-explorer': - specifier: ^5.1.5 - version: link:../../packages/graphiql-plugin-explorer '@graphiql/react': - specifier: ^0.39.1 + specifier: ^1.0.0 version: link:../../packages/graphiql-react '@graphiql/toolkit': - specifier: ^0.12.1 + specifier: ^1.0.0 version: link:../../packages/graphiql-toolkit graphiql: - specifier: ^5.4.0 + specifier: ^6.0.0 version: link:../../packages/graphiql graphql: - specifier: ^16 - version: 16.13.2 + specifier: ^16.14.2 + version: 16.14.2 graphql-ws: specifier: ^6 - version: 6.0.8(graphql@16.13.2)(ws@8.21.0) + version: 6.3.0(graphql@16.14.2)(ws@8.21.3) react: specifier: 19.2.7 version: 19.2.7 @@ -256,21 +263,18 @@ importers: specifier: ^0.14 version: 0.14.1 devDependencies: - '@babel/plugin-proposal-class-properties': - specifier: ^7 - version: 7.18.6(@babel/core@7.29.7) '@babel/plugin-syntax-dynamic-import': specifier: ^7 version: 7.8.3(@babel/core@7.29.7) + '@babel/plugin-transform-class-properties': + specifier: ^7 + version: 7.29.7(@babel/core@7.29.7) '@babel/preset-env': specifier: ^7 version: 7.29.7(@babel/core@7.29.7) '@babel/preset-react': specifier: ^7 version: 7.28.5(@babel/core@7.29.7) - ajv-formats: - specifier: ^3 - version: 3.0.1(ajv@6.15.0) babel-loader: specifier: ^9 version: 9.2.1(@babel/core@7.29.7)(webpack@5.106.2) @@ -307,30 +311,27 @@ importers: workbox-webpack-plugin: specifier: ^7 version: 7.4.0(@types/babel__core@7.20.5)(webpack@5.106.2) - worker-loader: - specifier: ^2 - version: 2.0.0(webpack@5.106.2) examples/monaco-graphql-nextjs: dependencies: '@graphiql/toolkit': - specifier: ^0.12.1 + specifier: ^1.0.0 version: link:../../packages/graphiql-toolkit graphql: - specifier: ^16 - version: 16.13.2 + specifier: ^16.14.2 + version: 16.14.2 jsonc-parser: specifier: ^3 version: 3.3.1 monaco-editor: - specifier: ^0.52 - version: 0.52.2 + specifier: 0.57.0 + version: 0.57.0 monaco-graphql: - specifier: ^1.9.0 + specifier: ^2.0.0 version: link:../../packages/monaco-graphql next: specifier: ^15 - version: 15.5.28(@babel/core@7.29.7)(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + version: 15.5.28(@babel/core@7.29.7)(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) react: specifier: 19.2.7 version: 19.2.7 @@ -351,22 +352,22 @@ importers: examples/monaco-graphql-react-vite: dependencies: '@graphiql/toolkit': - specifier: ^0.12.1 + specifier: ^1.0.0 version: link:../../packages/graphiql-toolkit graphql: - specifier: ^16 - version: 16.13.2 + specifier: ^16.14.2 + version: 16.14.2 graphql-language-service: - specifier: ^5.7.0 + specifier: ^6.0.0 version: link:../../packages/graphql-language-service jsonc-parser: specifier: ^3 version: 3.3.1 monaco-editor: - specifier: ^0.52 - version: 0.52.2 + specifier: 0.57.0 + version: 0.57.0 monaco-graphql: - specifier: ^1.9.0 + specifier: ^2.0.0 version: link:../../packages/monaco-graphql react: specifier: 19.2.7 @@ -385,10 +386,10 @@ importers: examples/monaco-graphql-webpack: dependencies: graphql: - specifier: ^16 - version: 16.13.2 + specifier: ^16.14.2 + version: 16.14.2 graphql-language-service: - specifier: ^5.7.0 + specifier: ^6.0.0 version: link:../../packages/graphql-language-service json-schema: specifier: ^0.4 @@ -397,10 +398,10 @@ importers: specifier: ^3 version: 3.3.1 monaco-editor: - specifier: ^0.52 - version: 0.52.2 + specifier: 0.57.0 + version: 0.57.0 monaco-graphql: - specifier: ^1.9.0 + specifier: ^2.0.0 version: link:../../packages/monaco-graphql prettier: specifier: ^3 @@ -409,12 +410,12 @@ importers: '@babel/core': specifier: ^7 version: 7.29.7 - '@babel/plugin-proposal-class-properties': - specifier: ^7 - version: 7.18.6(@babel/core@7.29.7) '@babel/plugin-syntax-dynamic-import': specifier: ^7 version: 7.8.3(@babel/core@7.29.7) + '@babel/plugin-transform-class-properties': + specifier: ^7 + version: 7.29.7(@babel/core@7.29.7) '@babel/plugin-transform-class-static-block': specifier: ^7 version: 7.29.7(@babel/core@7.29.7) @@ -447,7 +448,7 @@ importers: version: 5.6.7(webpack@5.106.2) monaco-editor-webpack-plugin: specifier: ^7 - version: 7.1.1(monaco-editor@0.52.2)(webpack@5.106.2) + version: 7.1.1(monaco-editor@0.57.0)(webpack@5.106.2) style-loader: specifier: ^4 version: 4.0.0(webpack@5.106.2) @@ -470,16 +471,16 @@ importers: functions: dependencies: graphql: - specifier: ^17.0.0-rc.0 - version: 17.0.2 + specifier: ^16.14.2 + version: 16.14.2 graphql-helix: specifier: ^1.13.0 - version: 1.13.0(graphql@17.0.2) + version: 1.13.0(graphql@16.14.2) packages/cm6-graphql: dependencies: graphql-language-service: - specifier: ^5.7.0 + specifier: ^6.0.0 version: link:../graphql-language-service devDependencies: '@codemirror/autocomplete': @@ -512,12 +513,12 @@ importers: '@lezer/lr': specifier: ^1.0.0 version: 1.4.2 - '@typescript/native-preview': - specifier: ^7.0.0-dev.20260707.2 - version: 7.0.0-dev.20260707.2 + '@typescript/native': + specifier: npm:typescript@7.1.0-beta + version: typescript@7.1.0-beta graphql: - specifier: ^16.9.0 - version: 16.13.2 + specifier: ^17.0.2 + version: 17.0.2 typescript: specifier: ^5.8.0 version: 5.9.3 @@ -528,100 +529,91 @@ importers: specifier: ^0.0.90 version: 0.0.90 graphql-language-service: - specifier: 5.7.0 + specifier: 6.0.0 version: link:../graphql-language-service devDependencies: '@codemirror/language': specifier: ^6.0.0 version: 6.12.3 - '@typescript/native-preview': - specifier: ^7.0.0-dev.20260707.2 - version: 7.0.0-dev.20260707.2 + '@typescript/native': + specifier: npm:typescript@7.1.0-beta + version: typescript@7.1.0-beta codemirror: specifier: ^5.65.3 version: 5.65.3 graphql: - specifier: ^16.9.0 - version: 16.13.2 - sane: - specifier: 2.0.0 - version: 2.0.0 + specifier: ^17.0.2 + version: 17.0.2 packages/graphiql: dependencies: + '@graphiql/plugin-collections': + specifier: ^1.0.0 + version: link:../graphiql-plugin-collections '@graphiql/plugin-doc-explorer': - specifier: ^0.4.4 + specifier: ^1.0.0 version: link:../graphiql-plugin-doc-explorer '@graphiql/plugin-history': - specifier: ^0.4.4 + specifier: ^1.0.0 version: link:../graphiql-plugin-history + '@graphiql/plugin-query-builder': + specifier: ^1.0.0 + version: link:../graphiql-plugin-query-builder '@graphiql/react': - specifier: ^0.39.0 + specifier: ^1.0.0 version: link:../graphiql-react + clsx: + specifier: ^2.1.1 + version: 2.1.1 react-compiler-runtime: - specifier: 19.1.0-rc.3 - version: 19.1.0-rc.3(react@19.2.7) + specifier: ^1.0.0 + version: 1.0.0(react@19.2.7) devDependencies: '@graphiql/toolkit': - specifier: ^0.12.1 + specifier: ^1.0.0 version: link:../graphiql-toolkit '@testing-library/dom': specifier: ^10.4.0 - version: 10.4.0 + version: 10.4.1 '@testing-library/jest-dom': specifier: ^7.0.1 - version: 7.0.1(@testing-library/dom@10.4.0)(vitest@4.1.11(@types/node@24.12.2)(jsdom@29.0.2)(msw@2.13.4(@types/node@24.12.2)(typescript@5.9.3))(vite@8.2.4(@types/node@24.12.2)(esbuild@0.28.2)(jiti@2.6.1)(terser@5.46.2)(yaml@2.9.0))) + version: 7.0.1(@testing-library/dom@10.4.1)(vitest@5.0.3) '@testing-library/react': specifier: ^16.3.0 - version: 16.3.0(@testing-library/dom@10.4.0)(@types/react-dom@19.1.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + version: 16.3.0(@testing-library/dom@10.4.1)(@types/react-dom@19.1.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) '@types/react': specifier: ^19 version: 19.2.14 '@types/react-dom': specifier: ^19 version: 19.1.3(@types/react@19.2.14) - '@typescript/native-preview': - specifier: ^7.0.0-dev.20260707.2 - version: 7.0.0-dev.20260707.2 + '@typescript/native': + specifier: npm:typescript@7.1.0-beta + version: typescript@7.1.0-beta '@vitejs/plugin-react': specifier: ^5.2.0 version: 5.2.0(vite@8.2.4(@types/node@24.12.2)(esbuild@0.28.2)(jiti@2.6.1)(terser@5.46.2)(yaml@2.9.0)) '@vitest/web-worker': - specifier: 4.1.11 - version: 4.1.11(vitest@4.1.11(@types/node@24.12.2)(jsdom@29.0.2)(msw@2.13.4(@types/node@24.12.2)(typescript@5.9.3))(vite@8.2.4(@types/node@24.12.2)(esbuild@0.28.2)(jiti@2.6.1)(terser@5.46.2)(yaml@2.9.0))) + specifier: ^5.0.3 + version: 5.0.3(vitest@5.0.3) babel-plugin-react-compiler: - specifier: 19.1.0-rc.3 - version: 19.1.0-rc.3 - concurrently: - specifier: ^10.0.5 - version: 10.0.5 - cross-env: - specifier: ^10.1.0 - version: 10.1.0 - cypress: - specifier: ^16.0.0 - version: 16.0.0 + specifier: 1.0.0 + version: 1.0.0 graphql: - specifier: ^16.11.0 - version: 16.13.2 + specifier: ^17.0.2 + version: 17.0.2 lightningcss: specifier: ^1.29.3 version: 1.33.0 monaco-editor: - specifier: 0.52.2 - version: 0.52.2 + specifier: '>=0.56.0 <0.58.0' + version: 0.57.0 react: specifier: 19.2.7 version: 19.2.7 - react-18: - specifier: npm:react@18.3.1 - version: react@18.3.1 react-dom: specifier: 19.2.7 version: 19.2.7(react@19.2.7) - start-server-and-test: - specifier: ^1.10.11 - version: 1.12.1 typescript: specifier: ^5.8.0 version: 5.9.3 @@ -632,20 +624,108 @@ importers: specifier: ^4.5.3 version: 4.5.3(@types/node@24.12.2)(rollup@4.40.1)(typescript@5.9.3)(vite@8.2.4(@types/node@24.12.2)(esbuild@0.28.2)(jiti@2.6.1)(terser@5.46.2)(yaml@2.9.0)) vitest-canvas-mock: - specifier: ^1.1.4 - version: 1.1.4(vitest@4.1.11(@types/node@24.12.2)(jsdom@29.0.2)(msw@2.13.4(@types/node@24.12.2)(typescript@5.9.3))(vite@8.2.4(@types/node@24.12.2)(esbuild@0.28.2)(jiti@2.6.1)(terser@5.46.2)(yaml@2.9.0))) + specifier: ^1.2.0 + version: 1.2.0(vitest@5.0.3) zustand: specifier: ^5 version: 5.0.4(@types/react@19.2.14)(react@19.2.7)(use-sync-external-store@1.5.0(react@19.2.7)) + packages/graphiql-e2e: + dependencies: + '@graphiql/react': + specifier: 1.0.0 + version: link:../graphiql-react + '@graphiql/toolkit': + specifier: 1.0.0 + version: link:../graphiql-toolkit + graphiql: + specifier: 6.0.0 + version: link:../graphiql + graphql: + specifier: ^17.0.2 + version: 17.0.2 + graphql-ws: + specifier: ^6.3.0 + version: 6.3.0(graphql@17.0.2)(ws@8.21.3) + react: + specifier: 19.2.7 + version: 19.2.7 + react-dom: + specifier: 19.2.7 + version: 19.2.7(react@19.2.7) + devDependencies: + '@types/react': + specifier: ^19 + version: 19.2.14 + '@types/react-dom': + specifier: ^19 + version: 19.1.3(@types/react@19.2.14) + '@typescript/native': + specifier: npm:typescript@7.1.0-beta + version: typescript@7.1.0-beta + '@vitejs/plugin-react': + specifier: ^5.2.0 + version: 5.2.0(vite@8.2.4(@types/node@24.12.2)(esbuild@0.28.2)(jiti@2.6.1)(terser@5.46.2)(yaml@2.9.0)) + axe-core: + specifier: ^4 + version: 4.13.0 + babel-plugin-react-compiler: + specifier: 1.0.0 + version: 1.0.0 + concurrently: + specifier: ^10.0.5 + version: 10.0.5 + cross-env: + specifier: ^10.1.0 + version: 10.1.0 + cypress: + specifier: ^16.0.0 + version: 16.0.0 + cypress-axe: + specifier: ^1 + version: 1.7.0(axe-core@4.13.0)(cypress@16.0.0) + cypress-each: + specifier: ^1.14.1 + version: 1.14.1 + cypress-real-events: + specifier: ^1.15.1 + version: 1.15.1(cypress@16.0.0) + start-server-and-test: + specifier: ^1.10.11 + version: 1.12.1 + typescript: + specifier: ^5.8.0 + version: 5.9.3 + vite: + specifier: 8.2.4 + version: 8.2.4(@types/node@24.12.2)(esbuild@0.28.2)(jiti@2.6.1)(terser@5.46.2)(yaml@2.9.0) + + packages/graphiql-e2e/test: + dependencies: + express: + specifier: ^5.2.1 + version: 5.2.1 + graphql: + specifier: ^17.0.2 + version: 17.0.2 + graphql-helix: + specifier: ^1.13.0 + version: 1.13.0(graphql@17.0.2) + graphql-ws: + specifier: ^6.3.0 + version: 6.3.0(graphql@17.0.2)(ws@8.21.0) + ws: + specifier: 8.21.0 + version: 8.21.0 + packages/graphiql-plugin-code-exporter: dependencies: graphiql-code-exporter: specifier: ^3.0.3 - version: 3.0.3(codemirror@5.65.3)(graphql@16.13.2)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + version: 3.0.3(codemirror@5.65.3)(graphql@17.0.2)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) devDependencies: '@graphiql/react': - specifier: ^0.39.0 + specifier: ^1.0.0 version: link:../graphiql-react '@types/react': specifier: ^19 @@ -653,15 +733,15 @@ importers: '@types/react-dom': specifier: ^19 version: 19.1.3(@types/react@19.2.14) - '@typescript/native-preview': - specifier: ^7.0.0-dev.20260707.2 - version: 7.0.0-dev.20260707.2 + '@typescript/native': + specifier: npm:typescript@7.1.0-beta + version: typescript@7.1.0-beta '@vitejs/plugin-react': specifier: ^5.2.0 version: 5.2.0(vite@8.2.4(@types/node@24.12.2)(esbuild@0.28.2)(jiti@2.6.1)(terser@5.46.2)(yaml@2.9.0)) graphql: - specifier: ^16.9.0 - version: 16.13.2 + specifier: ^17.0.2 + version: 17.0.2 react: specifier: 19.2.7 version: 19.2.7 @@ -678,100 +758,130 @@ importers: specifier: ^4.0.1 version: 4.5.3(@types/node@24.12.2)(rollup@4.40.1)(typescript@5.9.3)(vite@8.2.4(@types/node@24.12.2)(esbuild@0.28.2)(jiti@2.6.1)(terser@5.46.2)(yaml@2.9.0)) - packages/graphiql-plugin-doc-explorer: + packages/graphiql-plugin-collections: dependencies: - '@headlessui/react': - specifier: ^2.2 - version: 2.2.2(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - react-compiler-runtime: - specifier: 19.1.0-rc.3 - version: 19.1.0-rc.3(react@19.2.7) + zod: + specifier: ^4.0.0 + version: 4.6.1 zustand: specifier: ^5 version: 5.0.4(@types/react@19.2.14)(react@19.2.7)(use-sync-external-store@1.5.0(react@19.2.7)) devDependencies: '@graphiql/react': - specifier: ^0.39.0 + specifier: ^1.0.0 version: link:../graphiql-react + '@storybook/react-vite': + specifier: ^10.3.6 + version: 10.6.0(@types/react-dom@19.1.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(rollup@4.40.1)(storybook@10.6.1(@types/react@19.2.14)(prettier@3.8.3)(react@19.2.7))(typescript@5.9.3)(vite@8.2.4(@types/node@24.12.2)(esbuild@0.28.2)(jiti@2.6.1)(terser@5.46.2)(yaml@2.9.0)) '@testing-library/dom': specifier: ^10.4.0 - version: 10.4.0 + version: 10.4.1 '@testing-library/jest-dom': specifier: ^7.0.1 - version: 7.0.1(@testing-library/dom@10.4.0)(vitest@4.1.11(@types/node@24.12.2)(jsdom@29.0.2)(msw@2.13.4(@types/node@24.12.2)(typescript@5.9.3))(vite@8.2.4(@types/node@24.12.2)(esbuild@0.28.2)(jiti@2.6.1)(terser@5.46.2)(yaml@2.9.0))) + version: 7.0.1(@testing-library/dom@10.4.1)(vitest@5.0.3) '@testing-library/react': specifier: ^16.3.0 - version: 16.3.0(@testing-library/dom@10.4.0)(@types/react-dom@19.1.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + version: 16.3.0(@testing-library/dom@10.4.1)(@types/react-dom@19.1.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) '@types/react': specifier: ^19 version: 19.2.14 '@types/react-dom': specifier: ^19 version: 19.1.3(@types/react@19.2.14) - '@typescript/native-preview': - specifier: ^7.0.0-dev.20260707.2 - version: 7.0.0-dev.20260707.2 + '@typescript/native': + specifier: npm:typescript@7.1.0-beta + version: typescript@7.1.0-beta '@vitejs/plugin-react': specifier: ^5.2.0 version: 5.2.0(vite@8.2.4(@types/node@24.12.2)(esbuild@0.28.2)(jiti@2.6.1)(terser@5.46.2)(yaml@2.9.0)) - '@vitest/web-worker': - specifier: 4.1.11 - version: 4.1.11(vitest@4.1.11(@types/node@24.12.2)(jsdom@29.0.2)(msw@2.13.4(@types/node@24.12.2)(typescript@5.9.3))(vite@8.2.4(@types/node@24.12.2)(esbuild@0.28.2)(jiti@2.6.1)(terser@5.46.2)(yaml@2.9.0))) - babel-plugin-react-compiler: - specifier: 19.1.0-rc.3 - version: 19.1.0-rc.3 graphql: - specifier: ^16.9.0 - version: 16.13.2 - monaco-editor: - specifier: 0.52.2 - version: 0.52.2 + specifier: ^17.0.2 + version: 17.0.2 react: specifier: 19.2.7 version: 19.2.7 react-dom: specifier: 19.2.7 version: 19.2.7(react@19.2.7) + typescript: + specifier: ^5.8.0 + version: 5.9.3 vite: specifier: 8.2.4 version: 8.2.4(@types/node@24.12.2)(esbuild@0.28.2)(jiti@2.6.1)(terser@5.46.2)(yaml@2.9.0) vite-plugin-dts: specifier: ^4.5.3 version: 4.5.3(@types/node@24.12.2)(rollup@4.40.1)(typescript@5.9.3)(vite@8.2.4(@types/node@24.12.2)(esbuild@0.28.2)(jiti@2.6.1)(terser@5.46.2)(yaml@2.9.0)) - vitest-canvas-mock: - specifier: ^1.1.4 - version: 1.1.4(vitest@4.1.11(@types/node@24.12.2)(jsdom@29.0.2)(msw@2.13.4(@types/node@24.12.2)(typescript@5.9.3))(vite@8.2.4(@types/node@24.12.2)(esbuild@0.28.2)(jiti@2.6.1)(terser@5.46.2)(yaml@2.9.0))) + vite-plugin-svgr: + specifier: ^5.2.0 + version: 5.2.0(rollup@4.40.1)(vite@8.2.4(@types/node@24.12.2)(esbuild@0.28.2)(jiti@2.6.1)(terser@5.46.2)(yaml@2.9.0)) - packages/graphiql-plugin-explorer: + packages/graphiql-plugin-doc-explorer: dependencies: - graphiql-explorer: - specifier: ^0.9.0 - version: 0.9.0(graphql@16.13.2)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@headlessui/react': + specifier: ^2.2 + version: 2.2.2(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + react-compiler-runtime: + specifier: ^1.0.0 + version: 1.0.0(react@19.2.7) + zustand: + specifier: ^5 + version: 5.0.4(@types/react@19.2.14)(react@19.2.7)(use-sync-external-store@1.5.0(react@19.2.7)) devDependencies: '@graphiql/react': - specifier: ^0.39.0 + specifier: ^1.0.0 version: link:../graphiql-react + '@storybook/addon-a11y': + specifier: ^10.3.6 + version: 10.6.0(storybook@10.6.1(@types/react@19.2.14)(prettier@3.8.3)(react@19.2.7)) + '@storybook/addon-vitest': + specifier: ^10.6.1 + version: 10.6.1(@vitest/browser-playwright@5.0.3)(@vitest/browser@5.0.3(msw@2.13.4(@types/node@24.12.2)(typescript@5.9.3))(vite@8.2.4(@types/node@24.12.2)(esbuild@0.28.2)(jiti@2.6.1)(terser@5.46.2)(yaml@2.9.0))(vitest@5.0.3))(@vitest/runner@4.1.11)(react@19.2.7)(storybook@10.6.1(@types/react@19.2.14)(prettier@3.8.3)(react@19.2.7))(vitest@5.0.3) + '@storybook/react-vite': + specifier: ^10.3.6 + version: 10.6.0(@types/react-dom@19.1.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(rollup@4.40.1)(storybook@10.6.1(@types/react@19.2.14)(prettier@3.8.3)(react@19.2.7))(typescript@5.9.3)(vite@8.2.4(@types/node@24.12.2)(esbuild@0.28.2)(jiti@2.6.1)(terser@5.46.2)(yaml@2.9.0)) + '@testing-library/dom': + specifier: ^10.4.0 + version: 10.4.1 + '@testing-library/jest-dom': + specifier: ^7.0.1 + version: 7.0.1(@testing-library/dom@10.4.1)(vitest@5.0.3) + '@testing-library/react': + specifier: ^16.3.0 + version: 16.3.0(@testing-library/dom@10.4.1)(@types/react-dom@19.1.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) '@types/react': specifier: ^19 version: 19.2.14 '@types/react-dom': specifier: ^19 version: 19.1.3(@types/react@19.2.14) - '@typescript/native-preview': - specifier: ^7.0.0-dev.20260707.2 - version: 7.0.0-dev.20260707.2 + '@typescript/native': + specifier: npm:typescript@7.1.0-beta + version: typescript@7.1.0-beta '@vitejs/plugin-react': specifier: ^5.2.0 version: 5.2.0(vite@8.2.4(@types/node@24.12.2)(esbuild@0.28.2)(jiti@2.6.1)(terser@5.46.2)(yaml@2.9.0)) + '@vitest/web-worker': + specifier: ^5.0.3 + version: 5.0.3(vitest@5.0.3) + babel-plugin-react-compiler: + specifier: 1.0.0 + version: 1.0.0 graphql: - specifier: ^16.9.0 - version: 16.13.2 + specifier: ^17.0.2 + version: 17.0.2 + monaco-editor: + specifier: '>=0.56.0 <0.58.0' + version: 0.57.0 react: specifier: 19.2.7 version: 19.2.7 react-dom: specifier: 19.2.7 version: 19.2.7(react@19.2.7) + storybook: + specifier: ^10.6.1 + version: 10.6.1(@types/react@19.2.14)(prettier@3.8.3)(react@19.2.7) typescript: specifier: ^5.8.0 version: 5.9.3 @@ -779,60 +889,69 @@ importers: specifier: 8.2.4 version: 8.2.4(@types/node@24.12.2)(esbuild@0.28.2)(jiti@2.6.1)(terser@5.46.2)(yaml@2.9.0) vite-plugin-dts: - specifier: ^4.0.1 + specifier: ^4.5.3 version: 4.5.3(@types/node@24.12.2)(rollup@4.40.1)(typescript@5.9.3)(vite@8.2.4(@types/node@24.12.2)(esbuild@0.28.2)(jiti@2.6.1)(terser@5.46.2)(yaml@2.9.0)) - vite-plugin-svgr: - specifier: ^4.3.0 - version: 4.3.0(rollup@4.40.1)(vite@8.2.4(@types/node@24.12.2)(esbuild@0.28.2)(jiti@2.6.1)(terser@5.46.2)(yaml@2.9.0)) + vitest-canvas-mock: + specifier: ^1.2.0 + version: 1.2.0(vitest@5.0.3) packages/graphiql-plugin-history: dependencies: '@graphiql/toolkit': - specifier: ^0.12.0 + specifier: ^1.0.0 version: link:../graphiql-toolkit + clsx: + specifier: ^2.1.1 + version: 2.1.1 react-compiler-runtime: - specifier: 19.1.0-rc.3 - version: 19.1.0-rc.3(react@19.2.7) + specifier: ^1.0.0 + version: 1.0.0(react@19.2.7) zustand: specifier: ^5 version: 5.0.4(@types/react@19.2.14)(react@19.2.7)(use-sync-external-store@1.5.0(react@19.2.7)) devDependencies: '@graphiql/react': - specifier: ^0.39.0 + specifier: ^1.0.0 version: link:../graphiql-react + '@storybook/react-vite': + specifier: ^10.3.6 + version: 10.6.0(@types/react-dom@19.1.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(rollup@4.40.1)(storybook@10.6.1(@types/react@19.2.14)(prettier@3.8.3)(react@19.2.7))(typescript@5.9.3)(vite@8.2.4(@types/node@24.12.2)(esbuild@0.28.2)(jiti@2.6.1)(terser@5.46.2)(yaml@2.9.0)) '@testing-library/jest-dom': specifier: ^7.0.1 - version: 7.0.1(@testing-library/dom@10.4.0)(vitest@4.1.11(@types/node@24.12.2)(jsdom@29.0.2)(msw@2.13.4(@types/node@24.12.2)(typescript@5.9.3))(vite@8.2.4(@types/node@24.12.2)(esbuild@0.28.2)(jiti@2.6.1)(terser@5.46.2)(yaml@2.9.0))) + version: 7.0.1(@testing-library/dom@10.4.1)(vitest@5.0.3) '@testing-library/react': specifier: ^16.1.0 - version: 16.3.0(@testing-library/dom@10.4.0)(@types/react-dom@19.1.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + version: 16.3.0(@testing-library/dom@10.4.1)(@types/react-dom@19.1.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) '@types/react': specifier: ^19 version: 19.2.14 '@types/react-dom': specifier: ^19 version: 19.1.3(@types/react@19.2.14) - '@typescript/native-preview': - specifier: ^7.0.0-dev.20260707.2 - version: 7.0.0-dev.20260707.2 + '@typescript/native': + specifier: npm:typescript@7.1.0-beta + version: typescript@7.1.0-beta '@vitejs/plugin-react': specifier: ^5.2.0 version: 5.2.0(vite@8.2.4(@types/node@24.12.2)(esbuild@0.28.2)(jiti@2.6.1)(terser@5.46.2)(yaml@2.9.0)) '@vitest/web-worker': - specifier: 4.1.11 - version: 4.1.11(vitest@4.1.11(@types/node@24.12.2)(jsdom@29.0.2)(msw@2.13.4(@types/node@24.12.2)(typescript@5.9.3))(vite@8.2.4(@types/node@24.12.2)(esbuild@0.28.2)(jiti@2.6.1)(terser@5.46.2)(yaml@2.9.0))) + specifier: ^5.0.3 + version: 5.0.3(vitest@5.0.3) babel-plugin-react-compiler: - specifier: 19.1.0-rc.3 - version: 19.1.0-rc.3 + specifier: 1.0.0 + version: 1.0.0 monaco-editor: - specifier: 0.52.2 - version: 0.52.2 + specifier: '>=0.56.0 <0.58.0' + version: 0.57.0 react: specifier: 19.2.7 version: 19.2.7 react-dom: specifier: 19.2.7 version: 19.2.7(react@19.2.7) + typescript: + specifier: ^5.8.0 + version: 5.9.3 vite: specifier: 8.2.4 version: 8.2.4(@types/node@24.12.2)(esbuild@0.28.2)(jiti@2.6.1)(terser@5.46.2)(yaml@2.9.0) @@ -840,13 +959,80 @@ importers: specifier: ^4.5.3 version: 4.5.3(@types/node@24.12.2)(rollup@4.40.1)(typescript@5.9.3)(vite@8.2.4(@types/node@24.12.2)(esbuild@0.28.2)(jiti@2.6.1)(terser@5.46.2)(yaml@2.9.0)) vitest-canvas-mock: - specifier: ^1.1.4 - version: 1.1.4(vitest@4.1.11(@types/node@24.12.2)(jsdom@29.0.2)(msw@2.13.4(@types/node@24.12.2)(typescript@5.9.3))(vite@8.2.4(@types/node@24.12.2)(esbuild@0.28.2)(jiti@2.6.1)(terser@5.46.2)(yaml@2.9.0))) + specifier: ^1.2.0 + version: 1.2.0(vitest@5.0.3) + + packages/graphiql-plugin-query-builder: + dependencies: + react-compiler-runtime: + specifier: ^1.0.0 + version: 1.0.0(react@19.2.7) + devDependencies: + '@graphiql/react': + specifier: ^1.0.0 + version: link:../graphiql-react + '@storybook/addon-a11y': + specifier: ^10.3.6 + version: 10.6.0(storybook@10.6.1(@types/react@19.2.14)(prettier@3.8.3)(react@19.2.7)) + '@storybook/addon-vitest': + specifier: ^10.6.1 + version: 10.6.1(@vitest/browser-playwright@5.0.3)(@vitest/browser@5.0.3(msw@2.13.4(@types/node@24.12.2)(typescript@5.9.3))(vite@8.2.4(@types/node@24.12.2)(esbuild@0.28.2)(jiti@2.6.1)(terser@5.46.2)(yaml@2.9.0))(vitest@5.0.3))(@vitest/runner@4.1.11)(react@19.2.7)(storybook@10.6.1(@types/react@19.2.14)(prettier@3.8.3)(react@19.2.7))(vitest@5.0.3) + '@storybook/react-vite': + specifier: ^10.3.6 + version: 10.6.0(@types/react-dom@19.1.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(rollup@4.40.1)(storybook@10.6.1(@types/react@19.2.14)(prettier@3.8.3)(react@19.2.7))(typescript@5.9.3)(vite@8.2.4(@types/node@24.12.2)(esbuild@0.28.2)(jiti@2.6.1)(terser@5.46.2)(yaml@2.9.0)) + '@testing-library/dom': + specifier: ^10.4.0 + version: 10.4.1 + '@testing-library/jest-dom': + specifier: ^7.0.1 + version: 7.0.1(@testing-library/dom@10.4.1)(vitest@5.0.3) + '@testing-library/react': + specifier: ^16.3.0 + version: 16.3.0(@testing-library/dom@10.4.1)(@types/react-dom@19.1.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@testing-library/user-event': + specifier: ^14.6.1 + version: 14.6.7(@testing-library/dom@10.4.1) + '@types/react': + specifier: ^19 + version: 19.2.14 + '@types/react-dom': + specifier: ^19 + version: 19.1.3(@types/react@19.2.14) + '@typescript/native': + specifier: npm:typescript@7.1.0-beta + version: typescript@7.1.0-beta + '@vitejs/plugin-react': + specifier: ^5.2.0 + version: 5.2.0(vite@8.2.4(@types/node@24.12.2)(esbuild@0.28.2)(jiti@2.6.1)(terser@5.46.2)(yaml@2.9.0)) + babel-plugin-react-compiler: + specifier: 1.0.0 + version: 1.0.0 + graphql: + specifier: ^17.0.2 + version: 17.0.2 + react: + specifier: 19.2.7 + version: 19.2.7 + react-dom: + specifier: 19.2.7 + version: 19.2.7(react@19.2.7) + storybook: + specifier: ^10.6.1 + version: 10.6.1(@types/react@19.2.14)(prettier@3.8.3)(react@19.2.7) + typescript: + specifier: ^5.8.0 + version: 5.9.3 + vite: + specifier: 8.2.4 + version: 8.2.4(@types/node@24.12.2)(esbuild@0.28.2)(jiti@2.6.1)(terser@5.46.2)(yaml@2.9.0) + vite-plugin-dts: + specifier: ^4.5.3 + version: 4.5.3(@types/node@24.12.2)(rollup@4.40.1)(typescript@5.9.3)(vite@8.2.4(@types/node@24.12.2)(esbuild@0.28.2)(jiti@2.6.1)(terser@5.46.2)(yaml@2.9.0)) packages/graphiql-react: dependencies: '@graphiql/toolkit': - specifier: ^0.12.1 + specifier: ^1.0.0 version: link:../graphiql-toolkit '@radix-ui/react-dialog': specifier: ^1.1 @@ -861,16 +1047,16 @@ importers: specifier: ^1.2 version: 1.2.0(@types/react-dom@19.1.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) clsx: - specifier: ^1.2.1 - version: 1.2.1 + specifier: ^2.1.1 + version: 2.1.1 framer-motion: - specifier: ^13.2 - version: 13.2.0(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + specifier: ^14.0.0 + version: 14.0.0(react-dom@19.2.7(react@19.2.7))(react@19.2.7) get-value: specifier: ^4.1.0 version: 4.1.0 graphql-language-service: - specifier: ^5.7.0 + specifier: ^6.0.0 version: link:../graphql-language-service jsonc-parser: specifier: ^3.3.1 @@ -879,17 +1065,17 @@ importers: specifier: 15.0.3 version: 15.0.3 monaco-editor: - specifier: 0.52.2 - version: 0.52.2 + specifier: '>=0.56.0 <0.58.0' + version: 0.57.0 monaco-graphql: - specifier: ^1.9.0 + specifier: ^2.0.0 version: link:../monaco-graphql prettier: specifier: ^3.5.3 version: 3.8.3 react-compiler-runtime: - specifier: 19.1.0-rc.3 - version: 19.1.0-rc.3(react@19.2.7) + specifier: ^1.0.0 + version: 1.0.0(react@19.2.7) set-value: specifier: ^4.1.0 version: 4.1.0 @@ -897,6 +1083,24 @@ importers: specifier: ^5 version: 5.0.4(@types/react@19.2.14)(react@19.2.7)(use-sync-external-store@1.5.0(react@19.2.7)) devDependencies: + '@storybook/addon-a11y': + specifier: ^10.3.6 + version: 10.6.0(storybook@10.6.1(@types/react@19.2.14)(prettier@3.8.3)(react@19.2.7)) + '@storybook/addon-vitest': + specifier: ^10.6.1 + version: 10.6.1(@vitest/browser-playwright@5.0.3)(@vitest/browser@5.0.3(msw@2.13.4(@types/node@24.12.2)(typescript@5.9.3))(vite@8.2.4(@types/node@24.12.2)(esbuild@0.28.2)(jiti@2.6.1)(terser@5.46.2)(yaml@2.9.0))(vitest@5.0.3))(@vitest/runner@4.1.11)(react@19.2.7)(storybook@10.6.1(@types/react@19.2.14)(prettier@3.8.3)(react@19.2.7))(vitest@5.0.3) + '@storybook/react-vite': + specifier: ^10.3.6 + version: 10.6.0(@types/react-dom@19.1.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(rollup@4.40.1)(storybook@10.6.1(@types/react@19.2.14)(prettier@3.8.3)(react@19.2.7))(typescript@5.9.3)(vite@8.2.4(@types/node@24.12.2)(esbuild@0.28.2)(jiti@2.6.1)(terser@5.46.2)(yaml@2.9.0)) + '@testing-library/jest-dom': + specifier: ^7.0.1 + version: 7.0.1(@testing-library/dom@10.4.1)(vitest@5.0.3) + '@testing-library/react': + specifier: ^16.3.0 + version: 16.3.0(@testing-library/dom@10.4.1)(@types/react-dom@19.1.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@testing-library/user-event': + specifier: ^14.6.1 + version: 14.6.7(@testing-library/dom@10.4.1) '@types/get-value': specifier: ^3.0.5 version: 3.0.5 @@ -912,27 +1116,36 @@ importers: '@types/set-value': specifier: ^4.0.1 version: 4.0.1 - '@typescript/native-preview': - specifier: ^7.0.0-dev.20260707.2 - version: 7.0.0-dev.20260707.2 + '@typescript/native': + specifier: npm:typescript@7.1.0-beta + version: typescript@7.1.0-beta '@vitejs/plugin-react': specifier: ^5.2.0 version: 5.2.0(vite@8.2.4(@types/node@24.12.2)(esbuild@0.28.2)(jiti@2.6.1)(terser@5.46.2)(yaml@2.9.0)) + '@vitest/browser-playwright': + specifier: ^5.0.3 + version: 5.0.3(msw@2.13.4(@types/node@24.12.2)(typescript@5.9.3))(playwright@1.63.0)(vite@8.2.4(@types/node@24.12.2)(esbuild@0.28.2)(jiti@2.6.1)(terser@5.46.2)(yaml@2.9.0))(vitest@5.0.3) '@vitest/web-worker': - specifier: 4.1.11 - version: 4.1.11(vitest@4.1.11(@types/node@24.12.2)(jsdom@29.0.2)(msw@2.13.4(@types/node@24.12.2)(typescript@5.9.3))(vite@8.2.4(@types/node@24.12.2)(esbuild@0.28.2)(jiti@2.6.1)(terser@5.46.2)(yaml@2.9.0))) + specifier: ^5.0.3 + version: 5.0.3(vitest@5.0.3) babel-plugin-react-compiler: - specifier: 19.1.0-rc.3 - version: 19.1.0-rc.3 + specifier: 1.0.0 + version: 1.0.0 graphql: - specifier: ^16.9.0 - version: 16.13.2 + specifier: ^17.0.2 + version: 17.0.2 + playwright: + specifier: ^1.60.0 + version: 1.63.0 react: specifier: 19.2.7 version: 19.2.7 react-dom: specifier: 19.2.7 version: 19.2.7(react@19.2.7) + storybook: + specifier: ^10.6.1 + version: 10.6.1(@types/react@19.2.14)(prettier@3.8.3)(react@19.2.7) typescript: specifier: ^5.8.0 version: 5.9.3 @@ -943,11 +1156,11 @@ importers: specifier: ^4.5.3 version: 4.5.3(@types/node@24.12.2)(rollup@4.40.1)(typescript@5.9.3)(vite@8.2.4(@types/node@24.12.2)(esbuild@0.28.2)(jiti@2.6.1)(terser@5.46.2)(yaml@2.9.0)) vite-plugin-svgr: - specifier: ^4.3.0 - version: 4.3.0(rollup@4.40.1)(vite@8.2.4(@types/node@24.12.2)(esbuild@0.28.2)(jiti@2.6.1)(terser@5.46.2)(yaml@2.9.0)) + specifier: ^5.2.0 + version: 5.2.0(rollup@4.40.1)(vite@8.2.4(@types/node@24.12.2)(esbuild@0.28.2)(jiti@2.6.1)(terser@5.46.2)(yaml@2.9.0)) vitest-canvas-mock: - specifier: ^1.1.4 - version: 1.1.4(vitest@4.1.11(@types/node@24.12.2)(jsdom@29.0.2)(msw@2.13.4(@types/node@24.12.2)(typescript@5.9.3))(vite@8.2.4(@types/node@24.12.2)(esbuild@0.28.2)(jiti@2.6.1)(terser@5.46.2)(yaml@2.9.0))) + specifier: ^1.2.0 + version: 1.2.0(vitest@5.0.3) packages/graphiql-toolkit: dependencies: @@ -958,51 +1171,33 @@ importers: specifier: ^1.1.4 version: 1.3.2(@types/node@24.12.2) devDependencies: - '@typescript/native-preview': - specifier: ^7.0.0-dev.20260707.2 - version: 7.0.0-dev.20260707.2 + '@types/node': + specifier: ^24 + version: 24.12.2 + '@typescript/native': + specifier: npm:typescript@7.1.0-beta + version: typescript@7.1.0-beta graphql: - specifier: ^16.9.0 - version: 16.13.2 + specifier: ^17.0.2 + version: 17.0.2 graphql-ws: - specifier: ^6.0.8 - version: 6.0.8(graphql@16.13.2)(ws@8.21.0) + specifier: ^6.3.0 + version: 6.3.0(graphql@17.0.2)(ws@8.21.3) isomorphic-fetch: specifier: ^3.0.0 version: 3.0.0(encoding@0.1.13) - subscriptions-transport-ws: - specifier: 0.11.0 - version: 0.11.0(graphql@16.13.2) tsup: specifier: ^8.2.4 - version: 8.2.4(@microsoft/api-extractor@7.52.5(@types/node@24.12.2))(jiti@2.6.1)(postcss@8.5.31)(typescript@5.9.3)(yaml@2.9.0) - - packages/graphiql/test: - dependencies: - express: - specifier: ^5.2.1 - version: 5.2.1 - graphql: - specifier: ^17.0.0-rc.0 - version: 17.0.2 - graphql-helix: - specifier: ^1.13.0 - version: 1.13.0(graphql@17.0.2) - graphql-ws: - specifier: ^6.0.8 - version: 6.0.8(graphql@17.0.2)(ws@8.21.0) - ws: - specifier: 8.21.0 - version: 8.21.0 + version: 8.2.4(@microsoft/api-extractor@7.52.5(@types/node@24.12.2))(jiti@2.6.1)(postcss@8.5.28)(typescript@5.9.3)(yaml@2.9.0) + typescript: + specifier: ^5.8.0 + version: 5.9.3 packages/graphql-language-service: dependencies: debounce-promise: specifier: ^3.1.2 version: 3.1.2 - nullthrows: - specifier: ^1.0.0 - version: 1.1.1 vscode-languageserver-types: specifier: 3.17.3 version: 3.17.3 @@ -1016,18 +1211,18 @@ importers: '@types/json-schema': specifier: 7.0.9 version: 7.0.9 - '@typescript/native-preview': - specifier: ^7.0.0-dev.20260707.2 - version: 7.0.0-dev.20260707.2 + '@typescript/native': + specifier: npm:typescript@7.1.0-beta + version: typescript@7.1.0-beta benchmark: specifier: ^2.1.4 version: 2.1.4 graphql: - specifier: ^16.9.0 - version: 16.13.2 + specifier: ^17.0.2 + version: 17.0.2 graphql-config: specifier: ^5.1.6 - version: 5.1.6(@types/node@24.12.2)(cosmiconfig-toml-loader@1.0.0)(graphql@16.13.2) + version: 5.1.6(@types/node@24.12.2)(cosmiconfig-toml-loader@1.0.0)(graphql@17.0.2) lodash: specifier: ^4.18.1 version: 4.18.1 @@ -1043,34 +1238,31 @@ importers: packages/graphql-language-service-cli: dependencies: - '@babel/polyfill': - specifier: ^7.12.1 - version: 7.12.1 '@types/yargs': specifier: 16.0.5 version: 16.0.5 graphql-language-service: - specifier: ^5.3.0 + specifier: ^6.0.0 version: link:../graphql-language-service graphql-language-service-server: - specifier: ^2.14.0 + specifier: ^3.0.0 version: link:../graphql-language-service-server yargs: specifier: ^16.2.0 version: 16.2.0 devDependencies: - '@typescript/native-preview': - specifier: ^7.0.0-dev.20260707.2 - version: 7.0.0-dev.20260707.2 + '@typescript/native': + specifier: npm:typescript@7.1.0-beta + version: typescript@7.1.0-beta graphql: - specifier: ^16.9.0 - version: 16.13.2 + specifier: ^17.0.2 + version: 17.0.2 packages/graphql-language-service-server: dependencies: '@astrojs/compiler': - specifier: ^2.10.1 - version: 2.10.1 + specifier: ^4.0.0 + version: 4.0.0 '@babel/parser': specifier: ^8.0.4 version: 8.0.4 @@ -1079,10 +1271,10 @@ importers: version: 8.0.4 '@graphql-tools/code-file-loader': specifier: 8.0.3 - version: 8.0.3(graphql@16.13.2) + version: 8.0.3(graphql@17.0.2) '@graphql-tools/load': specifier: ^8.1.0 - version: 8.1.10(graphql@16.13.2) + version: 8.1.10(graphql@17.0.2) cosmiconfig-toml-loader: specifier: ^1.0.0 version: 1.0.0 @@ -1100,9 +1292,9 @@ importers: version: 13.0.6 graphql-config: specifier: ^5.1.6 - version: 5.1.6(@types/node@24.12.2)(cosmiconfig-toml-loader@1.0.0)(graphql@16.13.2) + version: 5.1.6(@types/node@24.12.2)(cosmiconfig-toml-loader@1.0.0)(graphql@17.0.2) graphql-language-service: - specifier: ^5.7.0 + specifier: ^6.0.0 version: link:../graphql-language-service lru-cache: specifier: ^11.5.2 @@ -1147,12 +1339,12 @@ importers: '@types/glob': specifier: ^8.1.0 version: 8.1.0 - '@typescript/native-preview': - specifier: ^7.0.0-dev.20260707.2 - version: 7.0.0-dev.20260707.2 + '@typescript/native': + specifier: npm:typescript@7.1.0-beta + version: typescript@7.1.0-beta graphql: - specifier: ^16.9.0 - version: 16.13.2 + specifier: ^17.0.2 + version: 17.0.2 msw: specifier: ^2.13.4 version: 2.13.4(@types/node@24.12.2)(typescript@5.9.3) @@ -1163,27 +1355,27 @@ importers: packages/monaco-graphql: dependencies: graphql-language-service: - specifier: ^5.7.0 + specifier: ^6.0.0 version: link:../graphql-language-service - picomatch-browser: - specifier: ^2.2.6 - version: 2.2.6 + minimatch: + specifier: ^10.2.6 + version: 10.2.6 devDependencies: - '@typescript/native-preview': - specifier: ^7.0.0-dev.20260707.2 - version: 7.0.0-dev.20260707.2 - execa: - specifier: ^10.0.1 - version: 10.0.1 + '@typescript/native': + specifier: npm:typescript@7.1.0-beta + version: typescript@7.1.0-beta graphql: - specifier: ^16.9.0 - version: 16.13.2 + specifier: ^17.0.2 + version: 17.0.2 monaco-editor: - specifier: 0.52.2 - version: 0.52.2 + specifier: 0.57.0 + version: 0.57.0 prettier: specifier: 3.3.2 version: 3.3.2 + vite: + specifier: 8.2.4 + version: 8.2.4(@types/node@24.12.2)(esbuild@0.28.2)(jiti@2.6.1)(terser@5.46.2)(yaml@2.9.0) vscode-languageserver-types: specifier: 3.17.3 version: 3.17.3 @@ -1191,10 +1383,10 @@ importers: packages/vscode-graphql: dependencies: graphql: - specifier: ^16.9.0 || ^17.0.0-rc.0 - version: 16.13.2 + specifier: ^16.14.2 + version: 16.14.2 graphql-language-service-server: - specifier: ^2.14.9 + specifier: ^3.0.0 version: link:../graphql-language-service-server typescript: specifier: ^5.8.0 @@ -1209,9 +1401,9 @@ importers: '@types/vscode': specifier: 1.62.0 version: 1.62.0 - '@typescript/native-preview': - specifier: ^7.0.0-dev.20260707.2 - version: 7.0.0-dev.20260707.2 + '@typescript/native': + specifier: npm:typescript@7.1.0-beta + version: typescript@7.1.0-beta '@vscode/vsce': specifier: ^3.9.2 version: 3.9.2 @@ -1226,10 +1418,10 @@ importers: dependencies: '@graphql-tools/code-file-loader': specifier: 8.0.3 - version: 8.0.3(graphql@16.13.2) + version: 8.0.3(graphql@16.14.2) '@urql/core': specifier: ^6.0.1 - version: 6.0.1(graphql@16.13.2) + version: 6.0.1(graphql@16.14.2) '@whatwg-node/fetch': specifier: 0.2.8 version: 0.2.8(encoding@0.1.13) @@ -1243,14 +1435,14 @@ importers: specifier: 10.0.0 version: 10.0.0 graphql: - specifier: ^16.9.0 || ^17.0.0-rc.0 - version: 16.13.2 + specifier: ^16.14.2 + version: 16.14.2 graphql-config: specifier: ^5.1.6 - version: 5.1.6(@types/node@24.12.2)(cosmiconfig-toml-loader@1.0.0)(graphql@16.13.2) + version: 5.1.6(@types/node@24.12.2)(cosmiconfig-toml-loader@1.0.0)(graphql@16.14.2) graphql-ws: specifier: 6.0.8 - version: 6.0.8(graphql@16.13.2)(ws@8.21.0) + version: 6.0.8(graphql@16.14.2)(ws@8.21.0) nullthrows: specifier: 1.1.1 version: 1.1.1 @@ -1260,6 +1452,9 @@ importers: svelte2tsx: specifier: ^0.7.61 version: 0.7.61(svelte@5.55.9)(typescript@5.9.3) + typescript: + specifier: ^5.8.0 + version: 5.9.3 wonka: specifier: ^6.3.6 version: 6.3.6 @@ -1270,9 +1465,6 @@ importers: '@types/capitalize': specifier: 2.0.0 version: 2.0.0 - '@types/dotenv': - specifier: 8.2.0 - version: 8.2.0 '@types/node': specifier: ^24 version: 24.12.2 @@ -1282,9 +1474,9 @@ importers: '@types/ws': specifier: 8.2.2 version: 8.2.2 - '@typescript/native-preview': - specifier: ^7.0.0-dev.20260707.2 - version: 7.0.0-dev.20260707.2 + '@typescript/native': + specifier: npm:typescript@7.1.0-beta + version: typescript@7.1.0-beta '@vscode/vsce': specifier: ^3.9.2 version: 3.9.2 @@ -1297,9 +1489,9 @@ importers: packages/vscode-graphql-syntax: devDependencies: - '@typescript/native-preview': - specifier: ^7.0.0-dev.20260707.2 - version: 7.0.0-dev.20260707.2 + '@typescript/native': + specifier: npm:typescript@7.1.0-beta + version: typescript@7.1.0-beta '@vscode/vsce': specifier: ^3.9.2 version: 3.9.2 @@ -1347,8 +1539,8 @@ packages: '@asamuzakjp/nwsapi@2.3.9': resolution: {integrity: sha512-n8GuYSrI9bF7FFZ/SjhwevlHc8xaVlb/7HmHelnc/PZXBD2ZR49NnN9sMMuDdEGPeeRQ5d0hqlSlEpgCX3Wl0Q==} - '@astrojs/compiler@2.10.1': - resolution: {integrity: sha512-XmM4j6BjvOVMag2xELq0JuG2yKOW8wgIu6dvb9BsjbGYmnvoStJn/pqEzVqc1EBszf2xYT7onIkftIOUz9AwrQ==} + '@astrojs/compiler@4.0.0': + resolution: {integrity: sha512-eouss7G8ygdZqHuke033VMcVw5HTZUu+PXd/h06DGDUg/jt5btPYPqh66ENWw/mU78rBrf/oeC4oqoBwMtDMNA==} '@azu/format-text@1.0.2': resolution: {integrity: sha512-Swi4N7Edy1Eqq82GxgEECXSSLyn6GOb5htRFPzBDdUkECGXtlf12ynO5oJSpWKPwCaUssOu7NfhDcCWpIC6Ywg==} @@ -1568,27 +1760,6 @@ packages: peerDependencies: '@babel/core': ^7.0.0 - '@babel/plugin-proposal-class-properties@7.18.6': - resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} - engines: {node: '>=6.9.0'} - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead. - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-proposal-nullish-coalescing-operator@7.18.6': - resolution: {integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==} - engines: {node: '>=6.9.0'} - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-nullish-coalescing-operator instead. - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-proposal-optional-chaining@7.21.0': - resolution: {integrity: sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==} - engines: {node: '>=6.9.0'} - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-chaining instead. - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2': resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} engines: {node: '>=6.9.0'} @@ -1618,16 +1789,6 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3': - resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-optional-chaining@7.8.3': - resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-typescript@7.29.7': resolution: {integrity: sha512-ngr+82Sh0xMz25TPCZi+nC2iTzjfCdWS2ONXTp/PtSCHCgaCNBpdMqgvJ2ccdLlClVZ7sisIgB914j/JFe+RZA==} engines: {node: '>=6.9.0'} @@ -1988,10 +2149,6 @@ packages: peerDependencies: '@babel/core': ^7.0.0 - '@babel/polyfill@7.12.1': - resolution: {integrity: sha512-X0pi0V6gxLi6lFZpGmeNa4zxtwEmCs42isWLNjZZDE0Y8yVfgu0T2OAHlzBbdYlqbW/YXVvoBHpATEM+goCj8g==} - deprecated: 🚨 This package has been deprecated in favor of separate inclusion of a polyfill and regenerator-runtime (when needed). See the @babel/polyfill docs (https://babeljs.io/docs/en/babel-polyfill) for more information. - '@babel/preset-env@7.29.7': resolution: {integrity: sha512-GYzX36n1nsciIb0uyH0GHwxwtNwPQIcpxSeiVLDtG/B7jB5xXgchnmL1f/jCX5o+pwnaDBtO60ONSJhEBJfxYA==} engines: {node: '>=6.9.0'} @@ -2041,10 +2198,19 @@ packages: resolution: {integrity: sha512-eY+Yn3dCqTGmyiq2QRU66lA5FL8lqqqvecHt0fF3uHONIa7ToYsaCiWV8lOKqAs0Rb2SjixiKFROngnulPtt2g==} engines: {node: ^22.18.0 || >=24.11.0} + '@blazediff/core@1.10.0': + resolution: {integrity: sha512-AOQff0zgR7cGsZL+4E7hVkmujoPUpm0J9xzWGWZj5wCjd3gmxESXAPfKyuzs93VdpQNFhHlBhfOjrcZ+XTERtQ==} + '@bramus/specificity@2.4.2': resolution: {integrity: sha512-ctxtJ/eA+t+6q2++vj5j7FYX3nRu311q1wfYH3xjlLOsczhlhxAg2FWNUXhpGvAw3BWo1xBcvOV6/YLc2r5FJw==} hasBin: true + '@cacheable/memory@2.2.0': + resolution: {integrity: sha512-CTLKqLItRCEixEAewD3/j9DB3/o96gpTPD4eJ1v+DGOlxZRZncRQkGYqqnAGCscYd6RNeXfGeiuCphsPtqyIfQ==} + + '@cacheable/utils@2.5.0': + resolution: {integrity: sha512-buipgOVDkkPXNR5+xBpDw7Zk2n1EvU7qBJCNUcL7rhQ//kfpOXPAvQ511Os0vpLYJ1pZnvudNytkQt2hst3wqA==} + '@changesets/apply-release-plan@7.0.4': resolution: {integrity: sha512-HLFwhKWayKinWAul0Vj+76jVx1Pc2v55MGPVjZ924Y/ROeSsBMFutv9heHmCUj48lJyRfOTJG5+ar+29FUky/A==} @@ -2421,9 +2587,27 @@ packages: resolution: {integrity: sha512-Xc3VhU02wqZ1HvHRJUwL09HkZSTvidqY5Ya0NXBSYOxAp+Ln9dcJr9fySI+CkONzP3PekQo9WdzCv0PGER/mOA==} engines: {node: '>=14.17.0'} + '@emnapi/core@1.11.0': + resolution: {integrity: sha512-l9Oo58x0HOP5znGzVhYW9U3e5wVuA4LAZU2AGezTmkhO1CgQRFDhDg4nneHsu/t3WniXg9QrG2nIXL/ZS8ln8Q==} + + '@emnapi/core@1.9.2': + resolution: {integrity: sha512-UC+ZhH3XtczQYfOlu3lNEkdW/p4dsJ1r/bP7H8+rhao3TTTMO1ATq/4DdIi23XuGoFY+Cz0JmCbdVl0hz9jZcA==} + + '@emnapi/runtime@1.11.0': + resolution: {integrity: sha512-55coeOFKHv1ywEcUXJtWU5f+Jr/W5tZDvZig8DLKSwUN1JpROQ4rk/SNOQiFWmaR/VKF4zuFyW1B8JduOSv6Pg==} + '@emnapi/runtime@1.11.3': resolution: {integrity: sha512-Xz4Tpyki7XyrpbUK1jR1AhdAdaXyhhY4lZ3neLodmhpuWfy2PAQN5B46sAiU4liOXGLkHypn/qU+jvfWSCYYLA==} + '@emnapi/runtime@1.9.2': + resolution: {integrity: sha512-3U4+MIWHImeyu1wnmVygh5WlgfYDtyf0k8AbLhMFxOipihf6nrWC4syIm/SwEeec0mNSafiiNnMJwbza/Is6Lw==} + + '@emnapi/wasi-threads@1.2.1': + resolution: {integrity: sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==} + + '@emnapi/wasi-threads@1.2.2': + resolution: {integrity: sha512-c95qOXkHdydNKhscBTebqEC1CVAZpyqOfVfBzQ1qgzyl3gfeldUjIggDbIZgDKsHLgnsM+igH7TJ/eAasaVuMA==} + '@envelop/core@5.5.1': resolution: {integrity: sha512-3DQg8sFskDo386TkL5j12jyRAdip/8yzK3x7YGbZBgobZ4aKXrvDU0GppU0SnmrpQnNaiTUsxBs9LKkwQ/eyvw==} engines: {node: '>=18.0.0'} @@ -2743,39 +2927,31 @@ packages: resolution: {integrity: sha512-cuadcxVFE8sDK6iWJbs8Sn0av2Nrh2QSGQhVlBW9AaAHqHwjWsZHT8LJ4hFGPh7ASBV2deFdM7H/DPjulmh8rg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + eslint: ^10.12.0 '@eslint-community/regexpp@4.12.2': resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - '@eslint/config-array@0.21.2': - resolution: {integrity: sha512-nJl2KGTlrf9GjLimgIru+V/mzgSK0ABCDQRvxw5BjURL7WfH5uoWmizbH7QB6MmnMBd8cIC9uceWnezL1VZWWw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/config-helpers@0.4.2': - resolution: {integrity: sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/config-array@0.23.5': + resolution: {integrity: sha512-Y3kKLvC1dvTOT+oGlqNQ1XLqK6D1HU2YXPc52NmAlJZbMMWDzGYXMiPRJ8TYD39muD/OTjlZmNJ4ib7dvSrMBA==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} - '@eslint/core@0.17.0': - resolution: {integrity: sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/config-helpers@0.7.0': + resolution: {integrity: sha512-DObd/KKUsU+FaFv4PLxSRenpXfQWmPXXP3pPZ6/K1PCrMu2vQpMDMuQe/BqYeoLcz8ro0bVDF1RxOJgfVEdhUw==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} - '@eslint/eslintrc@3.3.7': - resolution: {integrity: sha512-F42g89Qd5oAWtp0k0nnSrjziAKza7w8SVT4mStc18LZMaRb4J1HQAHLCalEtDCxrTuksx7NU9qsmeLwpOfPqWw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/core@1.2.1': + resolution: {integrity: sha512-MwcE1P+AZ4C6DWlpin/OmOA54mmIZ/+xZuJiQd4SyB29oAJjN30UW9wkKNptW2ctp4cEsvhlLY/CsQ1uoHDloQ==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} - '@eslint/js@9.39.5': - resolution: {integrity: sha512-QywQuszQh77pIXCsq998c8hbhSTI/azTty1Z6N53dmAudKHhy573j3yvRLsX2BSp8YpLtoCEG8E9DJe+8zUh4A==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/object-schema@3.0.5': + resolution: {integrity: sha512-vqTaUEgxzm+YDSdElad6PiRoX4t8VGDjCtt05zn4nU810UIx/uNEV7/lZJ6KwFThKZOzOxzXy48da+No7HZaMw==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} - '@eslint/object-schema@2.1.7': - resolution: {integrity: sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/plugin-kit@0.4.1': - resolution: {integrity: sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/plugin-kit@0.7.3': + resolution: {integrity: sha512-IkO+/KEUvwbVpiURZg+P7zF74z5Jxe0UgJxVni+RtoHQ6IZieXaO02kmadomap/q+l6bc/jdPGGqTjhuZnuz1Q==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} '@exodus/bytes@1.15.0': resolution: {integrity: sha512-UY0nlA+feH81UGSHv92sLEPLCeZFjXOuHhrIo0HQydScuQc8s0A7kL/UdgwgDq8g8ilksmuoF35YVTNphV2aBQ==} @@ -3181,6 +3357,15 @@ packages: resolution: {integrity: sha512-AokJm4tuBHillT+FpMtxQ60n8ObyXBatq7jD2/JA9dxbDDokKQm8KMht5ibGzLVU9IJDIKK4TPKgMHEYMn3lMg==} engines: {node: '>=18'} + '@joshwooding/vite-plugin-react-docgen-typescript@0.7.0': + resolution: {integrity: sha512-qvsTEwEFefhdirGOPnu9Wp6ChfIwy2dBCRuETU3uE+4cC+PFoxMSiiEhxk4lOluA34eARHA0OxqsEUYDqRMgeQ==} + peerDependencies: + typescript: '>= 4.3.x' + vite: 8.2.4 + peerDependenciesMeta: + typescript: + optional: true + '@jridgewell/gen-mapping@0.3.13': resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} @@ -3320,6 +3505,15 @@ packages: peerDependencies: tslib: '2' + '@keyv/bigmap@1.3.1': + resolution: {integrity: sha512-WbzE9sdmQtKy8vrNPa9BRnwZh5UF4s1KTmSK0KUVLo3eff5BlQNNWDnFOouNpKfPKDnms9xynJjsMYjMaT/aFQ==} + engines: {node: '>= 18'} + peerDependencies: + keyv: ^5.6.0 + + '@keyv/serialize@1.1.1': + resolution: {integrity: sha512-dXn3FZhPv0US+7dtJsIi2R+c7qWYiReoEh5zUntWCf4oSpMNib8FDhSoed6m3QyZdx5hK7iLFkYk3rNxwt8vTA==} + '@leichtgewicht/ip-codec@2.0.4': resolution: {integrity: sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==} @@ -3366,6 +3560,13 @@ packages: resolution: {integrity: sha512-K4scWxGhdQM0masHHy4gIQs2iGiLEXCrXttumknyPJqtdl4J179BjpibWSSQ1fxKdCcHgIlCTKXJU6cMM6D6Wg==} engines: {node: '>=12'} + '@napi-rs/wasm-runtime@1.2.4': + resolution: {integrity: sha512-AJxoUD2/15ESHbvpcyjU274nsAPLuOtPHCk0vKJM5pj//Fg/B1FXNWjPnXTT9PymCYYiHo4zPj0ZomXBKhoy7g==} + engines: {node: ^20.19.0 || ^22.13.0 || >=23.5.0} + peerDependencies: + '@emnapi/core': ^1.7.1 || ^2.0.0-alpha.4 + '@emnapi/runtime': ^1.7.1 || ^2.0.0-alpha.4 + '@next/env@15.5.28': resolution: {integrity: sha512-xxW5EBI8fMPuVTPBW7LL980IRbuDXlbkUAwp9DDhtb4Lnich3nJ13uYpvrX4VE74hWPf6AvHHAMmGCidcHjbfg==} @@ -3452,8 +3653,241 @@ packages: '@open-draft/until@2.1.0': resolution: {integrity: sha512-U69T3ItWHvLwGg5eJ0n3I62nWuE6ilHlmz7zM0npLBRvPRd7e6NYmg54vvRtP5mZG7kZqZCFVdsTWo7BPtBujg==} - '@oxc-project/types@0.154.0': - resolution: {integrity: sha512-KYOUGQFlLWR+s4QMV2Q9ko38TZm7EdO87Qm7rvZLqk/webse/cDjtyxKhg/47l0byCbs/k46LT8qc4PKjAikzA==} + '@oxc-parser/binding-android-arm-eabi@0.127.0': + resolution: {integrity: sha512-0LC7ye4hvqbIKxAzThzvswgHLFu2AURKzYLeSVvLdu2TBOYWQDmHnTqPLeA597BcUCxiLqLsS4CJ5uoI5WYWCQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [android] + + '@oxc-parser/binding-android-arm64@0.127.0': + resolution: {integrity: sha512-b5jtVTH6AU5CJXHNdj7Jj9IEiR9yVjjnwHzPJhGyHGPdcsZSzBCkS9GBbV33niRMvKthDwQRFRJfI4a+k4PvYg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [android] + + '@oxc-parser/binding-darwin-arm64@0.127.0': + resolution: {integrity: sha512-obCE8B7ISKkJidjlhv9xRGJPOSDG2Yu6PRga9Ruaz35uintHxbp1Ki/Yc71wx4rj3Edrm0a1kzG1TAwit0wFpg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [darwin] + + '@oxc-parser/binding-darwin-x64@0.127.0': + resolution: {integrity: sha512-JL6Xb5IwPQT8rUzlpsX7E+AgfcdNklXNPFp8pjCQQ5MQOQo5rtEB2ui+3Hgg9Sn7Y9Egj6YOLLiHhLpdAe12Aw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [darwin] + + '@oxc-parser/binding-freebsd-x64@0.127.0': + resolution: {integrity: sha512-SDQ/3MQFw58fqQz3Z1PhSKFF3JoCF4gmlNjziDm8X02tTahCw0qJbd7FGPDKw1i4VTBZene9JPyC3mHtSvi+wA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [freebsd] + + '@oxc-parser/binding-linux-arm-gnueabihf@0.127.0': + resolution: {integrity: sha512-Av+D1MIqzV0YMGPT9we2SIZaMKD7Cxs4CvXSx/yxaWHewZjYEjScpOf5igc8IILASViw4WTnjlwUdI1KzVtDHQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + + '@oxc-parser/binding-linux-arm-musleabihf@0.127.0': + resolution: {integrity: sha512-Cs2fdJ8cPpFdeebj6p4dag8A4+56hPvZ0AhQQzlaLswGz1tz7bXt1nETLeorrM9+AMcWFFkqxcXwDGfTVidY8g==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + + '@oxc-parser/binding-linux-arm64-gnu@0.127.0': + resolution: {integrity: sha512-qdOfTcT6SY8gsJrrV92uyEUyjqMGPpIB5JZUG6QN5dukYd+7/j0kX6MwK1DgQj39jtUYixxPiaRUiEN1+0CXgQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@oxc-parser/binding-linux-arm64-musl@0.127.0': + resolution: {integrity: sha512-EoTCZneNFU/P2qrpEM+RHmQwt+CvDkyGESG6qhr7KaegXLZwePfbrkCDfAk8/rhxbDUVGsZILX+2tqPzFtoFWA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@oxc-parser/binding-linux-ppc64-gnu@0.127.0': + resolution: {integrity: sha512-zALjmZYgxFLHjXeudcDF0xFGNydTAtkAeXAr2EuC17ywCyFxcmQra4w0BMde0Yi/re4Bi4iwEoEXtYN7l6eBLQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@oxc-parser/binding-linux-riscv64-gnu@0.127.0': + resolution: {integrity: sha512-fPP8M6zQLS7Jz7o9d5ArUSuAuSK3e+WCYVrCpdzeCOejidtZExJ9tjhDrAd3HEPqARBCPmdpqxESPFqy44vkBQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [riscv64] + os: [linux] + libc: [glibc] + + '@oxc-parser/binding-linux-riscv64-musl@0.127.0': + resolution: {integrity: sha512-7IcC4Ao02oGpfnjt+X/oF4U2mllo2qoSkw5xxiXNKL9MCTsTiAC6616beOuehdxGcnz1bRoPC1RQ2f1GQDdN+g==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [riscv64] + os: [linux] + libc: [musl] + + '@oxc-parser/binding-linux-s390x-gnu@0.127.0': + resolution: {integrity: sha512-pbXIhiNFHoqWeqDNLiJ9JkpHz1IM9k4DXa66x+1GTWMG7iLxtkXgE53iiuKSXwmk3zIYmaPVfBvgcAhS583K4Q==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@oxc-parser/binding-linux-x64-gnu@0.127.0': + resolution: {integrity: sha512-MYCguB9RvBvlSd6gbuNI7QwiLoCCAlGnlRJFPrzLI6U1/9wkC/WK6LtBAUln55H1Ctqw45PWmqrobKoMhsYQzQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@oxc-parser/binding-linux-x64-musl@0.127.0': + resolution: {integrity: sha512-5eY0B/bxf1xIUxb4NOTvOI3KWtBQfPWYyKAzgcrCt0mDibSZygVpO1Pz8bkeiSZ5Jj9+M09dkggG3H8I5d0Uyg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [musl] + + '@oxc-parser/binding-openharmony-arm64@0.127.0': + resolution: {integrity: sha512-Gld0ajrFTUXNtdw20fVBuTQx66FA75nIVg+//pPfR3sXkuABB4mTBhl3r9JNzrJpgW//qiwxf0nWXUWGJSL3UQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [openharmony] + + '@oxc-parser/binding-wasm32-wasi@0.127.0': + resolution: {integrity: sha512-T6KVD7rhLzFlwGRXMnxUFfkCZD8FHnb968wVXW1mXzgRFc5RNXOBY2mPPDZ77x5Ln76ltLMgtPg0cOkU1NSrEQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [wasm32] + + '@oxc-parser/binding-win32-arm64-msvc@0.127.0': + resolution: {integrity: sha512-Ujvw4X+LD1CCGULcsQcvb4YNVoBGqt+JHgNNzGGaCImELiZLk477ifUH53gIbE7EKd933NdTi25JWEr9K2HwXw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [win32] + + '@oxc-parser/binding-win32-ia32-msvc@0.127.0': + resolution: {integrity: sha512-0cwxKO7KHQQQfo4Uf4B2SQrhgm+cJaP9OvFFhx52Tkg4bezsacu83GB2/In5bC415Ueeym+kXdnge/57rbSfTw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ia32] + os: [win32] + + '@oxc-parser/binding-win32-x64-msvc@0.127.0': + resolution: {integrity: sha512-rOrnSQSCbhI2kowr9XxE7m9a8oQXnBHjnS6j95LxxAnEZ0+Fz20WlRXG4ondQb+ejjt2KOsa65sE6++L6kUd+w==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [win32] + + '@oxc-project/types@0.127.0': + resolution: {integrity: sha512-aIYXQBo4lCbO4z0R3FHeucQHpF46l2LbMdxRvqvuRuW2OxdnSkcng5B8+K12spgLDj93rtN3+J2Vac/TIO+ciQ==} + + '@oxc-project/types@0.149.0': + resolution: {integrity: sha512-Efcc+iF0j3Bf67YjEqIqWXbX5XddXoK/Mw4K1/JuXwRCZ8N16VR7iT23nlCc9XrveFVh/E5Rqs2StT0V8v9LdA==} + + '@oxc-resolver/binding-android-arm-eabi@11.21.2': + resolution: {integrity: sha512-xQoCRv+gKax9KTdwdaQNnAFOai8neay7g3jExDIORzhbrejwGSJaZNTdOJHR5ziLg2joMxOCMOFMo4zuxza2uQ==} + cpu: [arm] + os: [android] + + '@oxc-resolver/binding-android-arm64@11.21.2': + resolution: {integrity: sha512-HF5oiE2L05yInPYCFD/4uxSrEZW4SuIfn99Y6L1xnJnzl066JR+MJs2rIdstw8A2MPlAKH+13dpFPNycjqzvGg==} + cpu: [arm64] + os: [android] + + '@oxc-resolver/binding-darwin-arm64@11.21.2': + resolution: {integrity: sha512-UX4u49CVCAD8QZNELaW8eMGgMAGwFWYEPbvNsh+3r/gs4NX3KfpiACMVwRQT0EuH3uat9hM5Zl+Ppm9pJD8tgg==} + cpu: [arm64] + os: [darwin] + + '@oxc-resolver/binding-darwin-x64@11.21.2': + resolution: {integrity: sha512-J9xPx7YBkrRmJ+xl561ztnMWEc1aOyjEIxBiGX1dVb3u7bGSnfObfcZk+Pd+uM0HZAPNsQ1xvD8j52A/uOSqNQ==} + cpu: [x64] + os: [darwin] + + '@oxc-resolver/binding-freebsd-x64@11.21.2': + resolution: {integrity: sha512-fRlt7OvSaQkWj6+EDTVxawVxOlqJB2QSnBfkeCyK4RTvsGctbw3BiH2Tb7DzMs7bikc4BRBpvWP5zF9K8b54Zg==} + cpu: [x64] + os: [freebsd] + + '@oxc-resolver/binding-linux-arm-gnueabihf@11.21.2': + resolution: {integrity: sha512-gK+vPUcPQITkGwBKpZGrcDHSlU6eDGl7AQacxS2CEKAZIBHWkOVFeJwLZ4tYnA1acJqRM5lt7yYwPCVqGHIJ7A==} + cpu: [arm] + os: [linux] + + '@oxc-resolver/binding-linux-arm-musleabihf@11.21.2': + resolution: {integrity: sha512-L/Rgas7SrOKy/z7IH+HxSFRqVO4PuLDKLEGKvnhoCBBq3UJ0YzGBou3qMzaAGgkJwsIvX2pBF+7ojzfUhLiZxQ==} + cpu: [arm] + os: [linux] + + '@oxc-resolver/binding-linux-arm64-gnu@11.21.2': + resolution: {integrity: sha512-CUEYvlX1Fk7E9kUMzuswru1J9HLxMwnpDeQGjQuI4ZH+iNCoa2X9T+pvyzrbsgl7WnIeTFTlNlHsRfVdf5g9/g==} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@oxc-resolver/binding-linux-arm64-musl@11.21.2': + resolution: {integrity: sha512-ViN1ZibQyxwC67GpoP33oo+S9UyUnkog13vzQb9+v9bCNvrVzJuk0MRdacjtv/9xfRMVF/eqHFyl8YOeykI10Q==} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@oxc-resolver/binding-linux-ppc64-gnu@11.21.2': + resolution: {integrity: sha512-CU1sCqWnhGqYD5I1HedHk5pujrn7ssDkNB/AEQd/pd3D/EojVSgJUlpbafwIbyhia3PgIfkvdFpRPWSALzVumA==} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@oxc-resolver/binding-linux-riscv64-gnu@11.21.2': + resolution: {integrity: sha512-jWVyZtIHca4Gb96x7dag+y69vlei7ffjrsveLkmf2ZhqEAz6ZSBnY1GWvgZUaZlwZP62A3xD092BW97Q5VGc+g==} + cpu: [riscv64] + os: [linux] + libc: [glibc] + + '@oxc-resolver/binding-linux-riscv64-musl@11.21.2': + resolution: {integrity: sha512-LF29obFqNgBUgDX7rmUK7M4D0JQG5LxhYzn3xXmECcHU9aQAdWG7NiY052qybtesEdwHQXKNTWYQ7mTsybNvWg==} + cpu: [riscv64] + os: [linux] + libc: [musl] + + '@oxc-resolver/binding-linux-s390x-gnu@11.21.2': + resolution: {integrity: sha512-+NYcm+cCHBbtdQQ3A4phQTSuVRYnNHz7wrl9XRAPEovcdoqi0mb1K5ZOl+jN54ZD+q1zz3V0vltbFJmzecJKmw==} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@oxc-resolver/binding-linux-x64-gnu@11.21.2': + resolution: {integrity: sha512-UQqZDdG2r2HhAOsZEgufkIWHPQ886IUyuJQkoZByvzhW8j51R4UNzGBJFkTiTnLhQnggwJRdJgFWK4uY6ZVIMw==} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@oxc-resolver/binding-linux-x64-musl@11.21.2': + resolution: {integrity: sha512-3Q9PMRjalWkT6NZ4jfujuqTCFwoWErg3y3BnOgb544B8IMw4PktiwWOigMfOHNRLMghZeJ7hpfpZf4CP7rV7Og==} + cpu: [x64] + os: [linux] + libc: [musl] + + '@oxc-resolver/binding-openharmony-arm64@11.21.2': + resolution: {integrity: sha512-Eljeq3ndtyKhM+Es8LITi4Zl2htzuRZcrPMF3kMCsrILztvU6AjZ3FuEhHHKobPUB9rMpzLpJP5bDqXI7r+iog==} + cpu: [arm64] + os: [openharmony] + + '@oxc-resolver/binding-wasm32-wasi@11.21.2': + resolution: {integrity: sha512-HGDbNsIywqc4LxU38+CTJNnB/6BF7rheWOJ259b4eE0aEnelYblC8x+1tEd63bp31fYne63RQz9Jb4yVnC7Yig==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + + '@oxc-resolver/binding-win32-arm64-msvc@11.21.2': + resolution: {integrity: sha512-iWx25CBEgH49iE9q5coEGI/jb1jl5kkCY9z6U5Og67xCkQ/WFMDc2J5U78+AE91SUxM2NqSLhJC8/PLfWnImww==} + cpu: [arm64] + os: [win32] + + '@oxc-resolver/binding-win32-x64-msvc@11.21.2': + resolution: {integrity: sha512-VPoCAhKvCQTlG7vxqaBXcmuvbh77BfnGXj8g0pbvVXpm1F/R8rDVwqIWcEbMzrI1JvJlm8v7T9uMVQb6UctMRg==} + cpu: [x64] + os: [win32] '@oxfmt/binding-android-arm-eabi@0.67.0': resolution: {integrity: sha512-2olh3ioEmc4gRzQm7jxyB1b/PFBoFvTq8KdgYySeNpysDtA6DEg2Mvya4/I6flhL7G0eOrE8RD7JCNCIMhE16Q==} @@ -4188,98 +4622,98 @@ packages: '@repeaterjs/repeater@3.0.6': resolution: {integrity: sha512-Javneu5lsuhwNCryN+pXH93VPQ8g0dBX7wItHFgYiwQmzE1sVdg5tWHiOgHywzL2W21XQopa7IwIEnNbmeUJYA==} - '@rolldown/binding-android-arm-eabi@1.2.14': - resolution: {integrity: sha512-aWR+XKH9+rW7m5fWq/5360J3mHycrx/o6xZM2DQFdJnTMdyP7/WzxPjhtLbVWdKo2y612/4U1bWqb3HQhiF7vg==} + '@rolldown/binding-android-arm-eabi@1.2.8': + resolution: {integrity: sha512-tN5aztYkKCte4i5SIrrz5yK/HMjEuCqCSCJa418jOV8tZ1cBY3YF2otxB1ktPxzsLA1BeTqwapK0bfjxNvHJVw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [android] - '@rolldown/binding-android-arm64@1.2.14': - resolution: {integrity: sha512-QiVxHofl6A8lQU7WAtOUY4QMVZXohxwz7WJJoeh8NBEUyKfIkMRKhYyq8az/1RypNiIXzNTtiS6KwHz0erxYRQ==} + '@rolldown/binding-android-arm64@1.2.8': + resolution: {integrity: sha512-dIYTWl9XprMUiQFoc55KUyk/oS8SKYH3zFl0LTR7RT0Xj4hgSVyuJcroH8JUu8RcpF8fTB6E0aOwCkZoYPcDSQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] - '@rolldown/binding-darwin-arm64@1.2.14': - resolution: {integrity: sha512-lTQOzHuBIooh3jIr5XINQkjPGEuGy+Dsy0meXDr6Sjty0b99kYgGh4uBC/8mJX1T0kC8d6S0aPP1Y+bHkh6aBw==} + '@rolldown/binding-darwin-arm64@1.2.8': + resolution: {integrity: sha512-PCSDQGXD2IyTEFrcgPyBM8jJuGmrbCMuoIOXdbEGVemruKACXoLQJrb+A45Z0L5t1RQkdfJprAYPkikbh7dzdA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] - '@rolldown/binding-darwin-x64@1.2.14': - resolution: {integrity: sha512-hyMKEGatjmBYCs/Q4sbIcL/GqpFEqsX3wc+HYVQ/85A4rxc1o7rPm4DUI4GV4k/h0ITddwFSGpqQunI14GXjTA==} + '@rolldown/binding-darwin-x64@1.2.8': + resolution: {integrity: sha512-Uk7lRsGhPFHVX/sAUC6D5H9Ol30dFHd6iquokll2th3LpdJ3F5CzQB+7DHn0Ri2mG+U7k2zXiPHDrwZenXhwSA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] - '@rolldown/binding-freebsd-x64@1.2.14': - resolution: {integrity: sha512-u371GbXoVXrEgP20PwzoGNOdAOqAMhzo19JzzY+V4YmmnC+DTOoqdbMu+O+54emM59Mik/UdrtWgcuEDKWRPKA==} + '@rolldown/binding-freebsd-x64@1.2.8': + resolution: {integrity: sha512-DjszaTEVogPqA5bYzsEeqDCQxbcp2fexQwKcRspYji2yzR68fCf+e4fx6kBSRDwX5/brZaHw/hWS9+A/+/w9sQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] - '@rolldown/binding-linux-arm-gnueabihf@1.2.14': - resolution: {integrity: sha512-BqwKsdZQf6EqVWr8fv2MrDYzAvOZ7+NYFSJESRGs87fkseEhs0TU9TXgRJTkZoRRkxTizyEg1LKUXfU3/78uqg==} + '@rolldown/binding-linux-arm-gnueabihf@1.2.8': + resolution: {integrity: sha512-zmwa7FTmdzB6aaEEuuls18H6Ap5JmJPSoPTuXixeJZV6tG40SyLkApQtz1g8ptZtiEKqj9OM0oNLPh1AgvE31Q==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@rolldown/binding-linux-arm64-gnu@1.2.14': - resolution: {integrity: sha512-SD9kY8M009x/7s57Z1dgUVlP5+uYBgKQK0Tkr1WIWngrtUJmRCW1RJFMY7QDla2khXhmg2i5Io7MUjcmZNZ/KQ==} + '@rolldown/binding-linux-arm64-gnu@1.2.8': + resolution: {integrity: sha512-KdYQDPHwJVnbFwdTGMgxsI9SqblBlz6STGM+w1We/d5B8OWWidYH0MwkU/uA1wM5fIpO2MkOVxXrNzzuZhw9ew==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-arm64-musl@1.2.14': - resolution: {integrity: sha512-BJ2CL19M6uuWesMgnqJzgxoI+N+eV7b0A9O9vLV42y+gitC41fNa8KElau1tHVzuLWX5GzEuxMPhAO0tQXQMkg==} + '@rolldown/binding-linux-arm64-musl@1.2.8': + resolution: {integrity: sha512-jFJTifHnNPY+yzOoNZQfSIysrVyXzEQPhPnOUjmD1bcQGHH6s7c8cViKWar8YplQImE5N9JRqMCLrM2CdxOrZA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [musl] - '@rolldown/binding-linux-ppc64-gnu@1.2.14': - resolution: {integrity: sha512-4+Kl8daPV8NDHaD7mfCcc1pRM+Qg7ab8DyMm5FG5WoZgv4h2i3KFN1CybYBNbQqmuYm7ftJLvmMI1eHYJ22S/Q==} + '@rolldown/binding-linux-ppc64-gnu@1.2.8': + resolution: {integrity: sha512-FhiOziBDWPBjbcmRzfLyIJnaP7AVMFXT7YCXPjXxj7wKU3vx24RjrCNN/zjvVa+N2vVoHJwCoUBvsrN/DG3zIA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ppc64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-s390x-gnu@1.2.14': - resolution: {integrity: sha512-V/h8ePq1fKDrmtFMz6xcCN3DKvuvMRrwwD1q0PkBeeo4DpK64biaKvqWGVxqCeYKqeRk7gE7/iKPxLCn08O97A==} + '@rolldown/binding-linux-s390x-gnu@1.2.8': + resolution: {integrity: sha512-WnHfADMzOV2Y55wlx1hzzQnar/wDt/VdvWSD99r18Mz9ylNieIGOkRx3UV21h7m/eJvjySYJkO26VvGNFkwsIQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [s390x] os: [linux] libc: [glibc] - '@rolldown/binding-linux-x64-gnu@1.2.14': - resolution: {integrity: sha512-WxalXzgrLVpKC93xfpaJ3gCXUWzeCr+FRCbDVD2mUAy4L6Vo3lNVz0epUEUpxPWJkLNYUwM4OSIikv36OJ9mLg==} + '@rolldown/binding-linux-x64-gnu@1.2.8': + resolution: {integrity: sha512-H9tRr5ibfXFVLxbPOseVewewFpl28zcEdjRDt2FTUZU7odxP0gEv1ki4/kGmcGOh78oRwZuuQllGLZ9zTJp84g==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-x64-musl@1.2.14': - resolution: {integrity: sha512-3G3tnAmTpdk9jO3GQtyHXqeFD2SlecfTws/Y3M2mmj9nMBwwuLT4kur8sZKeu7ENUHSpVO3cIsm5A52LEWWwlg==} + '@rolldown/binding-linux-x64-musl@1.2.8': + resolution: {integrity: sha512-UefiqfM3D6IVNlZ8tSGs9+Ejjud2T+oxO0IHADU45Y+lyEjD2dVFyZHbkfX0LUb5Zugo/oIv1eCO/KVYhgYJYA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [musl] - '@rolldown/binding-openharmony-arm64@1.2.14': - resolution: {integrity: sha512-qyr5XiNGxm2ytx17vvtcJ9nXn6v1gENETi503bJx3OGwZ1tSonj7BosxbMa/xeAfSl5iS9X6KjEWYXLu6v1L7Q==} + '@rolldown/binding-openharmony-arm64@1.2.8': + resolution: {integrity: sha512-637Ke4kWSy6rp9cxQ9gMOXlxPgIw/c1beASV4M//3+9I4uwBVOOl74G+e3zyU3u19U7RkRl/HuewixZ/Z6+Rjg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] - '@rolldown/binding-win32-arm64-msvc@1.2.14': - resolution: {integrity: sha512-oA4o5o0S2yB199YyYXDzKUv1Z56Rc+mgOjwm7Z/vJ9Z8igiDPYvoOuDyo6g7AK/ZaF09nPhDKVnGBcYHO11GXA==} + '@rolldown/binding-win32-arm64-msvc@1.2.8': + resolution: {integrity: sha512-xWBkPOF1Q9k/Gv1nQXnVdLxKu74jXppuOM4Z3mnypVUJJJwLsMl7hNJGRAUJoG8A5MgOI1ACKM+wBFxSJzKy4A==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] - '@rolldown/binding-win32-x64-msvc@1.2.14': - resolution: {integrity: sha512-9mE94bf2GZUaR/fUSXCMpBoWkctu421Mi0ORpm4zqfbkjKep7RxzPFa5etcGs5h+2KApoWBOA/hAJa/7saGgEQ==} + '@rolldown/binding-win32-x64-msvc@1.2.8': + resolution: {integrity: sha512-uz2ZvfgXbxqNwijjjbxrnvALwpyODDcgc1T1N8N3rf/DXKQmaFwmB4LX4yyjggpwN2obdQLb2rgirX5ffCWYng==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] @@ -4541,23 +4975,100 @@ packages: '@sideway/formula@3.0.1': resolution: {integrity: sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==} - '@sideway/pinpoint@2.0.0': - resolution: {integrity: sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==} + '@sideway/pinpoint@2.0.0': + resolution: {integrity: sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==} + + '@sindresorhus/is@4.6.0': + resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==} + engines: {node: '>=10'} + + '@sindresorhus/merge-streams@2.3.0': + resolution: {integrity: sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==} + engines: {node: '>=18'} + + '@sindresorhus/merge-streams@4.0.0': + resolution: {integrity: sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==} + engines: {node: '>=18'} + + '@storybook/addon-a11y@10.6.0': + resolution: {integrity: sha512-Z/CZor/F8H74/+IoeLroEQXQoVxvmjVtUgATJ95KPBolHxMaHLXLsYU0wosIiiORxmfRCnpen5pQl1n4+pBWQw==} + peerDependencies: + storybook: ^10.6.0 + + '@storybook/addon-vitest@10.6.1': + resolution: {integrity: sha512-ZGB7kDd9o0UiXIIXLZMKK9ruNyqo2jEBT+2YjlpKGDtJR6iAEhfWyiPY8JkobCV5Fge0oBqyg1x9am4wv/vp5w==} + peerDependencies: + '@vitest/browser': ^3.0.0 || ^4.0.0 || ^5.0.0 + '@vitest/browser-playwright': ^4.0.0 || ^5.0.0 + '@vitest/runner': ^3.0.0 || ^4.0.0 || ^5.0.0 + storybook: ^10.6.1 + vitest: ^3.0.0 || ^4.0.0 || ^5.0.0 + peerDependenciesMeta: + '@vitest/browser': + optional: true + '@vitest/browser-playwright': + optional: true + '@vitest/runner': + optional: true + vitest: + optional: true + + '@storybook/builder-vite@10.6.0': + resolution: {integrity: sha512-7zt8tYB6dnSO8fbjUz91MHexGDpf9HrLlA3FAmlVb+2ZL3eWUs499L3I6BDUymcWu7oW5WCBJlB8ERj8ZLLzig==} + peerDependencies: + storybook: ^10.6.0 + vite: 8.2.4 + + '@storybook/global@5.0.0': + resolution: {integrity: sha512-FcOqPAXACP0I3oJ/ws6/rrPT9WGhu915Cg8D02a9YxLo0DE9zI+a9A5gRGvmQ09fiWPukqI8ZAEoQEdWUKMQdQ==} - '@sindresorhus/is@4.6.0': - resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==} - engines: {node: '>=10'} + '@storybook/icons@2.1.0': + resolution: {integrity: sha512-Fxh9vYpX9bQqFeHRiY8h2ApeRGDzRSMLwJwNZ/AIRqnyOKHxRKL+yFe+ctEkVJmuptRE9u1Hrn8ZZNHyfDKKNg==} + peerDependencies: + react: 19.2.7 - '@sindresorhus/merge-streams@2.3.0': - resolution: {integrity: sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==} - engines: {node: '>=18'} + '@storybook/react-dom-shim@10.6.0': + resolution: {integrity: sha512-ZE0l4xL6d00rKFeJhRDuh0t3r+/2ffhx47lIyaSWrTD5kuM3nDjKDxCIWwX4E3gLV+oNX8E1prXRMuEWJUJwJg==} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + '@types/react-dom': ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react: 19.2.7 + react-dom: 19.2.7 + storybook: ^10.6.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true - '@sindresorhus/merge-streams@4.0.0': - resolution: {integrity: sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==} - engines: {node: '>=18'} + '@storybook/react-vite@10.6.0': + resolution: {integrity: sha512-nc1dqnmjGOcDJvPCkAn4Hmu1gi7dNHHoibNmlBp0d1adosejELZxuNjHBkPl/KxZjbzP3jljQHnHB/guxd8e2g==} + peerDependencies: + react: 19.2.7 + react-dom: 19.2.7 + storybook: ^10.6.0 + typescript: '>= 4.9.x' + vite: 8.2.4 + peerDependenciesMeta: + typescript: + optional: true - '@standard-schema/spec@1.1.0': - resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==} + '@storybook/react@10.6.0': + resolution: {integrity: sha512-0xfYYPRHcr5ta1hmXJCSezH4JGuUHJ+xVF9f1j+Y/MWEMOQE4wnaKWKsk/HLrDjZkT5hKfvmogt9b0yduP6zEQ==} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + '@types/react-dom': ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react: 19.2.7 + react-dom: 19.2.7 + storybook: ^10.6.0 + typescript: '>= 4.9.x' + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + typescript: + optional: true '@surma/rollup-plugin-off-main-thread@2.2.3': resolution: {integrity: sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ==} @@ -4638,8 +5149,8 @@ packages: '@swc/helpers@0.5.15': resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==} - '@swc/helpers@0.5.23': - resolution: {integrity: sha512-5lSsMOTXURePglDfvuAQUqkGek9Hg2kksOYay2m0+XR++b2NWYL/4sWyuvVBIs8oKnJaxkdi9whaL/sqN13afw==} + '@swc/helpers@0.5.17': + resolution: {integrity: sha512-5IKx/Y13RsYd+sauPb2x+U/xZikHjolzfuDgTAl/Tdf3Q8rslRvC19NKDLgAJQ6wsqADk10ntlv08nPFw/gO/A==} '@szmarczak/http-timer@4.0.6': resolution: {integrity: sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==} @@ -4654,10 +5165,14 @@ packages: '@tanstack/virtual-core@3.13.6': resolution: {integrity: sha512-cnQUeWnhNP8tJ4WsGcYiX24Gjkc9ALstLbHcBj1t3E7EimN6n6kHH+DPV4PpDnuw00NApQp+ViojMj1GRdwYQg==} - '@testing-library/dom@10.4.0': - resolution: {integrity: sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==} + '@testing-library/dom@10.4.1': + resolution: {integrity: sha512-o4PXJQidqJl82ckFaXUeoAW+XysPLauYI43Abki5hABd853iMhitooc6znOnczgbTYmEP6U6/y1ZyKAIsvMKGg==} engines: {node: '>=18'} + '@testing-library/jest-dom@6.9.1': + resolution: {integrity: sha512-zIcONa+hVtVSSep9UT3jZ5rizo2BsxgyDYU7WFD5eICBE7no3881HGeb/QkGfsJs6JTkY1aQhT7rIPC7e+0nnA==} + engines: {node: '>=14', npm: '>=6', yarn: '>=1'} + '@testing-library/jest-dom@7.0.1': resolution: {integrity: sha512-oMDTC3oA+6CXSO2JZnvOI7CA6oVub6kij5ggk9ohwye5slmkwxYDXcPOVxgMw/RQlticjtO0C1RZkR97HgrWMw==} engines: {node: '>=22', npm: '>=6', yarn: '>=1'} @@ -4683,6 +5198,12 @@ packages: '@types/react-dom': optional: true + '@testing-library/user-event@14.6.7': + resolution: {integrity: sha512-MPCpX8bxe8zS+JmmTwLp8jd0dy1rAm60Te/SL8JrQM3qvQJcBOs1d7IefJMyZzqM3EWBrDn/LWDt1BCGu4ASfg==} + engines: {node: '>=12', npm: '>=6'} + peerDependencies: + '@testing-library/dom': '>=7.21.4' + '@textlint/ast-node-types@15.8.0': resolution: {integrity: sha512-5CiH9COYmovWmExQgs7763DzX6Gy9zjkjJ7JxCC95wyTcjwQn/8poNF6fv3qzRlmx8CRRde8DHr9FcgAAiPzgw==} @@ -4729,6 +5250,9 @@ packages: cpu: [arm64] os: [win32] + '@tybys/wasm-util@0.10.3': + resolution: {integrity: sha512-F3fo1MYrRJYL3zER0OUOmkutjr1Vp23m7OsSgp7nq4SP6OqX6C/56XFIPAl5bt3zaBRjmW7SGz3u/6LwFpYcOg==} + '@types/argparse@1.0.38': resolution: {integrity: sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA==} @@ -4744,8 +5268,8 @@ packages: '@types/babel__template@7.4.0': resolution: {integrity: sha512-NTPErx4/FiPCGScH7foPyr+/1Dkzkni+rHiYHHoTjvwou7AQzJkNeD60A9CXRy+ZEN2B1bggmkTMCDb+Mv5k+A==} - '@types/babel__traverse@7.20.1': - resolution: {integrity: sha512-MitHFXnhtgwsGZWtT68URpOvLN4EREih1u3QtQiN4VdAxWKRVvGCSvw/Qth0M0Qq3pJpnGOu5JaM/ydK7OGbqg==} + '@types/babel__traverse@7.28.0': + resolution: {integrity: sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==} '@types/benchmark@2.1.5': resolution: {integrity: sha512-cKio2eFB3v7qmKcvIHLUMw/dIx/8bhWPuzpzRT4unCPRTD8VdA9Zb0afxpcxOqR4PixRS7yT42FqGS8BYL8g1w==} @@ -4783,9 +5307,8 @@ packages: '@types/deep-eql@4.0.2': resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} - '@types/dotenv@8.2.0': - resolution: {integrity: sha512-ylSC9GhfRH7m1EUXBXofhgx4lUWmFeQDINW5oLuS+gxWdfUeW4zJdeVTYVkexEW+e2VUvlZR2kGnGGipAWR7kw==} - deprecated: This is a stub types definition. dotenv provides its own type definitions, so you do not need this installed. + '@types/doctrine@0.0.9': + resolution: {integrity: sha512-eOIHzCUSH7SMfonMG1LsC2f8vxBFtho6NGBznK41R84YzPuvSBzrhEps33IsQiOW9+VL6NQ9DbjQJznk/S4uRA==} '@types/eslint-scope@3.7.7': resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} @@ -4793,6 +5316,9 @@ packages: '@types/eslint@8.21.1': resolution: {integrity: sha512-rc9K8ZpVjNcLs8Fp0dkozd5Pt2Apk1glO4Vgz8ix1u6yFByxfqo5Yavpy65o+93TAe24jr7v+eSBtFLvOQtCRQ==} + '@types/esrecurse@4.3.1': + resolution: {integrity: sha512-xJBAbDifo5hpffDBuHl0Y8ywswbiAp/Wi7Y/GtAgSlZyIABppyurxVueOPE8LUQOxdlgi6Zqce7uoEpqNTeiUw==} + '@types/estree@0.0.39': resolution: {integrity: sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==} @@ -4948,52 +5474,131 @@ packages: '@types/yargs@16.0.5': resolution: {integrity: sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==} - '@typescript/native-preview-darwin-arm64@7.0.0-dev.20260707.2': - resolution: {integrity: sha512-wny2pgKjGbiZtnOIHVa3tXC1UfDqxNEFzyPGmiqybedG8hipG2Nfp0l5UxbaKCjkLacUpH/W5bP2hBOMVhCOzg==} + '@typescript/typescript-aix-ppc64@7.1.0-beta': + resolution: {integrity: sha512-DXDG+jIWxBHGdoO70tcHON33rCnSzsEZj9P13oyf/r/KEGIo6awsdSNVNjAw0uMwEpqRu75IrgCcW58YcVkZHg==} + engines: {node: '>=16.20.0'} + cpu: [ppc64] + os: [aix] + + '@typescript/typescript-android-arm64@7.1.0-beta': + resolution: {integrity: sha512-UZx6PxoQavuvaVTrSf3aw0Oy/J/uJpRylipA0kzc038jMvZXh0UtE8vnQp20FqtdgD5bhXZ0aJrRJyoTSUO58Q==} + engines: {node: '>=16.20.0'} + cpu: [arm64] + os: [android] + + '@typescript/typescript-darwin-arm64@7.1.0-beta': + resolution: {integrity: sha512-q7mxblcyX0E7hXsY4k+Q6KWKK5mGmfVq+BDesdTgRVgjodk27aIxER77Zyj9+TgSTlCje8F7+JM6f6hl2BuNdw==} engines: {node: '>=16.20.0'} cpu: [arm64] os: [darwin] - '@typescript/native-preview-darwin-x64@7.0.0-dev.20260707.2': - resolution: {integrity: sha512-Afc7M5zOwo+GpfcYwz5Z8HMB2tPVsui7nNIqEuuFB73MPdVqNn/Wmpe4tP4MRri0AtJnJknoHBaTJ/VDAp/Jhw==} + '@typescript/typescript-darwin-x64@7.1.0-beta': + resolution: {integrity: sha512-D5EYqG5Wm/guw9+0j8+Mn1Jbr/gfS/VtFTuoH8PJtFbcqeDaQGMulc7SW8q51QG6Y3wGOGX3nbsTOw6fIKWWAA==} engines: {node: '>=16.20.0'} cpu: [x64] os: [darwin] - '@typescript/native-preview-linux-arm64@7.0.0-dev.20260707.2': - resolution: {integrity: sha512-iITBa2WjjTI5N9t5l7Z4KoOSI+2zBlhbvFzsD/f8qX8QoKjz/Y4DPyBDgezYi8nkqjjksbgSOJ3/ykzhwrB9cg==} + '@typescript/typescript-freebsd-arm64@7.1.0-beta': + resolution: {integrity: sha512-9A0XX0tcnH9qPdolSKKzSjTb93dlB0UEcAJbHYEsrFX2fkFNSum9+dvkQQJ9vLc+7vxHetDPujq9Qe6wx+Xhow==} + engines: {node: '>=16.20.0'} + cpu: [arm64] + os: [freebsd] + + '@typescript/typescript-freebsd-x64@7.1.0-beta': + resolution: {integrity: sha512-EDf/dBHfY0TxX3NmUTek0hbffeyZlh3+ls6WQW3ICB8vYxwYLFnzg7wkgEUvl9eRlpiJ/nmc2S8arPMzINJ7rg==} + engines: {node: '>=16.20.0'} + cpu: [x64] + os: [freebsd] + + '@typescript/typescript-linux-arm64@7.1.0-beta': + resolution: {integrity: sha512-hNqQBgQ5b5oGqN76QqbAU6CwYhJZ6iOcWc2kPTUs2OentgpxZktETziH6KIyRFJPaiBncognwn2ZLu3DNhHiWw==} engines: {node: '>=16.20.0'} cpu: [arm64] os: [linux] - '@typescript/native-preview-linux-arm@7.0.0-dev.20260707.2': - resolution: {integrity: sha512-hJm/UOqZTr9FHmR7uNm8VGX4oKtfWk0Jem0zPeJFNC8ckGUfSBueyiEYMZB+XmRc1aG4x1E46y3CplP4CLHvGQ==} + '@typescript/typescript-linux-arm@7.1.0-beta': + resolution: {integrity: sha512-AvN9HmzOQh46G4312ooSgMHhbB7DtnLwg8D9mo324X49B7weMwtJrBG1MxT9IyI8kzDd7YRtW+1hWGun7WG7Qw==} engines: {node: '>=16.20.0'} cpu: [arm] os: [linux] - '@typescript/native-preview-linux-x64@7.0.0-dev.20260707.2': - resolution: {integrity: sha512-du0dzi6y97Po5vDNdPJTyyijHCpaS22JLRnKZEJXBDaO9gCIymOv/5QQokFRuOlQm0bWl3i9PF4OVdGP6uAOQA==} + '@typescript/typescript-linux-loong64@7.1.0-beta': + resolution: {integrity: sha512-xbUustlBrFflt2pNEyG5ye+d4WGPc/rfr2xK29MXeobPSw297JqwuKRrvbKM5o3fE/eUM/c+urVm6jQ3IaMVTw==} + engines: {node: '>=16.20.0'} + cpu: [loong64] + os: [linux] + + '@typescript/typescript-linux-mips64el@7.1.0-beta': + resolution: {integrity: sha512-fS4/G7/0bXZ3NSq3nBMAXyg65I3tO4S7j08VNQ2g1aNC/qq79gE7Qne1BNjVsjMFfHBVBFjQYoTQCjmVU2iFlg==} + engines: {node: '>=16.20.0'} + cpu: [mips64el] + os: [linux] + + '@typescript/typescript-linux-ppc64@7.1.0-beta': + resolution: {integrity: sha512-0upCCxYPX8X6gOwkvfv+Ee7/ufyy7k97mTrGE0e5BxLlnUEa+w+rtgnv2dsKcxFdwdeZYVlZKCqgN/xCBV08+A==} + engines: {node: '>=16.20.0'} + cpu: [ppc64] + os: [linux] + + '@typescript/typescript-linux-riscv64@7.1.0-beta': + resolution: {integrity: sha512-0jKU9YRgOPRgiy5V/UWv37kB53PaTpIbwGCbbOMUPPAkrjVRNOIAJaz7Wa7s3H7mdDebX1LopUEPEJR+7Xa7zg==} + engines: {node: '>=16.20.0'} + cpu: [riscv64] + os: [linux] + + '@typescript/typescript-linux-s390x@7.1.0-beta': + resolution: {integrity: sha512-j+d04s2kxaPQh6DLPb01sknAQfzsrdSZy15jBRHyLEZoaaQ19dVjbFRlkNVvYwUG7ZdP8+y5b/7RmPxdtHUKdQ==} + engines: {node: '>=16.20.0'} + cpu: [s390x] + os: [linux] + + '@typescript/typescript-linux-x64@7.1.0-beta': + resolution: {integrity: sha512-kcD51ihf+pnI5KT4uQQYG04OpwznaZYBlIQhDhl8fflFd27NktxXsUeguxZyvUMyWfum7IF2bBS6Jv7ox0AgFQ==} engines: {node: '>=16.20.0'} cpu: [x64] os: [linux] - '@typescript/native-preview-win32-arm64@7.0.0-dev.20260707.2': - resolution: {integrity: sha512-SsAwfhyHJ1akgBc+99z4+hwdbHsdWaKB8EwCNIMA6JfSLMeUjffrYvxu+vfMyxVtOVOz7RrRXRoiDiu4a2sCtg==} + '@typescript/typescript-netbsd-arm64@7.1.0-beta': + resolution: {integrity: sha512-8W85YyoGK+rgGoSU9jJQUpELbrKcZcbdJk2jPNQ6UKDKI7ryPlPFTrV2jCE5RQuv4Tt96hMDTc33s4YfRrLFBA==} engines: {node: '>=16.20.0'} cpu: [arm64] - os: [win32] + os: [netbsd] + + '@typescript/typescript-netbsd-x64@7.1.0-beta': + resolution: {integrity: sha512-iGsTE0ve2PG0AcyZinwAR0LnGEZhu/y4dceS0hZsYCaKdYETvQtvtlNWlmYKempsBr6C7Il7dMXHVk+VFm9u0g==} + engines: {node: '>=16.20.0'} + cpu: [x64] + os: [netbsd] + + '@typescript/typescript-openbsd-arm64@7.1.0-beta': + resolution: {integrity: sha512-Z2FERdHB9fAKI+KGqdWn04O7uNlnB+VYiEm6INE1aZuzzLNd3KBqQ6IpKUJF2ny4GigGU6nVu75XD9tAUODPng==} + engines: {node: '>=16.20.0'} + cpu: [arm64] + os: [openbsd] + + '@typescript/typescript-openbsd-x64@7.1.0-beta': + resolution: {integrity: sha512-NVG3qeyCq/rJEOhaRjR3LsWgjrjo5vJW25omVLeHAVnpKIG4pE4cenwwKGR06DiJ1s0QTOymcJeKXMEpsiNBVg==} + engines: {node: '>=16.20.0'} + cpu: [x64] + os: [openbsd] - '@typescript/native-preview-win32-x64@7.0.0-dev.20260707.2': - resolution: {integrity: sha512-DL4u27stv0fo71sVhOzHSwE+YMZsbBijVI+kg5dLDLilSH79WFTJ8RSQ46vJrCMt+Gjlv/JOZP1PuLJDfioYeQ==} + '@typescript/typescript-sunos-x64@7.1.0-beta': + resolution: {integrity: sha512-ovAdoWXEn2B5/fyWG69pLU3FWmQwPWOjQV5TFbcxtpnOv+R3g8ySGHl1NYRq7Lb/GYdFDvaGcZ+SiU7iKuiMsA==} engines: {node: '>=16.20.0'} cpu: [x64] + os: [sunos] + + '@typescript/typescript-win32-arm64@7.1.0-beta': + resolution: {integrity: sha512-lJbo71IEOfL7ZZIZnArRaOLqjn9BAfoSzyUQn0aSjfSpDZL4ru0afUsdBfo6PQEjD6ssdmi0n/RwaPADX6bsvQ==} + engines: {node: '>=16.20.0'} + cpu: [arm64] os: [win32] - '@typescript/native-preview@7.0.0-dev.20260707.2': - resolution: {integrity: sha512-oUGp+Rep/hqMhPunyinsALUwSlzHINSxitifPiSaeqoKOKD2OlR9NE3TaPqwsl4NlGslsOSUXI1JotWQzpYCPg==} + '@typescript/typescript-win32-x64@7.1.0-beta': + resolution: {integrity: sha512-UKcHvbybY2tDTvFW2b1vwiAvDlIRooo69lh8CXWVhOQejcvpM5+IgbiFW9EIwR5Wi5X/v+BdN7gdWbigBuJ3rw==} engines: {node: '>=16.20.0'} - hasBin: true + cpu: [x64] + os: [win32] '@ungap/promise-all-settled@1.1.2': resolution: {integrity: sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==} @@ -5007,11 +5612,22 @@ packages: peerDependencies: vite: 8.2.4 - '@vitest/expect@4.1.11': - resolution: {integrity: sha512-VX2x5vNJXET47KAFzwERI+KRMtTTCSWTfSMKsW7JsUsXV4psq++e3DvZpuTDOpHcxytiDs6p2nhVb2tVDiiUYw==} + '@vitest/browser-playwright@5.0.3': + resolution: {integrity: sha512-rYBHwIFL/ZtI6dl0rbrAatScXCrvX+TL2BX2AGOigkC1Y6u3rIWw8KMQJJMS4drSa1ksMCmZU2wpgwdE7kqu3g==} + peerDependencies: + playwright: '*' + vitest: 5.0.3 + + '@vitest/browser@5.0.3': + resolution: {integrity: sha512-7KHIkVA/gTRxQV9qPa9qLK+g5INZG6iRrlwXSFG5EKsOomW3UzzW7wsdt1Yp5PufzQ43lniuONlb4lUVCC2qSg==} + peerDependencies: + vitest: 5.0.3 + + '@vitest/expect@3.2.4': + resolution: {integrity: sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==} - '@vitest/mocker@4.1.11': - resolution: {integrity: sha512-2XJVD55d1o5AZous5CCGKS74g/riOj9odEt2bQpCVZeblHyHdnMeFl4jl0XjU21stf4mbjUkew2eXQZt65g5CQ==} + '@vitest/mocker@5.0.3': + resolution: {integrity: sha512-T8sWAIbkSyAjkwTcaEc3Iu0o9A27X1/kdXrizhZkGuSKScRQtRzclfAMpOTcGdXCsqxeWlpGy3XjqaW8CpLORg==} peerDependencies: msw: ^2.4.9 vite: 8.2.4 @@ -5021,25 +5637,42 @@ packages: vite: optional: true + '@vitest/pretty-format@3.2.4': + resolution: {integrity: sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA==} + '@vitest/pretty-format@4.1.11': resolution: {integrity: sha512-yiZzPbGTS9Sr/JpFl8zHrcIkAofNbFV6k21vIgQN/cY/oxZeXhJv5sc/MBJ5jFKWmWs+oJHw0UXLZjmf931+Vw==} + '@vitest/pretty-format@5.0.3': + resolution: {integrity: sha512-3hr5eV5z2ff0l2Q1vaKQbB4j3M3tElw8stDokEOTqXJB3Es5VrT8gBRIMY59gGuFp8Y61sWlWFK1aNUH5dHDYw==} + '@vitest/runner@4.1.11': resolution: {integrity: sha512-LztvUgdwMNJMIkj3hQnnxiC2Xy1zNxq928W/xhjCLaNCzqTZOudjwbQf6v9IntZGPw132i2Lq2rgTRZHD3JHNw==} - '@vitest/snapshot@4.1.11': - resolution: {integrity: sha512-pN7ikn1ON7h8ee4gIAp4AzyK+zBtJPzVbqOgu5LCEh4VaJVbPQcgYQYJIMGQPXVeJJq1fnfazis7a5pFNPahog==} + '@vitest/spy@3.2.4': + resolution: {integrity: sha512-vAfasCOe6AIK70iP5UD11Ac4siNUNJ9i/9PZ3NKx07sG6sUxeag1LWdNrMWeKKYBLlzuK+Gn65Yd5nyL6ds+nw==} - '@vitest/spy@4.1.11': - resolution: {integrity: sha512-apNa/prQy2qCeywhnixOHPRCgGNhvg7T4Dapfl1GahLp/R+uhBm5cPyFoNVyqsNd2h1nJxL6BqqdIjiABL60YA==} + '@vitest/spy@5.0.3': + resolution: {integrity: sha512-XhFysQTB8AZ+P4gMi+Lpo99vg2AZi0qKpaB9yXQl37+CaMEAPO3iH/wGVnSyL5MPERiLezpqTVtrR6UZH5GCXg==} + + '@vitest/ui@5.0.3': + resolution: {integrity: sha512-9dfvqDBvSbHM6y9YVXxAypkl2z7mrWozK/JFo237qI0cj/3M/kzDKiVZqzi3TE54Ler7Jditud7OMBZCyUvRHA==} + peerDependencies: + vitest: 5.0.3 + + '@vitest/utils@3.2.4': + resolution: {integrity: sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==} '@vitest/utils@4.1.11': resolution: {integrity: sha512-zTCVGpyFsGWBhllOyKlTw/vnr6D9qxsfSDyfbyZmTyjHw5N/VuvzHpHoQjm2ZJzn4RJgx5w4r7V0er69CmLgPQ==} - '@vitest/web-worker@4.1.11': - resolution: {integrity: sha512-730ZTeK7KGvinH92mHpq2kBZNUkdF0zCijFtsBe1VQ6kDveGjYxaX+WpSnDYUh8Zoh+7jZ5oKNyWJQZEGC8S4Q==} + '@vitest/utils@5.0.3': + resolution: {integrity: sha512-77fDTZv8eu1CzlIfgPU2yrl5MXSUaUAOvgdZEeVm3X3WIxUubIX2SforqS6176lT32HCF6uBVMYVqfHxw7o6eg==} + + '@vitest/web-worker@5.0.3': + resolution: {integrity: sha512-wmxDW6gehdUkQN0MeTIZ3UN/MtSKj+FcJJJhtCtWwGVSpk4tSdlo+qe3EArYurqb5o7aC2hurGSCbhHzsHKKxw==} peerDependencies: - vitest: 4.1.11 + vitest: 5.0.3 '@volar/language-core@2.4.12': resolution: {integrity: sha512-RLrFdXEaQBWfSnYGVxvR2WrO6Bub0unkdHYIdC31HzIEqATIuuhRRzYu76iGPZ6OtA4Au1SnW0ZwIqPP217YhA==} @@ -5202,6 +5835,9 @@ packages: '@webassemblyjs/wast-printer@1.14.1': resolution: {integrity: sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==} + '@webcontainer/env@1.1.1': + resolution: {integrity: sha512-6aN99yL695Hi9SuIk1oC88l9o0gmxL1nGWWQ/kNy81HigJ0FoaoTXpytCj6ItzgyCEwA9kF1wixsTuv5cjsgng==} + '@whatwg-node/disposablestack@0.0.6': resolution: {integrity: sha512-LOtTn+JgJvX8WfBVJtF08TGrdjuFzGJc4mkP8EdDI8ADbvO7kiexYep1o8dwnt0okb0jYclCDXF13xU7Ge4zSw==} engines: {node: '>=18.0.0'} @@ -5364,9 +6000,6 @@ packages: any-promise@1.3.0: resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} - anymatch@1.3.2: - resolution: {integrity: sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==} - anymatch@3.1.3: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} engines: {node: '>= 8'} @@ -5408,14 +6041,6 @@ packages: resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==} engines: {node: '>= 0.4'} - arr-diff@2.0.0: - resolution: {integrity: sha512-dtXTVMkh6VkEEA7OhXnN1Ecb8aAGFdZ1LFxtOCoqj4qkyOJMt7+qs6Ahdy6p/NQCPYsRSXXivhSB/J5E9jmYKA==} - engines: {node: '>=0.10.0'} - - arr-flatten@1.1.0: - resolution: {integrity: sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==} - engines: {node: '>=0.10.0'} - arr-union@3.1.0: resolution: {integrity: sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==} engines: {node: '>=0.10.0'} @@ -5435,10 +6060,6 @@ packages: resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} engines: {node: '>=8'} - array-unique@0.2.1: - resolution: {integrity: sha512-G2n5bG5fSUCpnsXz4+8FUkYsGPkNfLn9YvS66U5qbTIXI2Ynnlo4Bi42bWv+omKUCqz+ejzfClwne0alJWJPhg==} - engines: {node: '>=0.10.0'} - arraybuffer.prototype.slice@1.0.4: resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==} engines: {node: '>= 0.4'} @@ -5462,6 +6083,10 @@ packages: resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} engines: {node: '>=12'} + ast-types@0.16.3: + resolution: {integrity: sha512-FvWoWYfSCM6kRxCSH+MGLHIKKGRL6A6AW7Zek2O32REPQRdg131428uRTKMBYAeRd3XXAaHDS60Wpri7CdKDrA==} + engines: {node: '>=4'} + astral-regex@2.0.0: resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} engines: {node: '>=8'} @@ -5493,6 +6118,10 @@ packages: aws4@1.11.0: resolution: {integrity: sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==} + axe-core@4.13.0: + resolution: {integrity: sha512-UzGt8zg7Ny8djbYMhxl2zuEevVa7r2gJjYY5Lwr1xM7+XU2nd6CkIWFTVcCIbAP63vSz71NaVyyuSk9lHKcy0A==} + engines: {node: '>=4'} + axios@0.21.4: resolution: {integrity: sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==} @@ -5532,17 +6161,14 @@ packages: peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - babel-plugin-react-compiler@19.1.0-rc.3: - resolution: {integrity: sha512-mjRn69WuTz4adL0bXGx8Rsyk1086zFJeKmes6aK0xPuK3aaXmDJdLHqwKKMrpm6KAI1MCoUK72d2VeqQbu8YIA==} + babel-plugin-react-compiler@1.0.0: + resolution: {integrity: sha512-Ixm8tFfoKKIPYdCCKYTsqv+Fd4IJ0DQqMyEimo+pxUOMUR9cVPlwTrFt9Avu+3cb6Zp3mAzl+t1MrG2fxxKsxw==} babel-plugin-transform-import-meta@2.3.3: resolution: {integrity: sha512-bbh30qz1m6ZU1ybJoNOhA2zaDvmeXMnGNBMVMDOJ1Fni4+wMBoy/j7MTRVmqAUCIcy54/rEnr9VEBsfcgbpm3Q==} peerDependencies: '@babel/core': ^7.10.0 - backo2@1.0.2: - resolution: {integrity: sha512-zj6Z6M7Eq+PBZ7PQxl5NT665MvJdAkzp0f60nAJ+sLaSCBPMwVak5ZegFbgVCzFcCJTKFoMizvM5Ld7+JrRJHA==} - balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} @@ -5589,9 +6215,6 @@ packages: resolution: {integrity: sha512-sXnYK/Ij80TO3lcqZVV2YgfKN5QjUWIRk/XSm2J/4bd/lPko3lvk0O4ZppH6m+6hB2/GTu+ptNwVFe1xh+QLQw==} engines: {node: '>=4'} - bindings@1.5.0: - resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} - bl@4.1.0: resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} @@ -5624,10 +6247,6 @@ packages: resolution: {integrity: sha512-ScQ4IuvIEF1TMlP7Zt+vjJ//9zlPb2SDcxWxM3bk8s6t6GGdJ7KO1dCcTidOPJKePW30LE/2cT7wCyPho9/Wxg==} engines: {node: 20 || >=22} - braces@1.8.5: - resolution: {integrity: sha512-xU7bpz2ytJl1bH9cgIurjpg/n8Gohy9GTw81heDYLJQ4RU60dlyJsa+atVF2pI0yMMvKxI9HkKwjePCj5XI1hw==} - engines: {node: '>=0.10.0'} - braces@3.0.3: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} @@ -5640,9 +6259,6 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true - bser@2.1.1: - resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} - buffer-crc32@0.2.13: resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} @@ -5692,6 +6308,9 @@ packages: resolution: {integrity: sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==} engines: {node: '>=8'} + cacheable@2.5.0: + resolution: {integrity: sha512-60cyAOytib/OzBw1JNSoSV/boK1AtHryDIjvVBk7XbN4ugfkM3+Sry7fEjNgPMGgOjuaZPAp8ruZ0Cxafwyq9g==} + cachedir@2.4.0: resolution: {integrity: sha512-9EtFOZR8g22CL7BWjJ9BUx1+A/djkofnyW3aOXZORNW2kxoUpx2h+uN2cOqwPmFhnpVmxg+KW2OjOSgChTEvsQ==} engines: {node: '>=6'} @@ -5736,6 +6355,10 @@ packages: caseless@0.12.0: resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} + chai@5.3.3: + resolution: {integrity: sha512-4zNhdJD/iOjSH0A05ea+Ke6MU5mmpQcbQsSOkgdaUMJ9zTlDTD/GYlwohmIE2u0gaxHYiVHEn1Fw9mZ/ktJWgw==} + engines: {node: '>=18'} + chai@6.2.2: resolution: {integrity: sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==} engines: {node: '>=18'} @@ -5759,6 +6382,10 @@ packages: chardet@0.7.0: resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} + check-error@2.1.3: + resolution: {integrity: sha512-PAJdDJusoxnwm1VwW07VWwUN1sl7smmC3OKggvndJFadxxDRyFJBX/ggnu/KE4kQAB7a3Dp8f/YXC1FlUprWmA==} + engines: {node: '>= 16'} + check-more-types@2.24.0: resolution: {integrity: sha512-Pj779qHxV2tuapviy1bSZNEL1maXr13bPYpsvSDB68HlYcYuhlDrmGd63i0JHMCLKzc7rUSNIrpdJlhVlNwrxA==} engines: {node: '>= 0.8.0'} @@ -5852,10 +6479,6 @@ packages: resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} engines: {node: '>=0.8'} - clsx@1.2.1: - resolution: {integrity: sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==} - engines: {node: '>=6'} - clsx@2.1.1: resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} engines: {node: '>=6'} @@ -6023,10 +6646,6 @@ packages: resolution: {integrity: sha512-XGpFGbMLHwSt74YLTKho7Ib242qi6O8MSX+sRokV4oz7iKXvQWGYZthjIhjRGMxjzVkAubBO512dKGYcefmX3Q==} engines: {node: '>=6.4.0'} - core-js@2.6.12: - resolution: {integrity: sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==} - deprecated: core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js. - core-util-is@1.0.2: resolution: {integrity: sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==} @@ -6160,6 +6779,21 @@ packages: csstype@3.2.3: resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} + cypress-axe@1.7.0: + resolution: {integrity: sha512-zzJpvAAjauEB3GZl0KYXb8i3w6MztWAt2WM3czYTFyNVC30alDmqCm9E7GwZ4bgkldZJlmHakaVEyu73R5St4w==} + engines: {node: '>=10'} + peerDependencies: + axe-core: ^3 || ^4 + cypress: ^10 || ^11 || ^12 || ^13 || ^14 || ^15 + + cypress-each@1.14.1: + resolution: {integrity: sha512-evywTv0Gid5J24C2W6ajYsVoBpoXIkvNo6L5a5+6QabtKOG1pn9Fq4zO/EwrdfktDZ9PWRRWFbJBMoRh3NlrYg==} + + cypress-real-events@1.15.1: + resolution: {integrity: sha512-BiTyqYcNHiIFWfSLRn3H+TgTvpnTGOKfl4Brz51yeSGKMxBbD60wtRQw31nII00yQ67Xg3C18mU8lqUxDN3OUA==} + peerDependencies: + cypress: ^4.x || ^5.x || ^6.x || ^7.x || ^8.x || ^9.x || ^10.x || ^11.x || ^12.x || ^13.x || ^14.x || ^15.x || ^16.x + cypress@16.0.0: resolution: {integrity: sha512-/H3zsayGwIGboFIiLWaXxy6ADmCdWy5QjjDBZgslCvjIgYAf1DkZerwAM7wXMPSpfpQ4w+lGjFlmwneRBpg27g==} engines: {node: ^22.0.0 || ^24.0.0 || >=26.0.0} @@ -6283,6 +6917,10 @@ packages: babel-plugin-macros: optional: true + deep-eql@5.0.2: + resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} + engines: {node: '>=6'} + deep-extend@0.6.0: resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} engines: {node: '>=4.0.0'} @@ -6379,6 +7017,10 @@ packages: resolution: {integrity: sha512-EgqGeaBB8hLiHLZtp/IbaDQTL8pZ0+IvwzSHA6d7VyMDM+B9hgddEMa9xjK5oYnw0ci0JQ6g2XCD7/f6cafU6g==} engines: {node: '>=6'} + doctrine@3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} + dom-accessibility-api@0.5.16: resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==} @@ -6408,6 +7050,9 @@ packages: resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} engines: {node: '>= 4'} + dompurify@3.4.15: + resolution: {integrity: sha512-EUBjM+B+lkDE41iE82DDSCfkoPGfXx8IxFxPMjNzm/Uk4xDet77rTN9wqlxlVg71kK7XGuUMv6wUxJUwwv+Xyw==} + domutils@2.8.0: resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} @@ -6465,6 +7110,10 @@ packages: resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==} engines: {node: '>= 4'} + empathic@2.0.1: + resolution: {integrity: sha512-YGRs8knHhKHVShLkFET/rWAU8kmHbOV5LwN938RHI0pljAJ1Gf6SzXsSmRaEzcXTtOOmVqJ5+WtQPL5uigY50Q==} + engines: {node: '>=14'} + encodeurl@2.0.0: resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} engines: {node: '>= 0.8'} @@ -6574,28 +7223,27 @@ packages: resolution: {integrity: sha512-f2I7Gw6JbvCexzIInuSbZpfdQ44D7iqdWX01FKLvrPgqxoE7oMj8clOfto8U6vYiz4yd5oKu39rRSVOe1zRu0g==} engines: {node: '>=18'} peerDependencies: - eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 || ^10.0.0 + eslint: ^10.12.0 eslint-scope@5.1.1: resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} engines: {node: '>=8.0.0'} - eslint-scope@8.4.0: - resolution: {integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + eslint-scope@9.1.2: + resolution: {integrity: sha512-xS90H51cKw0jltxmvmHy2Iai1LIqrfbw57b79w/J7MfvDfkIkFZ+kj6zC3BjtUwh150HsSSdxXZcsuv72miDFQ==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} eslint-visitor-keys@3.4.3: resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - eslint-visitor-keys@4.2.1: - resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + eslint-visitor-keys@5.0.1: + resolution: {integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} - eslint@9.39.5: - resolution: {integrity: sha512-DgZS62aPLXKlnxILS/AYCoRvHaZeXceIzlXPkkGGzJWSow1aEk0lbTlxUSlyjC8jcaKxAdOnTDz+o1JFSBsyjw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options. + eslint@10.12.0: + resolution: {integrity: sha512-npHjrHb2o4ehH3mE+YuxABR+0gyb0aVWCIolgJDArwCiHEIsonBm3ZKjel5b0U5+a+MbEvIyRCGCzD3eKKK2NA==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} hasBin: true peerDependencies: jiti: '*' @@ -6610,9 +7258,9 @@ packages: resolution: {integrity: sha512-vg1j7fzKZUFR5TCsYQ3PABfBRMRi6V9K7mxcRh2MftO3gwAHBwYaPHtLHFDsKVSxdHmpu/GgT37lsRT+vezaKQ==} hasBin: true - espree@10.4.0: - resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + espree@11.2.0: + resolution: {integrity: sha512-7p3DrVEIopW1B1avAGLuCSh1jubc01H2JHc8B4qqGblmg5gI9yumBgACjWo4JlIc04ufug4xJ3SQI8HkS/Rgzw==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} esprima@4.0.1: resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} @@ -6673,9 +7321,6 @@ packages: eventemitter2@6.4.7: resolution: {integrity: sha512-tYUSVOGeQPKt/eC1ABfhHy5Xd96N3oIijJvN3O9+TsC28T5V9yX9oEfEK5faP0EFSNVOG97qtAS68GBrQB2hDg==} - eventemitter3@3.1.2: - resolution: {integrity: sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==} - eventemitter3@5.0.4: resolution: {integrity: sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==} @@ -6683,9 +7328,6 @@ packages: resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} engines: {node: '>=0.8.x'} - exec-sh@0.2.2: - resolution: {integrity: sha512-FIUCJz1RbuS0FKTdaAafAByGS0CPvU3R0MeHxgtl+djzCc//F8HakL8GzmVNZanasTbTAY/3DRFA0KpVqj/eAw==} - execa@10.0.1: resolution: {integrity: sha512-ge98qjkRK4IB7tL7Ju/6qmm5LHoH1eEMt5FNZrz3f4UIYhF28lggX20z3FaX1sgc67msLEn0N0BscOs29iuwyw==} engines: {node: '>=22'} @@ -6710,14 +7352,6 @@ packages: resolution: {integrity: sha512-INjr2xyxHo7bhAqf5ong++GZPPnpcuBcaXUKt03yf7Fie9yWD7FapL4teOU0+awQazGs5ucBh7xWs/AD+6nhog==} engines: {node: '>=20'} - expand-brackets@0.1.5: - resolution: {integrity: sha512-hxx03P2dJxss6ceIeri9cmYOT4SRs3Zk3afZwWpOsRqLqprhTR8u++SlC+sFGsQr7WGFPdMF7Gjc1njDLDK6UA==} - engines: {node: '>=0.10.0'} - - expand-range@1.8.2: - resolution: {integrity: sha512-AFASGfIlnIbkKPQwX1yHaDjFvh/1gyKJODme52V6IORh69uEYgZp0o9C+qsIGNVEiuuhQU0CSSl++Rlegg1qvA==} - engines: {node: '>=0.10.0'} - expand-template@2.0.3: resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==} engines: {node: '>=6'} @@ -6751,10 +7385,6 @@ packages: resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} engines: {node: '>=4'} - extglob@0.3.2: - resolution: {integrity: sha512-1FOj1LOwn42TMrruOHGt18HemVnbwAmAak7krWk+wa93KXxGbK+2jpezm+ytJYDaBX0/SPLZFHKM7m+tKobWGg==} - engines: {node: '>=0.10.0'} - extsprintf@1.3.0: resolution: {integrity: sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==} engines: {'0': node >=0.6.0} @@ -6795,9 +7425,6 @@ packages: fastq@1.11.0: resolution: {integrity: sha512-7Eczs8gIPDrVzT+EksYBcupqMyxSHXXrHOLRRxU2/DicV8789MRBRR8+Hc2uWzUupOs4YS4JzBmBxjjCVBxD/g==} - fb-watchman@2.0.1: - resolution: {integrity: sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==} - fd-slicer@1.1.0: resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} @@ -6814,6 +7441,9 @@ packages: resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} engines: {node: ^12.20 || >= 14.13} + fflate@0.8.3: + resolution: {integrity: sha512-tbZNuJrLwGUp3zshBtdy4W+ORxZuIh8a5ilyIEQDC5rY1f3U20JMry0Ll3WBzU58EZKsEuJFXhb5gwv8CsPvgA==} + figures@6.1.0: resolution: {integrity: sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==} engines: {node: '>=18'} @@ -6826,9 +7456,8 @@ packages: resolution: {integrity: sha512-7xaJjA+9eTve2l1FzoagBX26tICgaTwLPAY9vi/FDutEUKNeBR4YYvvQ8bgxuYJb09edaAQoEGIa6Juim88dpQ==} engines: {node: '>=0.10.0'} - file-entry-cache@8.0.0: - resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} - engines: {node: '>=16.0.0'} + file-entry-cache@11.1.5: + resolution: {integrity: sha512-+PFTHITI08JIGhnNpGNI8T8inUpgZfk3GNEqfT9R2zZV2iFXg3CvqzSl/uEhs7TSGujYRELEANyDvS8Fj7+S7Q==} file-loader@6.2.0: resolution: {integrity: sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==} @@ -6844,20 +7473,9 @@ packages: resolution: {integrity: sha512-wjHoKZzas90Jl1XOBfLnNGc5gl9JTm7sTceuoO4P3OdadlCz1ELrOxYmiamqLJP4S8+phD7wzW8S1oBj+8vnBQ==} engines: {node: '>=0.10.0'} - file-uri-to-path@1.0.0: - resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} - filelist@1.0.4: resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==} - filename-regex@2.0.1: - resolution: {integrity: sha512-BTCqyBaWBTsauvnHiE8i562+EdJj+oUpkqWp2R1iCoR8f6oo8STRu3of7WJJ0TqWtxN50a5YFpzYK4Jj9esYfQ==} - engines: {node: '>=0.10.0'} - - fill-range@2.2.4: - resolution: {integrity: sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==} - engines: {node: '>=0.10.0'} - fill-range@7.1.1: resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} @@ -6893,9 +7511,8 @@ packages: find-yarn-workspace-root2@1.2.16: resolution: {integrity: sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==} - flat-cache@4.0.1: - resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} - engines: {node: '>=16'} + flat-cache@6.1.23: + resolution: {integrity: sha512-f++BY9pTk+983xK1FLzlLpmM0i0z+jHmx3QESGkURMXujQZz1k5wzwX6hjnQ8goaD0B+sYnDK1yZ6MTyZfUaqA==} flat@5.0.2: resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} @@ -6917,14 +7534,6 @@ packages: resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==} engines: {node: '>= 0.4'} - for-in@1.0.2: - resolution: {integrity: sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==} - engines: {node: '>=0.10.0'} - - for-own@0.1.5: - resolution: {integrity: sha512-SKmowqGTJoPzLO1T0BBJpkfp3EMacCMOuH40hOUbrbzElVktk4DioXVM99QkLCyKoiuOmyjgcWMpVz2xjE7LZw==} - engines: {node: '>=0.10.0'} - foreground-child@3.3.1: resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} engines: {node: '>=14'} @@ -6950,6 +7559,9 @@ packages: resolution: {integrity: sha512-vKatAh4SlVfgbv+YtmhiRjhEMJsYpsG1Y2rMQtR+SVSbytsSD1YGzDIcrAJmdFec88u/+VoGmxnl+80gL1tRCQ==} engines: {node: '>= 6'} + format-util@1.0.5: + resolution: {integrity: sha512-varLbTj0e0yVyRpqQhuWV+8hlePAgaoFRhNFj50BNjEIrw1/DphHSObtqwskVCPWNgzwPoQrZAbfa/SBiicNeg==} + formdata-node@4.3.2: resolution: {integrity: sha512-k7lYJyzDOSL6h917favP8j1L0/wNyylzU+x+1w4p5haGVHNlP58dbpdJhiCUsDbWsa9HwEtLp89obQgXl2e0qg==} engines: {node: '>= 12.20'} @@ -6962,8 +7574,8 @@ packages: resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} engines: {node: '>= 0.6'} - framer-motion@13.2.0: - resolution: {integrity: sha512-9E33ebgMaO33w1nN/jEdW8z3/GO483fMi4rqbMG9rt83XgW9QLKRe4NcmJ8s+fQ3O34++UHrIQwlIWGIWTITjA==} + framer-motion@14.0.0: + resolution: {integrity: sha512-QAtHmybrDFSliyW1sexMtSQTQd+1jw2ajibEmzpuI4XdPVzQkn+dAzJMm2sW3pl9MJuSS4xN51djQ7huhlP/VA==} peerDependencies: react: 19.2.7 react-dom: 19.2.7 @@ -7020,12 +7632,6 @@ packages: fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - fsevents@1.2.13: - resolution: {integrity: sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==} - engines: {node: '>= 4.0'} - os: [darwin] - deprecated: Upgrade to fsevents v2 to mitigate potential security issues - fsevents@2.3.3: resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} @@ -7105,10 +7711,6 @@ packages: github-from-package@0.0.0: resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==} - glob-base@0.3.0: - resolution: {integrity: sha512-ab1S1g1EbO7YzauaJLkgLp7DZVAqj9M/dvKlTt8DkXA2tiOIcSMrlVI2J1RZyB5iJVccEscjGn+kpOG9788MHA==} - engines: {node: '>=0.10.0'} - glob-parent@2.0.0: resolution: {integrity: sha512-JDYOvfxio/t42HKdxkAYaCiBN7oYiuxykOxKxdaUW5Qn0zaYN3gRQWolrwdnf0shM9/EP0ebuuTmyoXNr1cC5w==} @@ -7171,10 +7773,6 @@ packages: global@4.4.0: resolution: {integrity: sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==} - globals@14.0.0: - resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} - engines: {node: '>=18'} - globalthis@1.0.4: resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} engines: {node: '>= 0.4'} @@ -7206,13 +7804,6 @@ packages: react: 19.2.7 react-dom: 19.2.7 - graphiql-explorer@0.9.0: - resolution: {integrity: sha512-fZC/wsuatqiQDO2otchxriFO0LaWIo/ovF/CQJ1yOudmY0P7pzDiP+l9CEHUiWbizk3e99x6DQG4XG1VxA+d6A==} - peerDependencies: - graphql: ^0.6.0 || ^0.7.0 || ^0.8.0-b || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 - react: 19.2.7 - react-dom: 19.2.7 - graphql-config@5.1.6: resolution: {integrity: sha512-fCkYnm4Kdq3un0YIM4BCZHVR5xl0UeLP6syxxO7KAstdY7QVyVvTHP0kRPDYEP1v08uwtJVgis5sj3IOTLOniQ==} engines: {node: '>= 16.0.0'} @@ -7244,8 +7835,24 @@ packages: ws: optional: true - graphql@16.13.2: - resolution: {integrity: sha512-5bJ+nf/UCpAjHM8i06fl7eLyVC9iuNAjm9qzkiu2ZGhM0VscSvS6WDPfAwkdkBuoXGM9FJSbKl6wylMwP9Ktig==} + graphql-ws@6.3.0: + resolution: {integrity: sha512-qBAXPtFjWHF3QypDyNcBp8Rycd+rmofxUSJsu3bGI9QMMq7pImKBSLSg9hZ2ojIMbJ54T/LPjKBIeOUoJbNBnQ==} + engines: {node: '>=20'} + peerDependencies: + '@fastify/websocket': ^10 || ^11 + crossws: ~0.3 || ~0.4 + graphql: ^15.10.1 || ^16 || ^17 + ws: ^8 + peerDependenciesMeta: + '@fastify/websocket': + optional: true + crossws: + optional: true + ws: + optional: true + + graphql@16.14.2: + resolution: {integrity: sha512-Chq1s4CY7jmh8gO2qvLIJyfCDIN+EHLFW/9iShnp1z8FjBQMoodWP1kDC36VAMXXIvAjj4ARa7ntfAV2BrjsbA==} engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0} graphql@17.0.2: @@ -7293,6 +7900,10 @@ packages: resolution: {integrity: sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ==} engines: {node: '>=8'} + hashery@1.5.1: + resolution: {integrity: sha512-iZyKG96/JwPz1N55vj2Ie2vXbhu440zfUfJvSwEqEbeLluk7NnapfGqa7LH0mOsnDxTF85Mx8/dyR6HfqcbmbQ==} + engines: {node: '>=20'} + hasown@2.0.4: resolution: {integrity: sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==} engines: {node: '>= 0.4'} @@ -7317,6 +7928,12 @@ packages: resolution: {integrity: sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==} engines: {node: '>=0.10.0'} + hookified@1.15.1: + resolution: {integrity: sha512-MvG/clsADq1GPM2KGo2nyfaWVyn9naPiXrqIe4jYjXNZQt238kWyOGrsyc/DmRAQ+Re6yeo6yX/yoNCG5KAEVg==} + + hookified@2.2.0: + resolution: {integrity: sha512-p/LgFzRN5FeoD3DLS6bkUapeye6E4SI6yJs6KetENd18S+FBthqYq2amJUWpt5z0EQwwHemidjY5OqJGEKm5uA==} + hosted-git-info@2.8.8: resolution: {integrity: sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==} @@ -7587,14 +8204,6 @@ packages: engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} hasBin: true - is-dotfile@1.0.3: - resolution: {integrity: sha512-9YclgOGtN/f8zx0Pr4FQYMdibBiTaH3sn52vjYip4ZSf6C4/6RfTEZ+MR4GvKhCxdPh21Bg42/WL55f6KSnKpg==} - engines: {node: '>=0.10.0'} - - is-equal-shallow@0.1.3: - resolution: {integrity: sha512-0EygVC5qPvIyb+gSz7zdD5/AAoS6Qrx1e//6N4yv4oNm30kqvdmG66oZFWVlQHUWe5OjP08FuTw2IdT0EOTcYA==} - engines: {node: '>=0.10.0'} - is-extendable@0.1.1: resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} engines: {node: '>=0.10.0'} @@ -7666,14 +8275,6 @@ packages: resolution: {integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==} engines: {node: '>= 0.4'} - is-number@2.1.0: - resolution: {integrity: sha512-QUzH43Gfb9+5yckcrSA0VBDwEtDUchrk4F6tfJZQuNzDJbEDB9cZNzSfXGQ1jqmdDY/kl41lUOWM9syA8z8jlg==} - engines: {node: '>=0.10.0'} - - is-number@4.0.0: - resolution: {integrity: sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==} - engines: {node: '>=0.10.0'} - is-number@7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} @@ -7702,17 +8303,9 @@ packages: resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} engines: {node: '>=0.10.0'} - is-posix-bracket@0.1.1: - resolution: {integrity: sha512-Yu68oeXJ7LeWNmZ3Zov/xg/oDBnBK2RNxwYY1ilNJX+tKKZqgPK+qOn/Gs9jEu66KDY9Netf5XLKNGzas/vPfQ==} - engines: {node: '>=0.10.0'} - is-potential-custom-element-name@1.0.1: resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} - is-primitive@2.0.0: - resolution: {integrity: sha512-N3w1tFaRfk3UrPfqeRyD+GYDASU3W5VinKhlORy8EWVf/sIdDL9GAcew85XmktCfH+ngG7SRXEVDoO18WMdB/Q==} - engines: {node: '>=0.10.0'} - is-primitive@3.0.1: resolution: {integrity: sha512-GljRxhWvlCNRfZyORiH77FwdFwGcMO620o37EOYC0ORWdq+WYNVqW0w2Juzew4M+L81l6/QS3t5gkkihyRqv9w==} engines: {node: '>=0.10.0'} @@ -7865,9 +8458,6 @@ packages: resolution: {integrity: sha512-5mbUj3SiZXCuRf9fT3ibzbSSEWiy63gFfksmGfdOzujPjW3k+z8WvIBxcJHBoQNlaZaiyB25deviif2+osLmLw==} engines: {node: '>=4'} - iterall@1.3.0: - resolution: {integrity: sha512-QZ9qOMdF+QLHxy1QIpUHUU1D5pS2CG2P69LF6L6CPjPYA/XMOmKV3PZpawHoAjHNyB0swdVTRxdYT4tbBbxqwg==} - jackspeak@3.4.0: resolution: {integrity: sha512-JVYhQnN59LVPFCEcVa2C3CrEKYacvjRfqIQl+h8oi91aLYQVWRYbxjPcv1bUiUy/kLmQaANrYfNMCO3kuEDHfw==} engines: {node: '>=14'} @@ -7957,10 +8547,6 @@ packages: json-stringify-safe@5.0.1: resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} - json5@1.0.2: - resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} - hasBin: true - json5@2.2.3: resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} engines: {node: '>=6'} @@ -8008,6 +8594,9 @@ packages: keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + keyv@5.6.0: + resolution: {integrity: sha512-CYDD3SOtsHtyXeEORYRx2qBtpDJFjRTGXUtmNEMGyzYOKj1TE3tycdlho7kA1Ufx9OYWZzg52QFBGALTirzDSw==} + kind-of@3.2.2: resolution: {integrity: sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==} engines: {node: '>=0.10.0'} @@ -8149,10 +8738,6 @@ packages: resolution: {integrity: sha512-IWqP2SCPhyVFTBtRcgMHdzlf9ul25NwaFx4wCEH/KjAXuuHY4yNjvPXsBokp8jCB936PyWRaPKUNh8NvylLp2Q==} engines: {node: '>=6.11.5'} - loader-utils@1.4.2: - 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'} @@ -8201,9 +8786,6 @@ packages: lodash.isstring@4.0.1: resolution: {integrity: sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==} - lodash.merge@4.6.2: - resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - lodash.once@4.1.1: resolution: {integrity: sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==} @@ -8238,6 +8820,9 @@ packages: resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} hasBin: true + loupe@3.2.1: + resolution: {integrity: sha512-CdzqowRJCeLU72bHvWqwRBBlLcMEtIvGrlvef74kMnV2AolS9Y8xUv1I0U/MNAWMhBlKIoyuEgoJ0t/bbwHbLQ==} + lower-case@2.0.2: resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} @@ -8275,6 +8860,9 @@ packages: magic-string@0.30.21: resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} + magic-string@1.3.1: + resolution: {integrity: sha512-rm91zr2Ou+XueDTohjQQjdQEcYM6zVi8KVUCG8Ec3vHwUEKrhSdCNyfuIywkA6hcCAteIn0ZOtAHA6eGpiX+Pg==} + make-dir@2.1.0: resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} engines: {node: '>=6'} @@ -8282,9 +8870,6 @@ packages: make-error@1.3.6: resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} - makeerror@1.0.12: - resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} - map-obj@1.0.1: resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} engines: {node: '>=0.10.0'} @@ -8300,6 +8885,11 @@ packages: resolution: {integrity: sha512-+Az7Ojz3iRGu8KYMvJ6xVhvrxP3eE+vEtJX75Ow88XBpcQNV/0lGX5ZynIIBftREo4DC2jsveAMDaeltmm8QvQ==} hasBin: true + marked@14.0.0: + resolution: {integrity: sha512-uIj4+faQ+MgHgwUW1l2PsPglZLOLOT1uErt06dAPtx2kjteLAkbsd/0FiYg/MGS+i7ZKLb7w2WClxHkzOOuryQ==} + engines: {node: '>= 18'} + hasBin: true + matched@0.4.4: resolution: {integrity: sha512-zpasnbB5vQkvb0nfcKV0zEoGgMtV7atlWR1Vk3E8tEKh6EicMseKtVV+5vc+zsZwvDlcNMKlKK/CVOEeAalYRQ==} engines: {node: '>= 0.12.0'} @@ -8308,9 +8898,6 @@ packages: resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} engines: {node: '>= 0.4'} - math-random@1.0.4: - resolution: {integrity: sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A==} - mdn-data@2.0.28: resolution: {integrity: sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==} @@ -8346,9 +8933,6 @@ packages: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} - merge@1.2.1: - resolution: {integrity: sha512-VjFo4P5Whtj4vsLzsYBu5ayHhoHJ0UqNm7ibvShmbmoz7tGi0vXaoJbGdB+GmDMLUdg8DpQXEIeVDAe8MaABvQ==} - meros@1.3.2: resolution: {integrity: sha512-Q3mobPbvEx7XbwhnC1J1r60+5H6EZyNccdzSz0eGexJRwouUtTZxPVRGdqKtxlpD84ScK4+tIGldkqDtCKdI0A==} engines: {node: '>=13'} @@ -8358,10 +8942,6 @@ packages: '@types/node': optional: true - micromatch@2.3.11: - resolution: {integrity: sha512-LnU2XFEk9xxSJ6rfgAry/ty5qwUTyHYOBU0g4R6tIw5ljwgGIBmiKhRWLw5NpMOnrgUNcDJ4WMp8rl3sYVHLNA==} - engines: {node: '>=0.10.0'} - micromatch@4.0.8: resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} engines: {node: '>=8.6'} @@ -8464,8 +9044,8 @@ packages: monaco-editor: '>= 0.31.0' webpack: ^4.5.0 || 5.x - monaco-editor@0.52.2: - resolution: {integrity: sha512-GEQWEZmfkOGLdd3XK8ryrfWz3AIP8YymVXiPHEdewrUq7mh0qrKrfHLNCXcbB6sTnMLnOZ3ztSiKcciFUkIJwQ==} + monaco-editor@0.57.0: + resolution: {integrity: sha512-5BkI9KGoqrNvBGUe15/QlZq3OooZ8WLg1AxTpaqHRCP3HNpzPPZKE2EDz8M7c+VRmCeUw1Brp4cx/PWm3kI/5A==} moo-color@1.0.3: resolution: {integrity: sha512-i/+ZKXMDf6aqYtBhuOcej71YSlbjT3wCO/4H1j8rPvxDJEifdwgg5MaFyu6iYAT8GBZJg2z0dkgK4YMzvURALQ==} @@ -8474,11 +9054,11 @@ packages: resolution: {integrity: sha512-OHpTRQwn2ezasILW8iKe+Yww1XsfWsZIpUOLF7RDb2g5GwO3trPaRwi7+8BDiJ7HFx2Kg2mfUdCBcVhwYlOz2g==} engines: {node: '>= 0.8.0'} - motion-dom@13.2.0: - resolution: {integrity: sha512-N6gdSoWRDk0Rh/fVtlqUtLs+fEN3ELFZI3cn3IQE9Mnf3E+Mh8wjO6MstzCOPFh4Yf0L1as5m2eUyYWj8ylVSQ==} + motion-dom@14.0.0: + resolution: {integrity: sha512-aU3ApXo1yTpeUi3JU+jbDk2TELjxPE3MbBMUP7nZHlARb6RweJK+ojmLjpuB0YsY6zhbBl1YWGo8LMsI1/Llqw==} - motion-utils@13.0.0: - resolution: {integrity: sha512-7DnN7TmbLcYXcG4RVadXIihWlyuM9afoUww8Y5Agg431kGKiuL2/OMyP4mJ5wLz+pvN3t5ySClLOaVXJ+wekRQ==} + motion-utils@14.0.0: + resolution: {integrity: sha512-jBsyjVxTTRZNeuvd/v+btVXr90LQkYl4HhRu9T2ARc+PMnvkmjsjRVeAg4Qm10b6TlTw+kykWI8gu/6LuvpLSQ==} mri@1.2.0: resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} @@ -8524,11 +9104,8 @@ packages: mz@2.7.0: resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} - nan@2.14.2: - resolution: {integrity: sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ==} - - nanoid@3.3.20: - resolution: {integrity: sha512-uKdg2G3GNCKQn9byYOpxbGqrT2fGO5KRt5J/8b3pok8rT6qxGWF6hxMyJiEYtAf+FVyYuD9hRaDqX5uPFYJ4ZQ==} + nanoid@3.3.18: + resolution: {integrity: sha512-DTg4MJbGMWkfi6VZFdNt2/caMbQy4Ou+Op/hJQvGEWcnVfoA1QA+xzRKAzw9jD6+GVOOeYr/mIcuDSdug6F6+w==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true @@ -8610,9 +9187,6 @@ packages: resolution: {integrity: sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - node-int64@0.4.0: - resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} - node-releases@2.0.55: resolution: {integrity: sha512-mIrE/Cw9y+9Au6dS5vDKDhQza9YvG6w+ZrS6X+ZzA7yFW/soAeaups4Qzn1bL6g5FVy8WtP79+0j82oPIbqRjQ==} engines: {node: '>=18'} @@ -8686,10 +9260,6 @@ packages: resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==} engines: {node: '>= 0.4'} - object.omit@2.0.1: - resolution: {integrity: sha512-UiAM5mhmIuKLsOvrL+B0U2d1hXHF3bFYWIuH1LMpuV2EJEHG1Ntz06PgLEHjm6VFd87NpH8rastvPoyv6UW2fA==} - engines: {node: '>=0.10.0'} - obug@2.2.1: resolution: {integrity: sha512-XrsrhT5sybtKI6wakr2SPOlGZWWYbUXZ7a0jT8/QOeAPau+1X/bSegNe5YR75oJmEZQbKningirmGOEJCIk61Q==} engines: {node: '>=12.20.0'} @@ -8713,6 +9283,10 @@ packages: resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==} engines: {node: '>=18'} + open@10.2.0: + resolution: {integrity: sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==} + engines: {node: '>=18'} + open@11.0.2: resolution: {integrity: sha512-RWqF+pBSkqecEvCKOn8QYhaNdRMJDZRIrlS/7rTDdLHaPcfXGCZ/h8zb413NfvdeAV0MR7T1yJcA34/q+CSm1Q==} engines: {node: '>=20'} @@ -8755,6 +9329,13 @@ packages: resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==} engines: {node: '>= 0.4'} + oxc-parser@0.127.0: + resolution: {integrity: sha512-bkgD4qHlN7WxLdX8bLXdaU54TtQtAIg/ZBAfm0aje/mo3MRDo3P0hZSgr4U7O3xfX+fQmR5AP04JS/TGcZLcFA==} + engines: {node: ^20.19.0 || >=22.12.0} + + oxc-resolver@11.21.2: + resolution: {integrity: sha512-w5tLwYN3Zo24w5EeWJjJWZOwhYqTtC8PS2B1tIt7BZUuqTIcU07sQValbDw+rq7+AuAGzOHklgK+ifsy4lpXfw==} + oxfmt@0.67.0: resolution: {integrity: sha512-vV7sSiPsaO0mSxdoUdayipVDFPzW/UQ+hrezEHa20+Tx1dnMdZLSRHMT0PdS67FFbhd74M1n08asW21aLGeCrA==} engines: {node: ^20.19.0 || >=22.12.0} @@ -8862,10 +9443,6 @@ packages: parse-diff@0.11.1: resolution: {integrity: sha512-Oq4j8LAOPOcssanQkIjxosjATBIEJhCxMCxPhMu+Ci4wdNmAEdx0O+a7gzbR2PyKXgKPvRLIN5g224+dJAsKHA==} - parse-glob@3.0.4: - resolution: {integrity: sha512-FC5TeK0AwXzq3tUBFtH74naWkPQCEWs4K+xMxWZBlKDWu0bVHXGZa+KKqxKidd7xwhdZ19ZNuF2uO1M/r196HA==} - engines: {node: '>=0.10.0'} - parse-json@5.2.0: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} @@ -8956,6 +9533,10 @@ packages: pathe@2.0.3: resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} + pathval@2.0.1: + resolution: {integrity: sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==} + engines: {node: '>= 14.16'} + pause-stream@0.0.11: resolution: {integrity: sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A==} @@ -8968,10 +9549,6 @@ packages: picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} - picomatch-browser@2.2.6: - resolution: {integrity: sha512-0ypsOQt9D4e3hziV8O4elD9uN0z/jtUEfxVRtNaAAtXIyUx9m/SzlO020i8YNL2aL/E6blOvvHQcin6HZlFy/w==} - engines: {node: '>=8.6'} - picomatch@2.3.2: resolution: {integrity: sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==} engines: {node: '>=8.6'} @@ -9017,6 +9594,16 @@ packages: platform@1.3.6: resolution: {integrity: sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg==} + playwright-core@1.63.0: + resolution: {integrity: sha512-rYCsBF/M5HjUch52bbtVONEFjv6Xu8sm8h72dNlR5bzIE1fvC/bxgspzkjSfU+MweEMmPM8KJebG6nnyxo5mCg==} + engines: {node: '>=20'} + hasBin: true + + playwright@1.63.0: + resolution: {integrity: sha512-+7ziBLidS4NaNCdt57SUDT+wYmmd5fmiQejUic/kb+YsYSCPyOOE9sebzMjNmQrsnNpDJqd4WHvV/8lfKfUDUg==} + engines: {node: '>=20'} + hasBin: true + pluralize@2.0.0: resolution: {integrity: sha512-TqNZzQCD4S42De9IfnnBvILN7HAW7riLqsCyp8lgjXeysyPlX5HhqKAcJHHHb9XskE4/a+7VGC9zzx8Ls0jOAw==} @@ -9024,6 +9611,10 @@ packages: resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} engines: {node: '>=4'} + pngjs@7.0.0: + resolution: {integrity: sha512-LKWqWJRhstyYo9pGvgor/ivk2w94eSjE3RGVuzLGlr3NmD8bf7RcYGze1mNdEHRP6TRP6rMuDHk5t44hnTRyow==} + engines: {node: '>=14.19.0'} + possible-typed-array-names@1.0.0: resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} engines: {node: '>= 0.4'} @@ -9081,8 +9672,8 @@ packages: resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} engines: {node: ^10 || ^12 || >=14} - postcss@8.5.31: - resolution: {integrity: sha512-YUbWYCgErwnMAVkjUnYa+KlMBzGpHwiIt/DE7f0G33AuX2LH9UcTk6KgWxd3zRU+pN3u/C+Xl3EnMLM4Hea7Sg==} + postcss@8.5.28: + resolution: {integrity: sha512-RRuzqDtt5Y9h3quz5hWhK+TPnsmVs6WwSU6LkJMeY4HstUEDuYTG8UJSdawMRzmzAtV+KEoG8N3Qg2qLy5vM/A==} engines: {node: ^10 || ^12 || >=14} powershell-utils@0.1.0: @@ -9107,10 +9698,6 @@ packages: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} - preserve@0.2.0: - resolution: {integrity: sha512-s/46sYeylUfHNjI+sA/78FAHlmIuKqI9wNnzEOGehAlUUYeObv5C2mOinXBjyUyWmJ2SfcS2/ydApH4hTF4WXQ==} - engines: {node: '>=0.10.0'} - prettier@2.7.1: resolution: {integrity: sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==} engines: {node: '>=10.13.0'} @@ -9184,6 +9771,10 @@ packages: resolution: {integrity: sha512-KTqnxsgGiQ6ZAzZCVlJH5eOjSnvlyEgx1m8bkRJfOhmGRqfo5KLvmAlACQkrjEtOQ4B7wF9TdSLIs9O90MX9xA==} engines: {node: '>=16.0.0'} + qified@0.10.1: + resolution: {integrity: sha512-+Owyggi9IxT1ePKGafcI87ubSmxol6smwJ+RAHDQlx9+9cPwFWDiKFFCPuWhr9ignlGpZ9vDQLw67N4dcTVFEA==} + engines: {node: '>=20'} + qs@6.16.0: resolution: {integrity: sha512-h6fhOIaRrID2CbEY2fqs+7t+UXZo+MLAnU5gRIq85uFtdiUPCdsApMlHhXogKVM4HM2DVbIjGNTTYH2OcmP1vA==} engines: {node: '>=0.6'} @@ -9202,10 +9793,6 @@ packages: resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} engines: {node: '>=10'} - randomatic@3.1.1: - resolution: {integrity: sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw==} - engines: {node: '>= 0.10.0'} - randombytes@2.1.0: resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} @@ -9228,11 +9815,20 @@ packages: resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} hasBin: true - react-compiler-runtime@19.1.0-rc.3: - resolution: {integrity: sha512-Cssogys2XZu6SqxRdX2xd8cQAf57BBvFbLEBlIa77161lninbKUn/EqbecCe7W3eqDQfg3rIoOwzExzgCh7h/g==} + react-compiler-runtime@1.0.0: + resolution: {integrity: sha512-rRfjYv66HlG8896yPUDONgKzG5BxZD1nV9U6rkm+7VCuvQc903C4MjcoZR4zPw53IKSOX9wMQVpA1IAbRtzQ7w==} peerDependencies: react: 19.2.7 + react-docgen-typescript@2.4.0: + resolution: {integrity: sha512-ZtAp5XTO5HRzQctjPU0ybY0RRCQO19X/8fxn3w7y2VVTUbGHDKULPTL4ky3vB05euSgG5NpALhEhDPvQ56wvXg==} + peerDependencies: + typescript: '>= 4.3.x' + + react-docgen@8.0.3: + resolution: {integrity: sha512-aEZ9qP+/M+58x2qgfSFEWH1BxLyHe5+qkLNJOZQb5iGS017jpbRnoKhNRrXPeA6RfBrZO5wZrT9DMC1UqE1f1w==} + engines: {node: ^20.9.0 || >=22} + react-dom@19.2.7: resolution: {integrity: sha512-t0BRVXvbiE/o20Hfw669rLbMCDWtYZLvmJigy2f0MxsXF+71pxhR3xOkspmsO8h3ZlNzyibAmtCa3l4lYKk6gQ==} peerDependencies: @@ -9302,10 +9898,6 @@ packages: '@types/react': optional: true - react@18.3.1: - resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} - engines: {node: '>=0.10.0'} - react@19.2.7: resolution: {integrity: sha512-HNe9WslTbXmFK8o8cmwgAeJFSBvt1bPdHCVKtaaV+WlAN36mpT4hcRpwbf3fY56ar2oIXzsBpOAiIRHAdY0OlQ==} engines: {node: '>=0.10.0'} @@ -9345,6 +9937,10 @@ packages: resolution: {integrity: sha512-Kko+Y5XQ6fM+Ce3dq3m9YGxnacYZYl9cA1wZjaF3Vbry2L3i1qVg8+CAgNPsXRArPMUMCaOR7oa9Nqntc43JKA==} engines: {node: '>= 20.19.0'} + recast@0.23.21: + resolution: {integrity: sha512-mFAyJq9vUbSTARLZUvAEf1z3YxlvAwswbmxMx2mPA/MSm4KmpwvwvhsH/NIrZhyOuwD60Lzyw2qh83uCbgTPYw==} + engines: {node: '>= 4'} + rechoir@0.8.0: resolution: {integrity: sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==} engines: {node: '>= 10.13.0'} @@ -9367,16 +9963,9 @@ packages: regenerate@1.4.2: resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} - regenerator-runtime@0.13.11: - resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} - regenerator-runtime@0.14.1: resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} - regex-cache@0.4.4: - resolution: {integrity: sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==} - engines: {node: '>=0.10.0'} - regexp.prototype.flags@1.5.4: resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==} engines: {node: '>= 0.4'} @@ -9410,14 +9999,6 @@ packages: renderkid@3.0.0: resolution: {integrity: sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==} - repeat-element@1.1.3: - resolution: {integrity: sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==} - engines: {node: '>=0.10.0'} - - repeat-string@1.6.1: - resolution: {integrity: sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==} - engines: {node: '>=0.10'} - replace-ext@0.0.1: resolution: {integrity: sha512-AFBWBy9EVRTa/LhEcG8QDP3FvpwZqmvN2QFDuJswFeaVhWnZMp8q3E6Zd90SR04PlIwfGdyVjNyLPyen/ek5CQ==} engines: {node: '>= 0.4'} @@ -9479,8 +10060,8 @@ packages: engines: {node: 20 || >=22} hasBin: true - rolldown@1.2.14: - resolution: {integrity: sha512-eTBTTqMR6uHKLgcUqpJP8ntzDI6V4LYA8negAMBEI7gkgVvOdrx6VsvS2Ym+83KhOPdLCHWJu0w7UQFJZhHKNw==} + rolldown@1.2.8: + resolution: {integrity: sha512-Z67nTmhZe7anqnM/EjI392w5i/ANUinjip7QYsOyN37oayduxt3ksdX0hf5OOamkAd53BiIHfbfSzfUmzKFQqQ==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true @@ -9540,12 +10121,6 @@ packages: safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - sane@2.0.0: - resolution: {integrity: sha512-w9Yey3/jXb0uQpRV32B1ifzzBtTQbjl/IpRs2Xbvdu9RnoptOMvvfpJGvqlVSkobbbOP+ouOY4/Q77pmkyXtQQ==} - engines: {node: '>=0.6.0'} - deprecated: some dependency vulnerabilities fixed, support for node < 10 dropped, and newer ECMAScript syntax/features added - hasBin: true - sax@1.6.1: resolution: {integrity: sha512-42tBVwLWnaQvW5zc4HbZrTuWccECCZfBi92FDuwtqxasH+JbPB3/FOKb1m222K42R4WxuxzzMsTswfzgtSu64Q==} engines: {node: '>=11.0.0'} @@ -9557,10 +10132,6 @@ packages: scheduler@0.27.0: resolution: {integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==} - schema-utils@0.4.7: - resolution: {integrity: sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ==} - engines: {node: '>= 4'} - schema-utils@3.3.0: resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} engines: {node: '>= 10.13.0'} @@ -9721,9 +10292,6 @@ packages: resolution: {integrity: sha512-6x6dK6zJdpTzF4sQeNYxwtvBzf6Eg4GtlesS94HOvTudUeyK2WXAaIfmDgsyslYrRBeFIlsi54AYsFGUuhmvrQ==} engines: {node: '>= 0.4'} - siginfo@2.0.0: - resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} - signal-exit@3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} @@ -9838,9 +10406,6 @@ packages: engines: {node: '>=0.10.0'} hasBin: true - stackback@0.0.2: - resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} - start-server-and-test@1.12.1: resolution: {integrity: sha512-qGQ2HQiF2yDIfyaHsXkHfoE5UOl4zJUbJ/gx2xOkfX7iPMXW9qHmoFyaMfIDJVLNkxCK7RxSrvWEI9hNVKQluw==} engines: {node: '>=6'} @@ -9861,6 +10426,21 @@ packages: resolution: {integrity: sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw==} engines: {node: '>=4', npm: '>=6'} + storybook@10.6.1: + resolution: {integrity: sha512-NeEmukMWPA5OqHizUkQtxCIhGt7MUZLPY4FFgpC0LNiipjrac/oKpH0TxI+9Zc+vI5+IoN+NiskOmBP7gtYfmA==} + hasBin: true + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + prettier: ^2 || ^3 + vite-plus: ^0.1.15 || ^0.2.0 + peerDependenciesMeta: + '@types/react': + optional: true + prettier: + optional: true + vite-plus: + optional: true + stream-combiner@0.0.4: resolution: {integrity: sha512-rT00SPnTVyRsaSz5zgSPma/aHSOic5U1prhYdRy5HS2kTZviFpmDgzilbtsJsxiroqACmayynDN/9VzIbX5DOw==} @@ -9964,6 +10544,10 @@ packages: resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} engines: {node: '>=8'} + strip-indent@4.1.1: + resolution: {integrity: sha512-SlyRoSkdh1dYP0PzclLE7r0M9sgbFKKMFXpFRUMNuKhQSbC6VQIGzq3E0qsfvGJaUFJPGv6Ws1NZ/haTAjfbMA==} + engines: {node: '>=12'} + strip-json-comments@2.0.1: resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} engines: {node: '>=0.10.0'} @@ -9997,12 +10581,6 @@ packages: babel-plugin-macros: optional: true - subscriptions-transport-ws@0.11.0: - resolution: {integrity: sha512-8D4C6DIH5tGiAIpp5I0wD/xRlNiZAPGHygzCe7VzyzUoxHtawzjNAY9SUTXU05/EY2NMY9/9GF0ycizkXr1CWQ==} - deprecated: The `subscriptions-transport-ws` package is no longer maintained. We recommend you use `graphql-ws` instead. For help migrating Apollo software to `graphql-ws`, see https://www.apollographql.com/docs/apollo-server/data/subscriptions/#switching-from-subscriptions-transport-ws For general help using `graphql-ws`, see https://github.com/enisdenjo/graphql-ws/blob/master/README.md - peerDependencies: - graphql: ^15.7.2 || ^16.0.0 - success-symbol@0.1.0: resolution: {integrity: sha512-7S6uOTxPklNGxOSbDIg4KlVLBQw1UiGVyfCUYgYxrZUKRblUkmGj7r8xlfQoFudvqLv6Ap5gd76/IIFfI9JG2A==} engines: {node: '>=0.10.0'} @@ -10054,10 +10632,6 @@ packages: engines: {node: '>=16'} hasBin: true - symbol-observable@1.2.0: - resolution: {integrity: sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==} - engines: {node: '>=0.10.0'} - symbol-tree@3.2.4: resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} @@ -10166,8 +10740,12 @@ packages: resolution: {integrity: sha512-YBGpG4bWsHoPvofT6y/5iqulfXIiIErl5B0LdtHT1mGXDFTAhhRrbUpTvBgYbovr+3cKblya2WAOcpoy90XguA==} engines: {node: '>=16'} - tinybench@2.9.0: - resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} + tiny-invariant@1.3.3: + resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} + + tinybench@6.2.1: + resolution: {integrity: sha512-IAbQaPJIIdhVxi0mqy9lez1wEwje0UQf9F1vwtbelEG5Nbgn0nPOxCvU+mNeNS9gyJTAhrHp74CbUaSynQpZcQ==} + engines: {node: '>=20.0.0'} tinyexec@1.3.1: resolution: {integrity: sha512-GCvB3aoys96IuDFBMcTB46JOR6mdMtAToqwiW8JlWhsoh1mhHi/xn9ss/Dg7N555GiJyEt2qzoG/NHCwM6h1EA==} @@ -10181,8 +10759,16 @@ packages: resolution: {integrity: sha512-9YodfrxS9g9IbFr/KOjE5bAeJ0p61n3bW6mqvy0jtoeKd1kTW1Cxm0oulm6KX2lyM9Gl6WIe8nEbY7LWv5ZJww==} engines: {node: ^20.0.0 || >=22.0.0} - tinyrainbow@3.1.1: - resolution: {integrity: sha512-yau8yJdTt989Mm0Bd/236QnzEiPf2xLLTqUZRUJOo/3CB078LSwzei343DgtJVmfJKJE3TMINY1u42SQsP6mXw==} + tinyrainbow@2.0.0: + resolution: {integrity: sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==} + engines: {node: '>=14.0.0'} + + tinyrainbow@3.2.0: + resolution: {integrity: sha512-LgO3D9yZJjApUiuUfl9iFAwrtaX4+lok3wJIqttGoKCHlWUqHqbQpnxCf82L8FjgKsh4iGo78hqJwgL8F6To2A==} + engines: {node: '>=14.0.0'} + + tinyspy@4.0.6: + resolution: {integrity: sha512-u8KszXvGfU68hVcZpRHKG28T0krMuv2G5nDhiHaMLen/gIuFEgIJhaJuO69qjnXg5paSrbPMFfx3brNuN8eVSg==} engines: {node: '>=14.0.0'} tldts-core@6.1.86: @@ -10207,9 +10793,6 @@ packages: resolution: {integrity: sha512-e0votIpp4Uo2AJYSzVHV6xCcawuiez3DzqDAbrTc3YxBkplN6e+dM13ZeIcZnDg/QpSuU2zfZ3rzwY8ukEnaXw==} engines: {node: '>=14.14'} - tmpl@1.0.5: - resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} - to-file@0.2.0: resolution: {integrity: sha512-xLyYVRKJQTwy2tKMOLD0M0yL+YSZVgMAzkaY9hh7GhzgBBHSIWARDkgPx8krPPm0mW5CgoIFsQEdKRFOyIRdqg==} engines: {node: '>=0.10.0'} @@ -10265,6 +10848,10 @@ packages: resolution: {integrity: sha512-C4+gOpvmxaSMKuEf9Qc134F1ZuOHVXKRbtEflf4NTtuuJDEIJ9p5PXsalL8SkeRw+qit1Mo+yuvMPAKwWg/1hA==} engines: {node: '>=8'} + ts-dedent@2.3.0: + resolution: {integrity: sha512-JfJeIHke7y2egdGGgRAvpCwYFUsHlM2gPcrVOxFkznt/4uzQ7HFmvE63iFHVLBJNDuyDOQgijDK/tXH/f6Msjg==} + engines: {node: '>=6.10'} + ts-interface-checker@0.1.13: resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} @@ -10275,6 +10862,10 @@ packages: peerDependencies: typescript: '>=2.7' + tsconfig-paths@4.2.0: + resolution: {integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==} + engines: {node: '>=6'} + tslib@1.14.1: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} @@ -10391,6 +10982,11 @@ packages: engines: {node: '>=14.17'} hasBin: true + typescript@7.1.0-beta: + resolution: {integrity: sha512-cjWjZAJDsmZzsNC5GwHNlW0YPM65jZa5oR0KyQcYX3KSVIfTvtBq//vewISyatKk4OLi5grZjHhIVE9fdrw1UQ==} + engines: {node: '>=16.20.0'} + hasBin: true + uc.micro@3.0.0: resolution: {integrity: sha512-U3PppEkleoTnIfi8BozMx3yju3qc/L6SwqWo2Sw+54PX+PX0q9I+r1Um5HCmqD7n9VDX5/v3vQH/AjA6deDdtw==} @@ -10568,13 +11164,8 @@ packages: vite: optional: true - vite-plugin-monaco-editor@1.1.0: - resolution: {integrity: sha512-IvtUqZotrRoVqwT0PBBDIZPNraya3BxN/bfcNfnxZ5rkJiGcNtO5eAOWWSgT7zullIAEqQwxMU83yL9J5k7gww==} - peerDependencies: - monaco-editor: '>=0.33.0' - - vite-plugin-svgr@4.3.0: - resolution: {integrity: sha512-Jy9qLB2/PyWklpYy0xk0UU3TlU0t2UMpJXZvf+hWII1lAmRHrOUKi11Uw8N3rxoNk7atZNYO3pR3vI1f7oi+6w==} + vite-plugin-svgr@5.2.0: + resolution: {integrity: sha512-qj2eAKF8C6PZWemVTvQA0xgQIcP1hHU6Buh7fl6BhvayWwnuxE+z417miKxeDvRWbDrupQ1oK99hfxElopJ3sQ==} peerDependencies: vite: 8.2.4 @@ -10621,25 +11212,25 @@ packages: yaml: optional: true - vitest-canvas-mock@1.1.4: - resolution: {integrity: sha512-4boWHY+STwAxGl1+uwakNNoQky5EjPLC8HuponXNoAscYyT1h/F7RUvTkl4IyF/MiWr3V8Q626je3Iel3eArqA==} + vitest-canvas-mock@1.2.0: + resolution: {integrity: sha512-gTy8+dL7aDFZq2EOGCk5krSVsvszTW/M+58efNzybehZNakON2HiPfi3bDBAp85L8DL+D+f/cNtQ5N60rZEL7A==} peerDependencies: - vitest: ^3.0.0 || ^4.0.0 + vitest: ^3.0.0 || ^4.0.0 || ^5.0.0 - vitest@4.1.11: - resolution: {integrity: sha512-fhACrNXUidIbGSBr5FlbuBkO7VWC1ZyLl0DO4CU2DrQoAPxX84Ysxs+HeGQpii5lZWV1Q4gBZTTu49mF+A6Edw==} - engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} + vitest@5.0.3: + resolution: {integrity: sha512-xMw97S3rjdtj5dkVat7jCsqWBpvchs3RlpQctUqwJD0KkERk40vz2fJ77lDwW/Vzh/pk18eItYAzkodhSes3jQ==} + engines: {node: ^22.12.0 || ^24.0.0 || >=26.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' '@opentelemetry/api': ^1.9.0 - '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0 - '@vitest/browser-playwright': 4.1.11 - '@vitest/browser-preview': 4.1.11 - '@vitest/browser-webdriverio': 4.1.11 - '@vitest/coverage-istanbul': 4.1.11 - '@vitest/coverage-v8': 4.1.11 - '@vitest/ui': 4.1.11 + '@types/node': ^22.0.0 || >=24.0.0 + '@vitest/browser-playwright': 5.0.3 + '@vitest/browser-preview': 5.0.3 + '@vitest/browser-webdriverio': ^5.0.0-beta.5 || >=5.0.0 + '@vitest/coverage-istanbul': 5.0.3 + '@vitest/coverage-v8': 5.0.3 + '@vitest/ui': 5.0.3 happy-dom: '*' jsdom: '*' vite: 8.2.4 @@ -10728,13 +11319,6 @@ packages: engines: {node: '>=8.9.0'} hasBin: true - walker@1.0.8: - resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} - - watch@0.10.0: - resolution: {integrity: sha512-FAk18nzhYggg939xgRRLJjvqmAKZciO24wr8neoxNPl87w8J3m784wxL4zFBwME+0gNQ2Sv/vfsCrUxPxU2Dmg==} - engines: {'0': node >=0.1.95} - watchpack@2.5.1: resolution: {integrity: sha512-Zn5uXdcFNIA1+1Ei5McRd+iRzfhENPCe7LeABkJtNulSxjma+l7ltNx55BWZkRlwRnpOgHqxnjyaDgJnNXnqzg==} engines: {node: '>=10.13.0'} @@ -10900,9 +11484,9 @@ packages: engines: {node: '>= 8'} hasBin: true - why-is-node-running@2.3.0: - resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} - engines: {node: '>=8'} + why-is-node-running@3.2.1: + resolution: {integrity: sha512-Tb2FUhB4vUsGQlfSquQLYkApkuPAFQXGFzxWKHHumVz2dK+X1RUm/HnID4+TfIGYJ1kTcwOaCk/buYCEJr6YjQ==} + engines: {node: '>=20.11'} hasBin: true wide-align@1.1.3: @@ -10973,12 +11557,6 @@ packages: workbox-window@7.4.0: resolution: {integrity: sha512-/bIYdBLAVsNR3v7gYGaV4pQW3M3kEPx5E8vDxGvxo6khTrGtSSCS7QiFKv9ogzBgZiy0OXLP9zO28U/1nF1mfw==} - worker-loader@2.0.0: - resolution: {integrity: sha512-tnvNp4K3KQOpfRnD20m8xltE3eWh89Ye+5oj7wXEEHKac1P4oZ6p9oTj8/8ExqoSBnk9nu5Pr4nKfQ1hn2APJw==} - engines: {node: '>= 6.9.0 || >= 8.9.0'} - peerDependencies: - webpack: ^3.0.0 || ^4.0.0-alpha.0 || ^4.0.0 - workerpool@6.2.1: resolution: {integrity: sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==} @@ -11021,6 +11599,22 @@ packages: utf-8-validate: optional: true + ws@8.21.3: + resolution: {integrity: sha512-201TZ/kPWxoPr/OKWjquZR1SWKXcvxdH+e1xrx89b3YbmzLMFCLfnaG1HFIgWzJOEWZ7MvpK++odZufgYR50Rw==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + wsl-utils@0.1.0: + resolution: {integrity: sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw==} + engines: {node: '>=18'} + wsl-utils@1.0.0: resolution: {integrity: sha512-Hl0ZOAs672vg+06kfujwRhoS6/jehvULrlFkuF2dRu6pHgA8U06h3xqNIqNNU1LTXPcedxByAR4GS6pwQK0mgA==} engines: {node: '>=20'} @@ -11163,9 +11757,9 @@ packages: snapshots: - '@0no-co/graphql.web@1.2.0(graphql@16.13.2)': + '@0no-co/graphql.web@1.2.0(graphql@16.14.2)': optionalDependencies: - graphql: 16.13.2 + graphql: 16.14.2 '@adobe/css-tools@4.5.0': {} @@ -11196,7 +11790,7 @@ snapshots: '@asamuzakjp/nwsapi@2.3.9': {} - '@astrojs/compiler@2.10.1': {} + '@astrojs/compiler@4.0.0': {} '@azu/format-text@1.0.2': {} @@ -11510,29 +12104,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.29.7)': - dependencies: - '@babel/core': 7.29.7 - '@babel/helper-create-class-features-plugin': 7.29.7(@babel/core@7.29.7) - '@babel/helper-plugin-utils': 7.29.7 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.29.7)': - dependencies: - '@babel/core': 7.29.7 - '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.29.7) - - '@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.29.7)': - dependencies: - '@babel/core': 7.29.7 - '@babel/helper-plugin-utils': 7.29.7 - '@babel/helper-skip-transparent-expression-wrappers': 7.29.7 - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.29.7) - transitivePeerDependencies: - - supports-color - '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 @@ -11557,16 +12128,6 @@ snapshots: '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.29.7)': - dependencies: - '@babel/core': 7.29.7 - '@babel/helper-plugin-utils': 7.29.7 - - '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.29.7)': - dependencies: - '@babel/core': 7.29.7 - '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-syntax-typescript@7.29.7(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 @@ -11961,11 +12522,6 @@ snapshots: '@babel/helper-create-regexp-features-plugin': 7.29.7(@babel/core@7.29.7) '@babel/helper-plugin-utils': 7.29.7 - '@babel/polyfill@7.12.1': - dependencies: - core-js: 2.6.12 - regenerator-runtime: 0.13.11 - '@babel/preset-env@7.29.7(@babel/core@7.29.7)': dependencies: '@babel/compat-data': 7.29.7 @@ -12114,10 +12670,24 @@ snapshots: '@babel/helper-string-parser': 8.0.0 '@babel/helper-validator-identifier': 8.0.4 + '@blazediff/core@1.10.0': {} + '@bramus/specificity@2.4.2': dependencies: css-tree: 3.2.1 + '@cacheable/memory@2.2.0': + dependencies: + '@cacheable/utils': 2.5.0 + '@keyv/bigmap': 1.3.1(keyv@5.6.0) + hookified: 1.15.1 + keyv: 5.6.0 + + '@cacheable/utils@2.5.0': + dependencies: + hashery: 1.5.1 + keyv: 5.6.0 + '@changesets/apply-release-plan@7.0.4': dependencies: '@babel/runtime': 7.27.0 @@ -12614,11 +13184,43 @@ snapshots: '@discoveryjs/json-ext@1.1.0': {} + '@emnapi/core@1.11.0': + dependencies: + '@emnapi/wasi-threads': 1.2.2 + tslib: 2.8.1 + optional: true + + '@emnapi/core@1.9.2': + dependencies: + '@emnapi/wasi-threads': 1.2.1 + tslib: 2.8.1 + optional: true + + '@emnapi/runtime@1.11.0': + dependencies: + tslib: 2.8.1 + optional: true + '@emnapi/runtime@1.11.3': dependencies: tslib: 2.8.1 optional: true + '@emnapi/runtime@1.9.2': + dependencies: + tslib: 2.8.1 + optional: true + + '@emnapi/wasi-threads@1.2.1': + dependencies: + tslib: 2.8.1 + optional: true + + '@emnapi/wasi-threads@1.2.2': + dependencies: + tslib: 2.8.1 + optional: true + '@envelop/core@5.5.1': dependencies: '@envelop/instrumentation': 1.0.0 @@ -12788,50 +13390,34 @@ snapshots: '@esbuild/win32-x64@0.28.2': optional: true - '@eslint-community/eslint-utils@4.10.1(eslint@9.39.5(jiti@2.6.1))': + '@eslint-community/eslint-utils@4.10.1(eslint@10.12.0(jiti@2.6.1))': dependencies: - eslint: 9.39.5(jiti@2.6.1) + eslint: 10.12.0(jiti@2.6.1) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.2': {} - '@eslint/config-array@0.21.2': + '@eslint/config-array@0.23.5': dependencies: - '@eslint/object-schema': 2.1.7 + '@eslint/object-schema': 3.0.5 debug: 4.4.3(supports-color@8.1.1) - minimatch: 3.1.5 + minimatch: 10.2.6 transitivePeerDependencies: - supports-color - '@eslint/config-helpers@0.4.2': + '@eslint/config-helpers@0.7.0': dependencies: - '@eslint/core': 0.17.0 + '@eslint/core': 1.2.1 - '@eslint/core@0.17.0': + '@eslint/core@1.2.1': dependencies: '@types/json-schema': 7.0.15 - '@eslint/eslintrc@3.3.7': - dependencies: - ajv: 6.15.0 - debug: 4.4.3(supports-color@8.1.1) - espree: 10.4.0 - globals: 14.0.0 - ignore: 5.3.2 - import-fresh: 3.3.1 - js-yaml: 4.3.2 - minimatch: 3.1.5 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - supports-color - - '@eslint/js@9.39.5': {} + '@eslint/object-schema@3.0.5': {} - '@eslint/object-schema@2.1.7': {} - - '@eslint/plugin-kit@0.4.1': + '@eslint/plugin-kit@0.7.3': dependencies: - '@eslint/core': 0.17.0 + '@eslint/core': 1.2.1 levn: 0.4.1 '@exodus/bytes@1.15.0': {} @@ -12875,50 +13461,103 @@ snapshots: '@graphql-hive/signal@2.0.0': {} - '@graphql-tools/batch-execute@10.0.8(graphql@16.13.2)': + '@graphql-tools/batch-execute@10.0.8(graphql@16.14.2)': + dependencies: + '@graphql-tools/utils': 11.1.0(graphql@16.14.2) + '@whatwg-node/promise-helpers': 1.3.2 + dataloader: 2.2.3 + graphql: 16.14.2 + tslib: 2.8.1 + + '@graphql-tools/batch-execute@10.0.8(graphql@17.0.2)': dependencies: - '@graphql-tools/utils': 11.1.0(graphql@16.13.2) + '@graphql-tools/utils': 11.1.0(graphql@17.0.2) '@whatwg-node/promise-helpers': 1.3.2 dataloader: 2.2.3 - graphql: 16.13.2 + graphql: 17.0.2 + tslib: 2.8.1 + + '@graphql-tools/code-file-loader@8.0.3(graphql@16.14.2)': + dependencies: + '@graphql-tools/graphql-tag-pluck': 8.1.0(graphql@16.14.2) + '@graphql-tools/utils': 10.0.1(graphql@16.14.2) + globby: 11.1.0 + graphql: 16.14.2 tslib: 2.8.1 + unixify: 1.0.0 + transitivePeerDependencies: + - supports-color - '@graphql-tools/code-file-loader@8.0.3(graphql@16.13.2)': + '@graphql-tools/code-file-loader@8.0.3(graphql@17.0.2)': dependencies: - '@graphql-tools/graphql-tag-pluck': 8.1.0(graphql@16.13.2) - '@graphql-tools/utils': 10.0.1(graphql@16.13.2) + '@graphql-tools/graphql-tag-pluck': 8.1.0(graphql@17.0.2) + '@graphql-tools/utils': 10.0.1(graphql@17.0.2) globby: 11.1.0 - graphql: 16.13.2 + graphql: 17.0.2 tslib: 2.8.1 unixify: 1.0.0 transitivePeerDependencies: - supports-color - '@graphql-tools/delegate@12.0.14(graphql@16.13.2)': + '@graphql-tools/delegate@12.0.14(graphql@16.14.2)': + dependencies: + '@graphql-tools/batch-execute': 10.0.8(graphql@16.14.2) + '@graphql-tools/executor': 1.5.3(graphql@16.14.2) + '@graphql-tools/schema': 10.0.33(graphql@16.14.2) + '@graphql-tools/utils': 11.1.0(graphql@16.14.2) + '@repeaterjs/repeater': 3.0.6 + '@whatwg-node/promise-helpers': 1.3.2 + dataloader: 2.2.3 + graphql: 16.14.2 + tslib: 2.8.1 + + '@graphql-tools/delegate@12.0.14(graphql@17.0.2)': dependencies: - '@graphql-tools/batch-execute': 10.0.8(graphql@16.13.2) - '@graphql-tools/executor': 1.5.3(graphql@16.13.2) - '@graphql-tools/schema': 10.0.33(graphql@16.13.2) - '@graphql-tools/utils': 11.1.0(graphql@16.13.2) + '@graphql-tools/batch-execute': 10.0.8(graphql@17.0.2) + '@graphql-tools/executor': 1.5.3(graphql@17.0.2) + '@graphql-tools/schema': 10.0.33(graphql@17.0.2) + '@graphql-tools/utils': 11.1.0(graphql@17.0.2) '@repeaterjs/repeater': 3.0.6 '@whatwg-node/promise-helpers': 1.3.2 dataloader: 2.2.3 - graphql: 16.13.2 + graphql: 17.0.2 tslib: 2.8.1 - '@graphql-tools/executor-common@1.0.6(graphql@16.13.2)': + '@graphql-tools/executor-common@1.0.6(graphql@16.14.2)': + dependencies: + '@envelop/core': 5.5.1 + '@graphql-tools/utils': 11.1.0(graphql@16.14.2) + graphql: 16.14.2 + + '@graphql-tools/executor-common@1.0.6(graphql@17.0.2)': dependencies: '@envelop/core': 5.5.1 - '@graphql-tools/utils': 11.1.0(graphql@16.13.2) - graphql: 16.13.2 + '@graphql-tools/utils': 11.1.0(graphql@17.0.2) + graphql: 17.0.2 + + '@graphql-tools/executor-graphql-ws@3.1.5(graphql@16.14.2)': + dependencies: + '@graphql-tools/executor-common': 1.0.6(graphql@16.14.2) + '@graphql-tools/utils': 11.1.0(graphql@16.14.2) + '@whatwg-node/disposablestack': 0.0.6 + graphql: 16.14.2 + graphql-ws: 6.3.0(graphql@16.14.2)(ws@8.21.0) + isows: 1.0.7(ws@8.21.0) + tslib: 2.8.1 + ws: 8.21.0 + transitivePeerDependencies: + - '@fastify/websocket' + - bufferutil + - crossws + - utf-8-validate - '@graphql-tools/executor-graphql-ws@3.1.5(graphql@16.13.2)': + '@graphql-tools/executor-graphql-ws@3.1.5(graphql@17.0.2)': dependencies: - '@graphql-tools/executor-common': 1.0.6(graphql@16.13.2) - '@graphql-tools/utils': 11.1.0(graphql@16.13.2) + '@graphql-tools/executor-common': 1.0.6(graphql@17.0.2) + '@graphql-tools/utils': 11.1.0(graphql@17.0.2) '@whatwg-node/disposablestack': 0.0.6 - graphql: 16.13.2 - graphql-ws: 6.0.8(graphql@16.13.2)(ws@8.21.0) + graphql: 17.0.2 + graphql-ws: 6.3.0(graphql@17.0.2)(ws@8.21.0) isows: 1.0.7(ws@8.21.0) tslib: 2.8.1 ws: 8.21.0 @@ -12928,26 +13567,53 @@ snapshots: - crossws - utf-8-validate - '@graphql-tools/executor-http@3.2.1(@types/node@24.12.2)(graphql@16.13.2)': + '@graphql-tools/executor-http@3.2.1(@types/node@24.12.2)(graphql@16.14.2)': + dependencies: + '@graphql-hive/signal': 2.0.0 + '@graphql-tools/executor-common': 1.0.6(graphql@16.14.2) + '@graphql-tools/utils': 11.1.0(graphql@16.14.2) + '@repeaterjs/repeater': 3.0.6 + '@whatwg-node/disposablestack': 0.0.6 + '@whatwg-node/fetch': 0.10.13 + '@whatwg-node/promise-helpers': 1.3.2 + graphql: 16.14.2 + meros: 1.3.2(@types/node@24.12.2) + tslib: 2.8.1 + transitivePeerDependencies: + - '@types/node' + + '@graphql-tools/executor-http@3.2.1(@types/node@24.12.2)(graphql@17.0.2)': dependencies: '@graphql-hive/signal': 2.0.0 - '@graphql-tools/executor-common': 1.0.6(graphql@16.13.2) - '@graphql-tools/utils': 11.1.0(graphql@16.13.2) + '@graphql-tools/executor-common': 1.0.6(graphql@17.0.2) + '@graphql-tools/utils': 11.1.0(graphql@17.0.2) '@repeaterjs/repeater': 3.0.6 '@whatwg-node/disposablestack': 0.0.6 '@whatwg-node/fetch': 0.10.13 '@whatwg-node/promise-helpers': 1.3.2 - graphql: 16.13.2 + graphql: 17.0.2 meros: 1.3.2(@types/node@24.12.2) tslib: 2.8.1 transitivePeerDependencies: - '@types/node' - '@graphql-tools/executor-legacy-ws@1.1.28(graphql@16.13.2)': + '@graphql-tools/executor-legacy-ws@1.1.28(graphql@16.14.2)': + dependencies: + '@graphql-tools/utils': 11.1.0(graphql@16.14.2) + '@types/ws': 8.2.2 + graphql: 16.14.2 + isomorphic-ws: 5.0.0(ws@8.21.0) + tslib: 2.8.1 + ws: 8.21.0 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + '@graphql-tools/executor-legacy-ws@1.1.28(graphql@17.0.2)': dependencies: - '@graphql-tools/utils': 11.1.0(graphql@16.13.2) + '@graphql-tools/utils': 11.1.0(graphql@17.0.2) '@types/ws': 8.2.2 - graphql: 16.13.2 + graphql: 17.0.2 isomorphic-ws: 5.0.0(ws@8.21.0) tslib: 2.8.1 ws: 8.21.0 @@ -12955,85 +13621,175 @@ snapshots: - bufferutil - utf-8-validate - '@graphql-tools/executor@1.5.3(graphql@16.13.2)': + '@graphql-tools/executor@1.5.3(graphql@16.14.2)': + dependencies: + '@graphql-tools/utils': 11.1.0(graphql@16.14.2) + '@graphql-typed-document-node/core': 3.2.0(graphql@16.14.2) + '@repeaterjs/repeater': 3.0.6 + '@whatwg-node/disposablestack': 0.0.6 + '@whatwg-node/promise-helpers': 1.3.2 + graphql: 16.14.2 + tslib: 2.8.1 + + '@graphql-tools/executor@1.5.3(graphql@17.0.2)': dependencies: - '@graphql-tools/utils': 11.1.0(graphql@16.13.2) - '@graphql-typed-document-node/core': 3.2.0(graphql@16.13.2) + '@graphql-tools/utils': 11.1.0(graphql@17.0.2) + '@graphql-typed-document-node/core': 3.2.0(graphql@17.0.2) '@repeaterjs/repeater': 3.0.6 '@whatwg-node/disposablestack': 0.0.6 '@whatwg-node/promise-helpers': 1.3.2 - graphql: 16.13.2 + graphql: 17.0.2 + tslib: 2.8.1 + + '@graphql-tools/graphql-file-loader@8.0.0(graphql@16.14.2)': + dependencies: + '@graphql-tools/import': 7.0.0(graphql@16.14.2) + '@graphql-tools/utils': 10.0.1(graphql@16.14.2) + globby: 11.1.0 + graphql: 16.14.2 tslib: 2.8.1 + unixify: 1.0.0 - '@graphql-tools/graphql-file-loader@8.0.0(graphql@16.13.2)': + '@graphql-tools/graphql-file-loader@8.0.0(graphql@17.0.2)': dependencies: - '@graphql-tools/import': 7.0.0(graphql@16.13.2) - '@graphql-tools/utils': 10.0.1(graphql@16.13.2) + '@graphql-tools/import': 7.0.0(graphql@17.0.2) + '@graphql-tools/utils': 10.0.1(graphql@17.0.2) globby: 11.1.0 - graphql: 16.13.2 + graphql: 17.0.2 tslib: 2.8.1 unixify: 1.0.0 - '@graphql-tools/graphql-tag-pluck@8.1.0(graphql@16.13.2)': + '@graphql-tools/graphql-tag-pluck@8.1.0(graphql@16.14.2)': + dependencies: + '@babel/core': 7.29.7 + '@babel/parser': 7.29.8 + '@babel/plugin-syntax-import-assertions': 7.29.7(@babel/core@7.29.7) + '@babel/traverse': 7.29.8 + '@babel/types': 7.29.8 + '@graphql-tools/utils': 10.0.1(graphql@16.14.2) + graphql: 16.14.2 + tslib: 2.8.1 + transitivePeerDependencies: + - supports-color + + '@graphql-tools/graphql-tag-pluck@8.1.0(graphql@17.0.2)': dependencies: '@babel/core': 7.29.7 '@babel/parser': 7.29.8 '@babel/plugin-syntax-import-assertions': 7.29.7(@babel/core@7.29.7) '@babel/traverse': 7.29.8 '@babel/types': 7.29.8 - '@graphql-tools/utils': 10.0.1(graphql@16.13.2) - graphql: 16.13.2 + '@graphql-tools/utils': 10.0.1(graphql@17.0.2) + graphql: 17.0.2 tslib: 2.8.1 transitivePeerDependencies: - supports-color - '@graphql-tools/import@7.0.0(graphql@16.13.2)': + '@graphql-tools/import@7.0.0(graphql@16.14.2)': + dependencies: + '@graphql-tools/utils': 10.0.1(graphql@16.14.2) + graphql: 16.14.2 + resolve-from: 5.0.0 + tslib: 2.8.1 + + '@graphql-tools/import@7.0.0(graphql@17.0.2)': dependencies: - '@graphql-tools/utils': 10.0.1(graphql@16.13.2) - graphql: 16.13.2 + '@graphql-tools/utils': 10.0.1(graphql@17.0.2) + graphql: 17.0.2 resolve-from: 5.0.0 tslib: 2.8.1 - '@graphql-tools/json-file-loader@8.0.0(graphql@16.13.2)': + '@graphql-tools/json-file-loader@8.0.0(graphql@16.14.2)': + dependencies: + '@graphql-tools/utils': 10.0.1(graphql@16.14.2) + globby: 11.1.0 + graphql: 16.14.2 + tslib: 2.8.1 + unixify: 1.0.0 + + '@graphql-tools/json-file-loader@8.0.0(graphql@17.0.2)': dependencies: - '@graphql-tools/utils': 10.0.1(graphql@16.13.2) + '@graphql-tools/utils': 10.0.1(graphql@17.0.2) globby: 11.1.0 - graphql: 16.13.2 + graphql: 17.0.2 tslib: 2.8.1 unixify: 1.0.0 - '@graphql-tools/load@8.1.10(graphql@16.13.2)': + '@graphql-tools/load@8.1.10(graphql@16.14.2)': + dependencies: + '@graphql-tools/schema': 10.0.33(graphql@16.14.2) + '@graphql-tools/utils': 11.1.0(graphql@16.14.2) + graphql: 16.14.2 + p-limit: 3.1.0 + tslib: 2.8.1 + + '@graphql-tools/load@8.1.10(graphql@17.0.2)': dependencies: - '@graphql-tools/schema': 10.0.33(graphql@16.13.2) - '@graphql-tools/utils': 11.1.0(graphql@16.13.2) - graphql: 16.13.2 + '@graphql-tools/schema': 10.0.33(graphql@17.0.2) + '@graphql-tools/utils': 11.1.0(graphql@17.0.2) + graphql: 17.0.2 p-limit: 3.1.0 tslib: 2.8.1 - '@graphql-tools/merge@9.1.9(graphql@16.13.2)': + '@graphql-tools/merge@9.1.9(graphql@16.14.2)': + dependencies: + '@graphql-tools/utils': 11.1.0(graphql@16.14.2) + graphql: 16.14.2 + tslib: 2.8.1 + + '@graphql-tools/merge@9.1.9(graphql@17.0.2)': + dependencies: + '@graphql-tools/utils': 11.1.0(graphql@17.0.2) + graphql: 17.0.2 + tslib: 2.8.1 + + '@graphql-tools/schema@10.0.33(graphql@16.14.2)': + dependencies: + '@graphql-tools/merge': 9.1.9(graphql@16.14.2) + '@graphql-tools/utils': 11.1.0(graphql@16.14.2) + graphql: 16.14.2 + tslib: 2.8.1 + + '@graphql-tools/schema@10.0.33(graphql@17.0.2)': dependencies: - '@graphql-tools/utils': 11.1.0(graphql@16.13.2) - graphql: 16.13.2 + '@graphql-tools/merge': 9.1.9(graphql@17.0.2) + '@graphql-tools/utils': 11.1.0(graphql@17.0.2) + graphql: 17.0.2 tslib: 2.8.1 - '@graphql-tools/schema@10.0.33(graphql@16.13.2)': + '@graphql-tools/url-loader@9.1.2(@types/node@24.12.2)(graphql@16.14.2)': dependencies: - '@graphql-tools/merge': 9.1.9(graphql@16.13.2) - '@graphql-tools/utils': 11.1.0(graphql@16.13.2) - graphql: 16.13.2 + '@graphql-tools/executor-graphql-ws': 3.1.5(graphql@16.14.2) + '@graphql-tools/executor-http': 3.2.1(@types/node@24.12.2)(graphql@16.14.2) + '@graphql-tools/executor-legacy-ws': 1.1.28(graphql@16.14.2) + '@graphql-tools/utils': 11.1.0(graphql@16.14.2) + '@graphql-tools/wrap': 11.1.14(graphql@16.14.2) + '@types/ws': 8.2.2 + '@whatwg-node/fetch': 0.10.13 + '@whatwg-node/promise-helpers': 1.3.2 + graphql: 16.14.2 + isomorphic-ws: 5.0.0(ws@8.21.0) + sync-fetch: 0.6.0 tslib: 2.8.1 + ws: 8.21.0 + transitivePeerDependencies: + - '@fastify/websocket' + - '@types/node' + - bufferutil + - crossws + - utf-8-validate - '@graphql-tools/url-loader@9.1.2(@types/node@24.12.2)(graphql@16.13.2)': + '@graphql-tools/url-loader@9.1.2(@types/node@24.12.2)(graphql@17.0.2)': dependencies: - '@graphql-tools/executor-graphql-ws': 3.1.5(graphql@16.13.2) - '@graphql-tools/executor-http': 3.2.1(@types/node@24.12.2)(graphql@16.13.2) - '@graphql-tools/executor-legacy-ws': 1.1.28(graphql@16.13.2) - '@graphql-tools/utils': 11.1.0(graphql@16.13.2) - '@graphql-tools/wrap': 11.1.14(graphql@16.13.2) + '@graphql-tools/executor-graphql-ws': 3.1.5(graphql@17.0.2) + '@graphql-tools/executor-http': 3.2.1(@types/node@24.12.2)(graphql@17.0.2) + '@graphql-tools/executor-legacy-ws': 1.1.28(graphql@17.0.2) + '@graphql-tools/utils': 11.1.0(graphql@17.0.2) + '@graphql-tools/wrap': 11.1.14(graphql@17.0.2) '@types/ws': 8.2.2 '@whatwg-node/fetch': 0.10.13 '@whatwg-node/promise-helpers': 1.3.2 - graphql: 16.13.2 + graphql: 17.0.2 isomorphic-ws: 5.0.0(ws@8.21.0) sync-fetch: 0.6.0 tslib: 2.8.1 @@ -13045,32 +13801,59 @@ snapshots: - crossws - utf-8-validate - '@graphql-tools/utils@10.0.1(graphql@16.13.2)': + '@graphql-tools/utils@10.0.1(graphql@16.14.2)': + dependencies: + '@graphql-typed-document-node/core': 3.2.0(graphql@16.14.2) + graphql: 16.14.2 + tslib: 2.8.1 + + '@graphql-tools/utils@10.0.1(graphql@17.0.2)': + dependencies: + '@graphql-typed-document-node/core': 3.2.0(graphql@17.0.2) + graphql: 17.0.2 + tslib: 2.8.1 + + '@graphql-tools/utils@11.1.0(graphql@16.14.2)': dependencies: - '@graphql-typed-document-node/core': 3.2.0(graphql@16.13.2) - graphql: 16.13.2 + '@graphql-typed-document-node/core': 3.2.0(graphql@16.14.2) + '@whatwg-node/promise-helpers': 1.3.2 + cross-inspect: 1.0.1 + graphql: 16.14.2 tslib: 2.8.1 - '@graphql-tools/utils@11.1.0(graphql@16.13.2)': + '@graphql-tools/utils@11.1.0(graphql@17.0.2)': dependencies: - '@graphql-typed-document-node/core': 3.2.0(graphql@16.13.2) + '@graphql-typed-document-node/core': 3.2.0(graphql@17.0.2) '@whatwg-node/promise-helpers': 1.3.2 cross-inspect: 1.0.1 - graphql: 16.13.2 + graphql: 17.0.2 + tslib: 2.8.1 + + '@graphql-tools/wrap@11.1.14(graphql@16.14.2)': + dependencies: + '@graphql-tools/delegate': 12.0.14(graphql@16.14.2) + '@graphql-tools/schema': 10.0.33(graphql@16.14.2) + '@graphql-tools/utils': 11.1.0(graphql@16.14.2) + '@whatwg-node/promise-helpers': 1.3.2 + graphql: 16.14.2 tslib: 2.8.1 - '@graphql-tools/wrap@11.1.14(graphql@16.13.2)': + '@graphql-tools/wrap@11.1.14(graphql@17.0.2)': dependencies: - '@graphql-tools/delegate': 12.0.14(graphql@16.13.2) - '@graphql-tools/schema': 10.0.33(graphql@16.13.2) - '@graphql-tools/utils': 11.1.0(graphql@16.13.2) + '@graphql-tools/delegate': 12.0.14(graphql@17.0.2) + '@graphql-tools/schema': 10.0.33(graphql@17.0.2) + '@graphql-tools/utils': 11.1.0(graphql@17.0.2) '@whatwg-node/promise-helpers': 1.3.2 - graphql: 16.13.2 + graphql: 17.0.2 tslib: 2.8.1 - '@graphql-typed-document-node/core@3.2.0(graphql@16.13.2)': + '@graphql-typed-document-node/core@3.2.0(graphql@16.14.2)': + dependencies: + graphql: 16.14.2 + + '@graphql-typed-document-node/core@3.2.0(graphql@17.0.2)': dependencies: - graphql: 16.13.2 + graphql: 17.0.2 '@hapi/hoek@9.3.0': {} @@ -13251,6 +14034,14 @@ snapshots: '@isaacs/cliui@9.0.0': {} + '@joshwooding/vite-plugin-react-docgen-typescript@0.7.0(typescript@5.9.3)(vite@8.2.4(@types/node@24.12.2)(esbuild@0.28.2)(jiti@2.6.1)(terser@5.46.2)(yaml@2.9.0))': + dependencies: + glob: 13.0.6 + react-docgen-typescript: 2.4.0(typescript@5.9.3) + vite: 8.2.4(@types/node@24.12.2)(esbuild@0.28.2)(jiti@2.6.1)(terser@5.46.2)(yaml@2.9.0) + optionalDependencies: + typescript: 5.9.3 + '@jridgewell/gen-mapping@0.3.13': dependencies: '@jridgewell/sourcemap-codec': 1.6.0 @@ -13403,6 +14194,14 @@ snapshots: '@jsonjoy.com/codegen': 17.67.0(tslib@2.8.1) tslib: 2.8.1 + '@keyv/bigmap@1.3.1(keyv@5.6.0)': + dependencies: + hashery: 1.5.1 + hookified: 1.15.1 + keyv: 5.6.0 + + '@keyv/serialize@1.1.1': {} + '@leichtgewicht/ip-codec@2.0.4': {} '@lezer/common@1.5.2': {} @@ -13484,6 +14283,20 @@ snapshots: '@n1ru4l/push-pull-async-iterable-iterator@3.1.0': {} + '@napi-rs/wasm-runtime@1.2.4(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0)': + dependencies: + '@emnapi/core': 1.11.0 + '@emnapi/runtime': 1.11.0 + '@tybys/wasm-util': 0.10.3 + optional: true + + '@napi-rs/wasm-runtime@1.2.4(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)': + dependencies: + '@emnapi/core': 1.9.2 + '@emnapi/runtime': 1.9.2 + '@tybys/wasm-util': 0.10.3 + optional: true + '@next/env@15.5.28': {} '@next/swc-darwin-arm64@15.5.28': @@ -13538,7 +14351,134 @@ snapshots: '@open-draft/until@2.1.0': {} - '@oxc-project/types@0.154.0': {} + '@oxc-parser/binding-android-arm-eabi@0.127.0': + optional: true + + '@oxc-parser/binding-android-arm64@0.127.0': + optional: true + + '@oxc-parser/binding-darwin-arm64@0.127.0': + optional: true + + '@oxc-parser/binding-darwin-x64@0.127.0': + optional: true + + '@oxc-parser/binding-freebsd-x64@0.127.0': + optional: true + + '@oxc-parser/binding-linux-arm-gnueabihf@0.127.0': + optional: true + + '@oxc-parser/binding-linux-arm-musleabihf@0.127.0': + optional: true + + '@oxc-parser/binding-linux-arm64-gnu@0.127.0': + optional: true + + '@oxc-parser/binding-linux-arm64-musl@0.127.0': + optional: true + + '@oxc-parser/binding-linux-ppc64-gnu@0.127.0': + optional: true + + '@oxc-parser/binding-linux-riscv64-gnu@0.127.0': + optional: true + + '@oxc-parser/binding-linux-riscv64-musl@0.127.0': + optional: true + + '@oxc-parser/binding-linux-s390x-gnu@0.127.0': + optional: true + + '@oxc-parser/binding-linux-x64-gnu@0.127.0': + optional: true + + '@oxc-parser/binding-linux-x64-musl@0.127.0': + optional: true + + '@oxc-parser/binding-openharmony-arm64@0.127.0': + optional: true + + '@oxc-parser/binding-wasm32-wasi@0.127.0': + dependencies: + '@emnapi/core': 1.9.2 + '@emnapi/runtime': 1.9.2 + '@napi-rs/wasm-runtime': 1.2.4(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2) + optional: true + + '@oxc-parser/binding-win32-arm64-msvc@0.127.0': + optional: true + + '@oxc-parser/binding-win32-ia32-msvc@0.127.0': + optional: true + + '@oxc-parser/binding-win32-x64-msvc@0.127.0': + optional: true + + '@oxc-project/types@0.127.0': {} + + '@oxc-project/types@0.149.0': {} + + '@oxc-resolver/binding-android-arm-eabi@11.21.2': + optional: true + + '@oxc-resolver/binding-android-arm64@11.21.2': + optional: true + + '@oxc-resolver/binding-darwin-arm64@11.21.2': + optional: true + + '@oxc-resolver/binding-darwin-x64@11.21.2': + optional: true + + '@oxc-resolver/binding-freebsd-x64@11.21.2': + optional: true + + '@oxc-resolver/binding-linux-arm-gnueabihf@11.21.2': + optional: true + + '@oxc-resolver/binding-linux-arm-musleabihf@11.21.2': + optional: true + + '@oxc-resolver/binding-linux-arm64-gnu@11.21.2': + optional: true + + '@oxc-resolver/binding-linux-arm64-musl@11.21.2': + optional: true + + '@oxc-resolver/binding-linux-ppc64-gnu@11.21.2': + optional: true + + '@oxc-resolver/binding-linux-riscv64-gnu@11.21.2': + optional: true + + '@oxc-resolver/binding-linux-riscv64-musl@11.21.2': + optional: true + + '@oxc-resolver/binding-linux-s390x-gnu@11.21.2': + optional: true + + '@oxc-resolver/binding-linux-x64-gnu@11.21.2': + optional: true + + '@oxc-resolver/binding-linux-x64-musl@11.21.2': + optional: true + + '@oxc-resolver/binding-openharmony-arm64@11.21.2': + optional: true + + '@oxc-resolver/binding-wasm32-wasi@11.21.2': + dependencies: + '@emnapi/core': 1.11.0 + '@emnapi/runtime': 1.11.0 + '@napi-rs/wasm-runtime': 1.2.4(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0) + optional: true + + '@oxc-resolver/binding-win32-arm64-msvc@11.21.2': + optional: true + + '@oxc-resolver/binding-win32-x64-msvc@11.21.2': + optional: true '@oxfmt/binding-android-arm-eabi@0.67.0': optional: true @@ -14075,7 +15015,7 @@ snapshots: '@react-aria/interactions': 3.25.0(react-dom@19.2.7(react@19.2.7))(react@19.2.7) '@react-aria/utils': 3.28.2(react-dom@19.2.7(react@19.2.7))(react@19.2.7) '@react-types/shared': 3.29.0(react@19.2.7) - '@swc/helpers': 0.5.23 + '@swc/helpers': 0.5.17 clsx: 2.1.1 react: 19.2.7 react-dom: 19.2.7(react@19.2.7) @@ -14086,13 +15026,13 @@ snapshots: '@react-aria/utils': 3.28.2(react-dom@19.2.7(react@19.2.7))(react@19.2.7) '@react-stately/flags': 3.1.1 '@react-types/shared': 3.29.0(react@19.2.7) - '@swc/helpers': 0.5.23 + '@swc/helpers': 0.5.17 react: 19.2.7 react-dom: 19.2.7(react@19.2.7) '@react-aria/ssr@3.9.8(react@19.2.7)': dependencies: - '@swc/helpers': 0.5.23 + '@swc/helpers': 0.5.17 react: 19.2.7 '@react-aria/utils@3.28.2(react-dom@19.2.7(react@19.2.7))(react@19.2.7)': @@ -14101,7 +15041,7 @@ snapshots: '@react-stately/flags': 3.1.1 '@react-stately/utils': 3.10.6(react@19.2.7) '@react-types/shared': 3.29.0(react@19.2.7) - '@swc/helpers': 0.5.23 + '@swc/helpers': 0.5.17 clsx: 2.1.1 react: 19.2.7 react-dom: 19.2.7(react@19.2.7) @@ -14178,11 +15118,11 @@ snapshots: '@react-stately/flags@3.1.1': dependencies: - '@swc/helpers': 0.5.23 + '@swc/helpers': 0.5.17 '@react-stately/utils@3.10.6(react@19.2.7)': dependencies: - '@swc/helpers': 0.5.23 + '@swc/helpers': 0.5.17 react: 19.2.7 '@react-types/shared@3.29.0(react@19.2.7)': @@ -14193,49 +15133,49 @@ snapshots: '@repeaterjs/repeater@3.0.6': {} - '@rolldown/binding-android-arm-eabi@1.2.14': + '@rolldown/binding-android-arm-eabi@1.2.8': optional: true - '@rolldown/binding-android-arm64@1.2.14': + '@rolldown/binding-android-arm64@1.2.8': optional: true - '@rolldown/binding-darwin-arm64@1.2.14': + '@rolldown/binding-darwin-arm64@1.2.8': optional: true - '@rolldown/binding-darwin-x64@1.2.14': + '@rolldown/binding-darwin-x64@1.2.8': optional: true - '@rolldown/binding-freebsd-x64@1.2.14': + '@rolldown/binding-freebsd-x64@1.2.8': optional: true - '@rolldown/binding-linux-arm-gnueabihf@1.2.14': + '@rolldown/binding-linux-arm-gnueabihf@1.2.8': optional: true - '@rolldown/binding-linux-arm64-gnu@1.2.14': + '@rolldown/binding-linux-arm64-gnu@1.2.8': optional: true - '@rolldown/binding-linux-arm64-musl@1.2.14': + '@rolldown/binding-linux-arm64-musl@1.2.8': optional: true - '@rolldown/binding-linux-ppc64-gnu@1.2.14': + '@rolldown/binding-linux-ppc64-gnu@1.2.8': optional: true - '@rolldown/binding-linux-s390x-gnu@1.2.14': + '@rolldown/binding-linux-s390x-gnu@1.2.8': optional: true - '@rolldown/binding-linux-x64-gnu@1.2.14': + '@rolldown/binding-linux-x64-gnu@1.2.8': optional: true - '@rolldown/binding-linux-x64-musl@1.2.14': + '@rolldown/binding-linux-x64-musl@1.2.8': optional: true - '@rolldown/binding-openharmony-arm64@1.2.14': + '@rolldown/binding-openharmony-arm64@1.2.8': optional: true - '@rolldown/binding-win32-arm64-msvc@1.2.14': + '@rolldown/binding-win32-arm64-msvc@1.2.8': optional: true - '@rolldown/binding-win32-x64-msvc@1.2.14': + '@rolldown/binding-win32-x64-msvc@1.2.8': optional: true '@rolldown/pluginutils@1.0.0-rc.3': {} @@ -14504,7 +15444,84 @@ snapshots: '@sindresorhus/merge-streams@4.0.0': {} - '@standard-schema/spec@1.1.0': {} + '@storybook/addon-a11y@10.6.0(storybook@10.6.1(@types/react@19.2.14)(prettier@3.8.3)(react@19.2.7))': + dependencies: + '@storybook/global': 5.0.0 + axe-core: 4.13.0 + storybook: 10.6.1(@types/react@19.2.14)(prettier@3.8.3)(react@19.2.7) + + '@storybook/addon-vitest@10.6.1(@vitest/browser-playwright@5.0.3)(@vitest/browser@5.0.3(msw@2.13.4(@types/node@24.12.2)(typescript@5.9.3))(vite@8.2.4(@types/node@24.12.2)(esbuild@0.28.2)(jiti@2.6.1)(terser@5.46.2)(yaml@2.9.0))(vitest@5.0.3))(@vitest/runner@4.1.11)(react@19.2.7)(storybook@10.6.1(@types/react@19.2.14)(prettier@3.8.3)(react@19.2.7))(vitest@5.0.3)': + dependencies: + '@storybook/global': 5.0.0 + '@storybook/icons': 2.1.0(react@19.2.7) + storybook: 10.6.1(@types/react@19.2.14)(prettier@3.8.3)(react@19.2.7) + optionalDependencies: + '@vitest/browser': 5.0.3(msw@2.13.4(@types/node@24.12.2)(typescript@5.9.3))(vite@8.2.4(@types/node@24.12.2)(esbuild@0.28.2)(jiti@2.6.1)(terser@5.46.2)(yaml@2.9.0))(vitest@5.0.3) + '@vitest/browser-playwright': 5.0.3(msw@2.13.4(@types/node@24.12.2)(typescript@5.9.3))(playwright@1.63.0)(vite@8.2.4(@types/node@24.12.2)(esbuild@0.28.2)(jiti@2.6.1)(terser@5.46.2)(yaml@2.9.0))(vitest@5.0.3) + '@vitest/runner': 4.1.11 + vitest: 5.0.3(@types/node@24.12.2)(@vitest/browser-playwright@5.0.3)(@vitest/ui@5.0.3)(jsdom@29.0.2)(msw@2.13.4(@types/node@24.12.2)(typescript@5.9.3))(vite@8.2.4(@types/node@24.12.2)(esbuild@0.28.2)(jiti@2.6.1)(terser@5.46.2)(yaml@2.9.0)) + transitivePeerDependencies: + - react + + '@storybook/builder-vite@10.6.0(storybook@10.6.1(@types/react@19.2.14)(prettier@3.8.3)(react@19.2.7))(vite@8.2.4(@types/node@24.12.2)(esbuild@0.28.2)(jiti@2.6.1)(terser@5.46.2)(yaml@2.9.0))': + dependencies: + storybook: 10.6.1(@types/react@19.2.14)(prettier@3.8.3)(react@19.2.7) + ts-dedent: 2.3.0 + vite: 8.2.4(@types/node@24.12.2)(esbuild@0.28.2)(jiti@2.6.1)(terser@5.46.2)(yaml@2.9.0) + + '@storybook/global@5.0.0': {} + + '@storybook/icons@2.1.0(react@19.2.7)': + dependencies: + react: 19.2.7 + + '@storybook/react-dom-shim@10.6.0(@types/react-dom@19.1.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(storybook@10.6.1(@types/react@19.2.14)(prettier@3.8.3)(react@19.2.7))': + dependencies: + react: 19.2.7 + react-dom: 19.2.7(react@19.2.7) + storybook: 10.6.1(@types/react@19.2.14)(prettier@3.8.3)(react@19.2.7) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.1.3(@types/react@19.2.14) + + '@storybook/react-vite@10.6.0(@types/react-dom@19.1.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(rollup@4.40.1)(storybook@10.6.1(@types/react@19.2.14)(prettier@3.8.3)(react@19.2.7))(typescript@5.9.3)(vite@8.2.4(@types/node@24.12.2)(esbuild@0.28.2)(jiti@2.6.1)(terser@5.46.2)(yaml@2.9.0))': + dependencies: + '@joshwooding/vite-plugin-react-docgen-typescript': 0.7.0(typescript@5.9.3)(vite@8.2.4(@types/node@24.12.2)(esbuild@0.28.2)(jiti@2.6.1)(terser@5.46.2)(yaml@2.9.0)) + '@rollup/pluginutils': 5.3.0(rollup@4.40.1) + '@storybook/builder-vite': 10.6.0(storybook@10.6.1(@types/react@19.2.14)(prettier@3.8.3)(react@19.2.7))(vite@8.2.4(@types/node@24.12.2)(esbuild@0.28.2)(jiti@2.6.1)(terser@5.46.2)(yaml@2.9.0)) + '@storybook/react': 10.6.0(@types/react-dom@19.1.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(storybook@10.6.1(@types/react@19.2.14)(prettier@3.8.3)(react@19.2.7))(typescript@5.9.3) + empathic: 2.0.1 + magic-string: 1.3.1 + react: 19.2.7 + react-docgen: 8.0.3 + react-dom: 19.2.7(react@19.2.7) + resolve: 1.22.12 + storybook: 10.6.1(@types/react@19.2.14)(prettier@3.8.3)(react@19.2.7) + tsconfig-paths: 4.2.0 + vite: 8.2.4(@types/node@24.12.2)(esbuild@0.28.2)(jiti@2.6.1)(terser@5.46.2)(yaml@2.9.0) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - '@types/react' + - '@types/react-dom' + - rollup + - supports-color + + '@storybook/react@10.6.0(@types/react-dom@19.1.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(storybook@10.6.1(@types/react@19.2.14)(prettier@3.8.3)(react@19.2.7))(typescript@5.9.3)': + dependencies: + '@storybook/global': 5.0.0 + '@storybook/react-dom-shim': 10.6.0(@types/react-dom@19.1.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(storybook@10.6.1(@types/react@19.2.14)(prettier@3.8.3)(react@19.2.7)) + react: 19.2.7 + react-docgen: 8.0.3 + react-docgen-typescript: 2.4.0(typescript@5.9.3) + react-dom: 19.2.7(react@19.2.7) + storybook: 10.6.1(@types/react@19.2.14)(prettier@3.8.3)(react@19.2.7) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.1.3(@types/react@19.2.14) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color '@surma/rollup-plugin-off-main-thread@2.2.3': dependencies: @@ -14590,7 +15607,7 @@ snapshots: dependencies: tslib: 2.8.1 - '@swc/helpers@0.5.23': + '@swc/helpers@0.5.17': dependencies: tslib: 2.8.1 @@ -14606,39 +15623,52 @@ snapshots: '@tanstack/virtual-core@3.13.6': {} - '@testing-library/dom@10.4.0': + '@testing-library/dom@10.4.1': dependencies: '@babel/code-frame': 7.29.7 '@babel/runtime': 7.27.0 '@types/aria-query': 5.0.4 aria-query: 5.3.0 - chalk: 4.1.2 dom-accessibility-api: 0.5.16 lz-string: 1.5.0 + picocolors: 1.1.1 pretty-format: 27.5.1 - '@testing-library/jest-dom@7.0.1(@testing-library/dom@10.4.0)(vitest@4.1.11(@types/node@24.12.2)(jsdom@29.0.2)(msw@2.13.4(@types/node@24.12.2)(typescript@5.9.3))(vite@8.2.4(@types/node@24.12.2)(esbuild@0.28.2)(jiti@2.6.1)(terser@5.46.2)(yaml@2.9.0)))': + '@testing-library/jest-dom@6.9.1': + dependencies: + '@adobe/css-tools': 4.5.0 + aria-query: 5.3.2 + css.escape: 1.5.1 + dom-accessibility-api: 0.6.3 + picocolors: 1.1.1 + redent: 3.0.0 + + '@testing-library/jest-dom@7.0.1(@testing-library/dom@10.4.1)(vitest@5.0.3)': dependencies: '@adobe/css-tools': 4.5.0 - '@testing-library/dom': 10.4.0 + '@testing-library/dom': 10.4.1 aria-query: 5.3.2 css.escape: 1.5.1 dom-accessibility-api: 0.6.3 picocolors: 1.1.1 redent: 3.0.0 optionalDependencies: - vitest: 4.1.11(@types/node@24.12.2)(jsdom@29.0.2)(msw@2.13.4(@types/node@24.12.2)(typescript@5.9.3))(vite@8.2.4(@types/node@24.12.2)(esbuild@0.28.2)(jiti@2.6.1)(terser@5.46.2)(yaml@2.9.0)) + vitest: 5.0.3(@types/node@24.12.2)(@vitest/browser-playwright@5.0.3)(@vitest/ui@5.0.3)(jsdom@29.0.2)(msw@2.13.4(@types/node@24.12.2)(typescript@5.9.3))(vite@8.2.4(@types/node@24.12.2)(esbuild@0.28.2)(jiti@2.6.1)(terser@5.46.2)(yaml@2.9.0)) - '@testing-library/react@16.3.0(@testing-library/dom@10.4.0)(@types/react-dom@19.1.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)': + '@testing-library/react@16.3.0(@testing-library/dom@10.4.1)(@types/react-dom@19.1.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)': dependencies: '@babel/runtime': 7.27.0 - '@testing-library/dom': 10.4.0 + '@testing-library/dom': 10.4.1 react: 19.2.7 react-dom: 19.2.7(react@19.2.7) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.1.3(@types/react@19.2.14) + '@testing-library/user-event@14.6.7(@testing-library/dom@10.4.1)': + dependencies: + '@testing-library/dom': 10.4.1 + '@textlint/ast-node-types@15.8.0': {} '@textlint/linter-formatter@15.8.0': @@ -14685,6 +15715,11 @@ snapshots: '@turbo/windows-arm64@2.9.14': optional: true + '@tybys/wasm-util@0.10.3': + dependencies: + tslib: 2.8.1 + optional: true + '@types/argparse@1.0.38': {} '@types/aria-query@5.0.4': {} @@ -14695,7 +15730,7 @@ snapshots: '@babel/types': 7.29.8 '@types/babel__generator': 7.6.2 '@types/babel__template': 7.4.0 - '@types/babel__traverse': 7.20.1 + '@types/babel__traverse': 7.28.0 '@types/babel__generator@7.6.2': dependencies: @@ -14706,7 +15741,7 @@ snapshots: '@babel/parser': 7.29.8 '@babel/types': 7.29.8 - '@types/babel__traverse@7.20.1': + '@types/babel__traverse@7.28.0': dependencies: '@babel/types': 7.29.8 @@ -14756,9 +15791,7 @@ snapshots: '@types/deep-eql@4.0.2': {} - '@types/dotenv@8.2.0': - dependencies: - dotenv: 10.0.0 + '@types/doctrine@0.0.9': {} '@types/eslint-scope@3.7.7': dependencies: @@ -14770,6 +15803,8 @@ snapshots: '@types/estree': 1.0.9 '@types/json-schema': 7.0.9 + '@types/esrecurse@4.3.1': {} + '@types/estree@0.0.39': {} '@types/estree@1.0.7': {} @@ -14919,42 +15954,74 @@ snapshots: dependencies: '@types/yargs-parser': 20.2.0 - '@typescript/native-preview-darwin-arm64@7.0.0-dev.20260707.2': + '@typescript/typescript-aix-ppc64@7.1.0-beta': optional: true - '@typescript/native-preview-darwin-x64@7.0.0-dev.20260707.2': + '@typescript/typescript-android-arm64@7.1.0-beta': optional: true - '@typescript/native-preview-linux-arm64@7.0.0-dev.20260707.2': + '@typescript/typescript-darwin-arm64@7.1.0-beta': optional: true - '@typescript/native-preview-linux-arm@7.0.0-dev.20260707.2': + '@typescript/typescript-darwin-x64@7.1.0-beta': optional: true - '@typescript/native-preview-linux-x64@7.0.0-dev.20260707.2': + '@typescript/typescript-freebsd-arm64@7.1.0-beta': optional: true - '@typescript/native-preview-win32-arm64@7.0.0-dev.20260707.2': + '@typescript/typescript-freebsd-x64@7.1.0-beta': optional: true - '@typescript/native-preview-win32-x64@7.0.0-dev.20260707.2': + '@typescript/typescript-linux-arm64@7.1.0-beta': optional: true - '@typescript/native-preview@7.0.0-dev.20260707.2': - optionalDependencies: - '@typescript/native-preview-darwin-arm64': 7.0.0-dev.20260707.2 - '@typescript/native-preview-darwin-x64': 7.0.0-dev.20260707.2 - '@typescript/native-preview-linux-arm': 7.0.0-dev.20260707.2 - '@typescript/native-preview-linux-arm64': 7.0.0-dev.20260707.2 - '@typescript/native-preview-linux-x64': 7.0.0-dev.20260707.2 - '@typescript/native-preview-win32-arm64': 7.0.0-dev.20260707.2 - '@typescript/native-preview-win32-x64': 7.0.0-dev.20260707.2 + '@typescript/typescript-linux-arm@7.1.0-beta': + optional: true + + '@typescript/typescript-linux-loong64@7.1.0-beta': + optional: true + + '@typescript/typescript-linux-mips64el@7.1.0-beta': + optional: true + + '@typescript/typescript-linux-ppc64@7.1.0-beta': + optional: true + + '@typescript/typescript-linux-riscv64@7.1.0-beta': + optional: true + + '@typescript/typescript-linux-s390x@7.1.0-beta': + optional: true + + '@typescript/typescript-linux-x64@7.1.0-beta': + optional: true + + '@typescript/typescript-netbsd-arm64@7.1.0-beta': + optional: true + + '@typescript/typescript-netbsd-x64@7.1.0-beta': + optional: true + + '@typescript/typescript-openbsd-arm64@7.1.0-beta': + optional: true + + '@typescript/typescript-openbsd-x64@7.1.0-beta': + optional: true + + '@typescript/typescript-sunos-x64@7.1.0-beta': + optional: true + + '@typescript/typescript-win32-arm64@7.1.0-beta': + optional: true + + '@typescript/typescript-win32-x64@7.1.0-beta': + optional: true '@ungap/promise-all-settled@1.1.2': {} - '@urql/core@6.0.1(graphql@16.13.2)': + '@urql/core@6.0.1(graphql@16.14.2)': dependencies: - '@0no-co/graphql.web': 1.2.0(graphql@16.13.2) + '@0no-co/graphql.web': 1.2.0(graphql@16.14.2) wonka: 6.3.6 transitivePeerDependencies: - graphql @@ -14971,52 +16038,113 @@ snapshots: transitivePeerDependencies: - supports-color - '@vitest/expect@4.1.11': + '@vitest/browser-playwright@5.0.3(msw@2.13.4(@types/node@24.12.2)(typescript@5.9.3))(playwright@1.63.0)(vite@8.2.4(@types/node@24.12.2)(esbuild@0.28.2)(jiti@2.6.1)(terser@5.46.2)(yaml@2.9.0))(vitest@5.0.3)': + dependencies: + '@vitest/browser': 5.0.3(msw@2.13.4(@types/node@24.12.2)(typescript@5.9.3))(vite@8.2.4(@types/node@24.12.2)(esbuild@0.28.2)(jiti@2.6.1)(terser@5.46.2)(yaml@2.9.0))(vitest@5.0.3) + '@vitest/mocker': 5.0.3(msw@2.13.4(@types/node@24.12.2)(typescript@5.9.3))(vite@8.2.4(@types/node@24.12.2)(esbuild@0.28.2)(jiti@2.6.1)(terser@5.46.2)(yaml@2.9.0)) + playwright: 1.63.0 + tinyrainbow: 3.2.0 + vitest: 5.0.3(@types/node@24.12.2)(@vitest/browser-playwright@5.0.3)(@vitest/ui@5.0.3)(jsdom@29.0.2)(msw@2.13.4(@types/node@24.12.2)(typescript@5.9.3))(vite@8.2.4(@types/node@24.12.2)(esbuild@0.28.2)(jiti@2.6.1)(terser@5.46.2)(yaml@2.9.0)) + transitivePeerDependencies: + - bufferutil + - msw + - utf-8-validate + - vite + + '@vitest/browser@5.0.3(msw@2.13.4(@types/node@24.12.2)(typescript@5.9.3))(vite@8.2.4(@types/node@24.12.2)(esbuild@0.28.2)(jiti@2.6.1)(terser@5.46.2)(yaml@2.9.0))(vitest@5.0.3)': + dependencies: + '@blazediff/core': 1.10.0 + '@vitest/mocker': 5.0.3(msw@2.13.4(@types/node@24.12.2)(typescript@5.9.3))(vite@8.2.4(@types/node@24.12.2)(esbuild@0.28.2)(jiti@2.6.1)(terser@5.46.2)(yaml@2.9.0)) + '@vitest/ui': 5.0.3(vitest@5.0.3) + '@vitest/utils': 5.0.3 + magic-string: 1.3.1 + pngjs: 7.0.0 + sirv: 3.0.2 + tinyrainbow: 3.2.0 + vitest: 5.0.3(@types/node@24.12.2)(@vitest/browser-playwright@5.0.3)(@vitest/ui@5.0.3)(jsdom@29.0.2)(msw@2.13.4(@types/node@24.12.2)(typescript@5.9.3))(vite@8.2.4(@types/node@24.12.2)(esbuild@0.28.2)(jiti@2.6.1)(terser@5.46.2)(yaml@2.9.0)) + ws: 8.21.3 + transitivePeerDependencies: + - bufferutil + - msw + - utf-8-validate + - vite + + '@vitest/expect@3.2.4': dependencies: - '@standard-schema/spec': 1.1.0 '@types/chai': 5.2.3 - '@vitest/spy': 4.1.11 - '@vitest/utils': 4.1.11 - chai: 6.2.2 - tinyrainbow: 3.1.1 + '@vitest/spy': 3.2.4 + '@vitest/utils': 3.2.4 + chai: 5.3.3 + tinyrainbow: 2.0.0 - '@vitest/mocker@4.1.11(msw@2.13.4(@types/node@24.12.2)(typescript@5.9.3))(vite@8.2.4(@types/node@24.12.2)(esbuild@0.28.2)(jiti@2.6.1)(terser@5.46.2)(yaml@2.9.0))': + '@vitest/mocker@5.0.3(msw@2.13.4(@types/node@24.12.2)(typescript@5.9.3))(vite@8.2.4(@types/node@24.12.2)(esbuild@0.28.2)(jiti@2.6.1)(terser@5.46.2)(yaml@2.9.0))': dependencies: - '@vitest/spy': 4.1.11 + '@jridgewell/trace-mapping': 0.3.31 + '@vitest/spy': 5.0.3 estree-walker: 3.0.3 - magic-string: 0.30.21 + magic-string: 1.3.1 optionalDependencies: msw: 2.13.4(@types/node@24.12.2)(typescript@5.9.3) vite: 8.2.4(@types/node@24.12.2)(esbuild@0.28.2)(jiti@2.6.1)(terser@5.46.2)(yaml@2.9.0) + '@vitest/pretty-format@3.2.4': + dependencies: + tinyrainbow: 2.0.0 + '@vitest/pretty-format@4.1.11': dependencies: - tinyrainbow: 3.1.1 + tinyrainbow: 3.2.0 + optional: true + + '@vitest/pretty-format@5.0.3': + dependencies: + tinyrainbow: 3.2.0 '@vitest/runner@4.1.11': dependencies: '@vitest/utils': 4.1.11 pathe: 2.0.3 + optional: true - '@vitest/snapshot@4.1.11': + '@vitest/spy@3.2.4': dependencies: - '@vitest/pretty-format': 4.1.11 - '@vitest/utils': 4.1.11 - magic-string: 0.30.21 + tinyspy: 4.0.6 + + '@vitest/spy@5.0.3': {} + + '@vitest/ui@5.0.3(vitest@5.0.3)': + dependencies: + '@vitest/utils': 5.0.3 + fflate: 0.8.3 + flatted: 3.4.4 pathe: 2.0.3 + sirv: 3.0.2 + tinyrainbow: 3.2.0 + vitest: 5.0.3(@types/node@24.12.2)(@vitest/browser-playwright@5.0.3)(@vitest/ui@5.0.3)(jsdom@29.0.2)(msw@2.13.4(@types/node@24.12.2)(typescript@5.9.3))(vite@8.2.4(@types/node@24.12.2)(esbuild@0.28.2)(jiti@2.6.1)(terser@5.46.2)(yaml@2.9.0)) - '@vitest/spy@4.1.11': {} + '@vitest/utils@3.2.4': + dependencies: + '@vitest/pretty-format': 3.2.4 + loupe: 3.2.1 + tinyrainbow: 2.0.0 '@vitest/utils@4.1.11': dependencies: '@vitest/pretty-format': 4.1.11 convert-source-map: 2.0.0 - tinyrainbow: 3.1.1 + tinyrainbow: 3.2.0 + optional: true + + '@vitest/utils@5.0.3': + dependencies: + '@vitest/pretty-format': 5.0.3 + convert-source-map: 2.0.0 + tinyrainbow: 3.2.0 - '@vitest/web-worker@4.1.11(vitest@4.1.11(@types/node@24.12.2)(jsdom@29.0.2)(msw@2.13.4(@types/node@24.12.2)(typescript@5.9.3))(vite@8.2.4(@types/node@24.12.2)(esbuild@0.28.2)(jiti@2.6.1)(terser@5.46.2)(yaml@2.9.0)))': + '@vitest/web-worker@5.0.3(vitest@5.0.3)': dependencies: obug: 2.2.1 - vitest: 4.1.11(@types/node@24.12.2)(jsdom@29.0.2)(msw@2.13.4(@types/node@24.12.2)(typescript@5.9.3))(vite@8.2.4(@types/node@24.12.2)(esbuild@0.28.2)(jiti@2.6.1)(terser@5.46.2)(yaml@2.9.0)) + vitest: 5.0.3(@types/node@24.12.2)(@vitest/browser-playwright@5.0.3)(@vitest/ui@5.0.3)(jsdom@29.0.2)(msw@2.13.4(@types/node@24.12.2)(typescript@5.9.3))(vite@8.2.4(@types/node@24.12.2)(esbuild@0.28.2)(jiti@2.6.1)(terser@5.46.2)(yaml@2.9.0)) '@volar/language-core@2.4.12': dependencies: @@ -15171,7 +16299,7 @@ snapshots: '@vue/shared': 3.4.35 estree-walker: 2.0.2 magic-string: 0.30.21 - postcss: 8.5.31 + postcss: 8.5.28 source-map-js: 1.2.2 '@vue/compiler-ssr@3.4.35': @@ -15299,6 +16427,8 @@ snapshots: '@webassemblyjs/ast': 1.14.1 '@xtuc/long': 4.2.2 + '@webcontainer/env@1.1.1': {} + '@whatwg-node/disposablestack@0.0.6': dependencies: '@whatwg-node/promise-helpers': 1.3.2 @@ -15376,10 +16506,6 @@ snapshots: optionalDependencies: ajv: 8.13.0 - ajv-formats@3.0.1(ajv@6.15.0): - optionalDependencies: - ajv: 6.15.0 - ajv-formats@3.0.1(ajv@8.13.0): optionalDependencies: ajv: 8.13.0 @@ -15464,11 +16590,6 @@ snapshots: any-promise@1.3.0: {} - anymatch@1.3.2: - dependencies: - micromatch: 2.3.11 - normalize-path: 2.1.1 - anymatch@3.1.3: dependencies: normalize-path: 3.0.0 @@ -15507,12 +16628,6 @@ snapshots: aria-query@5.3.2: {} - arr-diff@2.0.0: - dependencies: - arr-flatten: 1.1.0 - - arr-flatten@1.1.0: {} - arr-union@3.1.0: {} array-buffer-byte-length@1.0.2: @@ -15526,8 +16641,6 @@ snapshots: array-union@2.1.0: {} - array-unique@0.2.1: {} - arraybuffer.prototype.slice@1.0.4: dependencies: array-buffer-byte-length: 1.0.2 @@ -15554,6 +16667,10 @@ snapshots: assertion-error@2.0.1: {} + ast-types@0.16.3: + dependencies: + tslib: 2.8.1 + astral-regex@2.0.0: {} async-array-reduce@0.2.1: {} @@ -15574,6 +16691,8 @@ snapshots: aws4@1.11.0: {} + axe-core@4.13.0: {} + axios@0.21.4(debug@4.3.1): dependencies: follow-redirects: 1.15.6(debug@4.3.1) @@ -15633,7 +16752,7 @@ snapshots: transitivePeerDependencies: - supports-color - babel-plugin-react-compiler@19.1.0-rc.3: + babel-plugin-react-compiler@1.0.0: dependencies: '@babel/types': 7.29.8 @@ -15643,8 +16762,6 @@ snapshots: '@babel/template': 7.29.7 tslib: 2.8.1 - backo2@1.0.2: {} - balanced-match@1.0.2: {} balanced-match@4.0.4: {} @@ -15684,11 +16801,6 @@ snapshots: dependencies: editions: 6.22.0 - bindings@1.5.0: - dependencies: - file-uri-to-path: 1.0.0 - optional: true - bl@4.1.0: dependencies: buffer: 5.7.1 @@ -15736,12 +16848,6 @@ snapshots: dependencies: balanced-match: 4.0.4 - braces@1.8.5: - dependencies: - expand-range: 1.8.2 - preserve: 0.2.0 - repeat-element: 1.1.3 - braces@3.0.3: dependencies: fill-range: 7.1.1 @@ -15756,10 +16862,6 @@ snapshots: node-releases: 2.0.55 update-browserslist-db: 1.3.2(browserslist@4.28.9) - bser@2.1.1: - dependencies: - node-int64: 0.4.0 - buffer-crc32@0.2.13: {} buffer-equal-constant-time@1.0.1: {} @@ -15804,6 +16906,14 @@ snapshots: normalize-url: 6.1.0 responselike: 2.0.1 + cacheable@2.5.0: + dependencies: + '@cacheable/memory': 2.2.0 + '@cacheable/utils': 2.5.0 + hookified: 1.15.1 + keyv: 5.6.0 + qified: 0.10.1 + cachedir@2.4.0: {} call-bind-apply-helpers@1.0.2: @@ -15846,6 +16956,14 @@ snapshots: caseless@0.12.0: {} + chai@5.3.3: + dependencies: + assertion-error: 2.0.1 + check-error: 2.1.3 + deep-eql: 5.0.2 + loupe: 3.2.1 + pathval: 2.0.1 + chai@6.2.2: {} chalk-template@1.1.2: @@ -15867,6 +16985,8 @@ snapshots: chardet@0.7.0: {} + check-error@2.1.3: {} + check-more-types@2.24.0: {} cheerio-select@1.5.0: @@ -15991,8 +17111,6 @@ snapshots: clone@1.0.4: {} - clsx@1.2.1: {} - clsx@2.1.1: {} cockatiel@3.1.3: {} @@ -16140,8 +17258,6 @@ snapshots: dependencies: browserslist: 4.28.9 - core-js@2.6.12: {} - core-util-is@1.0.2: {} core-util-is@1.0.3: {} @@ -16282,12 +17398,12 @@ snapshots: css-loader@7.1.5(webpack@5.106.2): dependencies: - icss-utils: 5.1.0(postcss@8.5.31) - postcss: 8.5.31 - postcss-modules-extract-imports: 3.1.0(postcss@8.5.31) - postcss-modules-local-by-default: 4.2.0(postcss@8.5.31) - postcss-modules-scope: 3.2.1(postcss@8.5.31) - postcss-modules-values: 4.0.0(postcss@8.5.31) + icss-utils: 5.1.0(postcss@8.5.28) + postcss: 8.5.28 + postcss-modules-extract-imports: 3.1.0(postcss@8.5.28) + postcss-modules-local-by-default: 4.2.0(postcss@8.5.28) + postcss-modules-scope: 3.2.1(postcss@8.5.28) + postcss-modules-values: 4.0.0(postcss@8.5.28) postcss-value-parser: 4.2.0 semver: 7.8.5 optionalDependencies: @@ -16335,6 +17451,19 @@ snapshots: csstype@3.2.3: {} + cypress-axe@1.7.0(axe-core@4.13.0)(cypress@16.0.0): + dependencies: + axe-core: 4.13.0 + cypress: 16.0.0 + + cypress-each@1.14.1: + dependencies: + format-util: 1.0.5 + + cypress-real-events@1.15.1(cypress@16.0.0): + dependencies: + cypress: 16.0.0 + cypress@16.0.0: dependencies: '@cypress/request': 4.0.1 @@ -16474,6 +17603,8 @@ snapshots: optionalDependencies: babel-plugin-macros: 3.1.0 + deep-eql@5.0.2: {} + deep-extend@0.6.0: {} deep-is@0.1.4: {} @@ -16542,6 +17673,10 @@ snapshots: dependencies: '@leichtgewicht/ip-codec': 2.0.4 + doctrine@3.0.0: + dependencies: + esutils: 2.0.3 + dom-accessibility-api@0.5.16: {} dom-accessibility-api@0.6.3: {} @@ -16574,6 +17709,10 @@ snapshots: dependencies: domelementtype: 2.3.0 + dompurify@3.4.15: + optionalDependencies: + '@types/trusted-types': 2.0.7 + domutils@2.8.0: dependencies: dom-serializer: 1.3.2 @@ -16632,6 +17771,8 @@ snapshots: emojis-list@3.0.0: {} + empathic@2.0.1: {} + encodeurl@2.0.0: {} encoding@0.1.13: @@ -16815,11 +17956,11 @@ snapshots: escape-string-regexp@5.0.0: {} - eslint-plugin-react-hooks@7.1.1(eslint@9.39.5(jiti@2.6.1)): + eslint-plugin-react-hooks@7.1.1(eslint@10.12.0(jiti@2.6.1)): dependencies: '@babel/core': 7.29.7 '@babel/parser': 7.29.8 - eslint: 9.39.5(jiti@2.6.1) + eslint: 10.12.0(jiti@2.6.1) hermes-parser: 0.25.1 zod: 4.6.1 zod-validation-error: 4.0.2(zod@4.6.1) @@ -16831,49 +17972,47 @@ snapshots: esrecurse: 4.3.0 estraverse: 4.3.0 - eslint-scope@8.4.0: + eslint-scope@9.1.2: dependencies: + '@types/esrecurse': 4.3.1 + '@types/estree': 1.0.9 esrecurse: 4.3.0 estraverse: 5.3.0 eslint-visitor-keys@3.4.3: {} - eslint-visitor-keys@4.2.1: {} + eslint-visitor-keys@5.0.1: {} - eslint@9.39.5(jiti@2.6.1): + eslint@10.12.0(jiti@2.6.1): dependencies: - '@eslint-community/eslint-utils': 4.10.1(eslint@9.39.5(jiti@2.6.1)) + '@eslint-community/eslint-utils': 4.10.1(eslint@10.12.0(jiti@2.6.1)) '@eslint-community/regexpp': 4.12.2 - '@eslint/config-array': 0.21.2 - '@eslint/config-helpers': 0.4.2 - '@eslint/core': 0.17.0 - '@eslint/eslintrc': 3.3.7 - '@eslint/js': 9.39.5 - '@eslint/plugin-kit': 0.4.1 + '@eslint/config-array': 0.23.5 + '@eslint/config-helpers': 0.7.0 + '@eslint/core': 1.2.1 + '@eslint/plugin-kit': 0.7.3 '@humanfs/node': 0.16.8 '@humanwhocodes/module-importer': 1.0.1 '@humanwhocodes/retry': 0.4.3 '@types/estree': 1.0.9 ajv: 6.15.0 - chalk: 4.1.2 cross-spawn: 7.0.6 debug: 4.4.3(supports-color@8.1.1) escape-string-regexp: 4.0.0 - eslint-scope: 8.4.0 - eslint-visitor-keys: 4.2.1 - espree: 10.4.0 + eslint-scope: 9.1.2 + eslint-visitor-keys: 5.0.1 + espree: 11.2.0 esquery: 1.7.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 - file-entry-cache: 8.0.0 + file-entry-cache: 11.1.5 find-up: 5.0.0 glob-parent: 6.0.2 ignore: 5.3.2 imurmurhash: 0.1.4 is-glob: 4.0.3 json-stable-stringify-without-jsonify: 1.0.1 - lodash.merge: 4.6.2 - minimatch: 3.1.5 + minimatch: 10.2.6 natural-compare: 1.4.0 optionator: 0.9.4 optionalDependencies: @@ -16892,11 +18031,11 @@ snapshots: transitivePeerDependencies: - supports-color - espree@10.4.0: + espree@11.2.0: dependencies: acorn: 8.19.0 acorn-jsx: 5.3.2(acorn@8.19.0) - eslint-visitor-keys: 4.2.1 + eslint-visitor-keys: 5.0.1 esprima@4.0.1: {} @@ -16944,16 +18083,10 @@ snapshots: eventemitter2@6.4.7: {} - eventemitter3@3.1.2: {} - eventemitter3@5.0.4: {} events@3.3.0: {} - exec-sh@0.2.2: - dependencies: - merge: 1.2.1 - execa@10.0.1: dependencies: '@sindresorhus/merge-streams': 4.0.0 @@ -17012,14 +18145,6 @@ snapshots: exit-hook@5.1.0: {} - expand-brackets@0.1.5: - dependencies: - is-posix-bracket: 0.1.1 - - expand-range@1.8.2: - dependencies: - fill-range: 2.2.4 - expand-template@2.0.3: optional: true @@ -17078,10 +18203,6 @@ snapshots: iconv-lite: 0.4.24 tmp: 0.0.33 - extglob@0.3.2: - dependencies: - is-extglob: 1.0.0 - extsprintf@1.3.0: {} extsprintf@1.4.0: {} @@ -17118,10 +18239,6 @@ snapshots: dependencies: reusify: 1.0.4 - fb-watchman@2.0.1: - dependencies: - bser: 2.1.1 - fd-slicer@1.1.0: dependencies: pend: 1.2.0 @@ -17135,6 +18252,8 @@ snapshots: node-domexception: 1.0.0 web-streams-polyfill: 3.3.3 + fflate@0.8.3: {} + figures@6.1.0: dependencies: is-unicode-supported: 2.1.0 @@ -17164,9 +18283,9 @@ snapshots: through2: 2.0.5 vinyl: 1.2.0 - file-entry-cache@8.0.0: + file-entry-cache@11.1.5: dependencies: - flat-cache: 4.0.1 + flat-cache: 6.1.23 file-loader@6.2.0(webpack@5.106.2): dependencies: @@ -17187,23 +18306,10 @@ snapshots: lazy-cache: 2.0.2 through2: 2.0.5 - file-uri-to-path@1.0.0: - optional: true - filelist@1.0.4: dependencies: minimatch: 5.1.9 - filename-regex@2.0.1: {} - - fill-range@2.2.4: - dependencies: - is-number: 2.1.0 - isobject: 2.1.0 - randomatic: 3.1.1 - repeat-element: 1.1.3 - repeat-string: 1.6.1 - fill-range@7.1.1: dependencies: to-regex-range: 5.0.1 @@ -17254,10 +18360,11 @@ snapshots: micromatch: 4.0.8 pkg-dir: 4.2.0 - flat-cache@4.0.1: + flat-cache@6.1.23: dependencies: + cacheable: 2.5.0 flatted: 3.4.4 - keyv: 4.5.4 + hookified: 1.15.1 flat@5.0.2: {} @@ -17271,12 +18378,6 @@ snapshots: dependencies: is-callable: 1.2.7 - for-in@1.0.2: {} - - for-own@0.1.5: - dependencies: - for-in: 1.0.2 - foreground-child@3.3.1: dependencies: cross-spawn: 7.0.6 @@ -17311,6 +18412,8 @@ snapshots: hasown: 2.0.4 mime-types: 2.1.35 + format-util@1.0.5: {} + formdata-node@4.3.2: dependencies: node-domexception: 1.0.0 @@ -17322,10 +18425,10 @@ snapshots: forwarded@0.2.0: {} - framer-motion@13.2.0(react-dom@19.2.7(react@19.2.7))(react@19.2.7): + framer-motion@14.0.0(react-dom@19.2.7(react@19.2.7))(react@19.2.7): dependencies: - motion-dom: 13.2.0 - motion-utils: 13.0.0 + motion-dom: 14.0.0 + motion-utils: 14.0.0 tslib: 2.8.1 optionalDependencies: react: 19.2.7 @@ -17379,12 +18482,6 @@ snapshots: fs.realpath@1.0.0: {} - fsevents@1.2.13: - dependencies: - bindings: 1.5.0 - nan: 2.14.2 - optional: true - fsevents@2.3.3: optional: true @@ -17479,11 +18576,6 @@ snapshots: github-from-package@0.0.0: optional: true - glob-base@0.3.0: - dependencies: - glob-parent: 2.0.0 - is-glob: 2.0.1 - glob-parent@2.0.0: dependencies: is-glob: 2.0.1 @@ -17569,8 +18661,6 @@ snapshots: min-document: 2.19.0 process: 0.11.10 - globals@14.0.0: {} - globalthis@1.0.4: dependencies: define-properties: 1.2.1 @@ -17612,30 +18702,47 @@ snapshots: graceful-fs@4.2.11: {} - graphiql-code-exporter@3.0.3(codemirror@5.65.3)(graphql@16.13.2)(react-dom@19.2.7(react@19.2.7))(react@19.2.7): + graphiql-code-exporter@3.0.3(codemirror@5.65.3)(graphql@17.0.2)(react-dom@19.2.7(react@19.2.7))(react@19.2.7): dependencies: codemirror: 5.65.3 copy-to-clipboard: 3.3.2 - graphql: 16.13.2 + graphql: 17.0.2 react: 19.2.7 react-dom: 19.2.7(react@19.2.7) - graphiql-explorer@0.9.0(graphql@16.13.2)(react-dom@19.2.7(react@19.2.7))(react@19.2.7): + graphql-config@5.1.6(@types/node@24.12.2)(cosmiconfig-toml-loader@1.0.0)(graphql@16.14.2): dependencies: - graphql: 16.13.2 - react: 19.2.7 - react-dom: 19.2.7(react@19.2.7) + '@graphql-tools/graphql-file-loader': 8.0.0(graphql@16.14.2) + '@graphql-tools/json-file-loader': 8.0.0(graphql@16.14.2) + '@graphql-tools/load': 8.1.10(graphql@16.14.2) + '@graphql-tools/merge': 9.1.9(graphql@16.14.2) + '@graphql-tools/url-loader': 9.1.2(@types/node@24.12.2)(graphql@16.14.2) + '@graphql-tools/utils': 11.1.0(graphql@16.14.2) + cosmiconfig: 8.2.0 + graphql: 16.14.2 + jiti: 2.6.1 + minimatch: 10.2.6 + string-env-interpolation: 1.0.1 + tslib: 2.8.1 + optionalDependencies: + cosmiconfig-toml-loader: 1.0.0 + transitivePeerDependencies: + - '@fastify/websocket' + - '@types/node' + - bufferutil + - crossws + - utf-8-validate - graphql-config@5.1.6(@types/node@24.12.2)(cosmiconfig-toml-loader@1.0.0)(graphql@16.13.2): + graphql-config@5.1.6(@types/node@24.12.2)(cosmiconfig-toml-loader@1.0.0)(graphql@17.0.2): dependencies: - '@graphql-tools/graphql-file-loader': 8.0.0(graphql@16.13.2) - '@graphql-tools/json-file-loader': 8.0.0(graphql@16.13.2) - '@graphql-tools/load': 8.1.10(graphql@16.13.2) - '@graphql-tools/merge': 9.1.9(graphql@16.13.2) - '@graphql-tools/url-loader': 9.1.2(@types/node@24.12.2)(graphql@16.13.2) - '@graphql-tools/utils': 11.1.0(graphql@16.13.2) + '@graphql-tools/graphql-file-loader': 8.0.0(graphql@17.0.2) + '@graphql-tools/json-file-loader': 8.0.0(graphql@17.0.2) + '@graphql-tools/load': 8.1.10(graphql@17.0.2) + '@graphql-tools/merge': 9.1.9(graphql@17.0.2) + '@graphql-tools/url-loader': 9.1.2(@types/node@24.12.2)(graphql@17.0.2) + '@graphql-tools/utils': 11.1.0(graphql@17.0.2) cosmiconfig: 8.2.0 - graphql: 16.13.2 + graphql: 17.0.2 jiti: 2.6.1 minimatch: 10.2.6 string-env-interpolation: 1.0.1 @@ -17649,23 +18756,45 @@ snapshots: - crossws - utf-8-validate + graphql-helix@1.13.0(graphql@16.14.2): + dependencies: + graphql: 16.14.2 + graphql-helix@1.13.0(graphql@17.0.2): dependencies: graphql: 17.0.2 - graphql-ws@6.0.8(graphql@16.13.2)(ws@8.21.0): + graphql-ws@6.0.8(graphql@16.14.2)(ws@8.21.0): + dependencies: + graphql: 16.14.2 + optionalDependencies: + ws: 8.21.0 + + graphql-ws@6.3.0(graphql@16.14.2)(ws@8.21.0): dependencies: - graphql: 16.13.2 + graphql: 16.14.2 optionalDependencies: ws: 8.21.0 - graphql-ws@6.0.8(graphql@17.0.2)(ws@8.21.0): + graphql-ws@6.3.0(graphql@16.14.2)(ws@8.21.3): + dependencies: + graphql: 16.14.2 + optionalDependencies: + ws: 8.21.3 + + graphql-ws@6.3.0(graphql@17.0.2)(ws@8.21.0): dependencies: graphql: 17.0.2 optionalDependencies: ws: 8.21.0 - graphql@16.13.2: {} + graphql-ws@6.3.0(graphql@17.0.2)(ws@8.21.3): + dependencies: + graphql: 17.0.2 + optionalDependencies: + ws: 8.21.3 + + graphql@16.14.2: {} graphql@17.0.2: {} @@ -17703,6 +18832,10 @@ snapshots: is-stream: 2.0.0 type-fest: 0.8.1 + hashery@1.5.1: + dependencies: + hookified: 1.15.1 + hasown@2.0.4: dependencies: function-bind: 1.1.2 @@ -17728,6 +18861,10 @@ snapshots: dependencies: parse-passwd: 1.0.0 + hookified@1.15.1: {} + + hookified@2.2.0: {} + hosted-git-info@2.8.8: {} hosted-git-info@4.1.0: @@ -17858,9 +18995,9 @@ snapshots: dependencies: safer-buffer: 2.1.2 - icss-utils@5.1.0(postcss@8.5.31): + icss-utils@5.1.0(postcss@8.5.28): dependencies: - postcss: 8.5.31 + postcss: 8.5.28 idb@7.1.1: {} @@ -17990,12 +19127,6 @@ snapshots: is-docker@3.0.0: {} - is-dotfile@1.0.3: {} - - is-equal-shallow@0.1.3: - dependencies: - is-primitive: 2.0.0 - is-extendable@0.1.1: {} is-extglob@1.0.0: {} @@ -18053,12 +19184,6 @@ snapshots: call-bound: 1.0.4 has-tostringtag: 1.0.2 - is-number@2.1.0: - dependencies: - kind-of: 3.2.2 - - is-number@4.0.0: {} - is-number@7.0.0: {} is-obj@1.0.1: {} @@ -18075,12 +19200,8 @@ snapshots: dependencies: isobject: 3.0.1 - is-posix-bracket@0.1.1: {} - is-potential-custom-element-name@1.0.1: {} - is-primitive@2.0.0: {} - is-primitive@3.0.1: {} is-promise@4.0.0: {} @@ -18209,8 +19330,6 @@ snapshots: editions: 6.22.0 textextensions: 6.11.0 - iterall@1.3.0: {} - jackspeak@3.4.0: dependencies: '@isaacs/cliui': 8.0.2 @@ -18248,7 +19367,7 @@ snapshots: joycon@3.1.1: {} - js-green-licenses@4.0.0(patch_hash=9767ba756b878e055efbe878325a54d51a84423a8f46e2cccb72f741010f4ec8)(encoding@0.1.13): + js-green-licenses@4.0.0(patch_hash=3d6851659e615ef4e3f6d4363b1d3cf0042ff1536f83d11c92b872cb11caaec0)(encoding@0.1.13): dependencies: gaxios: 5.1.3(encoding@0.1.13) meow: 9.0.0 @@ -18321,10 +19440,6 @@ snapshots: json-stringify-safe@5.0.1: {} - json5@1.0.2: - dependencies: - minimist: 1.2.8 - json5@2.2.3: {} jsonc-parser@3.3.1: {} @@ -18400,6 +19515,10 @@ snapshots: dependencies: json-buffer: 3.0.1 + keyv@5.6.0: + dependencies: + '@keyv/serialize': 1.1.1 + kind-of@3.2.2: dependencies: is-buffer: 1.1.6 @@ -18511,12 +19630,6 @@ snapshots: loader-runner@4.3.1: {} - loader-utils@1.4.2: - dependencies: - big.js: 5.2.2 - emojis-list: 3.0.0 - json5: 1.0.2 - loader-utils@2.0.4: dependencies: big.js: 5.2.2 @@ -18562,8 +19675,6 @@ snapshots: lodash.isstring@4.0.1: {} - lodash.merge@4.6.2: {} - lodash.once@4.1.1: {} lodash.sortby@4.7.0: {} @@ -18598,6 +19709,8 @@ snapshots: dependencies: js-tokens: 4.0.0 + loupe@3.2.1: {} + lower-case@2.0.2: dependencies: tslib: 2.8.1 @@ -18633,6 +19746,10 @@ snapshots: dependencies: '@jridgewell/sourcemap-codec': 1.6.0 + magic-string@1.3.1: + dependencies: + '@jridgewell/sourcemap-codec': 1.6.0 + make-dir@2.1.0: dependencies: pify: 4.0.1 @@ -18640,10 +19757,6 @@ snapshots: make-error@1.3.6: {} - makeerror@1.0.12: - dependencies: - tmpl: 1.0.5 - map-obj@1.0.1: {} map-obj@4.2.0: {} @@ -18659,6 +19772,8 @@ snapshots: punycode.js: 2.3.1 uc.micro: 3.0.0 + marked@14.0.0: {} + matched@0.4.4: dependencies: arr-union: 3.1.0 @@ -18673,8 +19788,6 @@ snapshots: math-intrinsics@1.1.0: {} - math-random@1.0.4: {} - mdn-data@2.0.28: {} mdn-data@2.27.1: {} @@ -18725,28 +19838,10 @@ snapshots: merge2@1.4.1: {} - merge@1.2.1: {} - meros@1.3.2(@types/node@24.12.2): optionalDependencies: '@types/node': 24.12.2 - micromatch@2.3.11: - dependencies: - arr-diff: 2.0.0 - array-unique: 0.2.1 - braces: 1.8.5 - expand-brackets: 0.1.5 - extglob: 0.3.2 - filename-regex: 2.0.1 - is-extglob: 1.0.0 - is-glob: 2.0.1 - kind-of: 3.2.2 - normalize-path: 2.1.1 - object.omit: 2.0.1 - parse-glob: 3.0.4 - regex-cache: 0.4.4 - micromatch@4.0.8: dependencies: braces: 3.0.3 @@ -18853,13 +19948,16 @@ snapshots: yargs-parser: 20.2.4 yargs-unparser: 2.0.0 - monaco-editor-webpack-plugin@7.1.1(monaco-editor@0.52.2)(webpack@5.106.2): + monaco-editor-webpack-plugin@7.1.1(monaco-editor@0.57.0)(webpack@5.106.2): dependencies: loader-utils: 2.0.4 - monaco-editor: 0.52.2 + monaco-editor: 0.57.0 webpack: 5.106.2(esbuild@0.28.2)(webpack-cli@7.2.3) - monaco-editor@0.52.2: {} + monaco-editor@0.57.0: + dependencies: + dompurify: 3.4.15 + marked: 14.0.0 moo-color@1.0.3: dependencies: @@ -18875,11 +19973,11 @@ snapshots: transitivePeerDependencies: - supports-color - motion-dom@13.2.0: + motion-dom@14.0.0: dependencies: - motion-utils: 13.0.0 + motion-utils: 14.0.0 - motion-utils@13.0.0: {} + motion-utils@14.0.0: {} mri@1.2.0: {} @@ -18898,7 +19996,7 @@ snapshots: '@open-draft/deferred-promise': 3.0.0 '@types/statuses': 2.0.6 cookie: 1.1.1 - graphql: 16.13.2 + graphql: 16.14.2 headers-polyfill: 5.0.1 is-node-process: 1.2.0 outvariant: 1.4.3 @@ -18933,10 +20031,7 @@ snapshots: object-assign: 4.1.1 thenify-all: 1.6.0 - nan@2.14.2: - optional: true - - nanoid@3.3.20: {} + nanoid@3.3.18: {} nanoid@3.3.3: {} @@ -18955,7 +20050,7 @@ snapshots: neo-async@2.6.2: {} - next@15.5.28(@babel/core@7.29.7)(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7): + next@15.5.28(@babel/core@7.29.7)(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7): dependencies: '@next/env': 15.5.28 '@swc/helpers': 0.5.15 @@ -18973,6 +20068,7 @@ snapshots: '@next/swc-linux-x64-musl': 15.5.28 '@next/swc-win32-arm64-msvc': 15.5.28 '@next/swc-win32-x64-msvc': 15.5.28 + babel-plugin-react-compiler: 1.0.0 sharp: 0.35.5(@types/node@24.12.2) transitivePeerDependencies: - '@babel/core' @@ -19008,8 +20104,6 @@ snapshots: fetch-blob: 3.2.0 formdata-polyfill: 4.0.10 - node-int64@0.4.0: {} - node-releases@2.0.55: {} node-sarif-builder@3.4.0: @@ -19092,11 +20186,6 @@ snapshots: has-symbols: 1.1.0 object-keys: 1.1.1 - object.omit@2.0.1: - dependencies: - for-own: 0.1.5 - is-extendable: 0.1.1 - obug@2.2.1: {} on-finished@2.4.1: @@ -19117,6 +20206,13 @@ snapshots: dependencies: mimic-function: 5.0.1 + open@10.2.0: + dependencies: + default-browser: 5.5.1 + define-lazy-prop: 3.0.0 + is-inside-container: 1.0.0 + wsl-utils: 0.1.0 + open@11.0.2: dependencies: default-browser: 5.5.1 @@ -19172,6 +20268,53 @@ snapshots: object-keys: 1.1.1 safe-push-apply: 1.0.0 + oxc-parser@0.127.0: + dependencies: + '@oxc-project/types': 0.127.0 + optionalDependencies: + '@oxc-parser/binding-android-arm-eabi': 0.127.0 + '@oxc-parser/binding-android-arm64': 0.127.0 + '@oxc-parser/binding-darwin-arm64': 0.127.0 + '@oxc-parser/binding-darwin-x64': 0.127.0 + '@oxc-parser/binding-freebsd-x64': 0.127.0 + '@oxc-parser/binding-linux-arm-gnueabihf': 0.127.0 + '@oxc-parser/binding-linux-arm-musleabihf': 0.127.0 + '@oxc-parser/binding-linux-arm64-gnu': 0.127.0 + '@oxc-parser/binding-linux-arm64-musl': 0.127.0 + '@oxc-parser/binding-linux-ppc64-gnu': 0.127.0 + '@oxc-parser/binding-linux-riscv64-gnu': 0.127.0 + '@oxc-parser/binding-linux-riscv64-musl': 0.127.0 + '@oxc-parser/binding-linux-s390x-gnu': 0.127.0 + '@oxc-parser/binding-linux-x64-gnu': 0.127.0 + '@oxc-parser/binding-linux-x64-musl': 0.127.0 + '@oxc-parser/binding-openharmony-arm64': 0.127.0 + '@oxc-parser/binding-wasm32-wasi': 0.127.0 + '@oxc-parser/binding-win32-arm64-msvc': 0.127.0 + '@oxc-parser/binding-win32-ia32-msvc': 0.127.0 + '@oxc-parser/binding-win32-x64-msvc': 0.127.0 + + oxc-resolver@11.21.2: + optionalDependencies: + '@oxc-resolver/binding-android-arm-eabi': 11.21.2 + '@oxc-resolver/binding-android-arm64': 11.21.2 + '@oxc-resolver/binding-darwin-arm64': 11.21.2 + '@oxc-resolver/binding-darwin-x64': 11.21.2 + '@oxc-resolver/binding-freebsd-x64': 11.21.2 + '@oxc-resolver/binding-linux-arm-gnueabihf': 11.21.2 + '@oxc-resolver/binding-linux-arm-musleabihf': 11.21.2 + '@oxc-resolver/binding-linux-arm64-gnu': 11.21.2 + '@oxc-resolver/binding-linux-arm64-musl': 11.21.2 + '@oxc-resolver/binding-linux-ppc64-gnu': 11.21.2 + '@oxc-resolver/binding-linux-riscv64-gnu': 11.21.2 + '@oxc-resolver/binding-linux-riscv64-musl': 11.21.2 + '@oxc-resolver/binding-linux-s390x-gnu': 11.21.2 + '@oxc-resolver/binding-linux-x64-gnu': 11.21.2 + '@oxc-resolver/binding-linux-x64-musl': 11.21.2 + '@oxc-resolver/binding-openharmony-arm64': 11.21.2 + '@oxc-resolver/binding-wasm32-wasi': 11.21.2 + '@oxc-resolver/binding-win32-arm64-msvc': 11.21.2 + '@oxc-resolver/binding-win32-x64-msvc': 11.21.2 + oxfmt@0.67.0(svelte@5.55.9): dependencies: tinypool: 2.1.2 @@ -19299,13 +20442,6 @@ snapshots: parse-diff@0.11.1: {} - parse-glob@3.0.4: - dependencies: - glob-base: 0.3.0 - is-dotfile: 1.0.3 - is-extglob: 1.0.0 - is-glob: 2.0.1 - parse-json@5.2.0: dependencies: '@babel/code-frame': 7.29.7 @@ -19380,6 +20516,8 @@ snapshots: pathe@2.0.3: {} + pathval@2.0.1: {} + pause-stream@0.0.11: dependencies: through: 2.3.8 @@ -19390,8 +20528,6 @@ snapshots: picocolors@1.1.1: {} - picomatch-browser@2.2.6: {} - picomatch@2.3.2: {} picomatch@4.0.7: {} @@ -19437,40 +20573,48 @@ snapshots: platform@1.3.6: {} + playwright-core@1.63.0: {} + + playwright@1.63.0: + dependencies: + playwright-core: 1.63.0 + pluralize@2.0.0: {} pluralize@8.0.0: {} + pngjs@7.0.0: {} + possible-typed-array-names@1.0.0: {} - postcss-load-config@6.0.1(jiti@2.6.1)(postcss@8.5.31)(yaml@2.9.0): + postcss-load-config@6.0.1(jiti@2.6.1)(postcss@8.5.28)(yaml@2.9.0): dependencies: lilconfig: 3.1.2 optionalDependencies: jiti: 2.6.1 - postcss: 8.5.31 + postcss: 8.5.28 yaml: 2.9.0 - postcss-modules-extract-imports@3.1.0(postcss@8.5.31): + postcss-modules-extract-imports@3.1.0(postcss@8.5.28): dependencies: - postcss: 8.5.31 + postcss: 8.5.28 - postcss-modules-local-by-default@4.2.0(postcss@8.5.31): + postcss-modules-local-by-default@4.2.0(postcss@8.5.28): dependencies: - icss-utils: 5.1.0(postcss@8.5.31) - postcss: 8.5.31 + icss-utils: 5.1.0(postcss@8.5.28) + postcss: 8.5.28 postcss-selector-parser: 7.1.6 postcss-value-parser: 4.2.0 - postcss-modules-scope@3.2.1(postcss@8.5.31): + postcss-modules-scope@3.2.1(postcss@8.5.28): dependencies: - postcss: 8.5.31 + postcss: 8.5.28 postcss-selector-parser: 7.1.6 - postcss-modules-values@4.0.0(postcss@8.5.31): + postcss-modules-values@4.0.0(postcss@8.5.28): dependencies: - icss-utils: 5.1.0(postcss@8.5.31) - postcss: 8.5.31 + icss-utils: 5.1.0(postcss@8.5.28) + postcss: 8.5.28 postcss-selector-parser@7.1.6: dependencies: @@ -19481,13 +20625,13 @@ snapshots: postcss@8.4.31: dependencies: - nanoid: 3.3.20 + nanoid: 3.3.18 picocolors: 1.1.1 source-map-js: 1.2.2 - postcss@8.5.31: + postcss@8.5.28: dependencies: - nanoid: 3.3.20 + nanoid: 3.3.18 picocolors: 1.1.1 source-map-js: 1.2.2 @@ -19521,8 +20665,6 @@ snapshots: prelude-ls@1.2.1: {} - preserve@0.2.0: {} - prettier@2.7.1: {} prettier@3.3.2: {} @@ -19584,6 +20726,10 @@ snapshots: pvutils@1.1.5: {} + qified@0.10.1: + dependencies: + hookified: 2.2.0 + qs@6.16.0: dependencies: es-define-property: 1.0.1 @@ -19597,12 +20743,6 @@ snapshots: quick-lru@5.1.1: {} - randomatic@3.1.1: - dependencies: - is-number: 4.0.0 - kind-of: 6.0.3 - math-random: 1.0.4 - randombytes@2.1.0: dependencies: safe-buffer: 5.2.1 @@ -19634,10 +20774,29 @@ snapshots: minimist: 1.2.8 strip-json-comments: 2.0.1 - react-compiler-runtime@19.1.0-rc.3(react@19.2.7): + react-compiler-runtime@1.0.0(react@19.2.7): dependencies: react: 19.2.7 + react-docgen-typescript@2.4.0(typescript@5.9.3): + dependencies: + typescript: 5.9.3 + + react-docgen@8.0.3: + dependencies: + '@babel/core': 7.29.7 + '@babel/traverse': 7.29.8 + '@babel/types': 7.29.8 + '@types/babel__core': 7.20.5 + '@types/babel__traverse': 7.28.0 + '@types/doctrine': 0.0.9 + '@types/resolve': 1.20.2 + doctrine: 3.0.0 + resolve: 1.22.12 + strip-indent: 4.1.1 + transitivePeerDependencies: + - supports-color + react-dom@19.2.7(react@19.2.7): dependencies: react: 19.2.7 @@ -19698,10 +20857,6 @@ snapshots: optionalDependencies: '@types/react': 19.2.14 - react@18.3.1: - dependencies: - loose-envify: 1.4.0 - react@19.2.7: {} read-pkg-up@7.0.1: @@ -19759,6 +20914,14 @@ snapshots: readdirp@5.1.1: {} + recast@0.23.21: + dependencies: + ast-types: 0.16.3 + esprima: 4.0.1 + source-map: 0.6.1 + tiny-invariant: 1.3.3 + tslib: 2.8.1 + rechoir@0.8.0: dependencies: resolve: 1.22.12 @@ -19787,14 +20950,8 @@ snapshots: regenerate@1.4.2: {} - regenerator-runtime@0.13.11: {} - regenerator-runtime@0.14.1: {} - regex-cache@0.4.4: - dependencies: - is-equal-shallow: 0.1.3 - regexp.prototype.flags@1.5.4: dependencies: call-bind: 1.0.8 @@ -19839,10 +20996,6 @@ snapshots: lodash: 4.18.1 strip-ansi: 6.0.1 - repeat-element@1.1.3: {} - - repeat-string@1.6.1: {} - replace-ext@0.0.1: {} request-progress@3.0.0: @@ -19895,26 +21048,26 @@ snapshots: glob: 13.0.6 package-json-from-dist: 1.0.1 - rolldown@1.2.14: + rolldown@1.2.8: dependencies: - '@oxc-project/types': 0.154.0 + '@oxc-project/types': 0.149.0 '@rolldown/pluginutils': 1.0.1 optionalDependencies: - '@rolldown/binding-android-arm-eabi': 1.2.14 - '@rolldown/binding-android-arm64': 1.2.14 - '@rolldown/binding-darwin-arm64': 1.2.14 - '@rolldown/binding-darwin-x64': 1.2.14 - '@rolldown/binding-freebsd-x64': 1.2.14 - '@rolldown/binding-linux-arm-gnueabihf': 1.2.14 - '@rolldown/binding-linux-arm64-gnu': 1.2.14 - '@rolldown/binding-linux-arm64-musl': 1.2.14 - '@rolldown/binding-linux-ppc64-gnu': 1.2.14 - '@rolldown/binding-linux-s390x-gnu': 1.2.14 - '@rolldown/binding-linux-x64-gnu': 1.2.14 - '@rolldown/binding-linux-x64-musl': 1.2.14 - '@rolldown/binding-openharmony-arm64': 1.2.14 - '@rolldown/binding-win32-arm64-msvc': 1.2.14 - '@rolldown/binding-win32-x64-msvc': 1.2.14 + '@rolldown/binding-android-arm-eabi': 1.2.8 + '@rolldown/binding-android-arm64': 1.2.8 + '@rolldown/binding-darwin-arm64': 1.2.8 + '@rolldown/binding-darwin-x64': 1.2.8 + '@rolldown/binding-freebsd-x64': 1.2.8 + '@rolldown/binding-linux-arm-gnueabihf': 1.2.8 + '@rolldown/binding-linux-arm64-gnu': 1.2.8 + '@rolldown/binding-linux-arm64-musl': 1.2.8 + '@rolldown/binding-linux-ppc64-gnu': 1.2.8 + '@rolldown/binding-linux-s390x-gnu': 1.2.8 + '@rolldown/binding-linux-x64-gnu': 1.2.8 + '@rolldown/binding-linux-x64-musl': 1.2.8 + '@rolldown/binding-openharmony-arm64': 1.2.8 + '@rolldown/binding-win32-arm64-msvc': 1.2.8 + '@rolldown/binding-win32-x64-msvc': 1.2.8 rollup-plugin-dts@3.0.2(rollup@2.80.0)(typescript@4.9.5): dependencies: @@ -20003,18 +21156,6 @@ snapshots: safer-buffer@2.1.2: {} - sane@2.0.0: - dependencies: - anymatch: 1.3.2 - exec-sh: 0.2.2 - fb-watchman: 2.0.1 - minimatch: 3.1.5 - minimist: 1.2.8 - walker: 1.0.8 - watch: 0.10.0 - optionalDependencies: - fsevents: 1.2.13 - sax@1.6.1: {} saxes@6.0.0: @@ -20023,11 +21164,6 @@ snapshots: scheduler@0.27.0: {} - schema-utils@0.4.7: - dependencies: - ajv: 6.15.0 - ajv-keywords: 3.5.2(ajv@6.15.0) - schema-utils@3.3.0: dependencies: '@types/json-schema': 7.0.9 @@ -20277,8 +21413,6 @@ snapshots: side-channel-map: 1.0.1 side-channel-weakmap: 1.0.2 - siginfo@2.0.0: {} - signal-exit@3.0.7: {} signal-exit@4.1.0: {} @@ -20400,8 +21534,6 @@ snapshots: safer-buffer: 2.1.2 tweetnacl: 0.14.5 - stackback@0.0.2: {} - start-server-and-test@1.12.1: dependencies: bluebird: 3.7.2 @@ -20422,6 +21554,33 @@ snapshots: stoppable@1.1.0: {} + storybook@10.6.1(@types/react@19.2.14)(prettier@3.8.3)(react@19.2.7): + dependencies: + '@storybook/global': 5.0.0 + '@storybook/icons': 2.1.0(react@19.2.7) + '@testing-library/dom': 10.4.1 + '@testing-library/jest-dom': 6.9.1 + '@testing-library/user-event': 14.6.7(@testing-library/dom@10.4.1) + '@vitest/expect': 3.2.4 + '@vitest/spy': 3.2.4 + '@webcontainer/env': 1.1.1 + esbuild: 0.28.2 + jsonc-parser: 3.3.1 + open: 10.2.0 + oxc-parser: 0.127.0 + oxc-resolver: 11.21.2 + recast: 0.23.21 + semver: 7.8.5 + use-sync-external-store: 1.5.0(react@19.2.7) + ws: 8.21.3 + optionalDependencies: + '@types/react': 19.2.14 + prettier: 3.8.3 + transitivePeerDependencies: + - bufferutil + - react + - utf-8-validate + stream-combiner@0.0.4: dependencies: duplexer: 0.1.2 @@ -20550,6 +21709,8 @@ snapshots: dependencies: min-indent: 1.0.1 + strip-indent@4.1.1: {} + strip-json-comments@2.0.1: {} strip-json-comments@3.1.1: {} @@ -20572,18 +21733,6 @@ snapshots: '@babel/core': 7.29.7 babel-plugin-macros: 3.1.0 - subscriptions-transport-ws@0.11.0(graphql@16.13.2): - dependencies: - backo2: 1.0.2 - eventemitter3: 3.1.2 - graphql: 16.13.2 - iterall: 1.3.0 - symbol-observable: 1.2.0 - ws: 7.5.9 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - success-symbol@0.1.0: {} sucrase@3.35.0: @@ -20657,8 +21806,6 @@ snapshots: picocolors: 1.1.1 sax: 1.6.1 - symbol-observable@1.2.0: {} - symbol-tree@3.2.4: {} sync-fetch@0.6.0: @@ -20764,7 +21911,9 @@ snapshots: timeout-signal@2.0.0: {} - tinybench@2.9.0: {} + tiny-invariant@1.3.3: {} + + tinybench@6.2.1: {} tinyexec@1.3.1: {} @@ -20775,7 +21924,11 @@ snapshots: tinypool@2.1.2: {} - tinyrainbow@3.1.1: {} + tinyrainbow@2.0.0: {} + + tinyrainbow@3.2.0: {} + + tinyspy@4.0.6: {} tldts-core@6.1.86: {} @@ -20795,8 +21948,6 @@ snapshots: tmp@0.2.7: {} - tmpl@1.0.5: {} - to-file@0.2.0: dependencies: define-property: 0.2.5 @@ -20848,6 +21999,8 @@ snapshots: trim-newlines@3.0.0: {} + ts-dedent@2.3.0: {} + ts-interface-checker@0.1.13: {} ts-node@8.10.2(typescript@5.9.3): @@ -20859,11 +22012,17 @@ snapshots: typescript: 5.9.3 yn: 3.1.1 + tsconfig-paths@4.2.0: + dependencies: + json5: 2.2.3 + minimist: 1.2.8 + strip-bom: 3.0.0 + tslib@1.14.1: {} tslib@2.8.1: {} - tsup@8.2.4(@microsoft/api-extractor@7.52.5(@types/node@24.12.2))(jiti@2.6.1)(postcss@8.5.31)(typescript@5.9.3)(yaml@2.9.0): + tsup@8.2.4(@microsoft/api-extractor@7.52.5(@types/node@24.12.2))(jiti@2.6.1)(postcss@8.5.28)(typescript@5.9.3)(yaml@2.9.0): dependencies: bundle-require: 5.0.0(esbuild@0.23.1) cac: 6.7.14 @@ -20875,7 +22034,7 @@ snapshots: globby: 11.1.0 joycon: 3.1.1 picocolors: 1.1.1 - postcss-load-config: 6.0.1(jiti@2.6.1)(postcss@8.5.31)(yaml@2.9.0) + postcss-load-config: 6.0.1(jiti@2.6.1)(postcss@8.5.28)(yaml@2.9.0) resolve-from: 5.0.0 rollup: 4.40.1 source-map: 0.8.0-beta.0 @@ -20883,7 +22042,7 @@ snapshots: tree-kill: 1.2.2 optionalDependencies: '@microsoft/api-extractor': 7.52.5(@types/node@24.12.2) - postcss: 8.5.31 + postcss: 8.5.28 typescript: 5.9.3 transitivePeerDependencies: - jiti @@ -20990,6 +22149,30 @@ snapshots: typescript@5.9.3: {} + typescript@7.1.0-beta: + optionalDependencies: + '@typescript/typescript-aix-ppc64': 7.1.0-beta + '@typescript/typescript-android-arm64': 7.1.0-beta + '@typescript/typescript-darwin-arm64': 7.1.0-beta + '@typescript/typescript-darwin-x64': 7.1.0-beta + '@typescript/typescript-freebsd-arm64': 7.1.0-beta + '@typescript/typescript-freebsd-x64': 7.1.0-beta + '@typescript/typescript-linux-arm': 7.1.0-beta + '@typescript/typescript-linux-arm64': 7.1.0-beta + '@typescript/typescript-linux-loong64': 7.1.0-beta + '@typescript/typescript-linux-mips64el': 7.1.0-beta + '@typescript/typescript-linux-ppc64': 7.1.0-beta + '@typescript/typescript-linux-riscv64': 7.1.0-beta + '@typescript/typescript-linux-s390x': 7.1.0-beta + '@typescript/typescript-linux-x64': 7.1.0-beta + '@typescript/typescript-netbsd-arm64': 7.1.0-beta + '@typescript/typescript-netbsd-x64': 7.1.0-beta + '@typescript/typescript-openbsd-arm64': 7.1.0-beta + '@typescript/typescript-openbsd-x64': 7.1.0-beta + '@typescript/typescript-sunos-x64': 7.1.0-beta + '@typescript/typescript-win32-arm64': 7.1.0-beta + '@typescript/typescript-win32-x64': 7.1.0-beta + uc.micro@3.0.0: {} ufo@1.6.1: {} @@ -21137,11 +22320,7 @@ snapshots: - rollup - supports-color - vite-plugin-monaco-editor@1.1.0(monaco-editor@0.52.2): - dependencies: - monaco-editor: 0.52.2 - - vite-plugin-svgr@4.3.0(rollup@4.40.1)(vite@8.2.4(@types/node@24.12.2)(esbuild@0.28.2)(jiti@2.6.1)(terser@5.46.2)(yaml@2.9.0)): + vite-plugin-svgr@5.2.0(rollup@4.40.1)(vite@8.2.4(@types/node@24.12.2)(esbuild@0.28.2)(jiti@2.6.1)(terser@5.46.2)(yaml@2.9.0)): dependencies: '@rollup/pluginutils': 5.3.0(rollup@4.40.1) '@svgr/core': 8.1.0 @@ -21155,8 +22334,8 @@ snapshots: dependencies: lightningcss: 1.33.0 picomatch: 4.0.7 - postcss: 8.5.31 - rolldown: 1.2.14 + postcss: 8.5.28 + rolldown: 1.2.8 tinyglobby: 0.2.17 optionalDependencies: '@types/node': 24.12.2 @@ -21166,36 +22345,32 @@ snapshots: terser: 5.46.2 yaml: 2.9.0 - vitest-canvas-mock@1.1.4(vitest@4.1.11(@types/node@24.12.2)(jsdom@29.0.2)(msw@2.13.4(@types/node@24.12.2)(typescript@5.9.3))(vite@8.2.4(@types/node@24.12.2)(esbuild@0.28.2)(jiti@2.6.1)(terser@5.46.2)(yaml@2.9.0))): + vitest-canvas-mock@1.2.0(vitest@5.0.3): dependencies: cssfontparser: 1.2.1 moo-color: 1.0.3 - vitest: 4.1.11(@types/node@24.12.2)(jsdom@29.0.2)(msw@2.13.4(@types/node@24.12.2)(typescript@5.9.3))(vite@8.2.4(@types/node@24.12.2)(esbuild@0.28.2)(jiti@2.6.1)(terser@5.46.2)(yaml@2.9.0)) + vitest: 5.0.3(@types/node@24.12.2)(@vitest/browser-playwright@5.0.3)(@vitest/ui@5.0.3)(jsdom@29.0.2)(msw@2.13.4(@types/node@24.12.2)(typescript@5.9.3))(vite@8.2.4(@types/node@24.12.2)(esbuild@0.28.2)(jiti@2.6.1)(terser@5.46.2)(yaml@2.9.0)) - vitest@4.1.11(@types/node@24.12.2)(jsdom@29.0.2)(msw@2.13.4(@types/node@24.12.2)(typescript@5.9.3))(vite@8.2.4(@types/node@24.12.2)(esbuild@0.28.2)(jiti@2.6.1)(terser@5.46.2)(yaml@2.9.0)): + vitest@5.0.3(@types/node@24.12.2)(@vitest/browser-playwright@5.0.3)(@vitest/ui@5.0.3)(jsdom@29.0.2)(msw@2.13.4(@types/node@24.12.2)(typescript@5.9.3))(vite@8.2.4(@types/node@24.12.2)(esbuild@0.28.2)(jiti@2.6.1)(terser@5.46.2)(yaml@2.9.0)): dependencies: - '@vitest/expect': 4.1.11 - '@vitest/mocker': 4.1.11(msw@2.13.4(@types/node@24.12.2)(typescript@5.9.3))(vite@8.2.4(@types/node@24.12.2)(esbuild@0.28.2)(jiti@2.6.1)(terser@5.46.2)(yaml@2.9.0)) - '@vitest/pretty-format': 4.1.11 - '@vitest/runner': 4.1.11 - '@vitest/snapshot': 4.1.11 - '@vitest/spy': 4.1.11 - '@vitest/utils': 4.1.11 + '@types/chai': 5.2.3 + '@vitest/mocker': 5.0.3(msw@2.13.4(@types/node@24.12.2)(typescript@5.9.3))(vite@8.2.4(@types/node@24.12.2)(esbuild@0.28.2)(jiti@2.6.1)(terser@5.46.2)(yaml@2.9.0)) + chai: 6.2.2 es-module-lexer: 2.3.2 expect-type: 1.4.0 - magic-string: 0.30.21 + magic-string: 1.3.1 obug: 2.2.1 - pathe: 2.0.3 picomatch: 4.0.7 std-env: 4.2.0 - tinybench: 2.9.0 + tinybench: 6.2.1 tinyexec: 1.3.1 tinyglobby: 0.2.17 - tinyrainbow: 3.1.1 vite: 8.2.4(@types/node@24.12.2)(esbuild@0.28.2)(jiti@2.6.1)(terser@5.46.2)(yaml@2.9.0) - why-is-node-running: 2.3.0 + why-is-node-running: 3.2.1 optionalDependencies: '@types/node': 24.12.2 + '@vitest/browser-playwright': 5.0.3(msw@2.13.4(@types/node@24.12.2)(typescript@5.9.3))(playwright@1.63.0)(vite@8.2.4(@types/node@24.12.2)(esbuild@0.28.2)(jiti@2.6.1)(terser@5.46.2)(yaml@2.9.0))(vitest@5.0.3) + '@vitest/ui': 5.0.3(vitest@5.0.3) jsdom: 29.0.2 transitivePeerDependencies: - msw @@ -21262,12 +22437,6 @@ snapshots: transitivePeerDependencies: - debug - walker@1.0.8: - dependencies: - makeerror: 1.0.12 - - watch@0.10.0: {} - watchpack@2.5.1: dependencies: glob-to-regexp: 0.4.1 @@ -21515,10 +22684,7 @@ snapshots: dependencies: isexe: 2.0.0 - why-is-node-running@2.3.0: - dependencies: - siginfo: 2.0.0 - stackback: 0.0.2 + why-is-node-running@3.2.1: {} wide-align@1.1.3: dependencies: @@ -21656,12 +22822,6 @@ snapshots: '@types/trusted-types': 2.0.7 workbox-core: 7.4.0 - worker-loader@2.0.0(webpack@5.106.2): - dependencies: - loader-utils: 1.4.2 - schema-utils: 0.4.7 - webpack: 5.106.2(esbuild@0.28.2)(webpack-cli@7.2.3) - workerpool@6.2.1: {} wrap-ansi@7.0.0: @@ -21688,6 +22848,12 @@ snapshots: ws@8.21.0: {} + ws@8.21.3: {} + + wsl-utils@0.1.0: + dependencies: + is-wsl: 3.1.0 + wsl-utils@1.0.0: dependencies: is-wsl: 3.1.0 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 2bd58dc5269..7e254d84db7 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -1,7 +1,7 @@ packages: - packages/* - functions - - packages/graphiql/test + - packages/graphiql-e2e/test - examples/monaco-graphql-webpack - examples/monaco-graphql-nextjs - examples/monaco-graphql-react-vite @@ -10,9 +10,12 @@ packages: - examples/graphiql-webpack minimumReleaseAge: 4320 +minimumReleaseAgeExclude: + - monaco-editor@0.57.0 engineStrict: true nodeLinker: isolated linkWorkspacePackages: true +preferWorkspacePackages: true allowBuilds: '@vscode/vsce-sign': false @@ -23,9 +26,11 @@ allowBuilds: fsevents: false keytar: false msw: false + sharp: false overrides: '@babel/traverse': ^7.23.2 + eslint: ^10.12.0 vscode-languageserver-types: 3.17.3 markdown-it: 15.0.3 react: 19.2.7 diff --git a/resources/babel.config.js b/resources/babel.config.js index 78831581504..b2981eaa67b 100644 --- a/resources/babel.config.js +++ b/resources/babel.config.js @@ -5,7 +5,8 @@ module.exports = { require.resolve('@babel/preset-react'), ], plugins: [ - require.resolve('@babel/plugin-proposal-class-properties'), + require.resolve('@babel/plugin-transform-class-properties'), + require.resolve('@babel/plugin-transform-private-methods'), require.resolve('@babel/plugin-transform-class-static-block'), ], }; diff --git a/resources/custom-words.txt b/resources/custom-words.txt index 5f3955ddaca..dbe6f326ec1 100644 --- a/resources/custom-words.txt +++ b/resources/custom-words.txt @@ -19,8 +19,11 @@ // phonetic notation acao acmerc +affordance +affordances aivazis akshat +alderaan alexey alok amfoss @@ -33,6 +36,8 @@ asiandrummer astro astrojs aumy +autodocs +automerge Autopurge behaviour benjie @@ -41,7 +46,9 @@ blockstring bobbybobby borggreve bram +browserslist browserslistrc +cacheable calar calt chainable @@ -56,6 +63,8 @@ codespaces codicon colmena combobox +corellia +crdt cshaver dedenting delivr @@ -69,7 +78,9 @@ divyenduz dompurify dotan dotansimha +EAEEF edcore +embedders envrc esbuild estree @@ -93,6 +104,7 @@ grafbase graphi graphile GraphiQL +graphiqlplugin graphqlconfig graphqlrc graphqls @@ -101,6 +113,7 @@ harshith headlessui heyenbrock hola +homeworld htmling hurrell hyohyeon @@ -108,6 +121,7 @@ ical imolorhe importmap inno +inputarea intellij interruptible invalidchar @@ -117,11 +131,13 @@ jiti jonathanawesome jsdelivr jsgl +keycap keymap keytar kumar languageservice leebyron +leia Leko LekoArts lezer @@ -139,7 +155,9 @@ marko matchingbracket medellín menlo +menuitemradio meros +microtasks middlewares minipass mockfs @@ -150,11 +168,11 @@ nauroze newhope ngql nextjs -nodenext nishchit nocheck nocursor nodenext +nodenext nonmatchingbracket novvum nowdoc @@ -163,6 +181,7 @@ nullthrows nulltype nvim objectvalues +oklch onig ooops orche @@ -175,8 +194,10 @@ oxlint oxlintrc paas pabbati +parseable picomatch pieas +pluggable pnpm postbuild pratap @@ -191,13 +212,19 @@ quasis ractive randomthing ravikoti +reparse +reparsed resi resizer +retheme +retheming +retint rikki roadmap roboto rodionov rohit +ruleset runmode runtimes saihaj @@ -211,12 +238,15 @@ sfc's sgrove simha singleline +skywalker snyk socker sonarjs sorare spawndamnit +spinbuttons squirrelly +starships stonexer streamable subpath @@ -227,22 +257,29 @@ svgo svgr tanay tanaypratap +tatooine testid testonly therox thomasheyenbrock timsuchanek tokenizes +treeshake tsup turbopack typeahead typeaheads typedoc typeof +unchecking uncurried unfocus unnormalized unparsable +unparseable +unregistering +unstub +unstyled unsubscribable urigo urql @@ -253,6 +290,7 @@ vitejs vitest vizag vsix +wcag webp websockets webworker @@ -260,6 +298,8 @@ wgutils whatwg wincent wonka +wordmark +yjs yoshiakis zdravo zustand diff --git a/resources/index.html.template b/resources/index.html.template index cbaae2b259f..97a8a2fd65a 100644 --- a/resources/index.html.template +++ b/resources/index.html.template @@ -10,7 +10,7 @@ - GraphiQL 5 with React 19 and GraphiQL Explorer + GraphiQL 6 with React 19