Unverified 提交 2661ba3b authored 作者: Will Chen's avatar Will Chen 提交者: GitHub

fix: update E2E tests for plan mode questionnaire and chat history (#2507)

## Summary - Fix plan_mode questionnaire test to use `getByText` for Base UI Radio components (hidden inputs can't be clicked with `getByRole`/`getByLabel`) - Update chat_history tests for chronological order (oldest first) - Add `clearChatInput()` and `openChatHistoryMenu()` helpers with `toPass()` retry logic for reliable Lexical editor interactions - Add `Timeout.SHORT` constant for quick retries - Update AGENTS.md with Lexical editor and Base UI Radio testing tips ## Test plan - [x] `npm run e2e e2e-tests/plan_mode.spec.ts` passes - [x] `npm run e2e e2e-tests/chat_history.spec.ts` passes - [x] `npm test` passes 🤖 Generated with [Claude Code](https://claude.com/claude-code) <!-- devin-review-badge-begin --> --- <a href="https://app.devin.ai/review/dyad-sh/dyad/pull/2507" target="_blank"> <picture> <source media="(prefers-color-scheme: dark)" srcset="https://static.devin.ai/assets/gh-open-in-devin-review-dark.svg?v=1"> <img src="https://static.devin.ai/assets/gh-open-in-devin-review-light.svg?v=1" alt="Open with Devin"> </picture> </a> <!-- devin-review-badge-end --> <!-- CURSOR_SUMMARY --> --- > [!NOTE] > **Low Risk** > Changes are confined to E2E tests, developer docs, and pre-commit tooling; product/runtime logic is untouched, with minimal risk beyond potential CI formatting or test expectation drift. > > **Overview** > Stabilizes Playwright E2E coverage around plan mode and chat history by switching Base UI Radio selection to clicking visible label text and by adding Lexical-safe input helpers (`clearChatInput`, `openChatHistoryMenu`) with short `toPass()` retries. > > Updates chat history assertions to match **chronological ordering** (oldest-first) and refreshes related snapshots/docs. Also tightens pre-commit formatting via `lint-staged` (limits `oxfmt` to a narrower glob) and simplifies the Husky `pre-commit` hook to only run `lint-staged`. > > <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit 11c4809a66819c53a19042450b5da93ef3f1b29c. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup> <!-- /CURSOR_SUMMARY --> <!-- This is an auto-generated description by cubic. --> --- ## Summary by cubic Fixes flaky E2E tests for plan mode and chat history by using reliable selectors and Lexical-safe helpers. Radios can be selected via visible labels, and chat history tests now match chronological order. - **Bug Fixes** - Plan mode: select Base UI Radio by clicking label text with getByText. - Chat history: update tests for oldest-first order and default selection behavior. - Helpers and docs: add clearChatInput/openChatHistoryMenu with toPass retries and Timeout.SHORT; update AGENTS.md with Lexical and Base UI tips. - Pre-commit: remove YAML from oxfmt to fix hook failures. <sup>Written for commit b03d72d2605d98201e7d68231ac381ffb7d64f63. Summary will update on new commits.</sup> <!-- End of auto-generated description by cubic. --> --------- Co-authored-by: 's avatarClaude Opus 4.5 <noreply@anthropic.com> Co-authored-by: 's avatargithub-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
上级 485c8b8d
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"
npx lint-staged npx lint-staged
...@@ -243,14 +243,34 @@ When running GitHub Actions with `pull_request_target` on cross-repo PRs (from f ...@@ -243,14 +243,34 @@ When running GitHub Actions with `pull_request_target` on cross-repo PRs (from f
### Base UI Radio component selection in Playwright ### Base UI Radio component selection in Playwright
When testing Base UI Radio components in Playwright E2E tests, use `getByRole('radio', { name: 'Label' })` instead of `getByLabel('Label')`. The `getByLabel` selector may not work correctly with Base UI's Radio component structure. Base UI Radio components render a hidden native `<input type="radio">` with `aria-hidden="true"`. Both `getByRole('radio', { name: '...' })` and `getByLabel('...')` find this hidden input but can't click it (element is outside viewport). Use `getByText` to click the visible label text instead.
```ts ```ts
// Correct: use role selector // Correct: click the visible label text
await page.getByRole("radio", { name: "React" }).click(); await page.getByText("Vue", { exact: true }).click();
// May not work with Base UI Radio // Won't work: finds hidden input, can't click
await page.getByLabel("React").click(); await page.getByRole("radio", { name: "Vue" }).click();
await page.getByLabel("Vue").click();
```
### Lexical editor in Playwright E2E tests
The chat input uses a Lexical editor (contenteditable). Standard Playwright methods don't always work:
- **Clearing input**: `fill("")` doesn't reliably clear Lexical. Use keyboard shortcuts instead: `Meta+a` then `Backspace`.
- **Timing issues**: Lexical may need time to update its internal state. Use `toPass()` with retries for resilient tests.
- **Helper methods**: Use `po.clearChatInput()` and `po.openChatHistoryMenu()` from test_helper.ts for reliable Lexical interactions.
```ts
// Wrong: may not clear Lexical editor
await chatInput.fill("");
// Correct: use helper with retry logic
await po.clearChatInput();
// For history menu (needs clear + ArrowUp with retries)
await po.openChatHistoryMenu();
``` ```
### Drizzle migration conflicts during rebase ### Drizzle migration conflicts during rebase
......
...@@ -23,47 +23,45 @@ test("should open, navigate, and select from history menu", async ({ po }) => { ...@@ -23,47 +23,45 @@ test("should open, navigate, and select from history menu", async ({ po }) => {
const historyMenu = po.page.locator('[data-mentions-menu="true"]'); const historyMenu = po.page.locator('[data-mentions-menu="true"]');
await expect(historyMenu).toBeVisible(); await expect(historyMenu).toBeVisible();
// Verify menu has items (newest at top, oldest at bottom - array is reversed) // Verify menu has items (oldest at top, newest at bottom - chronological order)
const menuItems = po.page.locator('[data-mentions-menu="true"] li'); const menuItems = po.page.locator('[data-mentions-menu="true"] li');
await expect(menuItems).toHaveCount(2); await expect(menuItems).toHaveCount(2);
await expect(menuItems.nth(0)).toContainText("Second test message"); await expect(menuItems.nth(0)).toContainText("First test message");
await expect(menuItems.nth(1)).toContainText("First test message"); await expect(menuItems.nth(1)).toContainText("Second test message");
// Verify default selection is the last visible item (oldest message, at bottom) // Verify default selection is the last visible item (newest message, at bottom)
// After opening, a synthetic ArrowUp is dispatched which wraps to the bottom item // After opening, a synthetic ArrowUp is dispatched which wraps to the bottom item
const lastItem = menuItems.nth(1); const lastItem = menuItems.nth(1);
await expect(lastItem).toHaveClass(/bg-accent/, { timeout: 500 }); await expect(lastItem).toHaveClass(/bg-accent/, { timeout: 500 });
// Navigate up to first item (newest message) // Navigate up to first item (oldest message)
await po.page.keyboard.press("ArrowUp"); await po.page.keyboard.press("ArrowUp");
const firstItem = menuItems.nth(0); const firstItem = menuItems.nth(0);
await expect(firstItem).toHaveClass(/bg-accent/); await expect(firstItem).toHaveClass(/bg-accent/);
await expect(firstItem).toContainText("Second test message"); await expect(firstItem).toContainText("First test message");
// Navigate up again to wrap to last item (oldest message) // Navigate up again to wrap to last item (newest message)
await po.page.keyboard.press("ArrowUp"); await po.page.keyboard.press("ArrowUp");
await expect(lastItem).toHaveClass(/bg-accent/); await expect(lastItem).toHaveClass(/bg-accent/);
// Select with Enter (selects oldest message) // Select with Enter (selects newest message)
await po.page.keyboard.press("Enter"); await po.page.keyboard.press("Enter");
// Menu should close and text should be inserted // Menu should close and text should be inserted
await expect(historyMenu).not.toBeVisible({ timeout: Timeout.MEDIUM }); await expect(historyMenu).not.toBeVisible({ timeout: Timeout.MEDIUM });
await expect(chatInput).toContainText("First test message", { await expect(chatInput).toContainText("Second test message", {
timeout: Timeout.MEDIUM, timeout: Timeout.MEDIUM,
}); });
// Clear input for mouse click test // Clear input for mouse click test
await chatInput.fill(""); await po.openChatHistoryMenu();
await po.page.keyboard.press("ArrowUp");
await expect(historyMenu).toBeVisible();
// Click the first item (newest message, at top) // Click the first item (oldest message, at top)
await menuItems.nth(0).click(); await menuItems.nth(0).click();
// Verify menu closed and newest message was inserted // Verify menu closed and oldest message was inserted
await expect(historyMenu).not.toBeVisible({ timeout: Timeout.MEDIUM }); await expect(historyMenu).not.toBeVisible({ timeout: Timeout.MEDIUM });
await expect(chatInput).toContainText("Second test message", { await expect(chatInput).toContainText("First test message", {
timeout: Timeout.MEDIUM, timeout: Timeout.MEDIUM,
}); });
}); });
...@@ -101,9 +99,7 @@ test("should handle edge cases: guards, escape, and sending after cancel", async ...@@ -101,9 +99,7 @@ test("should handle edge cases: guards, escape, and sending after cancel", async
await expect(historyMenu).not.toBeVisible(); await expect(historyMenu).not.toBeVisible();
// Test 3: Escape closes menu and clears input // Test 3: Escape closes menu and clears input
await chatInput.fill(""); await po.openChatHistoryMenu();
await po.page.keyboard.press("ArrowUp");
await expect(historyMenu).toBeVisible();
await po.page.keyboard.press("Escape"); await po.page.keyboard.press("Escape");
await expect(historyMenu).not.toBeVisible(); await expect(historyMenu).not.toBeVisible();
......
...@@ -18,6 +18,7 @@ export const Timeout = { ...@@ -18,6 +18,7 @@ export const Timeout = {
EXTRA_LONG: process.env.CI ? 120_000 : 60_000, EXTRA_LONG: process.env.CI ? 120_000 : 60_000,
LONG: process.env.CI ? 60_000 : 30_000, LONG: process.env.CI ? 60_000 : 30_000,
MEDIUM: process.env.CI ? 30_000 : 15_000, MEDIUM: process.env.CI ? 30_000 : 15_000,
SHORT: process.env.CI ? 5_000 : 2_000,
}; };
/** /**
...@@ -965,6 +966,35 @@ export class PageObject { ...@@ -965,6 +966,35 @@ export class PageObject {
); );
} }
/**
* Clears the Lexical chat input using keyboard shortcuts (Meta+A, Backspace).
* Uses toPass() for resilience since Lexical may need time to update its state.
*/
async clearChatInput() {
const chatInput = this.getChatInput();
await chatInput.click();
await this.page.keyboard.press("ControlOrMeta+a");
await this.page.keyboard.press("Backspace");
await expect(async () => {
const text = await chatInput.textContent();
expect(text?.trim()).toBe("");
}).toPass({ timeout: Timeout.SHORT });
}
/**
* Opens the chat history menu by clearing the input and pressing ArrowUp.
* Uses toPass() for resilience since the Lexical editor may need time to
* update its state before the history menu can be triggered.
*/
async openChatHistoryMenu() {
const historyMenu = this.page.locator('[data-mentions-menu="true"]');
await expect(async () => {
await this.clearChatInput();
await this.page.keyboard.press("ArrowUp");
await expect(historyMenu).toBeVisible({ timeout: 500 });
}).toPass({ timeout: Timeout.SHORT });
}
clickNewChat({ index = 0 }: { index?: number } = {}) { clickNewChat({ index = 0 }: { index?: number } = {}) {
// There is two new chat buttons... // There is two new chat buttons...
return this.page return this.page
......
...@@ -66,8 +66,8 @@ test("plan mode - questionnaire flow", async ({ po }) => { ...@@ -66,8 +66,8 @@ test("plan mode - questionnaire flow", async ({ po }) => {
timeout: Timeout.MEDIUM, timeout: Timeout.MEDIUM,
}); });
// Select "React" radio option (using role selector for base-ui Radio component) // Select "Vue" radio option by clicking the label text (Base UI Radio components)
await po.page.getByRole("radio", { name: "React" }).click(); await po.page.getByText("Vue", { exact: true }).click();
// Click Submit (single question → Submit button shown) // Click Submit (single question → Submit button shown)
await po.page.getByRole("button", { name: /Submit/ }).click(); await po.page.getByRole("button", { name: /Submit/ }).click();
......
...@@ -16,8 +16,13 @@ ...@@ -16,8 +16,13 @@
] ]
}, },
{ {
"type": "item_reference", "role": "assistant",
"id": "[[ITEM_REF_0]]" "content": [
{
"type": "output_text",
"text": "\n <dyad-write path=\"file1.txt\">\n A file (2)\n </dyad-write>\n More\n EOM"
}
]
}, },
{ {
"role": "user", "role": "user",
...@@ -468,6 +473,9 @@ ...@@ -468,6 +473,9 @@
], ],
"tool_choice": "auto", "tool_choice": "auto",
"stream": true, "stream": true,
"include": [
"reasoning.encrypted_content"
],
"dyad_options": { "dyad_options": {
"enable_lazy_edits": true, "enable_lazy_edits": true,
"enable_smart_files_context": true "enable_smart_files_context": true
......
...@@ -19,7 +19,7 @@ ...@@ -19,7 +19,7 @@
- paragraph: tc=local-agent/read-logs - paragraph: tc=local-agent/read-logs
- paragraph: Let me check the recent console logs to see what's happening in the application. - paragraph: Let me check the recent console logs to see what's happening in the application.
- img - img
- text: LOGSReading 8 logs - text: /LOGSReading \d+ logs/
- img - img
- paragraph: Now let me filter for only error logs to identify any issues. - paragraph: Now let me filter for only error logs to identify any issues.
- img - img
......
- paragraph: tc=local-agent/questionnaire - paragraph: tc=local-agent/questionnaire
- paragraph: Let me ask you a few questions to understand your requirements. - paragraph: Let me ask you a few questions to understand your requirements.
- button: - button "Copy":
- img - img
- img - img
- text: Approved - text: Approved
...@@ -8,28 +8,33 @@ ...@@ -8,28 +8,33 @@
- text: claude-opus-4-5 - text: claude-opus-4-5
- img - img
- text: less than a minute ago - text: less than a minute ago
- button "Request ID": - button "Copy Request ID":
- img - img
- text: Request ID
- paragraph: "Here are my responses to the questionnaire:" - paragraph: "Here are my responses to the questionnaire:"
- paragraph: - paragraph:
- strong: Which framework do you prefer? - strong: Which framework do you prefer?
- text: React - text: Vue
- img - img
- text: file1.txt - text: file1.txt
- button "Edit": - button "Edit":
- img - img
- text: Edit
- img - img
- text: file1.txt - text: file1.txt
- paragraph: More EOM - paragraph: More EOM
- button: - button "Copy":
- img - img
- img - img
- text: claude-opus-4-5 - text: claude-opus-4-5
- img - img
- text: less than a minute ago - text: less than a minute ago
- button "Request ID": - button "Copy Request ID":
- img - img
- text: Request ID
- button "Undo": - button "Undo":
- img - img
- text: Undo
- button "Retry": - button "Retry":
- img - img
\ No newline at end of file - text: Retry
module.exports = { module.exports = {
"**/*.{ts,tsx}": () => "npm run ts", "**/*.{ts,tsx}": () => "npm run ts",
"**/*.{js,mjs,cjs,jsx,ts,mts,cts,tsx,vue,astro,svelte}": "oxlint", "**/*.{js,mjs,cjs,jsx,ts,mts,cts,tsx,vue,astro,svelte}": "oxlint",
"*.{js,css,md,ts,tsx,jsx,json,yml,yaml}": "oxfmt", "**/*.{js,css,md,ts,tsx,jsx,json}": "oxfmt",
}; };
...@@ -451,7 +451,6 @@ ...@@ -451,7 +451,6 @@
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.4.tgz", "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.4.tgz",
"integrity": "sha512-2BCOP7TN8M+gVDj7/ht3hsaO/B/n5oDbiAyyvnRlNOs+u1o+JWNYTQrmpuNp1/Wq2gcFrI01JAW+paEKDMx/CA==", "integrity": "sha512-2BCOP7TN8M+gVDj7/ht3hsaO/B/n5oDbiAyyvnRlNOs+u1o+JWNYTQrmpuNp1/Wq2gcFrI01JAW+paEKDMx/CA==",
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"@babel/code-frame": "^7.27.1", "@babel/code-frame": "^7.27.1",
"@babel/generator": "^7.28.3", "@babel/generator": "^7.28.3",
...@@ -674,7 +673,6 @@ ...@@ -674,7 +673,6 @@
"resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz",
"integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==",
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"@babel/code-frame": "^7.27.1", "@babel/code-frame": "^7.27.1",
"@babel/parser": "^7.27.2", "@babel/parser": "^7.27.2",
...@@ -1420,7 +1418,6 @@ ...@@ -1420,7 +1418,6 @@
"integrity": "sha512-zx0EIq78WlY/lBb1uXlziZmDZI4ubcCXIMJ4uGjXzZW0nS19TjSPeXPAjzzTmKQlJUZm0SbmZhPKP7tuQ1SsEw==", "integrity": "sha512-zx0EIq78WlY/lBb1uXlziZmDZI4ubcCXIMJ4uGjXzZW0nS19TjSPeXPAjzzTmKQlJUZm0SbmZhPKP7tuQ1SsEw==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"chalk": "^4.1.1", "chalk": "^4.1.1",
"fs-extra": "^9.0.1", "fs-extra": "^9.0.1",
...@@ -2742,8 +2739,7 @@ ...@@ -2742,8 +2739,7 @@
"version": "0.22.0", "version": "0.22.0",
"resolved": "https://registry.npmjs.org/@flakiness/flakiness-report/-/flakiness-report-0.22.0.tgz", "resolved": "https://registry.npmjs.org/@flakiness/flakiness-report/-/flakiness-report-0.22.0.tgz",
"integrity": "sha512-soo8VpTu1/LqFXrwv7HX/YcvKHRN6gjyGZqpOeSa0u5ZrtysuFL4u59FhDhnfKqCC17UQUACPBE8KSM36PiOaw==", "integrity": "sha512-soo8VpTu1/LqFXrwv7HX/YcvKHRN6gjyGZqpOeSa0u5ZrtysuFL4u59FhDhnfKqCC17UQUACPBE8KSM36PiOaw==",
"license": "MIT", "license": "MIT"
"peer": true
}, },
"node_modules/@flakiness/playwright": { "node_modules/@flakiness/playwright": {
"version": "1.0.0", "version": "1.0.0",
...@@ -2906,6 +2902,7 @@ ...@@ -2906,6 +2902,7 @@
"os": [ "os": [
"darwin" "darwin"
], ],
"peer": true,
"engines": { "engines": {
"node": "^18.17.0 || ^20.3.0 || >=21.0.0" "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
}, },
...@@ -2928,6 +2925,7 @@ ...@@ -2928,6 +2925,7 @@
"os": [ "os": [
"darwin" "darwin"
], ],
"peer": true,
"engines": { "engines": {
"node": "^18.17.0 || ^20.3.0 || >=21.0.0" "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
}, },
...@@ -2950,6 +2948,7 @@ ...@@ -2950,6 +2948,7 @@
"os": [ "os": [
"darwin" "darwin"
], ],
"peer": true,
"funding": { "funding": {
"url": "https://opencollective.com/libvips" "url": "https://opencollective.com/libvips"
} }
...@@ -2966,6 +2965,7 @@ ...@@ -2966,6 +2965,7 @@
"os": [ "os": [
"darwin" "darwin"
], ],
"peer": true,
"funding": { "funding": {
"url": "https://opencollective.com/libvips" "url": "https://opencollective.com/libvips"
} }
...@@ -2982,6 +2982,7 @@ ...@@ -2982,6 +2982,7 @@
"os": [ "os": [
"linux" "linux"
], ],
"peer": true,
"funding": { "funding": {
"url": "https://opencollective.com/libvips" "url": "https://opencollective.com/libvips"
} }
...@@ -2998,6 +2999,7 @@ ...@@ -2998,6 +2999,7 @@
"os": [ "os": [
"linux" "linux"
], ],
"peer": true,
"funding": { "funding": {
"url": "https://opencollective.com/libvips" "url": "https://opencollective.com/libvips"
} }
...@@ -3014,6 +3016,7 @@ ...@@ -3014,6 +3016,7 @@
"os": [ "os": [
"linux" "linux"
], ],
"peer": true,
"funding": { "funding": {
"url": "https://opencollective.com/libvips" "url": "https://opencollective.com/libvips"
} }
...@@ -3030,6 +3033,7 @@ ...@@ -3030,6 +3033,7 @@
"os": [ "os": [
"linux" "linux"
], ],
"peer": true,
"funding": { "funding": {
"url": "https://opencollective.com/libvips" "url": "https://opencollective.com/libvips"
} }
...@@ -3046,6 +3050,7 @@ ...@@ -3046,6 +3050,7 @@
"os": [ "os": [
"linux" "linux"
], ],
"peer": true,
"funding": { "funding": {
"url": "https://opencollective.com/libvips" "url": "https://opencollective.com/libvips"
} }
...@@ -3062,6 +3067,7 @@ ...@@ -3062,6 +3067,7 @@
"os": [ "os": [
"linux" "linux"
], ],
"peer": true,
"funding": { "funding": {
"url": "https://opencollective.com/libvips" "url": "https://opencollective.com/libvips"
} }
...@@ -3078,6 +3084,7 @@ ...@@ -3078,6 +3084,7 @@
"os": [ "os": [
"linux" "linux"
], ],
"peer": true,
"funding": { "funding": {
"url": "https://opencollective.com/libvips" "url": "https://opencollective.com/libvips"
} }
...@@ -3094,6 +3101,7 @@ ...@@ -3094,6 +3101,7 @@
"os": [ "os": [
"linux" "linux"
], ],
"peer": true,
"engines": { "engines": {
"node": "^18.17.0 || ^20.3.0 || >=21.0.0" "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
}, },
...@@ -3116,6 +3124,7 @@ ...@@ -3116,6 +3124,7 @@
"os": [ "os": [
"linux" "linux"
], ],
"peer": true,
"engines": { "engines": {
"node": "^18.17.0 || ^20.3.0 || >=21.0.0" "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
}, },
...@@ -3138,6 +3147,7 @@ ...@@ -3138,6 +3147,7 @@
"os": [ "os": [
"linux" "linux"
], ],
"peer": true,
"engines": { "engines": {
"node": "^18.17.0 || ^20.3.0 || >=21.0.0" "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
}, },
...@@ -3160,6 +3170,7 @@ ...@@ -3160,6 +3170,7 @@
"os": [ "os": [
"linux" "linux"
], ],
"peer": true,
"engines": { "engines": {
"node": "^18.17.0 || ^20.3.0 || >=21.0.0" "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
}, },
...@@ -3182,6 +3193,7 @@ ...@@ -3182,6 +3193,7 @@
"os": [ "os": [
"linux" "linux"
], ],
"peer": true,
"engines": { "engines": {
"node": "^18.17.0 || ^20.3.0 || >=21.0.0" "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
}, },
...@@ -3204,6 +3216,7 @@ ...@@ -3204,6 +3216,7 @@
"os": [ "os": [
"linux" "linux"
], ],
"peer": true,
"engines": { "engines": {
"node": "^18.17.0 || ^20.3.0 || >=21.0.0" "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
}, },
...@@ -3226,6 +3239,7 @@ ...@@ -3226,6 +3239,7 @@
"os": [ "os": [
"linux" "linux"
], ],
"peer": true,
"engines": { "engines": {
"node": "^18.17.0 || ^20.3.0 || >=21.0.0" "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
}, },
...@@ -3245,6 +3259,7 @@ ...@@ -3245,6 +3259,7 @@
], ],
"license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT", "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT",
"optional": true, "optional": true,
"peer": true,
"dependencies": { "dependencies": {
"@emnapi/runtime": "^1.4.4" "@emnapi/runtime": "^1.4.4"
}, },
...@@ -3267,6 +3282,7 @@ ...@@ -3267,6 +3282,7 @@
"os": [ "os": [
"win32" "win32"
], ],
"peer": true,
"engines": { "engines": {
"node": "^18.17.0 || ^20.3.0 || >=21.0.0" "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
}, },
...@@ -3286,6 +3302,7 @@ ...@@ -3286,6 +3302,7 @@
"os": [ "os": [
"win32" "win32"
], ],
"peer": true,
"engines": { "engines": {
"node": "^18.17.0 || ^20.3.0 || >=21.0.0" "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
}, },
...@@ -3305,6 +3322,7 @@ ...@@ -3305,6 +3322,7 @@
"os": [ "os": [
"win32" "win32"
], ],
"peer": true,
"engines": { "engines": {
"node": "^18.17.0 || ^20.3.0 || >=21.0.0" "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
}, },
...@@ -3590,7 +3608,6 @@ ...@@ -3590,7 +3608,6 @@
"integrity": "sha512-yl43JD/86CIj3Mz5mvvLJqAOfIup7ncxfJ0Btnl0/v5TouVUyeEdcpknfgc+yMevS/48oH9WAkkw93m7otLb/A==", "integrity": "sha512-yl43JD/86CIj3Mz5mvvLJqAOfIup7ncxfJ0Btnl0/v5TouVUyeEdcpknfgc+yMevS/48oH9WAkkw93m7otLb/A==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"@inquirer/checkbox": "^3.0.1", "@inquirer/checkbox": "^3.0.1",
"@inquirer/confirm": "^4.0.1", "@inquirer/confirm": "^4.0.1",
...@@ -4354,6 +4371,7 @@ ...@@ -4354,6 +4371,7 @@
"resolved": "https://registry.npmjs.org/@lexical/utils/-/utils-0.35.0.tgz", "resolved": "https://registry.npmjs.org/@lexical/utils/-/utils-0.35.0.tgz",
"integrity": "sha512-2H393EYDnFznYCDFOW3MHiRzwEO5M/UBhtUjvTT+9kc+qhX4U3zc8ixQalo5UmZ5B2nh7L/inXdTFzvSRXtsRA==", "integrity": "sha512-2H393EYDnFznYCDFOW3MHiRzwEO5M/UBhtUjvTT+9kc+qhX4U3zc8ixQalo5UmZ5B2nh7L/inXdTFzvSRXtsRA==",
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"@lexical/list": "0.35.0", "@lexical/list": "0.35.0",
"@lexical/selection": "0.35.0", "@lexical/selection": "0.35.0",
...@@ -4366,6 +4384,7 @@ ...@@ -4366,6 +4384,7 @@
"resolved": "https://registry.npmjs.org/@lexical/clipboard/-/clipboard-0.35.0.tgz", "resolved": "https://registry.npmjs.org/@lexical/clipboard/-/clipboard-0.35.0.tgz",
"integrity": "sha512-ko7xSIIiayvDiqjNDX6fgH9RlcM6r9vrrvJYTcfGVBor5httx16lhIi0QJZ4+RNPvGtTjyFv4bwRmsixRRwImg==", "integrity": "sha512-ko7xSIIiayvDiqjNDX6fgH9RlcM6r9vrrvJYTcfGVBor5httx16lhIi0QJZ4+RNPvGtTjyFv4bwRmsixRRwImg==",
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"@lexical/html": "0.35.0", "@lexical/html": "0.35.0",
"@lexical/list": "0.35.0", "@lexical/list": "0.35.0",
...@@ -4379,6 +4398,7 @@ ...@@ -4379,6 +4398,7 @@
"resolved": "https://registry.npmjs.org/@lexical/html/-/html-0.35.0.tgz", "resolved": "https://registry.npmjs.org/@lexical/html/-/html-0.35.0.tgz",
"integrity": "sha512-rXGFE5S5rKsg3tVnr1s4iEgOfCApNXGpIFI3T2jGEShaCZ5HLaBY9NVBXnE9Nb49e9bkDkpZ8FZd1qokCbQXbw==", "integrity": "sha512-rXGFE5S5rKsg3tVnr1s4iEgOfCApNXGpIFI3T2jGEShaCZ5HLaBY9NVBXnE9Nb49e9bkDkpZ8FZd1qokCbQXbw==",
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"@lexical/selection": "0.35.0", "@lexical/selection": "0.35.0",
"@lexical/utils": "0.35.0", "@lexical/utils": "0.35.0",
...@@ -4390,6 +4410,7 @@ ...@@ -4390,6 +4410,7 @@
"resolved": "https://registry.npmjs.org/@lexical/list/-/list-0.35.0.tgz", "resolved": "https://registry.npmjs.org/@lexical/list/-/list-0.35.0.tgz",
"integrity": "sha512-owsmc8iwgExBX8sFe8fKTiwJVhYULt9hD1RZ/HwfaiEtRZZkINijqReOBnW2mJfRxBzhFSWc4NG3ISB+fHYzqw==", "integrity": "sha512-owsmc8iwgExBX8sFe8fKTiwJVhYULt9hD1RZ/HwfaiEtRZZkINijqReOBnW2mJfRxBzhFSWc4NG3ISB+fHYzqw==",
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"@lexical/selection": "0.35.0", "@lexical/selection": "0.35.0",
"@lexical/utils": "0.35.0", "@lexical/utils": "0.35.0",
...@@ -4401,6 +4422,7 @@ ...@@ -4401,6 +4422,7 @@
"resolved": "https://registry.npmjs.org/@lexical/selection/-/selection-0.35.0.tgz", "resolved": "https://registry.npmjs.org/@lexical/selection/-/selection-0.35.0.tgz",
"integrity": "sha512-mMtDE7Q0nycXdFTTH/+ta6EBrBwxBB4Tg8QwsGntzQ1Cq//d838dpXpFjJOqHEeVHUqXpiuj+cBG8+bvz/rPRw==", "integrity": "sha512-mMtDE7Q0nycXdFTTH/+ta6EBrBwxBB4Tg8QwsGntzQ1Cq//d838dpXpFjJOqHEeVHUqXpiuj+cBG8+bvz/rPRw==",
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"lexical": "0.35.0" "lexical": "0.35.0"
} }
...@@ -4410,6 +4432,7 @@ ...@@ -4410,6 +4432,7 @@
"resolved": "https://registry.npmjs.org/@lexical/table/-/table-0.35.0.tgz", "resolved": "https://registry.npmjs.org/@lexical/table/-/table-0.35.0.tgz",
"integrity": "sha512-9jlTlkVideBKwsEnEkqkdg7A3mije1SvmfiqoYnkl1kKJCLA5iH90ywx327PU0p+bdnURAytWUeZPXaEuEl2OA==", "integrity": "sha512-9jlTlkVideBKwsEnEkqkdg7A3mije1SvmfiqoYnkl1kKJCLA5iH90ywx327PU0p+bdnURAytWUeZPXaEuEl2OA==",
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"@lexical/clipboard": "0.35.0", "@lexical/clipboard": "0.35.0",
"@lexical/utils": "0.35.0", "@lexical/utils": "0.35.0",
...@@ -4420,7 +4443,8 @@ ...@@ -4420,7 +4443,8 @@
"version": "0.35.0", "version": "0.35.0",
"resolved": "https://registry.npmjs.org/lexical/-/lexical-0.35.0.tgz", "resolved": "https://registry.npmjs.org/lexical/-/lexical-0.35.0.tgz",
"integrity": "sha512-3VuV8xXhh5xJA6tzvfDvE0YBCMkIZUmxtRilJQDDdCgJCc+eut6qAv2qbN+pbqvarqcQqPN1UF+8YvsjmyOZpw==", "integrity": "sha512-3VuV8xXhh5xJA6tzvfDvE0YBCMkIZUmxtRilJQDDdCgJCc+eut6qAv2qbN+pbqvarqcQqPN1UF+8YvsjmyOZpw==",
"license": "MIT" "license": "MIT",
"peer": true
}, },
"node_modules/@lexical/yjs": { "node_modules/@lexical/yjs": {
"version": "0.33.1", "version": "0.33.1",
...@@ -4575,7 +4599,6 @@ ...@@ -4575,7 +4599,6 @@
"resolved": "https://registry.npmjs.org/@neondatabase/serverless/-/serverless-1.0.1.tgz", "resolved": "https://registry.npmjs.org/@neondatabase/serverless/-/serverless-1.0.1.tgz",
"integrity": "sha512-O6yC5TT0jbw86VZVkmnzCZJB0hfxBl0JJz6f+3KHoZabjb/X08r9eFA+vuY06z1/qaovykvdkrXYq3SPUuvogA==", "integrity": "sha512-O6yC5TT0jbw86VZVkmnzCZJB0hfxBl0JJz6f+3KHoZabjb/X08r9eFA+vuY06z1/qaovykvdkrXYq3SPUuvogA==",
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"@types/node": "^22.15.30", "@types/node": "^22.15.30",
"@types/pg": "^8.8.0" "@types/pg": "^8.8.0"
...@@ -4588,7 +4611,8 @@ ...@@ -4588,7 +4611,8 @@
"version": "15.5.2", "version": "15.5.2",
"resolved": "https://registry.npmjs.org/@next/env/-/env-15.5.2.tgz", "resolved": "https://registry.npmjs.org/@next/env/-/env-15.5.2.tgz",
"integrity": "sha512-Qe06ew4zt12LeO6N7j8/nULSOe3fMXE4dM6xgpBQNvdzyK1sv5y4oAP3bq4LamrvGCZtmRYnW8URFCeX5nFgGg==", "integrity": "sha512-Qe06ew4zt12LeO6N7j8/nULSOe3fMXE4dM6xgpBQNvdzyK1sv5y4oAP3bq4LamrvGCZtmRYnW8URFCeX5nFgGg==",
"license": "MIT" "license": "MIT",
"peer": true
}, },
"node_modules/@next/swc-darwin-arm64": { "node_modules/@next/swc-darwin-arm64": {
"version": "15.5.2", "version": "15.5.2",
...@@ -4602,6 +4626,7 @@ ...@@ -4602,6 +4626,7 @@
"os": [ "os": [
"darwin" "darwin"
], ],
"peer": true,
"engines": { "engines": {
"node": ">= 10" "node": ">= 10"
} }
...@@ -4618,6 +4643,7 @@ ...@@ -4618,6 +4643,7 @@
"os": [ "os": [
"darwin" "darwin"
], ],
"peer": true,
"engines": { "engines": {
"node": ">= 10" "node": ">= 10"
} }
...@@ -4634,6 +4660,7 @@ ...@@ -4634,6 +4660,7 @@
"os": [ "os": [
"linux" "linux"
], ],
"peer": true,
"engines": { "engines": {
"node": ">= 10" "node": ">= 10"
} }
...@@ -4650,6 +4677,7 @@ ...@@ -4650,6 +4677,7 @@
"os": [ "os": [
"linux" "linux"
], ],
"peer": true,
"engines": { "engines": {
"node": ">= 10" "node": ">= 10"
} }
...@@ -4666,6 +4694,7 @@ ...@@ -4666,6 +4694,7 @@
"os": [ "os": [
"linux" "linux"
], ],
"peer": true,
"engines": { "engines": {
"node": ">= 10" "node": ">= 10"
} }
...@@ -4682,6 +4711,7 @@ ...@@ -4682,6 +4711,7 @@
"os": [ "os": [
"linux" "linux"
], ],
"peer": true,
"engines": { "engines": {
"node": ">= 10" "node": ">= 10"
} }
...@@ -4698,6 +4728,7 @@ ...@@ -4698,6 +4728,7 @@
"os": [ "os": [
"win32" "win32"
], ],
"peer": true,
"engines": { "engines": {
"node": ">= 10" "node": ">= 10"
} }
...@@ -4714,6 +4745,7 @@ ...@@ -4714,6 +4745,7 @@
"os": [ "os": [
"win32" "win32"
], ],
"peer": true,
"engines": { "engines": {
"node": ">= 10" "node": ">= 10"
} }
...@@ -4840,7 +4872,6 @@ ...@@ -4840,7 +4872,6 @@
"integrity": "sha512-/g2d4sW9nUDJOMz3mabVQvOGhVa4e/BN/Um7yca9Bb2XTzPPnfTWHWQg+IsEYO7M3Vx+EXvaM/I2pJWIMun1bg==", "integrity": "sha512-/g2d4sW9nUDJOMz3mabVQvOGhVa4e/BN/Um7yca9Bb2XTzPPnfTWHWQg+IsEYO7M3Vx+EXvaM/I2pJWIMun1bg==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"@octokit/auth-token": "^4.0.0", "@octokit/auth-token": "^4.0.0",
"@octokit/graphql": "^7.1.0", "@octokit/graphql": "^7.1.0",
...@@ -5402,7 +5433,6 @@ ...@@ -5402,7 +5433,6 @@
"integrity": "sha512-04IXzPwHrW69XusN/SIdDdKZBzMfOT9UNT/YiJit/xpy2VuAoB8NHc8Aplb96zsWDddLnbkPL3TsmrS04ZU2xQ==", "integrity": "sha512-04IXzPwHrW69XusN/SIdDdKZBzMfOT9UNT/YiJit/xpy2VuAoB8NHc8Aplb96zsWDddLnbkPL3TsmrS04ZU2xQ==",
"devOptional": true, "devOptional": true,
"license": "Apache-2.0", "license": "Apache-2.0",
"peer": true,
"dependencies": { "dependencies": {
"playwright": "1.55.0" "playwright": "1.55.0"
}, },
...@@ -6827,7 +6857,6 @@ ...@@ -6827,7 +6857,6 @@
"integrity": "sha512-EwquDRUDVvWcZds3T2abmB5wSN/Vattal4YtZ6fpBlIUqONV4o/cOBX39cFfQSUCBrIXIjQ6RmapQCHK/PvBYw==", "integrity": "sha512-EwquDRUDVvWcZds3T2abmB5wSN/Vattal4YtZ6fpBlIUqONV4o/cOBX39cFfQSUCBrIXIjQ6RmapQCHK/PvBYw==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"@storybook/global": "^5.0.0", "@storybook/global": "^5.0.0",
"@storybook/instrumenter": "8.6.15", "@storybook/instrumenter": "8.6.15",
...@@ -6972,6 +7001,7 @@ ...@@ -6972,6 +7001,7 @@
"resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.15.tgz", "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.15.tgz",
"integrity": "sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==", "integrity": "sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==",
"license": "Apache-2.0", "license": "Apache-2.0",
"peer": true,
"dependencies": { "dependencies": {
"tslib": "^2.8.0" "tslib": "^2.8.0"
} }
...@@ -7611,7 +7641,6 @@ ...@@ -7611,7 +7641,6 @@
"integrity": "sha512-NMv9ASNARoKksWtsq/SHakpYAYnhBrQgGD8zkLYk/jaK8jUGn08CfEdTRgYhMypUQAfzSP8W6gNLe0q19/t4VA==", "integrity": "sha512-NMv9ASNARoKksWtsq/SHakpYAYnhBrQgGD8zkLYk/jaK8jUGn08CfEdTRgYhMypUQAfzSP8W6gNLe0q19/t4VA==",
"devOptional": true, "devOptional": true,
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"@types/node": "*" "@types/node": "*"
} }
...@@ -7857,7 +7886,6 @@ ...@@ -7857,7 +7886,6 @@
"resolved": "https://registry.npmjs.org/@types/react/-/react-19.1.12.tgz", "resolved": "https://registry.npmjs.org/@types/react/-/react-19.1.12.tgz",
"integrity": "sha512-cMoR+FoAf/Jyq6+Df2/Z41jISvGZZ2eTlnsaJRptmZ76Caldwy1odD4xTr/gNV9VLj0AWgg/nmkevIyUfIIq5w==", "integrity": "sha512-cMoR+FoAf/Jyq6+Df2/Z41jISvGZZ2eTlnsaJRptmZ76Caldwy1odD4xTr/gNV9VLj0AWgg/nmkevIyUfIIq5w==",
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"csstype": "^3.0.2" "csstype": "^3.0.2"
} }
...@@ -7868,7 +7896,6 @@ ...@@ -7868,7 +7896,6 @@
"integrity": "sha512-qXRuZaOsAdXKFyOhRBg6Lqqc0yay13vN7KrIg4L7N4aaHN68ma9OK3NE1BoDFgFOTfM7zg+3/8+2n8rLUH3OKQ==", "integrity": "sha512-qXRuZaOsAdXKFyOhRBg6Lqqc0yay13vN7KrIg4L7N4aaHN68ma9OK3NE1BoDFgFOTfM7zg+3/8+2n8rLUH3OKQ==",
"devOptional": true, "devOptional": true,
"license": "MIT", "license": "MIT",
"peer": true,
"peerDependencies": { "peerDependencies": {
"@types/react": "^19.0.0" "@types/react": "^19.0.0"
} }
...@@ -7977,7 +8004,6 @@ ...@@ -7977,7 +8004,6 @@
"integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==",
"dev": true, "dev": true,
"license": "BSD-2-Clause", "license": "BSD-2-Clause",
"peer": true,
"dependencies": { "dependencies": {
"@typescript-eslint/scope-manager": "5.62.0", "@typescript-eslint/scope-manager": "5.62.0",
"@typescript-eslint/types": "5.62.0", "@typescript-eslint/types": "5.62.0",
...@@ -8413,7 +8439,6 @@ ...@@ -8413,7 +8439,6 @@
"integrity": "sha512-hGISOaP18plkzbWEcP/QvtRW1xDXF2+96HbEX6byqQhAUbiS5oH6/9JwW+QsQCIYON2bI6QZBF+2PvOmrRZ9wA==", "integrity": "sha512-hGISOaP18plkzbWEcP/QvtRW1xDXF2+96HbEX6byqQhAUbiS5oH6/9JwW+QsQCIYON2bI6QZBF+2PvOmrRZ9wA==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"@vitest/utils": "3.2.4", "@vitest/utils": "3.2.4",
"fflate": "^0.8.2", "fflate": "^0.8.2",
...@@ -8705,7 +8730,6 @@ ...@@ -8705,7 +8730,6 @@
"integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==",
"devOptional": true, "devOptional": true,
"license": "MIT", "license": "MIT",
"peer": true,
"bin": { "bin": {
"acorn": "bin/acorn" "acorn": "bin/acorn"
}, },
...@@ -9178,7 +9202,6 @@ ...@@ -9178,7 +9202,6 @@
"integrity": "sha512-Ixm8tFfoKKIPYdCCKYTsqv+Fd4IJ0DQqMyEimo+pxUOMUR9cVPlwTrFt9Avu+3cb6Zp3mAzl+t1MrG2fxxKsxw==", "integrity": "sha512-Ixm8tFfoKKIPYdCCKYTsqv+Fd4IJ0DQqMyEimo+pxUOMUR9cVPlwTrFt9Avu+3cb6Zp3mAzl+t1MrG2fxxKsxw==",
"devOptional": true, "devOptional": true,
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"@babel/types": "^7.26.0" "@babel/types": "^7.26.0"
} }
...@@ -9325,7 +9348,6 @@ ...@@ -9325,7 +9348,6 @@
"integrity": "sha512-8VYKM3MjCa9WcaSAI3hzwhmyHVlH8tiGFwf0RlTsZPWJ1I5MkzjiudCo4KC4DxOaL/53A5B1sI/IbldNFDbsKA==", "integrity": "sha512-8VYKM3MjCa9WcaSAI3hzwhmyHVlH8tiGFwf0RlTsZPWJ1I5MkzjiudCo4KC4DxOaL/53A5B1sI/IbldNFDbsKA==",
"hasInstallScript": true, "hasInstallScript": true,
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"bindings": "^1.5.0", "bindings": "^1.5.0",
"prebuild-install": "^7.1.1" "prebuild-install": "^7.1.1"
...@@ -9454,7 +9476,6 @@ ...@@ -9454,7 +9476,6 @@
} }
], ],
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"baseline-browser-mapping": "^2.9.0", "baseline-browser-mapping": "^2.9.0",
"caniuse-lite": "^1.0.30001759", "caniuse-lite": "^1.0.30001759",
...@@ -10031,7 +10052,8 @@ ...@@ -10031,7 +10052,8 @@
"version": "0.0.1", "version": "0.0.1",
"resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz",
"integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==", "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==",
"license": "MIT" "license": "MIT",
"peer": true
}, },
"node_modules/cliui": { "node_modules/cliui": {
"version": "8.0.1", "version": "8.0.1",
...@@ -10152,6 +10174,7 @@ ...@@ -10152,6 +10174,7 @@
"integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==",
"license": "MIT", "license": "MIT",
"optional": true, "optional": true,
"peer": true,
"dependencies": { "dependencies": {
"color-convert": "^2.0.1", "color-convert": "^2.0.1",
"color-string": "^1.9.0" "color-string": "^1.9.0"
...@@ -10184,6 +10207,7 @@ ...@@ -10184,6 +10207,7 @@
"integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==",
"license": "MIT", "license": "MIT",
"optional": true, "optional": true,
"peer": true,
"dependencies": { "dependencies": {
"color-name": "^1.0.0", "color-name": "^1.0.0",
"simple-swizzle": "^0.2.2" "simple-swizzle": "^0.2.2"
...@@ -12351,7 +12375,6 @@ ...@@ -12351,7 +12375,6 @@
"integrity": "sha512-CRbODhYyQx3qp7ZEwzxOk4JBqmD/seJrzPa/cGjY1VtIn5E09Oi9/dB4JwctnfZ8Q8iT7rioVv5k/FNT/uf54g==", "integrity": "sha512-CRbODhYyQx3qp7ZEwzxOk4JBqmD/seJrzPa/cGjY1VtIn5E09Oi9/dB4JwctnfZ8Q8iT7rioVv5k/FNT/uf54g==",
"hasInstallScript": true, "hasInstallScript": true,
"license": "MIT", "license": "MIT",
"peer": true,
"bin": { "bin": {
"esbuild": "bin/esbuild" "esbuild": "bin/esbuild"
}, },
...@@ -12434,7 +12457,6 @@ ...@@ -12434,7 +12457,6 @@
"deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/eslint-utils": "^4.2.0",
"@eslint-community/regexpp": "^4.6.1", "@eslint-community/regexpp": "^4.6.1",
...@@ -13807,7 +13829,6 @@ ...@@ -13807,7 +13829,6 @@
"integrity": "sha512-Newg9X7mRYskoBjSw70l1YnJ/ZGbq64VPyR821H5WVkTGpHG2O0mQILxCeUhxdYERLFY9B4tUyKLyf3uMTjtKw==", "integrity": "sha512-Newg9X7mRYskoBjSw70l1YnJ/ZGbq64VPyR821H5WVkTGpHG2O0mQILxCeUhxdYERLFY9B4tUyKLyf3uMTjtKw==",
"devOptional": true, "devOptional": true,
"license": "Apache-2.0", "license": "Apache-2.0",
"peer": true,
"dependencies": { "dependencies": {
"@petamoriken/float16": "^3.8.7", "@petamoriken/float16": "^3.8.7",
"debug": "^4.3.4", "debug": "^4.3.4",
...@@ -14300,7 +14321,6 @@ ...@@ -14300,7 +14321,6 @@
"integrity": "sha512-UVIHeVhxmxedbWPCfgS55Jg2rDfwf2BCKeylcPSqazLz5w3Kri7Q4xdBJubsr/+VUzFLh0VjIvh13RaDA2/Xug==", "integrity": "sha512-UVIHeVhxmxedbWPCfgS55Jg2rDfwf2BCKeylcPSqazLz5w3Kri7Q4xdBJubsr/+VUzFLh0VjIvh13RaDA2/Xug==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"webidl-conversions": "^7.0.0", "webidl-conversions": "^7.0.0",
"whatwg-mimetype": "^3.0.0" "whatwg-mimetype": "^3.0.0"
...@@ -15448,6 +15468,7 @@ ...@@ -15448,6 +15468,7 @@
"resolved": "https://registry.npmjs.org/isomorphic.js/-/isomorphic.js-0.2.5.tgz", "resolved": "https://registry.npmjs.org/isomorphic.js/-/isomorphic.js-0.2.5.tgz",
"integrity": "sha512-PIeMbHqMt4DnUP3MA/Flc0HElYjMXArsw1qwJZcm9sqR8mq3l8NYizFMty0pWwE/tzIGH3EKK5+jes5mAr85yw==", "integrity": "sha512-PIeMbHqMt4DnUP3MA/Flc0HElYjMXArsw1qwJZcm9sqR8mq3l8NYizFMty0pWwE/tzIGH3EKK5+jes5mAr85yw==",
"license": "MIT", "license": "MIT",
"peer": true,
"funding": { "funding": {
"type": "GitHub Sponsors ❤", "type": "GitHub Sponsors ❤",
"url": "https://github.com/sponsors/dmonad" "url": "https://github.com/sponsors/dmonad"
...@@ -15761,8 +15782,7 @@ ...@@ -15761,8 +15782,7 @@
"url": "https://github.com/sponsors/lavrton" "url": "https://github.com/sponsors/lavrton"
} }
], ],
"license": "MIT", "license": "MIT"
"peer": true
}, },
"node_modules/levn": { "node_modules/levn": {
"version": "0.4.1", "version": "0.4.1",
...@@ -15782,8 +15802,7 @@ ...@@ -15782,8 +15802,7 @@
"version": "0.33.1", "version": "0.33.1",
"resolved": "https://registry.npmjs.org/lexical/-/lexical-0.33.1.tgz", "resolved": "https://registry.npmjs.org/lexical/-/lexical-0.33.1.tgz",
"integrity": "sha512-+kiCS/GshQmCs/meMb8MQT4AMvw3S3Ef0lSCv2Xi6Itvs59OD+NjQWNfYkDteIbKtVE/w0Yiqh56VyGwIb8UcA==", "integrity": "sha512-+kiCS/GshQmCs/meMb8MQT4AMvw3S3Ef0lSCv2Xi6Itvs59OD+NjQWNfYkDteIbKtVE/w0Yiqh56VyGwIb8UcA==",
"license": "MIT", "license": "MIT"
"peer": true
}, },
"node_modules/lexical-beautiful-mentions": { "node_modules/lexical-beautiful-mentions": {
"version": "0.1.48", "version": "0.1.48",
...@@ -15803,6 +15822,7 @@ ...@@ -15803,6 +15822,7 @@
"resolved": "https://registry.npmjs.org/lib0/-/lib0-0.2.114.tgz", "resolved": "https://registry.npmjs.org/lib0/-/lib0-0.2.114.tgz",
"integrity": "sha512-gcxmNFzA4hv8UYi8j43uPlQ7CGcyMJ2KQb5kZASw6SnAKAf10hK12i2fjrS3Cl/ugZa5Ui6WwIu1/6MIXiHttQ==", "integrity": "sha512-gcxmNFzA4hv8UYi8j43uPlQ7CGcyMJ2KQb5kZASw6SnAKAf10hK12i2fjrS3Cl/ugZa5Ui6WwIu1/6MIXiHttQ==",
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"isomorphic.js": "^0.2.4" "isomorphic.js": "^0.2.4"
}, },
...@@ -18001,8 +18021,7 @@ ...@@ -18001,8 +18021,7 @@
"version": "0.52.2", "version": "0.52.2",
"resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.52.2.tgz", "resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.52.2.tgz",
"integrity": "sha512-GEQWEZmfkOGLdd3XK8ryrfWz3AIP8YymVXiPHEdewrUq7mh0qrKrfHLNCXcbB6sTnMLnOZ3ztSiKcciFUkIJwQ==", "integrity": "sha512-GEQWEZmfkOGLdd3XK8ryrfWz3AIP8YymVXiPHEdewrUq7mh0qrKrfHLNCXcbB6sTnMLnOZ3ztSiKcciFUkIJwQ==",
"license": "MIT", "license": "MIT"
"peer": true
}, },
"node_modules/motion-dom": { "node_modules/motion-dom": {
"version": "12.23.12", "version": "12.23.12",
...@@ -19177,6 +19196,7 @@ ...@@ -19177,6 +19196,7 @@
} }
], ],
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"nanoid": "^3.3.6", "nanoid": "^3.3.6",
"picocolors": "^1.0.0", "picocolors": "^1.0.0",
...@@ -19626,7 +19646,6 @@ ...@@ -19626,7 +19646,6 @@
"resolved": "https://registry.npmjs.org/react/-/react-19.2.1.tgz", "resolved": "https://registry.npmjs.org/react/-/react-19.2.1.tgz",
"integrity": "sha512-DGrYcCWK7tvYMnWh79yrPHt+vdx9tY+1gPZa7nJQtO/p8bLTDaHp4dzwEhQB7pZ4Xe3ok4XKuEPrVuc+wlpkmw==", "integrity": "sha512-DGrYcCWK7tvYMnWh79yrPHt+vdx9tY+1gPZa7nJQtO/p8bLTDaHp4dzwEhQB7pZ4Xe3ok4XKuEPrVuc+wlpkmw==",
"license": "MIT", "license": "MIT",
"peer": true,
"engines": { "engines": {
"node": ">=0.10.0" "node": ">=0.10.0"
} }
...@@ -19668,7 +19687,6 @@ ...@@ -19668,7 +19687,6 @@
"resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.1.tgz", "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.1.tgz",
"integrity": "sha512-ibrK8llX2a4eOskq1mXKu/TGZj9qzomO+sNfO98M6d9zIPOEhlBkMkBUBLd1vgS0gQsLDBzA+8jJBVXDnfHmJg==", "integrity": "sha512-ibrK8llX2a4eOskq1mXKu/TGZj9qzomO+sNfO98M6d9zIPOEhlBkMkBUBLd1vgS0gQsLDBzA+8jJBVXDnfHmJg==",
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"scheduler": "^0.27.0" "scheduler": "^0.27.0"
}, },
...@@ -20456,7 +20474,6 @@ ...@@ -20456,7 +20474,6 @@
"resolved": "https://registry.npmjs.org/rollup/-/rollup-4.50.1.tgz", "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.50.1.tgz",
"integrity": "sha512-78E9voJHwnXQMiQdiqswVLZwJIzdBKJ1GdI5Zx6XwoFKUIk09/sSrr+05QFzvYb8q6Y9pPV45zzDuYa3907TZA==", "integrity": "sha512-78E9voJHwnXQMiQdiqswVLZwJIzdBKJ1GdI5Zx6XwoFKUIk09/sSrr+05QFzvYb8q6Y9pPV45zzDuYa3907TZA==",
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"@types/estree": "1.0.8" "@types/estree": "1.0.8"
}, },
...@@ -20657,7 +20674,6 @@ ...@@ -20657,7 +20674,6 @@
"integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"fast-deep-equal": "^3.1.3", "fast-deep-equal": "^3.1.3",
"fast-uri": "^3.0.1", "fast-uri": "^3.0.1",
...@@ -20798,7 +20814,6 @@ ...@@ -20798,7 +20814,6 @@
"resolved": "https://registry.npmjs.org/seroval/-/seroval-1.3.2.tgz", "resolved": "https://registry.npmjs.org/seroval/-/seroval-1.3.2.tgz",
"integrity": "sha512-RbcPH1n5cfwKrru7v7+zrZvjLurgHhGyso3HTyGtRivGWgYjbOmGuivCQaORNELjNONoK35nj28EoWul9sb1zQ==", "integrity": "sha512-RbcPH1n5cfwKrru7v7+zrZvjLurgHhGyso3HTyGtRivGWgYjbOmGuivCQaORNELjNONoK35nj28EoWul9sb1zQ==",
"license": "MIT", "license": "MIT",
"peer": true,
"engines": { "engines": {
"node": ">=10" "node": ">=10"
} }
...@@ -20911,6 +20926,7 @@ ...@@ -20911,6 +20926,7 @@
"hasInstallScript": true, "hasInstallScript": true,
"license": "Apache-2.0", "license": "Apache-2.0",
"optional": true, "optional": true,
"peer": true,
"dependencies": { "dependencies": {
"color": "^4.2.3", "color": "^4.2.3",
"detect-libc": "^2.0.4", "detect-libc": "^2.0.4",
...@@ -21303,6 +21319,7 @@ ...@@ -21303,6 +21319,7 @@
"integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==",
"license": "MIT", "license": "MIT",
"optional": true, "optional": true,
"peer": true,
"dependencies": { "dependencies": {
"is-arrayish": "^0.3.1" "is-arrayish": "^0.3.1"
} }
...@@ -21312,7 +21329,8 @@ ...@@ -21312,7 +21329,8 @@
"resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz",
"integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==",
"license": "MIT", "license": "MIT",
"optional": true "optional": true,
"peer": true
}, },
"node_modules/sirv": { "node_modules/sirv": {
"version": "3.0.2", "version": "3.0.2",
...@@ -21649,7 +21667,6 @@ ...@@ -21649,7 +21667,6 @@
"integrity": "sha512-Ob7DMlwWx8s7dMvcQ3xPc02TvUeralb+xX3oaPRk9wY9Hc6M1IBC/7cEoITkSmRS2v38DHubC+mtEKNc1u2gQg==", "integrity": "sha512-Ob7DMlwWx8s7dMvcQ3xPc02TvUeralb+xX3oaPRk9wY9Hc6M1IBC/7cEoITkSmRS2v38DHubC+mtEKNc1u2gQg==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"@storybook/core": "8.6.15" "@storybook/core": "8.6.15"
}, },
...@@ -21998,6 +22015,7 @@ ...@@ -21998,6 +22015,7 @@
"resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.6.tgz", "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.6.tgz",
"integrity": "sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==", "integrity": "sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==",
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"client-only": "0.0.1" "client-only": "0.0.1"
}, },
...@@ -22075,8 +22093,7 @@ ...@@ -22075,8 +22093,7 @@
"version": "4.1.13", "version": "4.1.13",
"resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.13.tgz", "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.13.tgz",
"integrity": "sha512-i+zidfmTqtwquj4hMEwdjshYYgMbOrPzb9a0M3ZgNa0JMoZeFC6bxZvO8yr8ozS6ix2SDz0+mvryPeBs2TFE+w==", "integrity": "sha512-i+zidfmTqtwquj4hMEwdjshYYgMbOrPzb9a0M3ZgNa0JMoZeFC6bxZvO8yr8ozS6ix2SDz0+mvryPeBs2TFE+w==",
"license": "MIT", "license": "MIT"
"peer": true
}, },
"node_modules/tapable": { "node_modules/tapable": {
"version": "2.3.0", "version": "2.3.0",
...@@ -22743,7 +22760,6 @@ ...@@ -22743,7 +22760,6 @@
"integrity": "sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==", "integrity": "sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==",
"dev": true, "dev": true,
"license": "Apache-2.0", "license": "Apache-2.0",
"peer": true,
"bin": { "bin": {
"tsc": "bin/tsc", "tsc": "bin/tsc",
"tsserver": "bin/tsserver" "tsserver": "bin/tsserver"
...@@ -23266,7 +23282,6 @@ ...@@ -23266,7 +23282,6 @@
"resolved": "https://registry.npmjs.org/vite/-/vite-5.4.20.tgz", "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.20.tgz",
"integrity": "sha512-j3lYzGC3P+B5Yfy/pfKNgVEg4+UtcIJcVRt2cDjIOmhLourAqPqf8P7acgxeiSgUB7E3p2P8/3gNIgDLpwzs4g==", "integrity": "sha512-j3lYzGC3P+B5Yfy/pfKNgVEg4+UtcIJcVRt2cDjIOmhLourAqPqf8P7acgxeiSgUB7E3p2P8/3gNIgDLpwzs4g==",
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"esbuild": "^0.21.3", "esbuild": "^0.21.3",
"postcss": "^8.4.43", "postcss": "^8.4.43",
...@@ -23798,7 +23813,6 @@ ...@@ -23798,7 +23813,6 @@
"integrity": "sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A==", "integrity": "sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"@types/chai": "^5.2.2", "@types/chai": "^5.2.2",
"@vitest/expect": "3.2.4", "@vitest/expect": "3.2.4",
...@@ -24451,7 +24465,6 @@ ...@@ -24451,7 +24465,6 @@
"resolved": "https://registry.npmjs.org/zod/-/zod-4.3.6.tgz", "resolved": "https://registry.npmjs.org/zod/-/zod-4.3.6.tgz",
"integrity": "sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==", "integrity": "sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==",
"license": "MIT", "license": "MIT",
"peer": true,
"funding": { "funding": {
"url": "https://github.com/sponsors/colinhacks" "url": "https://github.com/sponsors/colinhacks"
} }
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论