@@ -128,17 +128,17 @@ graph TD
- Smooth entry transition animations
- Resizable AI panel with persistent settings
-```typescript
+```tsx
// AIEnhancedTimelineLayout structure
// Entry list - always visible
// Animated header overlay
- // Animated content overlay
+ // Animated content overlay
-
// Optional resizable AI panel
+
// Optional resizable AI panel
// Dynamic subscription control
```
@@ -159,7 +159,7 @@ The routing system connects URLs to specific layouts through the generated route
### Route Structure Analysis
-```typescript
+```tsx
// From generated-routes.ts
export const routes: RouteObject[] = [
{
@@ -248,7 +248,7 @@ App (Outlet)
Each layout level uses `
` to render child routes, creating a flexible composition system:
-```typescript
+```tsx
// Parent Layout
function ParentLayout() {
return (
@@ -266,9 +266,9 @@ function ParentLayout() {
Layouts adapt based on route parameters and user preferences:
-```typescript
+```tsx
// TimelineEntryTwoColumnLayout
-const inWideMode = views.find(v => v.view === view)?.wideMode || false
+const inWideMode = views.find((v) => v.view === view)?.wideMode || false
return (
@@ -282,7 +282,7 @@ return (
Layouts provide context to their children:
-```typescript
+```tsx
// MainDestopLayout
@@ -318,7 +318,7 @@ Layouts provide context to their children:
### Mobile Layout (via `withResponsiveComponent`)
-```typescript
+```tsx
export const Component = withResponsiveComponent(
() => Promise.resolve({ default: MainDestopLayout }),
async () => {
@@ -332,7 +332,7 @@ export const Component = withResponsiveComponent(
### Layout-Level Error Handling
-```typescript
+```tsx
// MainDestopLayout
const errorTypes = [
ErrorComponentType.Page,
@@ -340,7 +340,7 @@ const errorTypes = [
ErrorComponentType.FeedNotFound,
] as ErrorComponentType[]
-
+;
```
@@ -351,7 +351,7 @@ const errorTypes = [
All major layouts use React Router's lazy loading:
-```typescript
+```tsx
const lazy16 = () => import("./pages/(main)/layout")
```
@@ -359,7 +359,7 @@ const lazy16 = () => import("./pages/(main)/layout")
Critical layout dimensions are memoized:
-```typescript
+```tsx
const entryColWidth = useMemo(() => getUISettings().entryColWidth, [])
```
@@ -367,7 +367,7 @@ const entryColWidth = useMemo(() => getUISettings().entryColWidth, [])
Scroll and resize handlers use passive listeners and debouncing:
-```typescript
+```tsx
$scroll.addEventListener("scroll", handler, { passive: true })
```
@@ -382,7 +382,7 @@ $scroll.addEventListener("scroll", handler, { passive: true })
### Layout Component Structure
-````typescript
+````tsx
/**
* LayoutName Component
*
diff --git a/apps/landing/package.json b/apps/landing/package.json
index 61b06eecc0..e16a105b28 100644
--- a/apps/landing/package.json
+++ b/apps/landing/package.json
@@ -77,8 +77,6 @@
"code-inspector-plugin": "1.2.10",
"cross-env": "10.1.0",
"dotenv": "17.2.3",
- "eslint": "9.38.0",
- "eslint-config-hyoban": "4.0.10",
"postcss": "8.5.6",
"prettier": "3.6.2",
"rimraf": "6.0.1",
diff --git a/eslint-suppressions.json b/eslint-suppressions.json
new file mode 100644
index 0000000000..7bfd56725b
--- /dev/null
+++ b/eslint-suppressions.json
@@ -0,0 +1,4217 @@
+{
+ ".claude/skills/desktop-release/SKILL.md": {
+ "md/code-lang-shorthand": {
+ "count": 12
+ },
+ "md/no-irregular-dash": {
+ "count": 1
+ }
+ },
+ ".claude/skills/installing-mobile-preview-builds/SKILL.md": {
+ "md/code-lang-shorthand": {
+ "count": 6
+ }
+ },
+ ".claude/skills/mobile-release/SKILL.md": {
+ "md/code-lang-shorthand": {
+ "count": 8
+ }
+ },
+ ".claude/skills/update-deps/SKILL.md": {
+ "markdown/fenced-code-language": {
+ "count": 1
+ },
+ "md/code-lang-shorthand": {
+ "count": 2
+ },
+ "md/no-irregular-dash": {
+ "count": 3
+ }
+ },
+ ".github/ISSUE_TEMPLATE/i18n.yml": {
+ "yaml/plain-scalar": {
+ "count": 2
+ }
+ },
+ ".github/actions/setup-version/action.yml": {
+ "yaml/plain-scalar": {
+ "count": 5
+ }
+ },
+ ".github/actions/setup-xcode/action.yml": {
+ "yaml/plain-scalar": {
+ "count": 5
+ }
+ },
+ ".github/advanced-issue-labeler.yml": {
+ "yaml/plain-scalar": {
+ "count": 9
+ }
+ },
+ ".github/dependabot.yaml": {
+ "yaml/plain-scalar": {
+ "count": 3
+ }
+ },
+ ".github/scripts/extract-release-info.mjs": {
+ "node/prefer-global/process": {
+ "count": 10
+ }
+ },
+ ".github/workflows/build-android.yml": {
+ "yaml/plain-scalar": {
+ "count": 6
+ }
+ },
+ ".github/workflows/build-desktop.yml": {
+ "yaml/plain-scalar": {
+ "count": 11
+ }
+ },
+ ".github/workflows/build-ios-development.yml": {
+ "yaml/plain-scalar": {
+ "count": 4
+ }
+ },
+ ".github/workflows/build-ios.yml": {
+ "yaml/plain-scalar": {
+ "count": 3
+ }
+ },
+ ".github/workflows/build-web.yml": {
+ "yaml/plain-scalar": {
+ "count": 1
+ }
+ },
+ ".github/workflows/deploy-cloudflare.yml": {
+ "yaml/plain-scalar": {
+ "count": 1
+ }
+ },
+ ".github/workflows/lint.yml": {
+ "yaml/plain-scalar": {
+ "count": 1
+ }
+ },
+ ".github/workflows/translator.yml": {
+ "yaml/plain-scalar": {
+ "count": 1
+ }
+ },
+ "AGENTS.md": {
+ "md/code-lang-shorthand": {
+ "count": 3
+ },
+ "md/no-irregular-dash": {
+ "count": 4
+ }
+ },
+ "CONTRIBUTING.md": {
+ "markdown/fenced-code-language": {
+ "count": 1
+ },
+ "markdown/require-alt-text": {
+ "count": 1
+ }
+ },
+ "README.md": {
+ "markdown/require-alt-text": {
+ "count": 17
+ },
+ "md/no-curly-quote": {
+ "count": 2
+ },
+ "md/no-irregular-dash": {
+ "count": 3
+ },
+ "md/no-url-trailing-slash": {
+ "count": 5
+ }
+ },
+ "api/vercel_webhook.ts": {
+ "no-console": {
+ "count": 4
+ },
+ "node/prefer-global/buffer": {
+ "count": 1
+ },
+ "node/prefer-global/process": {
+ "count": 2
+ }
+ },
+ "apps/cli/src/browser-login.ts": {
+ "node/prefer-global/process": {
+ "count": 2
+ },
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "apps/cli/src/client.ts": {
+ "node/prefer-global/process": {
+ "count": 1
+ }
+ },
+ "apps/cli/src/command.ts": {
+ "node/prefer-global/process": {
+ "count": 1
+ }
+ },
+ "apps/cli/src/commands/opml.ts": {
+ "node/prefer-global/buffer": {
+ "count": 1
+ }
+ },
+ "apps/cli/src/index.ts": {
+ "node/prefer-global/process": {
+ "count": 3
+ }
+ },
+ "apps/cli/tsconfig.json": {
+ "jsonc/sort-keys": {
+ "count": 1
+ }
+ },
+ "apps/desktop/AGENTS.md": {
+ "markdown/fenced-code-language": {
+ "count": 1
+ },
+ "md/code-lang-shorthand": {
+ "count": 1
+ }
+ },
+ "apps/desktop/changelog/0.2.5.md": {
+ "markdown/require-alt-text": {
+ "count": 1
+ }
+ },
+ "apps/desktop/changelog/0.2.7.md": {
+ "markdown/require-alt-text": {
+ "count": 3
+ }
+ },
+ "apps/desktop/changelog/0.3.6.md": {
+ "markdown/require-alt-text": {
+ "count": 1
+ }
+ },
+ "apps/desktop/changelog/0.4.3.md": {
+ "md/no-curly-quote": {
+ "count": 2
+ },
+ "md/no-irregular-dash": {
+ "count": 5
+ }
+ },
+ "apps/desktop/changelog/0.4.5.md": {
+ "md/no-curly-quote": {
+ "count": 4
+ },
+ "md/no-irregular-dash": {
+ "count": 2
+ }
+ },
+ "apps/desktop/changelog/0.4.6.md": {
+ "md/no-curly-quote": {
+ "count": 1
+ }
+ },
+ "apps/desktop/changelog/0.4.8.md": {
+ "md/no-curly-quote": {
+ "count": 5
+ },
+ "md/no-irregular-dash": {
+ "count": 3
+ }
+ },
+ "apps/desktop/changelog/0.5.0.md": {
+ "md/no-curly-quote": {
+ "count": 6
+ }
+ },
+ "apps/desktop/changelog/0.6.2.md": {
+ "md/no-curly-quote": {
+ "count": 9
+ }
+ },
+ "apps/desktop/changelog/0.6.3.md": {
+ "md/no-irregular-dash": {
+ "count": 1
+ }
+ },
+ "apps/desktop/changelog/0.9.0.md": {
+ "md/no-curly-quote": {
+ "count": 3
+ }
+ },
+ "apps/desktop/changelog/1.0.0.md": {
+ "md/no-irregular-dash": {
+ "count": 1
+ }
+ },
+ "apps/desktop/changelog/1.1.0.md": {
+ "md/no-curly-quote": {
+ "count": 2
+ }
+ },
+ "apps/desktop/changelog/1.2.2.md": {
+ "markdown/require-alt-text": {
+ "count": 2
+ },
+ "md/no-curly-quote": {
+ "count": 2
+ },
+ "md/no-irregular-dash": {
+ "count": 2
+ }
+ },
+ "apps/desktop/configs/vite.electron-render.config.ts": {
+ "node/prefer-global/process": {
+ "count": 2
+ }
+ },
+ "apps/desktop/configs/vite.render.config.ts": {
+ "node/prefer-global/process": {
+ "count": 5
+ }
+ },
+ "apps/desktop/forge.config.cts": {
+ "node/prefer-global/process": {
+ "count": 16
+ },
+ "ts/ban-ts-comment": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/main/preload/index.ts": {
+ "node/prefer-global/process": {
+ "count": 5
+ },
+ "ts/ban-ts-comment": {
+ "count": 3
+ }
+ },
+ "apps/desktop/layer/main/src/bootstrap.ts": {
+ "no-console": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/main/src/constants/app.ts": {
+ "node/prefer-global/process": {
+ "count": 2
+ }
+ },
+ "apps/desktop/layer/main/src/env.ts": {
+ "node/prefer-global/process": {
+ "count": 2
+ }
+ },
+ "apps/desktop/layer/main/src/ipc/index.ts": {
+ "no-console": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/main/src/ipc/services/app.ts": {
+ "node/prefer-global/process": {
+ "count": 2
+ }
+ },
+ "apps/desktop/layer/main/src/ipc/services/integration.ts": {
+ "no-useless-return": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/main/src/lib/api-client.ts": {
+ "node/prefer-global/process": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/main/src/lib/cleaner.ts": {
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/main/src/lib/download.ts": {
+ "node/prefer-global/buffer": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/main/src/lib/proxy.ts": {
+ "no-useless-return": {
+ "count": 1
+ },
+ "ts/no-use-before-define": {
+ "count": 2
+ }
+ },
+ "apps/desktop/layer/main/src/lib/router.ts": {
+ "no-useless-return": {
+ "count": 1
+ },
+ "ts/no-use-before-define": {
+ "count": 6
+ }
+ },
+ "apps/desktop/layer/main/src/lib/tray.ts": {
+ "ts/no-use-before-define": {
+ "count": 5
+ }
+ },
+ "apps/desktop/layer/main/src/manager/app.ts": {
+ "node/prefer-global/process": {
+ "count": 4
+ }
+ },
+ "apps/desktop/layer/main/src/manager/bootstrap.ts": {
+ "dot-notation": {
+ "count": 1
+ },
+ "no-console": {
+ "count": 2
+ },
+ "node/prefer-global/process": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/main/src/manager/lifecycle.ts": {
+ "node/prefer-global/process": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/main/src/manager/window.ts": {
+ "dot-notation": {
+ "count": 3
+ },
+ "no-useless-return": {
+ "count": 1
+ },
+ "node/prefer-global/process": {
+ "count": 4
+ }
+ },
+ "apps/desktop/layer/main/src/updater/api.ts": {
+ "node/prefer-global/process": {
+ "count": 2
+ }
+ },
+ "apps/desktop/layer/main/src/updater/configs.ts": {
+ "node/prefer-global/process": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/main/src/updater/follow-update-provider.ts": {
+ "node/prefer-global/process": {
+ "count": 8
+ }
+ },
+ "apps/desktop/layer/main/src/updater/index.ts": {
+ "node/prefer-global/process": {
+ "count": 8
+ }
+ },
+ "apps/desktop/layer/main/tsconfig.json": {
+ "jsonc/sort-keys": {
+ "count": 7
+ }
+ },
+ "apps/desktop/layer/renderer/setup-file.ts": {
+ "ts/ban-ts-comment": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/@types/constants.ts": {
+ "no-useless-computed-key": {
+ "count": 4
+ }
+ },
+ "apps/desktop/layer/renderer/src/App.tsx": {
+ "ts/no-use-before-define": {
+ "count": 2
+ }
+ },
+ "apps/desktop/layer/renderer/src/atoms/context-menu.ts": {
+ "ts/no-use-before-define": {
+ "count": 2
+ }
+ },
+ "apps/desktop/layer/renderer/src/atoms/player.ts": {
+ "no-useless-return": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/atoms/readability.ts": {
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/atoms/server-configs.ts": {
+ "node/prefer-global/process": {
+ "count": 4
+ }
+ },
+ "apps/desktop/layer/renderer/src/atoms/settings/ai.ts": {
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/atoms/settings/general.ts": {
+ "ts/no-use-before-define": {
+ "count": 2
+ }
+ },
+ "apps/desktop/layer/renderer/src/components/common/AppErrorBoundary.tsx": {
+ "ts/no-use-before-define": {
+ "count": 4
+ }
+ },
+ "apps/desktop/layer/renderer/src/components/common/ErrorElement.tsx": {
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/components/common/Focusable.tsx": {
+ "react-refresh/only-export-components": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/components/common/ImpressionTracker.tsx": {
+ "ts/ban-ts-comment": {
+ "count": 1
+ },
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/components/common/ShadowDOM.tsx": {
+ "no-useless-computed-key": {
+ "count": 1
+ },
+ "ts/ban-ts-comment": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/components/errors/EntryNotFound.tsx": {
+ "react-refresh/only-export-components": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/components/errors/FeedNotFound.tsx": {
+ "react-refresh/only-export-components": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/components/ui/auto-completion/AutoCompletion.tsx": {
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/components/ui/code-highlighter/shiki/Shiki.tsx": {
+ "dot-notation": {
+ "count": 1
+ },
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/components/ui/crop/AvatarUploadModal.tsx": {
+ "one-var": {
+ "count": 2
+ }
+ },
+ "apps/desktop/layer/renderer/src/components/ui/keyboard-recorder/KeyRecorder.tsx": {
+ "no-console": {
+ "count": 1
+ },
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/components/ui/markdown/components/Toc.tsx": {
+ "ts/no-use-before-define": {
+ "count": 4
+ }
+ },
+ "apps/desktop/layer/renderer/src/components/ui/markdown/components/TocItem.tsx": {
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/components/ui/markdown/renderers/MarkdownLink.tsx": {
+ "ts/no-use-before-define": {
+ "count": 2
+ }
+ },
+ "apps/desktop/layer/renderer/src/components/ui/media/Media.tsx": {
+ "no-console": {
+ "count": 2
+ },
+ "ts/ban-ts-comment": {
+ "count": 1
+ },
+ "ts/no-use-before-define": {
+ "count": 4
+ }
+ },
+ "apps/desktop/layer/renderer/src/components/ui/media/PreviewMediaContent.tsx": {
+ "ts/no-use-before-define": {
+ "count": 4
+ }
+ },
+ "apps/desktop/layer/renderer/src/components/ui/media/VideoPlayer.tsx": {
+ "@eslint-react/no-context-provider": {
+ "count": 1
+ },
+ "@eslint-react/no-use-context": {
+ "count": 2
+ },
+ "no-unneeded-ternary": {
+ "count": 1
+ },
+ "ts/no-use-before-define": {
+ "count": 19
+ }
+ },
+ "apps/desktop/layer/renderer/src/components/ui/modal/helper/useAsyncModal.tsx": {
+ "ts/no-use-before-define": {
+ "count": 2
+ }
+ },
+ "apps/desktop/layer/renderer/src/components/ui/modal/stacked/declarative-modal.tsx": {
+ "react-refresh/only-export-components": {
+ "count": 3
+ }
+ },
+ "apps/desktop/layer/renderer/src/components/ui/modal/stacked/helper.tsx": {
+ "react-refresh/only-export-components": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/components/ui/modal/stacked/hooks.tsx": {
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/components/ui/modal/stacked/modal.tsx": {
+ "@eslint-react/no-context-provider": {
+ "count": 1
+ },
+ "prefer-arrow-callback": {
+ "count": 1
+ },
+ "ts/no-use-before-define": {
+ "count": 4
+ }
+ },
+ "apps/desktop/layer/renderer/src/components/ui/peek-modal/EntryModalPreview.tsx": {
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/components/ux/transition/icon.tsx": {
+ "react-refresh/only-export-components": {
+ "count": 2
+ }
+ },
+ "apps/desktop/layer/renderer/src/hooks/biz/useEntryActions.tsx": {
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/hooks/biz/useFeedActions.tsx": {
+ "ts/no-use-before-define": {
+ "count": 2
+ }
+ },
+ "apps/desktop/layer/renderer/src/hooks/biz/useNavigateEntry.ts": {
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/hooks/biz/useSubscriptionActions.tsx": {
+ "react-refresh/only-export-components": {
+ "count": 1
+ },
+ "ts/no-use-before-define": {
+ "count": 2
+ }
+ },
+ "apps/desktop/layer/renderer/src/hooks/common/useBizQuery.ts": {
+ "ts/ban-ts-comment": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/i18n.ts": {
+ "no-console": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/initialize/index.ts": {
+ "ts/no-use-before-define": {
+ "count": 6
+ }
+ },
+ "apps/desktop/layer/renderer/src/lib/dev.tsx": {
+ "ts/no-use-before-define": {
+ "count": 2
+ }
+ },
+ "apps/desktop/layer/renderer/src/lib/error-parser.ts": {
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/lib/load-language.ts": {
+ "no-eval": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/lib/log.ts": {
+ "no-console": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/lib/parse-html.ts": {
+ "ts/ban-ts-comment": {
+ "count": 1
+ },
+ "ts/no-use-before-define": {
+ "count": 3
+ }
+ },
+ "apps/desktop/layer/renderer/src/lib/utils.ts": {
+ "ts/no-non-null-asserted-optional-chain": {
+ "count": 6
+ }
+ },
+ "apps/desktop/layer/renderer/src/main.tsx": {
+ "@eslint-react/dom/no-flush-sync": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/action/action-setting.tsx": {
+ "ts/no-use-before-define": {
+ "count": 5
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/action/constants.tsx": {
+ "react-refresh/only-export-components": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/action/rule-card.tsx": {
+ "ts/no-use-before-define": {
+ "count": 4
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/action/then-section.tsx": {
+ "ts/no-use-before-define": {
+ "count": 5
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/action/when-section.tsx": {
+ "ts/no-use-before-define": {
+ "count": 4
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/ai-chat/components/displays/AIChainOfThought.tsx": {
+ "ts/no-use-before-define": {
+ "count": 3
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/ai-chat/components/displays/AIDisplayFlowPart.tsx": {
+ "react-refresh/only-export-components": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/ai-chat/components/layouts/ChatInterface.tsx": {
+ "ts/no-use-before-define": {
+ "count": 7
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/ai-chat/components/layouts/ChatShortcutsRow.tsx": {
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/ai-chat/components/layouts/ChatTitle.tsx": {
+ "no-useless-computed-key": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/ai-chat/components/layouts/WelcomeScreen.tsx": {
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/ai-chat/components/message/ImageThumbnail.tsx": {
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/ai-chat/components/message/UserRichTextMessage.tsx": {
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/ai-chat/components/message/animated/AnimatedMarkdown.tsx": {
+ "ts/no-use-before-define": {
+ "count": 5
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/ai-chat/components/message/parse-incomplete-markdown.ts": {
+ "no-cond-assign": {
+ "count": 2
+ },
+ "ts/no-use-before-define": {
+ "count": 3
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/ai-chat/editor/plugins/index.tsx": {
+ "react-refresh/only-export-components": {
+ "count": 4
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/ai-chat/editor/plugins/mention/MentionNode.tsx": {
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/ai-chat/editor/plugins/mention/constants.ts": {
+ "unicorn/escape-case": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/ai-chat/editor/plugins/mention/hooks/dateMentionUtils.ts": {
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/ai-chat/editor/plugins/shortcut/constants.ts": {
+ "unicorn/escape-case": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/ai-chat/services/index.ts": {
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/ai-chat/store/AIChatContext.ts": {
+ "ts/no-redeclare": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/ai-chat/utils/extractor.ts": {
+ "no-useless-return": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/ai-chat/utils/file-validation.ts": {
+ "prefer-exponentiation-operator": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/app-layout/LAYOUT_ARCHITECTURE.md": {
+ "markdown/fenced-code-language": {
+ "count": 3
+ },
+ "react-hooks/rules-of-hooks": {
+ "count": 1
+ },
+ "react-refresh/only-export-components": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/app-layout/MainDestopLayout.tsx": {
+ "ts/no-use-before-define": {
+ "count": 2
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/app-layout/ai-enhanced-timeline/AIEnhancedTimelineLayout.tsx": {
+ "prefer-arrow-callback": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/app-layout/ai-enhanced-timeline/MobileTimelineLayout.tsx": {
+ "prefer-arrow-callback": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/app-layout/ai/AIChatFloatingPanel.tsx": {
+ "ts/ban-ts-comment": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/app-layout/subscription-column/SubscriptionColumn.tsx": {
+ "@eslint-react/hooks-extra/no-unnecessary-use-callback": {
+ "count": 1
+ },
+ "ts/ban-ts-comment": {
+ "count": 1
+ },
+ "ts/no-use-before-define": {
+ "count": 2
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/app-layout/subscription-column/components/PodcastButton.tsx": {
+ "ts/no-use-before-define": {
+ "count": 5
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/app-layout/subview/SubviewLayout.tsx": {
+ "ts/no-use-before-define": {
+ "count": 2
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/app-tip/AICopilotMedia.tsx": {
+ "ts/no-use-before-define": {
+ "count": 2
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/app-tip/AppTipModalContent.tsx": {
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/app-tip/OverviewMedia.tsx": {
+ "unicorn/number-literal-case": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/app/EnvironmentIndicator.tsx": {
+ "@eslint-react/dom/no-missing-iframe-sandbox": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/claim/feed-claim-modal.tsx": {
+ "ts/no-use-before-define": {
+ "count": 4
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/command/commands/integration.tsx": {
+ "no-useless-return": {
+ "count": 1
+ },
+ "ts/no-use-before-define": {
+ "count": 13
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/command/commands/settings.tsx": {
+ "ts/no-use-before-define": {
+ "count": 2
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/command/hooks/use-command-binding.ts": {
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/command/hooks/use-register-hotkey.ts": {
+ "ts/ban-ts-comment": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/command/registry/command.test-d.ts": {
+ "no-console": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/command/shortcuts/SettingShortcuts.tsx": {
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/customize-toolbar/dnd.tsx": {
+ "tailwindcss/no-unnecessary-whitespace": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/customize-toolbar/modal.tsx": {
+ "react-refresh/only-export-components": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/discover/DiscoverFeedCard.tsx": {
+ "ts/no-use-before-define": {
+ "count": 2
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/discover/DiscoverFeedForm.tsx": {
+ "no-console": {
+ "count": 1
+ },
+ "ts/no-non-null-asserted-optional-chain": {
+ "count": 1
+ },
+ "ts/no-use-before-define": {
+ "count": 2
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/discover/DiscoverImport.tsx": {
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/discover/DiscoverTransform.tsx": {
+ "ts/no-non-null-asserted-optional-chain": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/discover/FeedForm.tsx": {
+ "ts/no-use-before-define": {
+ "count": 3
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/discover/Inbox/InboxTable.tsx": {
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/discover/InboxForm.tsx": {
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/discover/ListForm.tsx": {
+ "ts/no-use-before-define": {
+ "count": 3
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/discover/OpmlAbstractGraphic.tsx": {
+ "unicorn/number-literal-case": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/discover/OpmlSelectionModal.tsx": {
+ "ts/no-use-before-define": {
+ "count": 8
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/editor/css-editor.tsx": {
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/entry-column/EntryItemSkeleton.tsx": {
+ "@eslint-react/no-array-index-key": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/entry-column/Items/all-item.tsx": {
+ "react-refresh/only-export-components": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/entry-column/Items/article-item.tsx": {
+ "react-refresh/only-export-components": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/entry-column/Items/audio-item.tsx": {
+ "react-refresh/only-export-components": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/entry-column/Items/notification-item.tsx": {
+ "react-refresh/only-export-components": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/entry-column/Items/picture-item-stateless.tsx": {
+ "@eslint-react/no-context-provider": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/entry-column/Items/picture-item.tsx": {
+ "prefer-arrow-callback": {
+ "count": 1
+ },
+ "ts/no-use-before-define": {
+ "count": 2
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/entry-column/Items/picture-masonry.tsx": {
+ "@eslint-react/no-context-provider": {
+ "count": 1
+ },
+ "ts/no-use-before-define": {
+ "count": 3
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/entry-column/Items/social-media-item.tsx": {
+ "react-refresh/only-export-components": {
+ "count": 1
+ },
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/entry-column/Items/video-item.tsx": {
+ "react-refresh/only-export-components": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/entry-column/components/DateItem.tsx": {
+ "ts/no-use-before-define": {
+ "count": 3
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/entry-column/components/FooterMarkItem.tsx": {
+ "ts/no-use-before-define": {
+ "count": 3
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/entry-column/components/mark-all-button.tsx": {
+ "@eslint-react/hooks-extra/no-unnecessary-use-callback": {
+ "count": 1
+ },
+ "ts/no-use-before-define": {
+ "count": 2
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/entry-column/context/EntriesContext.tsx": {
+ "react-refresh/only-export-components": {
+ "count": 2
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/entry-column/grid.tsx": {
+ "ts/no-use-before-define": {
+ "count": 3
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/entry-column/hooks/useEntriesByView.ts": {
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/entry-column/hooks/useEntryMarkReadHandler.tsx": {
+ "no-useless-return": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/entry-column/index.tsx": {
+ "ts/no-use-before-define": {
+ "count": 2
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/entry-column/item.tsx": {
+ "prefer-arrow-callback": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/entry-column/layouts/EntryItemWrapper.tsx": {
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/entry-column/layouts/EntryListHeader.tsx": {
+ "ts/no-use-before-define": {
+ "count": 2
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/entry-column/list.tsx": {
+ "ts/no-use-before-define": {
+ "count": 2
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/entry-column/store/EntryColumnContext.ts": {
+ "ts/no-redeclare": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/entry-column/templates/grid-item-template.tsx": {
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/entry-content/EntryContent.tsx": {
+ "ts/no-use-before-define": {
+ "count": 3
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/entry-content/EntryContentForPreview.tsx": {
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/entry-content/actions/header-actions.tsx": {
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/entry-content/actions/more-actions.tsx": {
+ "ts/no-use-before-define": {
+ "count": 5
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/entry-content/actions/picture-gallery.tsx": {
+ "@eslint-react/no-context-provider": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/entry-content/components/ApplyEntryActions.tsx": {
+ "ts/no-use-before-define": {
+ "count": 2
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/entry-content/components/EntryTimelineSidebar.tsx": {
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/entry-content/components/WarnGoToExternalLink.tsx": {
+ "react-refresh/only-export-components": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/entry-content/components/entry-header/internal/EntryHeaderBreadcrumb.tsx": {
+ "ts/no-use-before-define": {
+ "count": 2
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/entry-content/components/entry-header/internal/context.tsx": {
+ "react-refresh/only-export-components": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/entry-content/components/layouts/ArticleLayout.tsx": {
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/entry-content/components/layouts/shared/VideoPlayer.tsx": {
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/entry-content/components/selection/SharePosterModal.tsx": {
+ "unicorn/escape-case": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/entry-content/components/selection/TextSelectionToolbar.tsx": {
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/feed/feed-certification.tsx": {
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/feed/feed-icon.tsx": {
+ "ts/no-use-before-define": {
+ "count": 2
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/feed/feed-summary.tsx": {
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/integration/custom-integration-manager.ts": {
+ "no-new": {
+ "count": 2
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/panel/cmdf.tsx": {
+ "ts/no-use-before-define": {
+ "count": 3
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/panel/cmdk.tsx": {
+ "dot-notation": {
+ "count": 1
+ },
+ "prefer-arrow-callback": {
+ "count": 1
+ },
+ "ts/no-use-before-define": {
+ "count": 9
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/player/corner-player.tsx": {
+ "ts/no-use-before-define": {
+ "count": 14
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/player/entry-tts.ts": {
+ "no-unmodified-loop-condition": {
+ "count": 2
+ },
+ "ts/no-use-before-define": {
+ "count": 2
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/power/my-wallet-section/withdraw.tsx": {
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/profile/update-password-form.tsx": {
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/profile/user-profile-modal/UserProfileModalContent.tsx": {
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/profile/user-profile-modal/shared.tsx": {
+ "ts/no-non-null-asserted-optional-chain": {
+ "count": 1
+ },
+ "ts/no-use-before-define": {
+ "count": 2
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/renderer/components/TimeStamp.tsx": {
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/renderer/context.tsx": {
+ "@eslint-react/no-context-provider": {
+ "count": 1
+ },
+ "react-refresh/only-export-components": {
+ "count": 2
+ },
+ "ts/no-redeclare": {
+ "count": 2
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/renderer/html.tsx": {
+ "@eslint-react/no-context-provider": {
+ "count": 1
+ },
+ "ts/ban-ts-comment": {
+ "count": 1
+ },
+ "ts/no-use-before-define": {
+ "count": 3
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/renderer/markdown.tsx": {
+ "@eslint-react/no-context-provider": {
+ "count": 1
+ },
+ "ts/no-use-before-define": {
+ "count": 3
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/settings/control.tsx": {
+ "ts/no-use-before-define": {
+ "count": 2
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/settings/helper/setting-builder.tsx": {
+ "@eslint-react/no-array-index-key": {
+ "count": 1
+ },
+ "react-refresh/only-export-components": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/settings/helper/withSettingEnable.tsx": {
+ "ts/ban-ts-comment": {
+ "count": 2
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/settings/modal/SettingModalContent.tsx": {
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/settings/modal/context.tsx": {
+ "react-refresh/only-export-components": {
+ "count": 3
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/settings/modal/hooks.ts": {
+ "ts/ban-ts-comment": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/settings/modal/layout.tsx": {
+ "@eslint-react/no-context-provider": {
+ "count": 1
+ },
+ "ts/no-use-before-define": {
+ "count": 2
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/settings/section.tsx": {
+ "@eslint-react/no-children-map": {
+ "count": 1
+ },
+ "@eslint-react/no-children-to-array": {
+ "count": 1
+ },
+ "react-refresh/only-export-components": {
+ "count": 1
+ },
+ "ts/ban-ts-comment": {
+ "count": 2
+ },
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/settings/sections/fonts.tsx": {
+ "ts/no-use-before-define": {
+ "count": 2
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/settings/tabs/ai.tsx": {
+ "react-refresh/only-export-components": {
+ "count": 1
+ },
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/settings/tabs/ai/mcp/MCPServiceModalContent.tsx": {
+ "no-new": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/settings/tabs/ai/mcp/MCPServicesSection.tsx": {
+ "ts/no-use-before-define": {
+ "count": 3
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/settings/tabs/appearance.tsx": {
+ "ts/no-use-before-define": {
+ "count": 11
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/settings/tabs/data-control.tsx": {
+ "ts/no-use-before-define": {
+ "count": 4
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/settings/tabs/feeds.tsx": {
+ "ts/no-use-before-define": {
+ "count": 5
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/settings/tabs/general.tsx": {
+ "ts/no-use-before-define": {
+ "count": 6
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/settings/tabs/integration/CustomIntegrationSection.tsx": {
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/settings/tabs/integration/index.tsx": {
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/settings/tabs/lists/modals.tsx": {
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/settings/tabs/plan.tsx": {
+ "ts/no-use-before-define": {
+ "count": 5
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/settings/tabs/shortcut.tsx": {
+ "ts/no-use-before-define": {
+ "count": 2
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/subscription-column/FeedCategory.tsx": {
+ "prefer-arrow-callback": {
+ "count": 1
+ },
+ "ts/no-use-before-define": {
+ "count": 3
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/subscription-column/SortedFeedItems.tsx": {
+ "ts/no-use-before-define": {
+ "count": 3
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/subscription-column/SubscriptionColumnHeader.tsx": {
+ "ts/no-use-before-define": {
+ "count": 3
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/subscription-column/SubscriptionTabButton.tsx": {
+ "ts/no-use-before-define": {
+ "count": 2
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/subscription-column/TimelineTabsSettingsModal.tsx": {
+ "react-refresh/only-export-components": {
+ "count": 4
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/subscription-column/index.tsx": {
+ "@eslint-react/hooks-extra/no-unnecessary-use-callback": {
+ "count": 1
+ },
+ "@eslint-react/web-api/no-leaked-timeout": {
+ "count": 1
+ },
+ "no-useless-return": {
+ "count": 1
+ },
+ "ts/no-use-before-define": {
+ "count": 5
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/subscription-column/subscription-list/SubscriptionList.tsx": {
+ "ts/no-use-before-define": {
+ "count": 2
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/upgrade/container.tsx": {
+ "react/no-nested-component-definitions": {
+ "count": 1
+ },
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/modules/user/ProfileButton.tsx": {
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/pages/(main)/(layer)/(subview)/discover/category/[category].tsx": {
+ "ts/no-use-before-define": {
+ "count": 2
+ }
+ },
+ "apps/desktop/layer/renderer/src/pages/(main)/(layer)/timeline/[timelineId]/[feedId]/index.tsx": {
+ "react-refresh/only-export-components": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/pages/(main)/(layer)/timeline/[timelineId]/layout.tsx": {
+ "react-refresh/only-export-components": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/pages/(main)/index.sync.tsx": {
+ "react-refresh/only-export-components": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/pages/settings/(settings)/about.tsx": {
+ "react-refresh/only-export-components": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/pages/settings/(settings)/appearance.tsx": {
+ "react-refresh/only-export-components": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/pages/settings/(settings)/data-control.tsx": {
+ "react-refresh/only-export-components": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/pages/settings/(settings)/feeds.tsx": {
+ "react-refresh/only-export-components": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/pages/settings/(settings)/general.tsx": {
+ "react-refresh/only-export-components": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/pages/settings/(settings)/integration.tsx": {
+ "react-refresh/only-export-components": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/pages/settings/(settings)/list.tsx": {
+ "react-refresh/only-export-components": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/pages/settings/(settings)/notifications.tsx": {
+ "react-refresh/only-export-components": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/pages/settings/(settings)/plan.tsx": {
+ "react-refresh/only-export-components": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/pages/settings/(settings)/profile.tsx": {
+ "react-refresh/only-export-components": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/pages/settings/(settings)/shortcuts.tsx": {
+ "react-refresh/only-export-components": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/providers/app-grid-layout-container-provider.tsx": {
+ "react-refresh/only-export-components": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/providers/context-menu-provider.tsx": {
+ "ts/no-use-before-define": {
+ "count": 2
+ }
+ },
+ "apps/desktop/layer/renderer/src/providers/extension-expose-provider.tsx": {
+ "ts/ban-ts-comment": {
+ "count": 1
+ },
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/providers/inject-styles-provider.tsx": {
+ "react-refresh/only-export-components": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/providers/invalidate-query-provider.tsx": {
+ "react-refresh/only-export-components": {
+ "count": 2
+ }
+ },
+ "apps/desktop/layer/renderer/src/providers/popover-provider.tsx": {
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/providers/root-providers.tsx": {
+ "ts/no-use-before-define": {
+ "count": 3
+ }
+ },
+ "apps/desktop/layer/renderer/src/providers/setting-sync.tsx": {
+ "no-useless-return": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/providers/wrapped-element-provider.tsx": {
+ "ts/no-use-before-define": {
+ "count": 5
+ }
+ },
+ "apps/desktop/layer/renderer/src/push-notification.ts": {
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/queries/rsshub.ts": {
+ "ts/no-use-before-define": {
+ "count": 5
+ }
+ },
+ "apps/desktop/layer/renderer/src/router.tsx": {
+ "dot-notation": {
+ "count": 1
+ },
+ "ts/ban-ts-comment": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/router.web.tsx": {
+ "dot-notation": {
+ "count": 1
+ },
+ "ts/ban-ts-comment": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/store/image/index.ts": {
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/store/search/constants.ts": {
+ "ts/no-redeclare": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/store/search/types.ts": {
+ "ts/ban-ts-comment": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/store/utils/helper.ts": {
+ "no-useless-return": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/src/wdyr.ts": {
+ "antfu/no-top-level-await": {
+ "count": 1
+ }
+ },
+ "apps/desktop/layer/renderer/tsconfig.json": {
+ "jsonc/sort-keys": {
+ "count": 7
+ }
+ },
+ "apps/desktop/layer/renderer/vitest.config.ts": {
+ "node/prefer-global/process": {
+ "count": 2
+ }
+ },
+ "apps/desktop/plugins/vite/ast.ts": {
+ "ts/ban-ts-comment": {
+ "count": 1
+ }
+ },
+ "apps/desktop/plugins/vite/cleanup.ts": {
+ "no-console": {
+ "count": 1
+ }
+ },
+ "apps/desktop/plugins/vite/compress.ts": {
+ "no-console": {
+ "count": 3
+ },
+ "node/prefer-global/process": {
+ "count": 1
+ }
+ },
+ "apps/desktop/plugins/vite/generate-main-hash.ts": {
+ "node/prefer-global/process": {
+ "count": 4
+ }
+ },
+ "apps/desktop/plugins/vite/hmr.ts": {
+ "no-console": {
+ "count": 1
+ },
+ "node/prefer-global/process": {
+ "count": 2
+ }
+ },
+ "apps/desktop/plugins/vite/html-inject.ts": {
+ "dot-notation": {
+ "count": 2
+ }
+ },
+ "apps/desktop/plugins/vite/utils/i18n-completeness.ts": {
+ "dot-notation": {
+ "count": 1
+ }
+ },
+ "apps/desktop/postcss.config.cjs": {
+ "node/prefer-global/process": {
+ "count": 3
+ }
+ },
+ "apps/desktop/scripts/apply-changelog.ts": {
+ "node/prefer-global/process": {
+ "count": 1
+ }
+ },
+ "apps/desktop/scripts/generate-appx-manifest.ts": {
+ "node/prefer-global/process": {
+ "count": 5
+ }
+ },
+ "apps/desktop/scripts/update-windows-yml.ts": {
+ "node/no-deprecated-api": {
+ "count": 1
+ }
+ },
+ "apps/desktop/tailwind.config.ts": {
+ "ts/no-require-imports": {
+ "count": 2
+ }
+ },
+ "apps/desktop/vite.config.ts": {
+ "no-alert": {
+ "count": 1
+ },
+ "node/prefer-global/buffer": {
+ "count": 1
+ },
+ "node/prefer-global/process": {
+ "count": 6
+ },
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "apps/landing/eslint.config.mjs": {
+ "style/operator-linebreak": {
+ "count": 1
+ },
+ "style/quotes": {
+ "count": 1
+ }
+ },
+ "apps/landing/global.d.ts": {
+ "@typescript-eslint/method-signature-style": {
+ "count": 1
+ },
+ "@typescript-eslint/no-empty-object-type": {
+ "count": 1
+ },
+ "style/indent-binary-ops": {
+ "count": 1
+ },
+ "style/operator-linebreak": {
+ "count": 1
+ },
+ "ts/method-signature-style": {
+ "count": 3
+ },
+ "ts/no-empty-object-type": {
+ "count": 4
+ }
+ },
+ "apps/landing/next.config.mjs": {
+ "node/prefer-global/process": {
+ "count": 2
+ },
+ "style/quotes": {
+ "count": 1
+ }
+ },
+ "apps/landing/plugins/eslint-recursive-sort.mjs": {
+ "style/arrow-parens": {
+ "count": 1
+ },
+ "style/brace-style": {
+ "count": 1
+ }
+ },
+ "apps/landing/src/app/[locale]/download/page.tsx": {
+ "style/operator-linebreak": {
+ "count": 2
+ }
+ },
+ "apps/landing/src/app/[locale]/error.tsx": {
+ "react-refresh/only-export-components": {
+ "count": 1
+ }
+ },
+ "apps/landing/src/app/[locale]/layout.tsx": {
+ "style/arrow-parens": {
+ "count": 2
+ },
+ "style/quote-props": {
+ "count": 2
+ }
+ },
+ "apps/landing/src/app/[locale]/privacy-policy/page.tsx": {
+ "style/quotes": {
+ "count": 3
+ }
+ },
+ "apps/landing/src/app/[locale]/terms-of-service/page.tsx": {
+ "style/quotes": {
+ "count": 3
+ }
+ },
+ "apps/landing/src/atoms/viewport.ts": {
+ "style/arrow-parens": {
+ "count": 1
+ },
+ "style/quote-props": {
+ "count": 6
+ },
+ "ts/ban-ts-comment": {
+ "count": 1
+ }
+ },
+ "apps/landing/src/components/common/ClientOnly.tsx": {
+ "curly": {
+ "count": 1
+ }
+ },
+ "apps/landing/src/components/common/HydrationEndDetector.tsx": {
+ "react-refresh/only-export-components": {
+ "count": 1
+ }
+ },
+ "apps/landing/src/components/common/Lazyload.tsx": {
+ "react-hooks-extra/no-direct-set-state-in-use-effect": {
+ "count": 1
+ }
+ },
+ "apps/landing/src/components/common/LightRays.tsx": {
+ "curly": {
+ "count": 10
+ },
+ "no-useless-return": {
+ "count": 1
+ },
+ "style/brace-style": {
+ "count": 2
+ },
+ "style/member-delimiter-style": {
+ "count": 1
+ },
+ "style/operator-linebreak": {
+ "count": 7
+ }
+ },
+ "apps/landing/src/components/common/ScrollTop.tsx": {
+ "curly": {
+ "count": 1
+ }
+ },
+ "apps/landing/src/components/hoc/with-no-ssr.tsx": {
+ "curly": {
+ "count": 1
+ }
+ },
+ "apps/landing/src/components/layout/footer/Footer.tsx": {
+ "style/arrow-parens": {
+ "count": 2
+ },
+ "style/jsx-one-expression-per-line": {
+ "count": 2
+ },
+ "style/member-delimiter-style": {
+ "count": 3
+ }
+ },
+ "apps/landing/src/components/ui/3d-models/AISpline.ts": {
+ "style/arrow-parens": {
+ "count": 1
+ },
+ "style/exp-list-style": {
+ "count": 1
+ }
+ },
+ "apps/landing/src/components/ui/3d-models/AISplineLoader.tsx": {
+ "curly": {
+ "count": 3
+ },
+ "style/brace-style": {
+ "count": 1
+ },
+ "style/operator-linebreak": {
+ "count": 1
+ }
+ },
+ "apps/landing/src/components/ui/accordion/Accordion.tsx": {
+ "react-refresh/only-export-components": {
+ "count": 1
+ },
+ "ts/no-use-before-define": {
+ "count": 2
+ }
+ },
+ "apps/landing/src/components/ui/border-beam.tsx": {
+ "style/quote-props": {
+ "count": 2
+ }
+ },
+ "apps/landing/src/components/ui/button/Button.tsx": {
+ "style/indent": {
+ "count": 2
+ },
+ "style/multiline-ternary": {
+ "count": 2
+ }
+ },
+ "apps/landing/src/components/ui/checkbox/Checkbox.tsx": {
+ "curly": {
+ "count": 1
+ },
+ "react-hooks-extra/no-direct-set-state-in-use-effect": {
+ "count": 1
+ },
+ "style/operator-linebreak": {
+ "count": 2
+ }
+ },
+ "apps/landing/src/components/ui/collapse/CollapseCss.tsx": {
+ "ts/no-use-before-define": {
+ "count": 2
+ }
+ },
+ "apps/landing/src/components/ui/dialog/Dialog.tsx": {
+ "curly": {
+ "count": 1
+ },
+ "react-hooks-extra/no-direct-set-state-in-use-effect": {
+ "count": 1
+ },
+ "style/indent-binary-ops": {
+ "count": 1
+ },
+ "style/operator-linebreak": {
+ "count": 1
+ }
+ },
+ "apps/landing/src/components/ui/dropdown-menu/DropdownMenu.tsx": {
+ "style/operator-linebreak": {
+ "count": 3
+ }
+ },
+ "apps/landing/src/components/ui/effects/GridGuides.tsx": {
+ "no-multi-str": {
+ "count": 1
+ }
+ },
+ "apps/landing/src/components/ui/effects/TiltCard.tsx": {
+ "curly": {
+ "count": 1
+ },
+ "style/arrow-parens": {
+ "count": 2
+ },
+ "style/multiline-ternary": {
+ "count": 2
+ },
+ "style/quote-props": {
+ "count": 2
+ }
+ },
+ "apps/landing/src/components/ui/glass/index.tsx": {
+ "curly": {
+ "count": 3
+ },
+ "style/brace-style": {
+ "count": 4
+ },
+ "style/operator-linebreak": {
+ "count": 2
+ },
+ "style/quote-props": {
+ "count": 3
+ }
+ },
+ "apps/landing/src/components/ui/highlighter.tsx": {
+ "curly": {
+ "count": 2
+ },
+ "style/operator-linebreak": {
+ "count": 1
+ }
+ },
+ "apps/landing/src/components/ui/input/Input.tsx": {
+ "curly": {
+ "count": 1
+ },
+ "react-hooks-extra/no-direct-set-state-in-use-effect": {
+ "count": 2
+ },
+ "style/indent": {
+ "count": 2
+ },
+ "style/multiline-ternary": {
+ "count": 4
+ },
+ "style/operator-linebreak": {
+ "count": 4
+ }
+ },
+ "apps/landing/src/components/ui/json-highlighter/index.tsx": {
+ "style/brace-style": {
+ "count": 4
+ },
+ "style/multiline-ternary": {
+ "count": 2
+ },
+ "style/operator-linebreak": {
+ "count": 2
+ }
+ },
+ "apps/landing/src/components/ui/light-rays.tsx": {
+ "curly": {
+ "count": 1
+ },
+ "react-hooks-extra/no-direct-set-state-in-use-effect": {
+ "count": 1
+ },
+ "style/arrow-parens": {
+ "count": 1
+ }
+ },
+ "apps/landing/src/components/ui/markdown/index.tsx": {
+ "node/prefer-global/process": {
+ "count": 1
+ },
+ "react-refresh/only-export-components": {
+ "count": 1
+ },
+ "style/brace-style": {
+ "count": 1
+ }
+ },
+ "apps/landing/src/components/ui/modal/ModalContainer.tsx": {
+ "curly": {
+ "count": 1
+ },
+ "style/arrow-parens": {
+ "count": 2
+ },
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "apps/landing/src/components/ui/modal/ModalManager.ts": {
+ "style/arrow-parens": {
+ "count": 2
+ }
+ },
+ "apps/landing/src/components/ui/panel/PanelSplitter.tsx": {
+ "curly": {
+ "count": 1
+ }
+ },
+ "apps/landing/src/components/ui/portal/provider.tsx": {
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "apps/landing/src/components/ui/prompts/BasePrompt.tsx": {
+ "style/brace-style": {
+ "count": 2
+ },
+ "style/multiline-ternary": {
+ "count": 2
+ }
+ },
+ "apps/landing/src/components/ui/prompts/InputPrompt.tsx": {
+ "style/arrow-parens": {
+ "count": 1
+ },
+ "style/brace-style": {
+ "count": 3
+ },
+ "style/multiline-ternary": {
+ "count": 2
+ }
+ },
+ "apps/landing/src/components/ui/radio/index.tsx": {
+ "style/operator-linebreak": {
+ "count": 1
+ }
+ },
+ "apps/landing/src/components/ui/relative-time/RelativeTime.tsx": {
+ "react-hooks-extra/no-direct-set-state-in-use-effect": {
+ "count": 2
+ },
+ "style/operator-linebreak": {
+ "count": 1
+ },
+ "ts/ban-ts-comment": {
+ "count": 1
+ }
+ },
+ "apps/landing/src/components/ui/scroll-areas/ScrollArea.tsx": {
+ "style/multiline-ternary": {
+ "count": 2
+ }
+ },
+ "apps/landing/src/components/ui/segment-tab/SegmentTab.tsx": {
+ "style/multiline-ternary": {
+ "count": 2
+ }
+ },
+ "apps/landing/src/components/ui/select/ComboboxSelect.tsx": {
+ "style/arrow-parens": {
+ "count": 1
+ },
+ "style/multiline-ternary": {
+ "count": 2
+ }
+ },
+ "apps/landing/src/components/ui/select/MultiSelect.tsx": {
+ "curly": {
+ "count": 2
+ },
+ "style/arrow-parens": {
+ "count": 3
+ },
+ "style/multiline-ternary": {
+ "count": 2
+ },
+ "style/operator-linebreak": {
+ "count": 1
+ }
+ },
+ "apps/landing/src/components/ui/select/Select.tsx": {
+ "style/indent-binary-ops": {
+ "count": 1
+ },
+ "style/multiline-ternary": {
+ "count": 2
+ },
+ "style/operator-linebreak": {
+ "count": 2
+ }
+ },
+ "apps/landing/src/components/ui/sheet/Sheet.tsx": {
+ "curly": {
+ "count": 1
+ },
+ "react-refresh/only-export-components": {
+ "count": 1
+ },
+ "style/arrow-parens": {
+ "count": 1
+ }
+ },
+ "apps/landing/src/components/ui/switch/index.tsx": {
+ "curly": {
+ "count": 1
+ },
+ "react-hooks-extra/no-direct-set-state-in-use-effect": {
+ "count": 1
+ },
+ "style/jsx-curly-brace-presence": {
+ "count": 1
+ },
+ "style/multiline-ternary": {
+ "count": 4
+ },
+ "style/operator-linebreak": {
+ "count": 1
+ }
+ },
+ "apps/landing/src/components/ui/theme-switcher/ThemeSwitcher.tsx": {
+ "@eslint-react/dom/no-flush-sync": {
+ "count": 1
+ },
+ "curly": {
+ "count": 2
+ },
+ "react-dom/no-flush-sync": {
+ "count": 1
+ },
+ "ts/no-use-before-define": {
+ "count": 2
+ }
+ },
+ "apps/landing/src/components/ui/transition/TextUpTransitionView.tsx": {
+ "ts/ban-ts-comment": {
+ "count": 1
+ }
+ },
+ "apps/landing/src/components/ui/viewport/OnlyDesktop.tsx": {
+ "curly": {
+ "count": 2
+ }
+ },
+ "apps/landing/src/components/ui/viewport/OnlyMobile.tsx": {
+ "curly": {
+ "count": 2
+ }
+ },
+ "apps/landing/src/components/widgets/download/DownloadHero.tsx": {
+ "style/arrow-parens": {
+ "count": 1
+ }
+ },
+ "apps/landing/src/components/widgets/download/PlatformDownloads.tsx": {
+ "style/arrow-parens": {
+ "count": 4
+ }
+ },
+ "apps/landing/src/components/widgets/landing/Audience.tsx": {
+ "curly": {
+ "count": 1
+ },
+ "style/arrow-parens": {
+ "count": 2
+ },
+ "style/brace-style": {
+ "count": 1
+ },
+ "style/jsx-one-expression-per-line": {
+ "count": 5
+ }
+ },
+ "apps/landing/src/components/widgets/landing/BuiltOpen.tsx": {
+ "style/arrow-parens": {
+ "count": 1
+ },
+ "style/multiline-ternary": {
+ "count": 2
+ },
+ "ts/no-use-before-define": {
+ "count": 12
+ }
+ },
+ "apps/landing/src/components/widgets/landing/Features.tsx": {
+ "style/jsx-one-expression-per-line": {
+ "count": 1
+ },
+ "style/jsx-wrap-multilines": {
+ "count": 3
+ },
+ "style/multiline-ternary": {
+ "count": 2
+ }
+ },
+ "apps/landing/src/components/widgets/landing/Header.tsx": {
+ "style/arrow-parens": {
+ "count": 1
+ },
+ "style/jsx-curly-brace-presence": {
+ "count": 1
+ }
+ },
+ "apps/landing/src/components/widgets/landing/Hero.tsx": {
+ "no-useless-rename": {
+ "count": 1
+ },
+ "style/arrow-parens": {
+ "count": 2
+ },
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "apps/landing/src/components/widgets/landing/PromptDemo.tsx": {
+ "style/arrow-parens": {
+ "count": 2
+ }
+ },
+ "apps/landing/src/components/widgets/landing/SocialProof.tsx": {
+ "curly": {
+ "count": 1
+ },
+ "style/quotes": {
+ "count": 5
+ }
+ },
+ "apps/landing/src/components/widgets/landing/ViewsShowcase.tsx": {
+ "style/arrow-parens": {
+ "count": 1
+ },
+ "style/member-delimiter-style": {
+ "count": 1
+ }
+ },
+ "apps/landing/src/components/widgets/landing/WindowChrome.tsx": {
+ "style/multiline-ternary": {
+ "count": 2
+ }
+ },
+ "apps/landing/src/components/widgets/simulators/EntryPage.tsx": {
+ "style/jsx-one-expression-per-line": {
+ "count": 3
+ },
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "apps/landing/src/components/widgets/simulators/ListDemo.tsx": {
+ "style/arrow-parens": {
+ "count": 1
+ },
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "apps/landing/src/components/widgets/simulators/components/SimulatorReaders.tsx": {
+ "style/jsx-one-expression-per-line": {
+ "count": 2
+ }
+ },
+ "apps/landing/src/components/widgets/simulators/components/ai/AIChainOfThought.tsx": {
+ "curly": {
+ "count": 7
+ },
+ "no-useless-return": {
+ "count": 1
+ },
+ "style/jsx-one-expression-per-line": {
+ "count": 1
+ },
+ "style/jsx-wrap-multilines": {
+ "count": 2
+ },
+ "style/multiline-ternary": {
+ "count": 4
+ },
+ "ts/no-use-before-define": {
+ "count": 3
+ }
+ },
+ "apps/landing/src/components/widgets/simulators/components/ai/AIReasoningPart.tsx": {
+ "curly": {
+ "count": 1
+ },
+ "react-hooks-extra/no-direct-set-state-in-use-effect": {
+ "count": 3
+ }
+ },
+ "apps/landing/src/components/widgets/simulators/components/ai/ToolInvocationComponent.tsx": {
+ "style/jsx-curly-brace-presence": {
+ "count": 4
+ },
+ "style/jsx-wrap-multilines": {
+ "count": 1
+ },
+ "style/multiline-ternary": {
+ "count": 4
+ },
+ "style/operator-linebreak": {
+ "count": 1
+ }
+ },
+ "apps/landing/src/components/widgets/simulators/components/ai/animated/AnimatedMarkdown.tsx": {
+ "style/brace-style": {
+ "count": 4
+ },
+ "style/quote-props": {
+ "count": 18
+ }
+ },
+ "apps/landing/src/components/widgets/simulators/components/ai/animated/TokenizedText.tsx": {
+ "curly": {
+ "count": 2
+ },
+ "style/brace-style": {
+ "count": 3
+ },
+ "style/operator-linebreak": {
+ "count": 3
+ }
+ },
+ "apps/landing/src/components/widgets/simulators/components/ai/parse-incomplete-markdown.ts": {
+ "curly": {
+ "count": 2
+ },
+ "no-cond-assign": {
+ "count": 2
+ },
+ "style/brace-style": {
+ "count": 2
+ },
+ "style/operator-linebreak": {
+ "count": 19
+ },
+ "style/quotes": {
+ "count": 2
+ },
+ "ts/no-use-before-define": {
+ "count": 3
+ }
+ },
+ "apps/landing/src/components/widgets/simulators/components/chat/AiMockMessage.tsx": {
+ "react-hooks-extra/no-direct-set-state-in-use-effect": {
+ "count": 3
+ },
+ "style/arrow-parens": {
+ "count": 3
+ },
+ "style/indent": {
+ "count": 4
+ },
+ "style/indent-binary-ops": {
+ "count": 2
+ },
+ "style/member-delimiter-style": {
+ "count": 6
+ },
+ "style/multiline-ternary": {
+ "count": 4
+ },
+ "style/operator-linebreak": {
+ "count": 1
+ }
+ },
+ "apps/landing/src/components/widgets/simulators/components/chat/ListChatPlayer.tsx": {
+ "curly": {
+ "count": 5
+ },
+ "style/arrow-parens": {
+ "count": 9
+ },
+ "style/brace-style": {
+ "count": 2
+ },
+ "style/jsx-curly-brace-presence": {
+ "count": 1
+ },
+ "style/jsx-one-expression-per-line": {
+ "count": 3
+ },
+ "style/jsx-wrap-multilines": {
+ "count": 1
+ },
+ "style/member-delimiter-style": {
+ "count": 2
+ },
+ "style/multiline-ternary": {
+ "count": 12
+ },
+ "style/operator-linebreak": {
+ "count": 1
+ }
+ },
+ "apps/landing/src/components/widgets/simulators/components/chat/stream.ts": {
+ "style/brace-style": {
+ "count": 1
+ },
+ "style/operator-linebreak": {
+ "count": 1
+ }
+ },
+ "apps/landing/src/components/widgets/simulators/mocks.tsx": {
+ "style/quotes": {
+ "count": 3
+ }
+ },
+ "apps/landing/src/constants/download.ts": {
+ "style/member-delimiter-style": {
+ "count": 1
+ }
+ },
+ "apps/landing/src/constants/env.ts": {
+ "curly": {
+ "count": 1
+ },
+ "node/prefer-global/process": {
+ "count": 5
+ }
+ },
+ "apps/landing/src/constants/site.ts": {
+ "style/quote-props": {
+ "count": 2
+ }
+ },
+ "apps/landing/src/hooks/biz/use-github-star.ts": {
+ "style/brace-style": {
+ "count": 1
+ }
+ },
+ "apps/landing/src/hooks/common/use-click-away.ts": {
+ "@typescript-eslint/no-unsafe-function-type": {
+ "count": 1
+ },
+ "style/indent-binary-ops": {
+ "count": 1
+ },
+ "style/operator-linebreak": {
+ "count": 2
+ },
+ "ts/no-unsafe-function-type": {
+ "count": 2
+ }
+ },
+ "apps/landing/src/hooks/common/use-is-client.ts": {
+ "react-hooks-extra/no-direct-set-state-in-use-effect": {
+ "count": 1
+ }
+ },
+ "apps/landing/src/hooks/common/use-is-mounted.ts": {
+ "react-hooks-extra/no-direct-set-state-in-use-effect": {
+ "count": 1
+ }
+ },
+ "apps/landing/src/hooks/common/use-sync-effect.ts": {
+ "curly": {
+ "count": 1
+ }
+ },
+ "apps/landing/src/hooks/common/useMeasure.ts": {
+ "curly": {
+ "count": 4
+ },
+ "style/arrow-parens": {
+ "count": 4
+ },
+ "style/exp-list-style": {
+ "count": 2
+ },
+ "style/member-delimiter-style": {
+ "count": 1
+ },
+ "style/operator-linebreak": {
+ "count": 1
+ },
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "apps/landing/src/hooks/shared/use-mask-scrollarea.ts": {
+ "curly": {
+ "count": 2
+ },
+ "react-hooks-extra/no-direct-set-state-in-use-effect": {
+ "count": 20
+ },
+ "style/arrow-parens": {
+ "count": 1
+ },
+ "style/brace-style": {
+ "count": 1
+ }
+ },
+ "apps/landing/src/i18n/request.ts": {
+ "style/operator-linebreak": {
+ "count": 1
+ }
+ },
+ "apps/landing/src/i18n/routing.ts": {
+ "style/operator-linebreak": {
+ "count": 1
+ }
+ },
+ "apps/landing/src/legal/privacy.md": {
+ "hyoban/md-one-sentence-per-line": {
+ "count": 17
+ },
+ "md/no-curly-quote": {
+ "count": 12
+ }
+ },
+ "apps/landing/src/legal/tos.md": {
+ "hyoban/md-one-sentence-per-line": {
+ "count": 38
+ },
+ "md/no-curly-quote": {
+ "count": 19
+ }
+ },
+ "apps/landing/src/lib/color.ts": {
+ "style/arrow-parens": {
+ "count": 1
+ },
+ "style/brace-style": {
+ "count": 1
+ },
+ "style/operator-linebreak": {
+ "count": 4
+ }
+ },
+ "apps/landing/src/lib/datetime.ts": {
+ "style/brace-style": {
+ "count": 5
+ }
+ },
+ "apps/landing/src/lib/dom.ts": {
+ "style/arrow-parens": {
+ "count": 2
+ },
+ "style/brace-style": {
+ "count": 1
+ }
+ },
+ "apps/landing/src/lib/env.ts": {
+ "node/prefer-global/process": {
+ "count": 1
+ }
+ },
+ "apps/landing/src/lib/helper.ts": {
+ "one-var": {
+ "count": 1
+ }
+ },
+ "apps/landing/src/lib/jotai.ts": {
+ "style/arrow-parens": {
+ "count": 1
+ }
+ },
+ "apps/landing/src/lib/platform.ts": {
+ "style/brace-style": {
+ "count": 2
+ }
+ },
+ "apps/landing/src/lib/scroller.ts": {
+ "style/operator-linebreak": {
+ "count": 1
+ },
+ "ts/no-use-before-define": {
+ "count": 2
+ }
+ },
+ "apps/landing/src/lib/sleep.ts": {
+ "style/arrow-parens": {
+ "count": 1
+ }
+ },
+ "apps/landing/src/providers/root/event-provider.tsx": {
+ "style/brace-style": {
+ "count": 1
+ }
+ },
+ "apps/landing/src/providers/root/index.tsx": {
+ "style/arrow-parens": {
+ "count": 1
+ }
+ },
+ "apps/landing/src/providers/root/page-scroll-info-provider.tsx": {
+ "react-refresh/only-export-components": {
+ "count": 5
+ },
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "apps/landing/src/providers/root/react-query-provider.tsx": {
+ "curly": {
+ "count": 1
+ },
+ "style/brace-style": {
+ "count": 1
+ },
+ "style/operator-linebreak": {
+ "count": 1
+ }
+ },
+ "apps/landing/src/providers/shared/LayoutRightSideProvider.tsx": {
+ "curly": {
+ "count": 2
+ }
+ },
+ "apps/landing/src/providers/shared/WrappedElementProvider.tsx": {
+ "curly": {
+ "count": 2
+ },
+ "react-refresh/only-export-components": {
+ "count": 5
+ },
+ "ts/no-use-before-define": {
+ "count": 4
+ }
+ },
+ "apps/landing/src/proxy.ts": {
+ "style/arrow-parens": {
+ "count": 1
+ },
+ "style/operator-linebreak": {
+ "count": 1
+ }
+ },
+ "apps/landing/tsconfig.json": {
+ "jsonc/sort-keys": {
+ "count": 9
+ }
+ },
+ "apps/landing/worker/index.js": {
+ "style/arrow-parens": {
+ "count": 1
+ }
+ },
+ "apps/landing/wrangler.jsonc": {
+ "jsonc/comma-dangle": {
+ "count": 9
+ }
+ },
+ "apps/mobile/AGENTS.md": {
+ "md/code-lang-shorthand": {
+ "count": 1
+ }
+ },
+ "apps/mobile/README.md": {
+ "markdown/fenced-code-language": {
+ "count": 1
+ },
+ "md/code-lang-shorthand": {
+ "count": 3
+ },
+ "md/no-url-trailing-slash": {
+ "count": 4
+ }
+ },
+ "apps/mobile/app.config.ts": {
+ "node/prefer-global/process": {
+ "count": 3
+ },
+ "ts/no-require-imports": {
+ "count": 4
+ }
+ },
+ "apps/mobile/changelog/0.1.6.md": {
+ "md/no-curly-quote": {
+ "count": 1
+ },
+ "md/no-irregular-dash": {
+ "count": 6
+ },
+ "md/no-irregular-whitespace": {
+ "count": 2
+ }
+ },
+ "apps/mobile/changelog/0.1.8.md": {
+ "md/no-curly-quote": {
+ "count": 2
+ },
+ "md/no-irregular-dash": {
+ "count": 1
+ }
+ },
+ "apps/mobile/changelog/0.1.9.md": {
+ "md/no-curly-quote": {
+ "count": 1
+ }
+ },
+ "apps/mobile/changelog/0.2.0.md": {
+ "md/no-curly-quote": {
+ "count": 1
+ }
+ },
+ "apps/mobile/changelog/0.2.1.md": {
+ "md/no-curly-quote": {
+ "count": 4
+ }
+ },
+ "apps/mobile/changelog/0.2.4.md": {
+ "md/no-irregular-dash": {
+ "count": 2
+ }
+ },
+ "apps/mobile/native/README.md": {
+ "markdown/fenced-code-language": {
+ "count": 1
+ },
+ "markdown/heading-increment": {
+ "count": 1
+ },
+ "markdown/no-multiple-h1": {
+ "count": 4
+ },
+ "md/no-url-trailing-slash": {
+ "count": 4
+ }
+ },
+ "apps/mobile/plugins/with-follow-assets.js": {
+ "no-console": {
+ "count": 1
+ }
+ },
+ "apps/mobile/scripts/apply-changelog.ts": {
+ "node/prefer-global/process": {
+ "count": 1
+ },
+ "ts/ban-ts-comment": {
+ "count": 1
+ }
+ },
+ "apps/mobile/src/@types/constants.ts": {
+ "no-useless-computed-key": {
+ "count": 4
+ }
+ },
+ "apps/mobile/src/App.tsx": {
+ "ts/no-use-before-define": {
+ "count": 3
+ }
+ },
+ "apps/mobile/src/atoms/settings/internal/helper.ts": {
+ "ts/ban-ts-comment": {
+ "count": 2
+ }
+ },
+ "apps/mobile/src/components/common/BlurEffect.tsx": {
+ "ts/no-use-before-define": {
+ "count": 2
+ }
+ },
+ "apps/mobile/src/components/common/ErrorBoundary.tsx": {
+ "react-refresh/only-export-components": {
+ "count": 1
+ },
+ "ts/no-use-before-define": {
+ "count": 2
+ }
+ },
+ "apps/mobile/src/components/common/RefreshControl.tsx": {
+ "ts/no-use-before-define": {
+ "count": 2
+ }
+ },
+ "apps/mobile/src/components/common/SwipeableItem.tsx": {
+ "ts/no-use-before-define": {
+ "count": 3
+ }
+ },
+ "apps/mobile/src/components/layouts/header/FakeNativeHeaderTitle.tsx": {
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "apps/mobile/src/components/layouts/header/NavigationHeader.tsx": {
+ "ts/no-use-before-define": {
+ "count": 4
+ }
+ },
+ "apps/mobile/src/components/layouts/tabbar/ReactNativeTab.ios.tsx": {
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "apps/mobile/src/components/layouts/tabbar/Tabbar.tsx": {
+ "ts/no-use-before-define": {
+ "count": 11
+ }
+ },
+ "apps/mobile/src/components/layouts/tabbar/hooks.ts": {
+ "no-useless-return": {
+ "count": 1
+ }
+ },
+ "apps/mobile/src/components/native/PagerView/index.tsx": {
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "apps/mobile/src/components/native/webview/hooks.ts": {
+ "ts/no-require-imports": {
+ "count": 1
+ }
+ },
+ "apps/mobile/src/components/native/webview/native-webview.android.tsx": {
+ "react-refresh/only-export-components": {
+ "count": 1
+ },
+ "ts/no-use-before-define": {
+ "count": 3
+ }
+ },
+ "apps/mobile/src/components/ui/accordion/AccordionItem.tsx": {
+ "ts/no-use-before-define": {
+ "count": 2
+ }
+ },
+ "apps/mobile/src/components/ui/button/UIBarButton.tsx": {
+ "ts/no-use-before-define": {
+ "count": 2
+ }
+ },
+ "apps/mobile/src/components/ui/carousel/MediaCarousel.tsx": {
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "apps/mobile/src/components/ui/context-menu/index.tsx": {
+ "react-refresh/only-export-components": {
+ "count": 1
+ }
+ },
+ "apps/mobile/src/components/ui/form/FormProvider.tsx": {
+ "react-refresh/only-export-components": {
+ "count": 1
+ }
+ },
+ "apps/mobile/src/components/ui/form/PickerIos.tsx": {
+ "@eslint-react/no-array-index-key": {
+ "count": 1
+ }
+ },
+ "apps/mobile/src/components/ui/form/TextField.tsx": {
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "apps/mobile/src/components/ui/grouped/GroupedList.tsx": {
+ "@typescript-eslint/no-unsafe-function-type": {
+ "count": 1
+ },
+ "ts/no-unsafe-function-type": {
+ "count": 1
+ },
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "apps/mobile/src/components/ui/icon/fallback-icon.tsx": {
+ "ts/no-use-before-define": {
+ "count": 2
+ }
+ },
+ "apps/mobile/src/components/ui/lightbox/ImageViewing/components/ImageDefaultHeader.tsx": {
+ "ts/no-use-before-define": {
+ "count": 9
+ }
+ },
+ "apps/mobile/src/components/ui/lightbox/ImageViewing/components/ImageItem/ImageItem.android.tsx": {
+ "ts/no-use-before-define": {
+ "count": 2
+ }
+ },
+ "apps/mobile/src/components/ui/lightbox/ImageViewing/components/ImageItem/ImageItem.ios.tsx": {
+ "ts/ban-ts-comment": {
+ "count": 2
+ },
+ "ts/no-use-before-define": {
+ "count": 2
+ }
+ },
+ "apps/mobile/src/components/ui/lightbox/ImageViewing/index.tsx": {
+ "ts/no-use-before-define": {
+ "count": 8
+ }
+ },
+ "apps/mobile/src/components/ui/lightbox/ImageViewing/transforms.ts": {
+ "one-var": {
+ "count": 3
+ }
+ },
+ "apps/mobile/src/components/ui/lightbox/lightboxState.tsx": {
+ "react-refresh/only-export-components": {
+ "count": 2
+ }
+ },
+ "apps/mobile/src/components/ui/modal/imperative-modal/index.tsx": {
+ "react-refresh/only-export-components": {
+ "count": 2
+ }
+ },
+ "apps/mobile/src/components/ui/modal/imperative-modal/modal.tsx": {
+ "react-refresh/only-export-components": {
+ "count": 1
+ },
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "apps/mobile/src/components/ui/qrcode/QRCode.tsx": {
+ "react-refresh/only-export-components": {
+ "count": 1
+ }
+ },
+ "apps/mobile/src/components/ui/qrcode/useQRCodeData.ts": {
+ "no-useless-return": {
+ "count": 1
+ }
+ },
+ "apps/mobile/src/components/ui/slider/Slider.tsx": {
+ "ts/no-use-before-define": {
+ "count": 6
+ }
+ },
+ "apps/mobile/src/components/ui/slider/index.tsx": {
+ "react-refresh/only-export-components": {
+ "count": 1
+ }
+ },
+ "apps/mobile/src/components/ui/switch/Switch.tsx": {
+ "ts/no-use-before-define": {
+ "count": 3
+ }
+ },
+ "apps/mobile/src/components/ui/tabview/TabBar.tsx": {
+ "ts/no-use-before-define": {
+ "count": 4
+ }
+ },
+ "apps/mobile/src/components/ui/tabview/TabView.tsx": {
+ "@typescript-eslint/no-empty-object-type": {
+ "count": 1
+ },
+ "ts/no-empty-object-type": {
+ "count": 2
+ },
+ "ts/no-redeclare": {
+ "count": 1
+ }
+ },
+ "apps/mobile/src/components/ui/toast/CenteredToast.tsx": {
+ "ts/no-use-before-define": {
+ "count": 4
+ }
+ },
+ "apps/mobile/src/components/ui/toast/ctx.tsx": {
+ "ts/no-redeclare": {
+ "count": 1
+ }
+ },
+ "apps/mobile/src/components/ui/toast/manager.tsx": {
+ "ts/ban-ts-comment": {
+ "count": 1
+ }
+ },
+ "apps/mobile/src/components/ui/typography/MonoText.tsx": {
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "apps/mobile/src/database/index.ts": {
+ "no-console": {
+ "count": 1
+ }
+ },
+ "apps/mobile/src/hooks/useBackHandler.ts": {
+ "@eslint-react/web-api/no-leaked-event-listener": {
+ "count": 1
+ }
+ },
+ "apps/mobile/src/hooks/useIntentHandler.ts": {
+ "no-useless-return": {
+ "count": 1
+ },
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "apps/mobile/src/initialize/index.ts": {
+ "ts/no-use-before-define": {
+ "count": 8
+ }
+ },
+ "apps/mobile/src/initialize/player.ts": {
+ "import/no-mutable-exports": {
+ "count": 1
+ }
+ },
+ "apps/mobile/src/lib/api-client.ts": {
+ "dot-notation": {
+ "count": 1
+ }
+ },
+ "apps/mobile/src/lib/client-session.ts": {
+ "one-var": {
+ "count": 1
+ }
+ },
+ "apps/mobile/src/lib/dialog.tsx": {
+ "react-refresh/only-export-components": {
+ "count": 4
+ },
+ "ts/no-use-before-define": {
+ "count": 9
+ }
+ },
+ "apps/mobile/src/lib/error-parser.ts": {
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "apps/mobile/src/lib/image.ts": {
+ "ts/no-use-before-define": {
+ "count": 2
+ }
+ },
+ "apps/mobile/src/lib/loading.tsx": {
+ "react-refresh/only-export-components": {
+ "count": 1
+ },
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "apps/mobile/src/lib/native/index.ios.ts": {
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "apps/mobile/src/lib/native/index.ts": {
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "apps/mobile/src/lib/navigation/StackNavigation.tsx": {
+ "ts/no-use-before-define": {
+ "count": 14
+ }
+ },
+ "apps/mobile/src/lib/navigation/WrappedScreenItem.tsx": {
+ "ts/no-use-before-define": {
+ "count": 2
+ }
+ },
+ "apps/mobile/src/lib/navigation/bottom-tab/TabBarPortal.tsx": {
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "apps/mobile/src/lib/navigation/debug/DebugButtonGroup.tsx": {
+ "ts/no-use-before-define": {
+ "count": 10
+ }
+ },
+ "apps/mobile/src/lib/navigation/types.ts": {
+ "@typescript-eslint/no-empty-object-type": {
+ "count": 1
+ },
+ "ts/no-empty-object-type": {
+ "count": 1
+ }
+ },
+ "apps/mobile/src/main.tsx": {
+ "react-refresh/only-export-components": {
+ "count": 1
+ },
+ "ts/ban-ts-comment": {
+ "count": 3
+ }
+ },
+ "apps/mobile/src/modules/ai/summary.tsx": {
+ "ts/no-use-before-define": {
+ "count": 10
+ }
+ },
+ "apps/mobile/src/modules/context-menu/feeds.tsx": {
+ "no-useless-return": {
+ "count": 1
+ },
+ "ts/no-use-before-define": {
+ "count": 3
+ }
+ },
+ "apps/mobile/src/modules/context-menu/video.tsx": {
+ "no-useless-return": {
+ "count": 1
+ }
+ },
+ "apps/mobile/src/modules/debug/index.tsx": {
+ "ts/ban-ts-comment": {
+ "count": 1
+ }
+ },
+ "apps/mobile/src/modules/dialogs/UpgradeRequiredDialog.tsx": {
+ "react-refresh/only-export-components": {
+ "count": 1
+ },
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "apps/mobile/src/modules/discover/Category.tsx": {
+ "ts/no-use-before-define": {
+ "count": 2
+ }
+ },
+ "apps/mobile/src/modules/discover/Recommendations.tsx": {
+ "ts/no-use-before-define": {
+ "count": 2
+ }
+ },
+ "apps/mobile/src/modules/discover/SearchContent.tsx": {
+ "ts/no-use-before-define": {
+ "count": 2
+ }
+ },
+ "apps/mobile/src/modules/discover/ctx.tsx": {
+ "react-refresh/only-export-components": {
+ "count": 5
+ }
+ },
+ "apps/mobile/src/modules/discover/search-tabs/SearchList.tsx": {
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "apps/mobile/src/modules/discover/search.tsx": {
+ "ts/no-use-before-define": {
+ "count": 6
+ }
+ },
+ "apps/mobile/src/modules/entry-content/EntryContentHeaderRightActions.tsx": {
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "apps/mobile/src/modules/entry-content/EntryNavigationHeader.tsx": {
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "apps/mobile/src/modules/entry-content/pull-up-navigation/use-pull-up-navigation.android.tsx": {
+ "react-refresh/only-export-components": {
+ "count": 1
+ }
+ },
+ "apps/mobile/src/modules/entry-content/pull-up-navigation/use-pull-up-navigation.tsx": {
+ "no-useless-return": {
+ "count": 1
+ }
+ },
+ "apps/mobile/src/modules/entry-list/EntryListContentArticle.tsx": {
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "apps/mobile/src/modules/entry-list/EntryListContentPicture.tsx": {
+ "ts/no-use-before-define": {
+ "count": 8
+ }
+ },
+ "apps/mobile/src/modules/entry-list/EntryListContentSocial.tsx": {
+ "@eslint-react/hooks-extra/no-unnecessary-use-callback": {
+ "count": 1
+ }
+ },
+ "apps/mobile/src/modules/entry-list/EntryListContentVideo.tsx": {
+ "ts/no-use-before-define": {
+ "count": 2
+ }
+ },
+ "apps/mobile/src/modules/entry-list/EntryListSelector.tsx": {
+ "react-refresh/only-export-components": {
+ "count": 2
+ },
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "apps/mobile/src/modules/entry-list/index.tsx": {
+ "ts/no-use-before-define": {
+ "count": 2
+ }
+ },
+ "apps/mobile/src/modules/entry-list/templates/EntryNormalItem.tsx": {
+ "ts/no-use-before-define": {
+ "count": 4
+ }
+ },
+ "apps/mobile/src/modules/entry-list/templates/EntryPictureItem.tsx": {
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "apps/mobile/src/modules/entry-list/templates/EntrySocialItem.tsx": {
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "apps/mobile/src/modules/entry-list/templates/EntryVideoItem.tsx": {
+ "ts/no-use-before-define": {
+ "count": 2
+ }
+ },
+ "apps/mobile/src/modules/list/FollowList.tsx": {
+ "ts/no-use-before-define": {
+ "count": 2
+ }
+ },
+ "apps/mobile/src/modules/login/email.tsx": {
+ "ts/ban-ts-comment": {
+ "count": 1
+ }
+ },
+ "apps/mobile/src/modules/login/index.tsx": {
+ "ts/no-use-before-define": {
+ "count": 2
+ }
+ },
+ "apps/mobile/src/modules/onboarding/step-preferences.tsx": {
+ "ts/no-use-before-define": {
+ "count": 8
+ }
+ },
+ "apps/mobile/src/modules/player/GlassPlayerTabBar.tsx": {
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "apps/mobile/src/modules/player/control.tsx": {
+ "ts/no-use-before-define": {
+ "count": 4
+ }
+ },
+ "apps/mobile/src/modules/rsshub/preview-url.tsx": {
+ "no-console": {
+ "count": 1
+ }
+ },
+ "apps/mobile/src/modules/screen/PagerList.tsx": {
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "apps/mobile/src/modules/screen/TimelineSelectorProvider.tsx": {
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "apps/mobile/src/modules/screen/action.tsx": {
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "apps/mobile/src/modules/screen/atoms.ts": {
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "apps/mobile/src/modules/settings/components/OTPWindow.tsx": {
+ "ts/no-use-before-define": {
+ "count": 2
+ }
+ },
+ "apps/mobile/src/modules/settings/routes/Account.tsx": {
+ "ts/no-use-before-define": {
+ "count": 2
+ }
+ },
+ "apps/mobile/src/modules/settings/routes/Actions.tsx": {
+ "ts/no-use-before-define": {
+ "count": 7
+ }
+ },
+ "apps/mobile/src/modules/settings/routes/EditProfile.tsx": {
+ "ts/no-use-before-define": {
+ "count": 2
+ }
+ },
+ "apps/mobile/src/modules/settings/routes/EditRule.tsx": {
+ "ts/no-use-before-define": {
+ "count": 5
+ }
+ },
+ "apps/mobile/src/modules/settings/routes/Lists.tsx": {
+ "ts/no-use-before-define": {
+ "count": 7
+ }
+ },
+ "apps/mobile/src/modules/settings/routes/ManageList.tsx": {
+ "ts/no-use-before-define": {
+ "count": 3
+ }
+ },
+ "apps/mobile/src/modules/settings/routes/Plan.tsx": {
+ "ts/no-use-before-define": {
+ "count": 3
+ }
+ },
+ "apps/mobile/src/modules/subscription/SubscriptionLists.tsx": {
+ "ts/no-use-before-define": {
+ "count": 5
+ }
+ },
+ "apps/mobile/src/modules/subscription/items/ListSubscriptionItem.tsx": {
+ "ts/no-use-before-define": {
+ "count": 3
+ }
+ },
+ "apps/mobile/src/providers/ServerConfigsLoader.tsx": {
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "apps/mobile/src/providers/index.tsx": {
+ "@eslint-react/no-missing-key": {
+ "count": 1
+ },
+ "react/no-missing-key": {
+ "count": 13
+ },
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "apps/mobile/src/screens/(headless)/(debug)/text.tsx": {
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "apps/mobile/src/screens/(headless)/DebugScreen.tsx": {
+ "ts/no-use-before-define": {
+ "count": 15
+ }
+ },
+ "apps/mobile/src/screens/(modal)/ForgetPasswordScreen.tsx": {
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "apps/mobile/src/screens/(modal)/ListScreen.tsx": {
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "apps/mobile/src/screens/(modal)/ProfileScreen.tsx": {
+ "ts/no-use-before-define": {
+ "count": 8
+ }
+ },
+ "apps/mobile/src/screens/(modal)/RsshubFormScreen.tsx": {
+ "no-console": {
+ "count": 1
+ },
+ "ts/no-use-before-define": {
+ "count": 5
+ }
+ },
+ "apps/mobile/src/screens/(modal)/onboarding/SelectReadingModeScreen.tsx": {
+ "ts/no-use-before-define": {
+ "count": 6
+ }
+ },
+ "apps/mobile/src/screens/(stack)/(tabs)/settings.tsx": {
+ "ts/no-use-before-define": {
+ "count": 2
+ }
+ },
+ "apps/mobile/src/screens/(stack)/(tabs)/subscriptions.tsx": {
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "apps/mobile/src/screens/(stack)/entries/[entryId]/EntryDetailScreen.tsx": {
+ "ts/no-use-before-define": {
+ "count": 3
+ }
+ },
+ "apps/mobile/src/sitemap.tsx": {
+ "react-refresh/only-export-components": {
+ "count": 1
+ },
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "apps/mobile/tailwind.config.ts": {
+ "ts/no-require-imports": {
+ "count": 2
+ }
+ },
+ "apps/mobile/tsconfig.json": {
+ "jsonc/sort-keys": {
+ "count": 6
+ }
+ },
+ "apps/mobile/web-app/html-renderer/src/common/WrappedElementProvider.tsx": {
+ "react-refresh/only-export-components": {
+ "count": 4
+ },
+ "ts/no-use-before-define": {
+ "count": 3
+ }
+ },
+ "apps/mobile/web-app/html-renderer/src/components/shiki/Shiki.tsx": {
+ "dot-notation": {
+ "count": 1
+ },
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "apps/mobile/web-app/html-renderer/src/managers/webview-bridge.ts": {
+ "ts/ban-ts-comment": {
+ "count": 2
+ }
+ },
+ "apps/mobile/web-app/html-renderer/src/parser.tsx": {
+ "react-refresh/only-export-components": {
+ "count": 1
+ }
+ },
+ "apps/mobile/web-app/html-renderer/tsconfig.json": {
+ "jsonc/sort-keys": {
+ "count": 6
+ }
+ },
+ "apps/ssr/api/index.ts": {
+ "ts/ban-ts-comment": {
+ "count": 1
+ }
+ },
+ "apps/ssr/client/@types/constants.ts": {
+ "no-useless-computed-key": {
+ "count": 3
+ }
+ },
+ "apps/ssr/client/atoms/settings/helper.ts": {
+ "ts/ban-ts-comment": {
+ "count": 1
+ }
+ },
+ "apps/ssr/client/components/items/grid.tsx": {
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "apps/ssr/client/components/items/index.tsx": {
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "apps/ssr/client/components/items/picture.tsx": {
+ "@eslint-react/no-context-provider": {
+ "count": 1
+ },
+ "ts/no-use-before-define": {
+ "count": 3
+ }
+ },
+ "apps/ssr/client/i18n.ts": {
+ "no-console": {
+ "count": 1
+ }
+ },
+ "apps/ssr/client/initialize/sentry.ts": {
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "apps/ssr/client/lib/helper.ts": {
+ "no-console": {
+ "count": 1
+ },
+ "no-useless-return": {
+ "count": 1
+ },
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "apps/ssr/client/modules/login/index.tsx": {
+ "no-useless-return": {
+ "count": 1
+ }
+ },
+ "apps/ssr/client/pages/(login)/layout.tsx": {
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "apps/ssr/client/pages/(main)/share/users/[id]/index.tsx": {
+ "ts/no-use-before-define": {
+ "count": 3
+ }
+ },
+ "apps/ssr/client/pages/(main)/share/users/[id]/metadata.ts": {
+ "no-undef-init": {
+ "count": 2
+ },
+ "prefer-promise-reject-errors": {
+ "count": 2
+ }
+ },
+ "apps/ssr/client/providers/root-providers.tsx": {
+ "ts/no-use-before-define": {
+ "count": 2
+ }
+ },
+ "apps/ssr/client/query/entries.ts": {
+ "dot-notation": {
+ "count": 1
+ }
+ },
+ "apps/ssr/client/router.tsx": {
+ "dot-notation": {
+ "count": 1
+ },
+ "ts/ban-ts-comment": {
+ "count": 1
+ }
+ },
+ "apps/ssr/global.ts": {
+ "node/prefer-global/process": {
+ "count": 1
+ }
+ },
+ "apps/ssr/helper/meta-map.ts": {
+ "no-console": {
+ "count": 5
+ },
+ "node/prefer-global/process": {
+ "count": 3
+ }
+ },
+ "apps/ssr/index.ts": {
+ "no-console": {
+ "count": 2
+ },
+ "node/prefer-global/process": {
+ "count": 1
+ }
+ },
+ "apps/ssr/postcss.config.cjs": {
+ "node/prefer-global/process": {
+ "count": 1
+ }
+ },
+ "apps/ssr/src/lib/api-client.ts": {
+ "no-console": {
+ "count": 1
+ },
+ "no-useless-return": {
+ "count": 1
+ },
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "apps/ssr/src/lib/dev-vite.ts": {
+ "ts/ban-ts-comment": {
+ "count": 1
+ }
+ },
+ "apps/ssr/src/lib/og/fonts.ts": {
+ "import/no-mutable-exports": {
+ "count": 1
+ }
+ },
+ "apps/ssr/src/router/global.ts": {
+ "ts/ban-ts-comment": {
+ "count": 1
+ }
+ },
+ "apps/ssr/src/router/og/__base.tsx": {
+ "node/prefer-global/buffer": {
+ "count": 1
+ },
+ "react-refresh/only-export-components": {
+ "count": 1
+ }
+ },
+ "apps/ssr/src/router/og/feed.tsx": {
+ "no-throw-literal": {
+ "count": 1
+ }
+ },
+ "apps/ssr/src/router/og/index.ts": {
+ "node/prefer-global/buffer": {
+ "count": 1
+ },
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "apps/ssr/src/router/og/list.tsx": {
+ "no-throw-literal": {
+ "count": 1
+ }
+ },
+ "apps/ssr/src/router/og/user.tsx": {
+ "no-throw-literal": {
+ "count": 1
+ }
+ },
+ "apps/ssr/tsconfig.json": {
+ "jsonc/sort-keys": {
+ "count": 10
+ }
+ },
+ "apps/ssr/tsdown.config.ts": {
+ "node/prefer-global/process": {
+ "count": 2
+ }
+ },
+ "apps/ssr/worker-entry.ts": {
+ "node/prefer-global/buffer": {
+ "count": 1
+ },
+ "node/prefer-global/process": {
+ "count": 1
+ },
+ "ts/ban-ts-comment": {
+ "count": 1
+ }
+ },
+ "changelogithub.config.ts": {
+ "node/prefer-global/process": {
+ "count": 1
+ }
+ },
+ "packages/configs/tailwindcss/tw-css-plugin.js": {
+ "node/no-deprecated-api": {
+ "count": 1
+ }
+ },
+ "packages/configs/tailwindcss/web.ts": {
+ "ts/no-require-imports": {
+ "count": 6
+ }
+ },
+ "packages/configs/tsconfig.extend.json": {
+ "jsonc/sort-keys": {
+ "count": 9
+ }
+ },
+ "packages/internal/atoms/package.json": {
+ "jsonc/sort-keys": {
+ "count": 2
+ }
+ },
+ "packages/internal/atoms/src/helper/setting.ts": {
+ "ts/ban-ts-comment": {
+ "count": 1
+ }
+ },
+ "packages/internal/atoms/tsconfig.json": {
+ "jsonc/sort-keys": {
+ "count": 2
+ }
+ },
+ "packages/internal/components/src/common/Focusable/Focusable.tsx": {
+ "no-console": {
+ "count": 1
+ },
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "packages/internal/components/src/common/Focusable/GlobalFocusableProvider.tsx": {
+ "no-console": {
+ "count": 1
+ }
+ },
+ "packages/internal/components/src/common/Focusable/hooks.ts": {
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "packages/internal/components/src/providers/stable-router-provider.tsx": {
+ "@typescript-eslint/no-empty-object-type": {
+ "count": 1
+ }
+ },
+ "packages/internal/components/src/ui/button/action-button.tsx": {
+ "ts/no-use-before-define": {
+ "count": 2
+ }
+ },
+ "packages/internal/components/src/ui/collapse/Collapse.tsx": {
+ "ts/no-use-before-define": {
+ "count": 2
+ }
+ },
+ "packages/internal/components/src/ui/collapse/CollapseCss.tsx": {
+ "ts/no-use-before-define": {
+ "count": 2
+ }
+ },
+ "packages/internal/components/src/ui/form/index.tsx": {
+ "react-refresh/only-export-components": {
+ "count": 1
+ },
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "packages/internal/components/src/ui/input/TextAreaWrapper.tsx": {
+ "react-refresh/only-export-components": {
+ "count": 1
+ }
+ },
+ "packages/internal/components/src/ui/kbd/Kbd.tsx": {
+ "ts/ban-ts-comment": {
+ "count": 2
+ },
+ "ts/no-use-before-define": {
+ "count": 4
+ }
+ },
+ "packages/internal/components/src/ui/navigation-menu/index.tsx": {
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "packages/internal/components/src/ui/platform-icon/utils.tsx": {
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "packages/internal/components/src/ui/portal/provider.tsx": {
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "packages/internal/components/src/ui/progressive-blur/index.tsx": {
+ "prefer-exponentiation-operator": {
+ "count": 1
+ }
+ },
+ "packages/internal/components/src/ui/radio-group/context.ts": {
+ "ts/no-redeclare": {
+ "count": 1
+ }
+ },
+ "packages/internal/components/src/ui/segment/index.tsx": {
+ "@eslint-react/no-context-provider": {
+ "count": 1
+ }
+ },
+ "packages/internal/components/src/ui/shrinking-focus-border/index.tsx": {
+ "prefer-exponentiation-operator": {
+ "count": 2
+ }
+ },
+ "packages/internal/components/src/utils/parse-markdown.tsx": {
+ "ts/ban-ts-comment": {
+ "count": 1
+ }
+ },
+ "packages/internal/components/tsconfig.json": {
+ "jsonc/sort-keys": {
+ "count": 3
+ }
+ },
+ "packages/internal/constants/tsconfig.json": {
+ "jsonc/sort-keys": {
+ "count": 2
+ }
+ },
+ "packages/internal/database/package.json": {
+ "jsonc/sort-keys": {
+ "count": 3
+ }
+ },
+ "packages/internal/database/src/db.desktop.ts": {
+ "import/no-mutable-exports": {
+ "count": 1
+ },
+ "ts/ban-ts-comment": {
+ "count": 3
+ }
+ },
+ "packages/internal/database/src/db.rn.ts": {
+ "import/no-mutable-exports": {
+ "count": 2
+ }
+ },
+ "packages/internal/hooks/src/factory/createHTMLMediaHook.ts": {
+ "no-useless-return": {
+ "count": 1
+ }
+ },
+ "packages/internal/hooks/src/optimistic/useOptimisticMutation.ts": {
+ "prefer-exponentiation-operator": {
+ "count": 1
+ }
+ },
+ "packages/internal/hooks/src/useLongPress.ts": {
+ "prefer-exponentiation-operator": {
+ "count": 2
+ }
+ },
+ "packages/internal/hooks/src/useMeasure.ts": {
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "packages/internal/hooks/src/useRefValue.ts": {
+ "@typescript-eslint/no-unsafe-function-type": {
+ "count": 1
+ },
+ "ts/no-unsafe-function-type": {
+ "count": 1
+ }
+ },
+ "packages/internal/hooks/src/useSmoothScroll.ts": {
+ "prefer-exponentiation-operator": {
+ "count": 1
+ }
+ },
+ "packages/internal/hooks/tsconfig.json": {
+ "jsonc/sort-keys": {
+ "count": 4
+ }
+ },
+ "packages/internal/logger/tsconfig.json": {
+ "jsonc/sort-keys": {
+ "count": 3
+ }
+ },
+ "packages/internal/models/package.json": {
+ "jsonc/sort-keys": {
+ "count": 1
+ }
+ },
+ "packages/internal/models/tsconfig.json": {
+ "jsonc/sort-keys": {
+ "count": 3
+ }
+ },
+ "packages/internal/shared/package.json": {
+ "jsonc/sort-keys": {
+ "count": 3
+ }
+ },
+ "packages/internal/shared/src/auth.ts": {
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "packages/internal/shared/src/bridge.ts": {
+ "ts/ban-ts-comment": {
+ "count": 3
+ }
+ },
+ "packages/internal/shared/src/constants.ts": {
+ "dot-notation": {
+ "count": 1
+ },
+ "no-shadow-restricted-names": {
+ "count": 1
+ },
+ "node/prefer-global/process": {
+ "count": 5
+ }
+ },
+ "packages/internal/shared/src/env.desktop.ts": {
+ "no-shadow-restricted-names": {
+ "count": 1
+ },
+ "node/prefer-global/process": {
+ "count": 3
+ },
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "packages/internal/shared/src/env.rn.ts": {
+ "node/prefer-global/process": {
+ "count": 1
+ },
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "packages/internal/shared/src/env.ssr.ts": {
+ "node/prefer-global/process": {
+ "count": 3
+ }
+ },
+ "packages/internal/shared/src/event.ts": {
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "packages/internal/shared/tsconfig.json": {
+ "jsonc/sort-keys": {
+ "count": 3
+ }
+ },
+ "packages/internal/store/package.json": {
+ "jsonc/sort-keys": {
+ "count": 17
+ }
+ },
+ "packages/internal/store/src/lib/helper.ts": {
+ "no-shadow-restricted-names": {
+ "count": 1
+ },
+ "no-useless-return": {
+ "count": 1
+ }
+ },
+ "packages/internal/store/src/modules/action/store.ts": {
+ "ts/no-use-before-define": {
+ "count": 3
+ }
+ },
+ "packages/internal/store/src/modules/collection/store.ts": {
+ "ts/no-use-before-define": {
+ "count": 5
+ }
+ },
+ "packages/internal/store/src/modules/entry/store.ts": {
+ "ts/no-use-before-define": {
+ "count": 9
+ }
+ },
+ "packages/internal/store/src/modules/feed/getter.ts": {
+ "no-useless-return": {
+ "count": 1
+ }
+ },
+ "packages/internal/store/src/modules/feed/hooks.ts": {
+ "ts/ban-ts-comment": {
+ "count": 2
+ }
+ },
+ "packages/internal/store/src/modules/feed/store.ts": {
+ "dot-notation": {
+ "count": 3
+ },
+ "ts/no-use-before-define": {
+ "count": 6
+ }
+ },
+ "packages/internal/store/src/modules/image/store.ts": {
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "packages/internal/store/src/modules/inbox/store.ts": {
+ "ts/no-use-before-define": {
+ "count": 7
+ }
+ },
+ "packages/internal/store/src/modules/list/store.ts": {
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "packages/internal/store/src/modules/subscription/store.ts": {
+ "ts/no-use-before-define": {
+ "count": 3
+ }
+ },
+ "packages/internal/store/src/modules/translation/store.ts": {
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "packages/internal/store/src/modules/unread/store.ts": {
+ "ts/no-use-before-define": {
+ "count": 8
+ }
+ },
+ "packages/internal/store/src/modules/user/store.ts": {
+ "ts/no-use-before-define": {
+ "count": 4
+ }
+ },
+ "packages/internal/store/src/morph/store-db.ts": {
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "packages/internal/tracker/src/manager.ts": {
+ "no-console": {
+ "count": 1
+ },
+ "prefer-exponentiation-operator": {
+ "count": 1
+ }
+ },
+ "packages/internal/tracker/src/op/index.ts": {
+ "node/prefer-global/process": {
+ "count": 1
+ },
+ "ts/ban-ts-comment": {
+ "count": 1
+ }
+ },
+ "packages/internal/tracker/src/utils.ts": {
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "packages/internal/utils/package.json": {
+ "jsonc/sort-keys": {
+ "count": 4
+ }
+ },
+ "packages/internal/utils/src/chain.ts": {
+ "no-throw-literal": {
+ "count": 1
+ }
+ },
+ "packages/internal/utils/src/cjk.ts": {
+ "unicorn/number-literal-case": {
+ "count": 8
+ }
+ },
+ "packages/internal/utils/src/color.ts": {
+ "one-var": {
+ "count": 1
+ },
+ "unicorn/number-literal-case": {
+ "count": 3
+ }
+ },
+ "packages/internal/utils/src/event-bus.rn.ts": {
+ "@typescript-eslint/no-empty-object-type": {
+ "count": 1
+ }
+ },
+ "packages/internal/utils/src/event-bus.ts": {
+ "@typescript-eslint/no-empty-object-type": {
+ "count": 1
+ }
+ },
+ "packages/internal/utils/src/headers.ts": {
+ "node/prefer-global/process": {
+ "count": 3
+ }
+ },
+ "packages/internal/utils/src/jotai.ts": {
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "packages/internal/utils/src/lru-cache.test.ts": {
+ "test/prefer-lowercase-title": {
+ "count": 1
+ }
+ },
+ "packages/internal/utils/src/path-parser.test.ts": {
+ "test/consistent-test-it": {
+ "count": 26
+ },
+ "test/no-identical-title": {
+ "count": 1
+ }
+ },
+ "packages/internal/utils/src/path-parser.ts": {
+ "ts/no-use-before-define": {
+ "count": 1
+ }
+ },
+ "packages/internal/utils/src/scroller.ts": {
+ "ts/no-use-before-define": {
+ "count": 2
+ }
+ },
+ "packages/internal/utils/src/utils.spec.ts": {
+ "test/consistent-test-it": {
+ "count": 5
+ }
+ },
+ "packages/internal/utils/src/utils.ts": {
+ "one-var": {
+ "count": 1
+ },
+ "prefer-exponentiation-operator": {
+ "count": 1
+ },
+ "ts/ban-ts-comment": {
+ "count": 1
+ }
+ },
+ "packages/internal/utils/tsconfig.json": {
+ "jsonc/sort-keys": {
+ "count": 2
+ }
+ },
+ "packages/internal/utils/vitest.config.ts": {
+ "node/prefer-global/process": {
+ "count": 2
+ }
+ },
+ "packages/readability/src/index.ts": {
+ "node/prefer-global/buffer": {
+ "count": 1
+ },
+ "node/prefer-global/process": {
+ "count": 1
+ },
+ "ts/no-use-before-define": {
+ "count": 2
+ }
+ },
+ "packages/readability/tsconfig.json": {
+ "jsonc/sort-keys": {
+ "count": 1
+ }
+ },
+ "plugins/eslint/eslint-package-json.js": {
+ "object-shorthand": {
+ "count": 2
+ }
+ },
+ "scripts/svg-to-rn.ts": {
+ "node/prefer-global/process": {
+ "count": 2
+ }
+ },
+ "tsconfig.json": {
+ "jsonc/sort-keys": {
+ "count": 1
+ }
+ },
+ "wiki/contribute-i18n.md": {
+ "md/code-lang-shorthand": {
+ "count": 1
+ }
+ }
+}
diff --git a/eslint.config.mjs b/eslint.config.mjs
index 1c032ec94f..e53c8c3ccb 100644
--- a/eslint.config.mjs
+++ b/eslint.config.mjs
@@ -11,7 +11,7 @@ import recursiveSort from "./plugins/eslint/eslint-recursive-sort.js"
export default defineConfig(
{
- formatting: false,
+ stylistic: false,
lessOpinionated: true,
ignores: [
"resources/**",
@@ -21,9 +21,14 @@ export default defineConfig(
"apps/mobile/native/build/**",
"**/generated-routes.ts",
],
- preferESM: false,
- tailwindCSS: {
- order: false,
+ hyoban: false,
+ tailwindcss: {
+ overrides: {
+ "tailwindcss/enforce-consistent-class-order": "off",
+ },
+ settings: {
+ tailwindConfig: path.join(import.meta.dirname, "apps/desktop/tailwind.config.ts"),
+ },
},
},
{
@@ -37,10 +42,10 @@ export default defineConfig(
},
rules: {
"no-debug/no-debug-stack": "error",
- "@eslint-react/no-clone-element": 0,
- "@eslint-react/hooks-extra/no-direct-set-state-in-use-effect": 0,
- "@eslint-react/dom/no-flush-sync": 1,
- "@eslint-react/hooks-extra/no-unnecessary-use-callback": "warn",
+ "react/no-clone-element": 0,
+ "react-hooks-extra/no-direct-set-state-in-use-effect": 0,
+ "react-dom/no-flush-sync": 1,
+ "react/no-unnecessary-use-callback": "warn",
"unicorn/no-array-callback-reference": 0,
"no-restricted-syntax": 0,
"no-restricted-globals": [
@@ -74,36 +79,36 @@ export default defineConfig(
},
},
// use correct tailwind config for eslint
- {
- settings: {
- tailwindcss: {
- config: path.join(import.meta.dirname, "apps/desktop/tailwind.config.ts"),
- },
- },
- },
{
files: ["apps/ssr/**/*"],
settings: {
- tailwindcss: {
- config: path.join(import.meta.dirname, "apps/ssr/tailwind.config.ts"),
+ "better-tailwindcss": {
+ tailwindConfig: path.join(import.meta.dirname, "apps/ssr/tailwind.config.ts"),
},
},
},
{
files: ["apps/mobile/**/*"],
settings: {
- tailwindcss: {
- config: path.join(import.meta.dirname, "apps/mobile/tailwind.config.ts"),
+ "better-tailwindcss": {
+ tailwindConfig: path.join(import.meta.dirname, "apps/mobile/tailwind.config.ts"),
},
},
},
{
- files: ["**/*.tsx"],
- rules: {
- "@stylistic/jsx-self-closing-comp": "error",
+ files: ["apps/landing/**/*"],
+ settings: {
+ "better-tailwindcss": {
+ tailwindConfig: path.join(import.meta.dirname, "apps/landing/src/styles/globals.css"),
+ },
},
},
- // @ts-expect-error
+ // {
+ // files: ["**/*.tsx"],
+ // rules: {
+ // "@stylistic/jsx-self-closing-comp": "error",
+ // },
+ // },
{
files: ["locales/**/*.json"],
plugins: {
@@ -149,7 +154,7 @@ export default defineConfig(
// @ts-expect-error
"react-native": fixupPluginRules(reactNative),
},
- files: ["apps/mobile/**/*"],
+ files: ["apps/mobile/**/*.{js,ts,tsx}"],
rules: {
"react-native/no-inline-styles": "warn",
},
diff --git a/package.json b/package.json
index 797e476a48..6eeae860a8 100644
--- a/package.json
+++ b/package.json
@@ -37,7 +37,7 @@
"@babel/parser": "7.29.0",
"@babel/traverse": "7.29.0",
"@babel/types": "7.29.0",
- "@eslint/compat": "1.4.1",
+ "@eslint/compat": "2.0.2",
"@tsslint/cli": "2.0.7",
"@tsslint/config": "2.0.7",
"@tsslint/eslint": "2.0.7",
@@ -46,8 +46,8 @@
"@types/react-dom": "19.2.3",
"@vercel/node": "5.6.3",
"cross-env": "10.1.0",
- "eslint": "9.39.1",
- "eslint-config-hyoban": "4.0.10",
+ "eslint": "10.0.2",
+ "eslint-config-hyoban": "6.0.0",
"eslint-plugin-react-native": "5.0.0",
"fast-glob": "3.3.3",
"glob": "11.0.3",
@@ -61,6 +61,7 @@
"serialize-error": "2.1.0",
"simple-git-hooks": "2.13.1",
"svg-parser": "2.0.4",
+ "tailwindcss": "3.4.17",
"tar": "7.5.7",
"tsx": "4.21.0",
"turbo": "2.8.7",
diff --git a/packages/configs/package.json b/packages/configs/package.json
index c06b302b47..2c1cf8f38f 100644
--- a/packages/configs/package.json
+++ b/packages/configs/package.json
@@ -29,6 +29,7 @@
"devDependencies": {
"postcss": "8.5.6",
"postcss-js": "5.0.3",
+ "tailwindcss": "3.4.17",
"workspace-root": "3.3.1"
}
}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index d0265d7236..4a7cf26e14 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -33,6 +33,7 @@ overrides:
array.prototype.flatmap: npm:@nolyfill/array.prototype.flatmap@latest
array.prototype.tosorted: npm:@nolyfill/array.prototype.tosorted@latest
drizzle-orm: 0.45.1
+ eslint-plugin-react-hooks>zod-validation-error: 4.0.2
global-agent>serialize-error: 7.0.1
has: npm:@nolyfill/has@latest
is-core-module: npm:@nolyfill/is-core-module@1.0.39
@@ -95,8 +96,8 @@ importers:
specifier: 7.29.0
version: 7.29.0
'@eslint/compat':
- specifier: 1.4.1
- version: 1.4.1(eslint@9.39.1(jiti@2.6.1))
+ specifier: 2.0.2
+ version: 2.0.2(eslint@10.0.2(jiti@2.6.1))
'@tsslint/cli':
specifier: 2.0.7
version: 2.0.7(typescript@5.9.3)
@@ -122,14 +123,14 @@ importers:
specifier: 10.1.0
version: 10.1.0
eslint:
- specifier: 9.39.1
- version: 9.39.1(jiti@2.6.1)
+ specifier: 10.0.2
+ version: 10.0.2(jiti@2.6.1)
eslint-config-hyoban:
- specifier: 4.0.10
- version: 4.0.10(@types/estree@1.0.8)(@typescript-eslint/eslint-plugin@8.56.0(@typescript-eslint/parser@8.56.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(@typescript-eslint/utils@8.56.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1))(tailwindcss@4.1.16)(ts-api-utils@2.4.0(typescript@5.9.3))(typescript@5.9.3)
+ specifier: 6.0.0
+ version: 6.0.0(@typescript-eslint/rule-tester@8.56.1(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3))(@typescript-eslint/typescript-estree@8.56.1(typescript@5.9.3))(@typescript-eslint/utils@8.56.1(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3))(@unocss/eslint-plugin@66.6.0(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3))(@vue/compiler-sfc@3.5.29)(eslint@10.0.2(jiti@2.6.1))(tailwindcss@3.4.17(ts-node@10.9.2(@types/node@25.2.3)(typescript@5.9.3)))(typescript@5.9.3)(vitest@3.2.4(@edge-runtime/vm@3.2.0)(@types/debug@4.1.12)(@types/node@25.2.3)(happy-dom@20.6.1(bufferutil@4.1.0))(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))
eslint-plugin-react-native:
specifier: 5.0.0
- version: 5.0.0(eslint@9.39.1(jiti@2.6.1))
+ version: 5.0.0(eslint@10.0.2(jiti@2.6.1))
fast-glob:
specifier: 3.3.3
version: 3.3.3
@@ -144,7 +145,7 @@ importers:
version: 3.8.1
prettier-plugin-tailwindcss:
specifier: 0.7.2
- version: 0.7.2(@ianvs/prettier-plugin-sort-imports@4.4.2(prettier@3.8.1))(prettier@3.8.1)
+ version: 0.7.2(@ianvs/prettier-plugin-sort-imports@4.4.2(@vue/compiler-sfc@3.5.29)(prettier@3.8.1))(prettier@3.8.1)
raw-body:
specifier: 3.0.2
version: 3.0.2
@@ -166,6 +167,9 @@ importers:
svg-parser:
specifier: 2.0.4
version: 2.0.4
+ tailwindcss:
+ specifier: 3.4.17
+ version: 3.4.17(ts-node@10.9.2(@types/node@25.2.3)(typescript@5.9.3))
tar:
specifier: 7.5.7
version: 7.5.7
@@ -864,7 +868,7 @@ importers:
version: 5.0.68(zod@4.3.6)
axios:
specifier: 1.13.0
- version: 1.13.0
+ version: 1.13.0(debug@4.4.3)
clsx:
specifier: 2.1.1
version: 2.1.1
@@ -985,7 +989,7 @@ importers:
version: 1.2.0
'@innei/prettier':
specifier: 1.0.0
- version: 1.0.0
+ version: 1.0.0(@vue/compiler-sfc@3.5.29)
'@tailwindcss/postcss':
specifier: 4.1.16
version: 4.1.16
@@ -1022,12 +1026,6 @@ importers:
dotenv:
specifier: 17.2.3
version: 17.2.3
- eslint:
- specifier: 9.38.0
- version: 9.38.0(jiti@2.6.1)
- eslint-config-hyoban:
- specifier: 4.0.10
- version: 4.0.10(@types/estree@1.0.8)(@typescript-eslint/eslint-plugin@8.56.0(@typescript-eslint/parser@8.56.0(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3))(@typescript-eslint/utils@8.56.0(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.38.0(jiti@2.6.1))(tailwindcss@4.1.16)(ts-api-utils@2.4.0(typescript@5.9.3))(typescript@5.9.3)
postcss:
specifier: 8.5.6
version: 8.5.6
@@ -1674,9 +1672,6 @@ importers:
es-toolkit:
specifier: 1.44.0
version: 1.44.0
- tailwindcss:
- specifier: '>=3 || <4'
- version: 3.4.17(ts-node@10.9.2(@types/node@25.2.3)(typescript@5.9.3))
tailwindcss-animate:
specifier: 1.0.7
version: 1.0.7(tailwindcss@3.4.17(ts-node@10.9.2(@types/node@25.2.3)(typescript@5.9.3)))
@@ -1699,6 +1694,9 @@ importers:
postcss-js:
specifier: 5.0.3
version: 5.0.3(postcss@8.5.6)
+ tailwindcss:
+ specifier: 3.4.17
+ version: 3.4.17(ts-node@10.9.2(@types/node@25.2.3)(typescript@5.9.3))
workspace-root:
specifier: 3.3.1
version: 3.3.1
@@ -2084,7 +2082,7 @@ importers:
version: 0.1.44(@opentelemetry/api@1.9.0)(better-sqlite3@12.6.2)(expo-sqlite@16.0.10(expo@54.0.33)(react-native@0.81.5(@babel/core@7.29.0)(@types/react@19.1.17)(bufferutil@4.1.0)(react@19.1.0))(react@19.1.0))(hono@4.12.1)(kysely@0.28.11)
'@t3-oss/env-core':
specifier: 0.13.10
- version: 0.13.10(typescript@5.9.3)(zod@3.25.76)
+ version: 0.13.10(typescript@5.9.3)(valibot@1.2.0(typescript@5.9.3))(zod@3.25.76)
ai:
specifier: 6.0.85
version: 6.0.85(zod@3.25.76)
@@ -2308,8 +2306,69 @@ packages:
resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==}
engines: {node: '>=10'}
- '@altano/repository-tools@2.0.1':
- resolution: {integrity: sha512-YE/52CkFtb+YtHPgbWPai7oo5N9AKnMuP5LM+i2AG7G1H2jdYBCO1iDnkDE3dZ3C1MIgckaF+d5PNRulgt0bdw==}
+ '@antfu/eslint-config@7.6.1':
+ resolution: {integrity: sha512-MRiskHFHYPF0R3eWDUkPPiHUM3fWXwAviVv9O8iMH5hVJkgp60oJYBMzbImKdqSGMuuyOMY3GXxWbH60t9rK0g==}
+ hasBin: true
+ peerDependencies:
+ '@angular-eslint/eslint-plugin': ^21.1.0
+ '@angular-eslint/eslint-plugin-template': ^21.1.0
+ '@angular-eslint/template-parser': ^21.1.0
+ '@eslint-react/eslint-plugin': ^2.11.0
+ '@next/eslint-plugin-next': '>=15.0.0'
+ '@prettier/plugin-xml': ^3.4.1
+ '@unocss/eslint-plugin': '>=0.50.0'
+ astro-eslint-parser: ^1.0.2
+ eslint: ^9.10.0 || ^10.0.0
+ eslint-plugin-astro: ^1.2.0
+ eslint-plugin-format: '>=0.1.0'
+ eslint-plugin-jsx-a11y: '>=6.10.2'
+ eslint-plugin-react-hooks: ^7.0.0
+ eslint-plugin-react-refresh: ^0.5.0
+ eslint-plugin-solid: ^0.14.3
+ eslint-plugin-svelte: '>=2.35.1'
+ eslint-plugin-vuejs-accessibility: ^2.4.1
+ prettier-plugin-astro: ^0.14.0
+ prettier-plugin-slidev: ^1.0.5
+ svelte-eslint-parser: '>=0.37.0'
+ peerDependenciesMeta:
+ '@angular-eslint/eslint-plugin':
+ optional: true
+ '@angular-eslint/eslint-plugin-template':
+ optional: true
+ '@angular-eslint/template-parser':
+ optional: true
+ '@eslint-react/eslint-plugin':
+ optional: true
+ '@next/eslint-plugin-next':
+ optional: true
+ '@prettier/plugin-xml':
+ optional: true
+ '@unocss/eslint-plugin':
+ optional: true
+ astro-eslint-parser:
+ optional: true
+ eslint-plugin-astro:
+ optional: true
+ eslint-plugin-format:
+ optional: true
+ eslint-plugin-jsx-a11y:
+ optional: true
+ eslint-plugin-react-hooks:
+ optional: true
+ eslint-plugin-react-refresh:
+ optional: true
+ eslint-plugin-solid:
+ optional: true
+ eslint-plugin-svelte:
+ optional: true
+ eslint-plugin-vuejs-accessibility:
+ optional: true
+ prettier-plugin-astro:
+ optional: true
+ prettier-plugin-slidev:
+ optional: true
+ svelte-eslint-parser:
+ optional: true
'@antfu/install-pkg@1.1.0':
resolution: {integrity: sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ==}
@@ -2519,13 +2578,6 @@ packages:
peerDependencies:
'@babel/core': ^7.0.0-0
- '@babel/plugin-proposal-private-methods@7.18.6':
- resolution: {integrity: sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==}
- 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-private-methods 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'}
@@ -3137,9 +3189,15 @@ packages:
'@clack/core@0.3.5':
resolution: {integrity: sha512-5cfhQNH+1VQ2xLQlmzXMqUoiaH0lRBq9/CLW9lTyMbuKLC3+xEK01tHVvyut++mLOn5urSHmkm6I0Lg9MaJSTQ==}
+ '@clack/core@1.0.1':
+ resolution: {integrity: sha512-WKeyK3NOBwDOzagPR5H08rFk9D/WuN705yEbuZvKqlkmoLM2woKtXb10OO2k1NoSU4SFG947i2/SCYh+2u5e4g==}
+
'@clack/prompts@0.8.2':
resolution: {integrity: sha512-6b9Ab2UiZwJYA9iMyboYyW9yJvAO9V753ZhS+DHKEjZRKAxPPOb7MXXu84lsPFG+vZt6FRFniZ8rXi+zCIw4yQ==}
+ '@clack/prompts@1.0.1':
+ resolution: {integrity: sha512-/42G73JkuYdyWZ6m8d/CJtBrGl1Hegyc7Fy78m5Ob+jF85TOUmLR5XLce/U3LxYAw0kJ8CT5aI99RIvPHcGp/Q==}
+
'@cloudflare/kv-asset-handler@0.4.2':
resolution: {integrity: sha512-SIOD2DxrRRwQ+jgzlXCqoEFiKOFqaPjhnNTGKXSRLvp1HiOvapLaFG2kEr9dYQTYe8rKrd9uvDUzmAITeNyaHQ==}
engines: {node: '>=18.0.0'}
@@ -3303,6 +3361,15 @@ packages:
'@dominicstop/ts-event-emitter@1.1.0':
resolution: {integrity: sha512-CcxmJIvUb1vsFheuGGVSQf4KdPZC44XolpUT34+vlal+LyQoBUOn31pjFET5M9ctOxEpt8xa0M3/2M7uUiAoJw==}
+ '@dprint/formatter@0.5.1':
+ resolution: {integrity: sha512-cdZUrm0iv/FnnY3CKE2dEcVhNEzrC551aE2h2mTFwQCRBrqyARLDnb7D+3PlXTUVp3s34ftlnGOVCmhLT9DeKA==}
+
+ '@dprint/markdown@0.21.1':
+ resolution: {integrity: sha512-XbZ/R7vRrBaZFYXG6vAvLvtaMVXHu8XB+xwie7OYrG+dPoGDP8UADGirIbzUyX8TmrAZcl6QBmalipTGlpzRmQ==}
+
+ '@dprint/toml@0.7.0':
+ resolution: {integrity: sha512-eFaQTcfxKHB+YyTh83x7GEv+gDPuj9q5NFOTaoj5rZmQTbj6OgjjMxUicmS1R8zYcx8YAq5oA9J3YFa5U6x2gA==}
+
'@drizzle-team/brocli@0.10.2':
resolution: {integrity: sha512-z33Il7l5dKjUgGULTqBsQBQwckHh5AbIuxhdsIxDDiZAzBOrZO6q9ogcWC65kU382AfynTfgNumVcNIjuIua6w==}
@@ -3526,9 +3593,13 @@ packages:
'@epic-web/invariant@1.0.0':
resolution: {integrity: sha512-lrTPqgvfFQtR/eY/qkIzp98OGdNJu0m5ji3q/nJI8v3SXkRKEnWiOxMmbvcSoAIzv/cGiuvRy57k4suKQSAdwA==}
- '@es-joy/jsdoccomment@0.78.0':
- resolution: {integrity: sha512-rQkU5u8hNAq2NVRzHnIUUvR6arbO0b6AOlvpTNS48CkiKSn/xtNfOzBK23JE4SiW89DgvU7GtxLVgV4Vn2HBAw==}
- engines: {node: '>=20.11.0'}
+ '@es-joy/jsdoccomment@0.84.0':
+ resolution: {integrity: sha512-0xew1CxOam0gV5OMjh2KjFQZsKL2bByX1+q4j3E73MpYIdyUxcZb/xQct9ccUb+ve5KGUYbCUxyPnYB7RbuP+w==}
+ engines: {node: ^20.19.0 || ^22.13.0 || >=24}
+
+ '@es-joy/resolve.exports@1.2.0':
+ resolution: {integrity: sha512-Q9hjxWI5xBM+qW2enxfe8wDKdFWMfd0Z29k5ZJnuBqD/CasY5Zryj09aCA6owbGATWz+39p5uIdaHXpopOcG8g==}
+ engines: {node: '>=10'}
'@esbuild-kit/core-utils@3.3.2':
resolution: {integrity: sha512-sPRAnw9CdSsRmEtnsl2WXWdyquogVpB3yZ3dgwJfe8zrOzTsV7cJvmwrKVa+0ma5BoiGJ+BoqkMvawbayKUsqQ==}
@@ -4138,6 +4209,12 @@ packages:
cpu: [x64]
os: [win32]
+ '@eslint-community/eslint-plugin-eslint-comments@4.6.0':
+ resolution: {integrity: sha512-2EX2bBQq1ez++xz2o9tEeEQkyvfieWgUFMH4rtJJri2q0Azvhja3hZGXsjPXs31R4fQkZDtWzNDDK2zQn5UE5g==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ peerDependencies:
+ eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0
+
'@eslint-community/eslint-utils@4.9.1':
resolution: {integrity: sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
@@ -4148,45 +4225,50 @@ packages:
resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==}
engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
- '@eslint-react/ast@1.53.1':
- resolution: {integrity: sha512-qvUC99ewtriJp9quVEOvZ6+RHcsMLfVQ0OhZ4/LupZUDhjW7GiX1dxJsFaxHdJ9rLNLhQyLSPmbAToeqUrSruQ==}
- engines: {node: '>=18.18.0'}
+ '@eslint-react/ast@2.13.0':
+ resolution: {integrity: sha512-43+5gmqV3MpatTzKnu/V2i/jXjmepvwhrb9MaGQvnXHQgq9J7/C7VVCCcwp6Rvp2QHAFquAAdvQDSL8IueTpeA==}
+ engines: {node: '>=20.19.0'}
+ peerDependencies:
+ eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
+ typescript: '>=4.8.4 <6.0.0'
- '@eslint-react/core@1.53.1':
- resolution: {integrity: sha512-8prroos5/Uvvh8Tjl1HHCpq4HWD3hV9tYkm7uXgKA6kqj0jHlgRcQzuO6ZPP7feBcK3uOeug7xrq03BuG8QKCA==}
- engines: {node: '>=18.18.0'}
+ '@eslint-react/core@2.13.0':
+ resolution: {integrity: sha512-m62XDzkf1hpzW4sBc7uh7CT+8rBG2xz/itSADuEntlsg4YA7Jhb8hjU6VHf3wRFDwyfx5VnbV209sbJ7Azey0Q==}
+ engines: {node: '>=20.19.0'}
+ peerDependencies:
+ eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
+ typescript: '>=4.8.4 <6.0.0'
- '@eslint-react/eff@1.53.1':
- resolution: {integrity: sha512-uq20lPRAmsWRjIZm+mAV/2kZsU2nDqn5IJslxGWe3Vfdw23hoyhEw3S1KKlxbftwbTvsZjKvVP0iw3bZo/NUpg==}
- engines: {node: '>=18.18.0'}
+ '@eslint-react/eff@2.13.0':
+ resolution: {integrity: sha512-rEH2R8FQnUAblUW+v3ZHDU1wEhatbL1+U2B1WVuBXwSKqzF7BGaLqCPIU7o9vofumz5MerVfaCtJgI8jYe2Btg==}
+ engines: {node: '>=20.19.0'}
- '@eslint-react/eslint-plugin@1.53.1':
- resolution: {integrity: sha512-JZ2ciXNCC9CtBBAqYtwWH+Jy/7ZzLw+whei8atP4Fxsbh+Scs30MfEwBzuiEbNw6uF9eZFfPidchpr5RaEhqxg==}
- engines: {node: '>=18.18.0'}
+ '@eslint-react/eslint-plugin@2.13.0':
+ resolution: {integrity: sha512-iaMXpqnJCTW7317hg8L4wx7u5aIiPzZ+d1p59X8wXFgMHzFX4hNu4IfV8oygyjmWKdLsjKE9sEpv/UYWczlb+A==}
+ engines: {node: '>=20.19.0'}
peerDependencies:
- eslint: ^8.57.0 || ^9.0.0
- typescript: ^4.9.5 || ^5.3.3
- peerDependenciesMeta:
- typescript:
- optional: true
-
- '@eslint-react/kit@1.53.1':
- resolution: {integrity: sha512-zOi2le9V4rMrJvQV4OeedGvMGvDT46OyFPOwXKs7m0tQu5vXVJ8qwIPaVQT1n/WIuvOg49OfmAVaHpGxK++xLQ==}
- engines: {node: '>=18.18.0'}
+ eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
+ typescript: '>=4.8.4 <6.0.0'
- '@eslint-react/shared@1.53.1':
- resolution: {integrity: sha512-gomJQmFqQgQVI3Ra4vTMG/s6a4bx3JqeNiTBjxBJt4C9iGaBj458GkP4LJHX7TM6xUzX+fMSKOPX7eV3C/+UCw==}
- engines: {node: '>=18.18.0'}
+ '@eslint-react/shared@2.13.0':
+ resolution: {integrity: sha512-IOloCqrZ7gGBT4lFf9+0/wn7TfzU7JBRjYwTSyb9SDngsbeRrtW95ZpgUpS8/jen1wUEm6F08duAooTZ2FtsWA==}
+ engines: {node: '>=20.19.0'}
+ peerDependencies:
+ eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
+ typescript: '>=4.8.4 <6.0.0'
- '@eslint-react/var@1.53.1':
- resolution: {integrity: sha512-yzwopvPntcHU7mmDvWzRo1fb8QhjD8eDRRohD11rTV1u7nWO4QbJi0pOyugQakvte1/W11Y0Vr8Of0Ojk/A6zg==}
- engines: {node: '>=18.18.0'}
+ '@eslint-react/var@2.13.0':
+ resolution: {integrity: sha512-dM+QaeiHR16qPQoJYg205MkdHYSWVa2B7ore5OFpOPlSwqDV3tLW7I+475WjbK7potq5QNPTxRa7VLp9FGeQqA==}
+ engines: {node: '>=20.19.0'}
+ peerDependencies:
+ eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
+ typescript: '>=4.8.4 <6.0.0'
- '@eslint/compat@1.4.1':
- resolution: {integrity: sha512-cfO82V9zxxGBxcQDr1lfaYB7wykTa0b00mGa36FrJl7iTFd0Z2cHfEYuxcBRP/iNijCsWsEkA+jzT8hGYmv33w==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ '@eslint/compat@2.0.2':
+ resolution: {integrity: sha512-pR1DoD0h3HfF675QZx0xsyrsU8q70Z/plx7880NOhS02NuWLgBCOMDL787nUeQ7EWLkxv3bPQJaarjcPQb2Dwg==}
+ engines: {node: ^20.19.0 || ^22.13.0 || >=24}
peerDependencies:
- eslint: ^8.40 || 9
+ eslint: ^8.40 || 9 || 10
peerDependenciesMeta:
eslint:
optional: true
@@ -4195,17 +4277,17 @@ packages:
resolution: {integrity: sha512-OL0RJzC/CBzli0DrrR31qzj6d6i6Mm3HByuhflhl4LOBiWxN+3i6/t/ZQQNii4tjksXi8r2CRW1wMpWA2ULUEw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- '@eslint/config-array@0.21.1':
- resolution: {integrity: sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ '@eslint/config-array@0.23.2':
+ resolution: {integrity: sha512-YF+fE6LV4v5MGWRGj7G404/OZzGNepVF8fxk7jqmqo3lrza7a0uUcDnROGRBG1WFC1omYUS/Wp1f42i0M+3Q3A==}
+ engines: {node: ^20.19.0 || ^22.13.0 || >=24}
'@eslint/config-helpers@0.2.3':
resolution: {integrity: sha512-u180qk2Um1le4yf0ruXH3PYFeEZeYC3p/4wCTKrr2U1CmGdzGi3KtY0nuPDH48UJxlKCC5RDzbcbh4X0XlqgHg==}
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-helpers@0.5.2':
+ resolution: {integrity: sha512-a5MxrdDXEvqnIq+LisyCX6tQMPF/dSJpCfBgBauY+pNZ28yCtSsTvyTYrMhaI+LK26bVyCJfJkT0u8KIj2i1dQ==}
+ engines: {node: ^20.19.0 || ^22.13.0 || >=24}
'@eslint/core@0.14.0':
resolution: {integrity: sha512-qIbV0/JZr7iSDjqAc60IqbLdsj9GDt16xQtWD+B78d/HAlvysGdZZ6rpJHGAc2T0FQx1X6thsSPdnoiGKdNtdg==}
@@ -4215,14 +4297,18 @@ packages:
resolution: {integrity: sha512-78Md3/Rrxh83gCxoUc0EiciuOHsIITzLy53m3d9UyiW8y9Dj2D29FeETqyKA+BRK76tnTp6RXWb3pCay8Oyomg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- '@eslint/core@0.16.0':
- resolution: {integrity: sha512-nmC8/totwobIiFcGkDza3GIKfAw1+hLiYVrh3I1nIomQ8PEr5cxg34jnkmGawul/ep52wGRAcyeDCNtWKSOj4Q==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
-
'@eslint/core@0.17.0':
resolution: {integrity: sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ '@eslint/core@1.1.0':
+ resolution: {integrity: sha512-/nr9K9wkr3P1EzFTdFdMoLuo1PmIxjmwvPozwoSodjNBdefGujXQUF93u1DDZpEaTuDvMsIQddsd35BwtrW9Xw==}
+ engines: {node: ^20.19.0 || ^22.13.0 || >=24}
+
+ '@eslint/css-tree@3.6.9':
+ resolution: {integrity: sha512-3D5/OHibNEGk+wKwNwMbz63NMf367EoR4mVNNpxddCHKEb2Nez7z62J2U6YjtErSsZDoY0CsccmoUpdEbkogNA==}
+ engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0}
+
'@eslint/eslintrc@3.3.3':
resolution: {integrity: sha512-Kr+LPIUVKz2qkx1HAMH8q1q6azbqBAsXJUxBl/ODDuVPX45Z9DfwB8tPjTi6nNZ8BuM3nbJxC5zCAg5elnBUTQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
@@ -4231,22 +4317,18 @@ packages:
resolution: {integrity: sha512-G5JD9Tu5HJEu4z2Uo4aHY2sLV64B7CDMXxFzqzjl3NKd6RVzSXNoE80jk7Y0lJkTTkjiIhBAqmlYwjuBY3tvpA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- '@eslint/js@9.38.0':
- resolution: {integrity: sha512-UZ1VpFvXf9J06YG9xQBdnzU+kthors6KjhMAl6f4gH4usHyh31rUf2DLGInT8RFYIReYXNSydgPY0V2LuWgl7A==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
-
- '@eslint/js@9.39.1':
- resolution: {integrity: sha512-S26Stp4zCy88tH94QbBv3XCuzRQiZ9yXofEILmglYTh/Ug/a9/umqvgFtYBAo3Lp0nsI/5/qH1CCrbdK3AP1Tw==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
-
- '@eslint/js@9.39.2':
- resolution: {integrity: sha512-q1mjIoW1VX4IvSocvM/vbTiveKC4k9eLrajNEuSsmjymSDEbpGddtpfOoN7YGAqBK3NG+uqo8ia4PDTt8buCYA==}
+ '@eslint/markdown@7.5.1':
+ resolution: {integrity: sha512-R8uZemG9dKTbru/DQRPblbJyXpObwKzo8rv1KYGGuPUPtjM4LXBYM9q5CIZAComzZupws3tWbDwam5AFpPLyJQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@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/object-schema@3.0.2':
+ resolution: {integrity: sha512-HOy56KJt48Bx8KmJ+XGQNSUMT/6dZee/M54XyUyuvTvPXJmsERRvBchsUVx1UMe1WwIH49XLAczNC7V2INsuUw==}
+ engines: {node: ^20.19.0 || ^22.13.0 || >=24}
+
'@eslint/plugin-kit@0.3.5':
resolution: {integrity: sha512-Z5kJ+wU3oA7MMIqVR9tyZRtjYPr4OC004Q4Rw7pgOKUOKkJfZ3O24nz3WYfGRpMDNmcOi3TwQOmgm7B7Tpii0w==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
@@ -4255,6 +4337,10 @@ packages:
resolution: {integrity: sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ '@eslint/plugin-kit@0.6.0':
+ resolution: {integrity: sha512-bIZEUzOI1jkhviX2cp5vNyXQc6olzb2ohewQubuYlMXZ2Q/XjBO0x0XhGPvc9fjSIiUN0vw+0hq53BJ4eQSJKQ==}
+ engines: {node: ^20.19.0 || ^22.13.0 || >=24}
+
'@essentials/memoize-one@1.1.0':
resolution: {integrity: sha512-HMkuIkKNe0EWSUpZhlaq9+5Yp47YhrMhxLMnXTRnEyE5N4xKLspAvMGjUFdi794VnEF1EcOZFS8rdROeujrgag==}
@@ -5610,9 +5696,6 @@ packages:
resolution: {integrity: sha512-juG5VWh4qAivzTAeMzvY9xs9HY5rAcr2E4I7tiSSCokRFi7XIZCAu92ZkSTsIj1OPceCifL3cpfteP3pDT9/QQ==}
engines: {node: '>=14.0.0'}
- '@napi-rs/wasm-runtime@0.2.12':
- resolution: {integrity: sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==}
-
'@napi-rs/wasm-runtime@1.1.1':
resolution: {integrity: sha512-p64ah1M1ld8xjWv3qbvFwHiFVWrq1yFvV4f7w+mzaqiR4IlSgkqhcRdHwsGgomwzBH51sRY4NEowLxnaBjcW/A==}
@@ -5831,9 +5914,127 @@ packages:
resolution: {integrity: sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==}
engines: {node: '>=8.0.0'}
+ '@ota-meshi/ast-token-store@0.3.0':
+ resolution: {integrity: sha512-XRO0zi2NIUKq2lUk3T1ecFSld1fMWRKE6naRFGkgkdeosx7IslyUKNv5Dcb5PJTja9tHJoFu0v/7yEpAkrkrTg==}
+ engines: {node: ^20.19.0 || ^22.13.0 || >=24}
+
'@oxc-project/types@0.112.0':
resolution: {integrity: sha512-m6RebKHIRsax2iCwVpYW2ErQwa4ywHJrE4sCK3/8JK8ZZAWOKXaRJFl/uP51gaVyyXlaS4+chU1nSCdzYf6QqQ==}
+ '@oxfmt/binding-android-arm-eabi@0.35.0':
+ resolution: {integrity: sha512-BaRKlM3DyG81y/xWTsE6gZiv89F/3pHe2BqX2H4JbiB8HNVlWWtplzgATAE5IDSdwChdeuWLDTQzJ92Lglw3ZA==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm]
+ os: [android]
+
+ '@oxfmt/binding-android-arm64@0.35.0':
+ resolution: {integrity: sha512-/O+EbuAJYs6nde/anv+aID6uHsGQApyE9JtYBo/79KyU8e6RBN3DMbT0ix97y1SOnCglurmL2iZ+hlohjP2PnQ==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm64]
+ os: [android]
+
+ '@oxfmt/binding-darwin-arm64@0.35.0':
+ resolution: {integrity: sha512-pGqRtqlNdn9d4VrmGUWVyQjkw79ryhI6je9y2jfqNUIZCfqceob+R97YYAoG7C5TFyt8ILdLVoN+L2vw/hSFyA==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@oxfmt/binding-darwin-x64@0.35.0':
+ resolution: {integrity: sha512-8GmsDcSozTPjrCJeGpp+sCmS9+9V5yRrdEZ1p/sTWxPG5nYeAfSLuS0nuEYjXSO+CtdSbStIW6dxa+4NM58yRw==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [x64]
+ os: [darwin]
+
+ '@oxfmt/binding-freebsd-x64@0.35.0':
+ resolution: {integrity: sha512-QyfKfTe0ytHpFKHAcHCGQEzN45QSqq1AHJOYYxQMgLM3KY4xu8OsXHpCnINjDsV4XGnQzczJDU9e04Zmd8XqIQ==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [x64]
+ os: [freebsd]
+
+ '@oxfmt/binding-linux-arm-gnueabihf@0.35.0':
+ resolution: {integrity: sha512-u+kv3JD6P3J38oOyUaiCqgY5TNESzBRZJ5lyZQ6c2czUW2v5SIN9E/KWWa9vxoc+P8AFXQFUVrdzGy1tK+nbPQ==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm]
+ os: [linux]
+
+ '@oxfmt/binding-linux-arm-musleabihf@0.35.0':
+ resolution: {integrity: sha512-1NiZroCiV57I7Pf8kOH4XGR366kW5zir3VfSMBU2D0V14GpYjiYmPYFAoJboZvp8ACnZKUReWyMkNKSa5ad58A==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm]
+ os: [linux]
+
+ '@oxfmt/binding-linux-arm64-gnu@0.35.0':
+ resolution: {integrity: sha512-7Q0Xeg7ZnW2nxnZ4R7aF6DEbCFls4skgHZg+I63XitpNvJCbVIU8MFOTZlvZGRsY9+rPgWPQGeUpLHlyx0wvMA==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm64]
+ os: [linux]
+
+ '@oxfmt/binding-linux-arm64-musl@0.35.0':
+ resolution: {integrity: sha512-5Okqi+uhYFxwKz8hcnUftNNwdm8BCkf6GSCbcz9xJxYMm87k1E4p7PEmAAbhLTk7cjSdDre6TDL0pDzNX+Y22Q==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm64]
+ os: [linux]
+
+ '@oxfmt/binding-linux-ppc64-gnu@0.35.0':
+ resolution: {integrity: sha512-9k66pbZQXM/lBJWys3Xbc5yhl4JexyfqkEf/tvtq8976VIJnLAAL3M127xHA3ifYSqxdVHfVGTg84eiBHCGcNw==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [ppc64]
+ os: [linux]
+
+ '@oxfmt/binding-linux-riscv64-gnu@0.35.0':
+ resolution: {integrity: sha512-aUcY9ofKPtjO52idT6t0SAQvEF6ctjzUQa1lLp7GDsRpSBvuTrBQGeq0rYKz3gN8dMIQ7mtMdGD9tT4LhR8jAQ==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [riscv64]
+ os: [linux]
+
+ '@oxfmt/binding-linux-riscv64-musl@0.35.0':
+ resolution: {integrity: sha512-C6yhY5Hvc2sGM+mCPek9ZLe5xRUOC/BvhAt2qIWFAeXMn4il04EYIjl3DsWiJr0xDMTJhvMOmD55xTRPlNp39w==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [riscv64]
+ os: [linux]
+
+ '@oxfmt/binding-linux-s390x-gnu@0.35.0':
+ resolution: {integrity: sha512-RG2hlvOMK4OMZpO3mt8MpxLQ0AAezlFqhn5mI/g5YrVbPFyoCv9a34AAvbSJS501ocOxlFIRcKEuw5hFvddf9g==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [s390x]
+ os: [linux]
+
+ '@oxfmt/binding-linux-x64-gnu@0.35.0':
+ resolution: {integrity: sha512-wzmh90Pwvqj9xOKHJjkQYBpydRkaXG77ZvDz+iFDRRQpnqIEqGm5gmim2s6vnZIkDGsvKCuTdtxm0GFmBjM1+w==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [x64]
+ os: [linux]
+
+ '@oxfmt/binding-linux-x64-musl@0.35.0':
+ resolution: {integrity: sha512-+HCqYCJPCUy5I+b2cf+gUVaApfgtoQT3HdnSg/l7NIcLHOhKstlYaGyrFZLmUpQt4WkFbpGKZZayG6zjRU0KFA==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [x64]
+ os: [linux]
+
+ '@oxfmt/binding-openharmony-arm64@0.35.0':
+ resolution: {integrity: sha512-kFYmWfR9YL78XyO5ws+1dsxNvZoD973qfVMNFOS4e9bcHXGF7DvGC2tY5UDFwyMCeB33t3sDIuGONKggnVNSJA==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm64]
+ os: [openharmony]
+
+ '@oxfmt/binding-win32-arm64-msvc@0.35.0':
+ resolution: {integrity: sha512-uD/NGdM65eKNCDGyTGdO8e9n3IHX+wwuorBvEYrPJXhDXL9qz6gzddmXH8EN04ejUXUujlq4FsoSeCfbg0Y+Jg==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm64]
+ os: [win32]
+
+ '@oxfmt/binding-win32-ia32-msvc@0.35.0':
+ resolution: {integrity: sha512-oSRD2k8J2uxYDEKR2nAE/YTY9PobOEnhZgCmspHu0+yBQ665yH8lFErQVSTE7fcGJmJp/cC6322/gc8VFuQf7g==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [ia32]
+ os: [win32]
+
+ '@oxfmt/binding-win32-x64-msvc@0.35.0':
+ resolution: {integrity: sha512-WCDJjlS95NboR0ugI2BEwzt1tYvRDorDRM9Lvctls1SLyKYuNRCyrPwp1urUPFBnwgBNn9p2/gnmo7gFMySRoQ==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [x64]
+ os: [win32]
+
'@peculiar/asn1-android@2.6.0':
resolution: {integrity: sha512-cBRCKtYPF7vJGN76/yG8VbxRcHLPF3HnkoHhKOZeHpoVtbMYfY9ROKtH3DtYUY9m8uI1Mh47PRhHf2hSK3xcSQ==}
@@ -7371,6 +7572,10 @@ packages:
'@sinclair/typebox@0.27.10':
resolution: {integrity: sha512-MTBk/3jGLNB2tVxv6uLlFh1iu64iYOQ2PbdOSK3NW8JZsmlaOh2q6sdtKowBhfw8QFLmYNzTW4/oK4uATIi6ZA==}
+ '@sindresorhus/base62@1.0.0':
+ resolution: {integrity: sha512-TeheYy0ILzBEI/CO55CP6zJCSdSWeRtGnHy8U8dWSUH4I68iqTsy7HkMktR4xakThc9jotkPQUXT4ITdbV7cHA==}
+ engines: {node: '>=18'}
+
'@sindresorhus/is@4.6.0':
resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==}
engines: {node: '>=10'}
@@ -7412,11 +7617,11 @@ packages:
'@standard-schema/utils@0.3.0':
resolution: {integrity: sha512-e7Mew686owMaPJVNNLs55PUvgz371nKgwsc4vxE49zsODpJEnxgxRo2y/OKrqueavXgZNMDVj3DdHFlaSAeU8g==}
- '@stylistic/eslint-plugin@5.8.0':
- resolution: {integrity: sha512-WNPVF/FfBAjyi3OA7gok8swRiImNLKI4dmV3iK/GC/0xSJR7eCzBFsw9hLZVgb1+MYNLy7aDsjohxN1hA/FIfQ==}
+ '@stylistic/eslint-plugin@5.9.0':
+ resolution: {integrity: sha512-FqqSkvDMYJReydrMhlugc71M76yLLQWNfmGq+SIlLa7N3kHp8Qq8i2PyWrVNAfjOyOIY+xv9XaaYwvVW7vroMA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
- eslint: '>=9.0.0'
+ eslint: ^9.0.0 || ^10.0.0
'@surma/rollup-plugin-off-main-thread@2.2.3':
resolution: {integrity: sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ==}
@@ -7721,6 +7926,9 @@ packages:
'@types/eslint@9.6.1':
resolution: {integrity: sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==}
+ '@types/esrecurse@4.3.1':
+ resolution: {integrity: sha512-xJBAbDifo5hpffDBuHl0Y8ywswbiAp/Wi7Y/GtAgSlZyIABppyurxVueOPE8LUQOxdlgi6Zqce7uoEpqNTeiUw==}
+
'@types/estree-jsx@1.0.5':
resolution: {integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==}
@@ -7886,63 +8094,69 @@ packages:
'@types/yauzl@2.10.3':
resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==}
- '@typescript-eslint/eslint-plugin@8.56.0':
- resolution: {integrity: sha512-lRyPDLzNCuae71A3t9NEINBiTn7swyOhvUj3MyUOxb8x6g6vPEFoOU+ZRmGMusNC3X3YMhqMIX7i8ShqhT74Pw==}
+ '@typescript-eslint/eslint-plugin@8.56.1':
+ resolution: {integrity: sha512-Jz9ZztpB37dNC+HU2HI28Bs9QXpzCz+y/twHOwhyrIRdbuVDxSytJNDl6z/aAKlaRIwC7y8wJdkBv7FxYGgi0A==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
- '@typescript-eslint/parser': ^8.56.0
+ '@typescript-eslint/parser': ^8.56.1
eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
typescript: '>=4.8.4 <6.0.0'
- '@typescript-eslint/parser@8.56.0':
- resolution: {integrity: sha512-IgSWvLobTDOjnaxAfDTIHaECbkNlAlKv2j5SjpB2v7QHKv1FIfjwMy8FsDbVfDX/KjmCmYICcw7uGaXLhtsLNg==}
+ '@typescript-eslint/parser@8.56.1':
+ resolution: {integrity: sha512-klQbnPAAiGYFyI02+znpBRLyjL4/BrBd0nyWkdC0s/6xFLkXYQ8OoRrSkqacS1ddVxf/LDyODIKbQ5TgKAf/Fg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
typescript: '>=4.8.4 <6.0.0'
- '@typescript-eslint/project-service@8.56.0':
- resolution: {integrity: sha512-M3rnyL1vIQOMeWxTWIW096/TtVP+8W3p/XnaFflhmcFp+U4zlxUxWj4XwNs6HbDeTtN4yun0GNTTDBw/SvufKg==}
+ '@typescript-eslint/project-service@8.56.1':
+ resolution: {integrity: sha512-TAdqQTzHNNvlVFfR+hu2PDJrURiwKsUvxFn1M0h95BB8ah5jejas08jUWG4dBA68jDMI988IvtfdAI53JzEHOQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
typescript: '>=4.8.4 <6.0.0'
- '@typescript-eslint/scope-manager@8.56.0':
- resolution: {integrity: sha512-7UiO/XwMHquH+ZzfVCfUNkIXlp/yQjjnlYUyYz7pfvlK3/EyyN6BK+emDmGNyQLBtLGaYrTAI6KOw8tFucWL2w==}
+ '@typescript-eslint/rule-tester@8.56.1':
+ resolution: {integrity: sha512-EWuV5Vq1EFYJEOVcILyWPO35PjnT0c6tv99PCpD12PgfZae5/Jo+F17hGjsEs2Moe+Dy1J7KIr8y037cK8+/rQ==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ peerDependencies:
+ eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
+
+ '@typescript-eslint/scope-manager@8.56.1':
+ resolution: {integrity: sha512-YAi4VDKcIZp0O4tz/haYKhmIDZFEUPOreKbfdAN3SzUDMcPhJ8QI99xQXqX+HoUVq8cs85eRKnD+rne2UAnj2w==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- '@typescript-eslint/tsconfig-utils@8.56.0':
- resolution: {integrity: sha512-bSJoIIt4o3lKXD3xmDh9chZcjCz5Lk8xS7Rxn+6l5/pKrDpkCwtQNQQwZ2qRPk7TkUYhrq3WPIHXOXlbXP0itg==}
+ '@typescript-eslint/tsconfig-utils@8.56.1':
+ resolution: {integrity: sha512-qOtCYzKEeyr3aR9f28mPJqBty7+DBqsdd63eO0yyDwc6vgThj2UjWfJIcsFeSucYydqcuudMOprZ+x1SpF3ZuQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
typescript: '>=4.8.4 <6.0.0'
- '@typescript-eslint/type-utils@8.56.0':
- resolution: {integrity: sha512-qX2L3HWOU2nuDs6GzglBeuFXviDODreS58tLY/BALPC7iu3Fa+J7EOTwnX9PdNBxUI7Uh0ntP0YWGnxCkXzmfA==}
+ '@typescript-eslint/type-utils@8.56.1':
+ resolution: {integrity: sha512-yB/7dxi7MgTtGhZdaHCemf7PuwrHMenHjmzgUW1aJpO+bBU43OycnM3Wn+DdvDO/8zzA9HlhaJ0AUGuvri4oGg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
typescript: '>=4.8.4 <6.0.0'
- '@typescript-eslint/types@8.56.0':
- resolution: {integrity: sha512-DBsLPs3GsWhX5HylbP9HNG15U0bnwut55Lx12bHB9MpXxQ+R5GC8MwQe+N1UFXxAeQDvEsEDY6ZYwX03K7Z6HQ==}
+ '@typescript-eslint/types@8.56.1':
+ resolution: {integrity: sha512-dbMkdIUkIkchgGDIv7KLUpa0Mda4IYjo4IAMJUZ+3xNoUXxMsk9YtKpTHSChRS85o+H9ftm51gsK1dZReY9CVw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- '@typescript-eslint/typescript-estree@8.56.0':
- resolution: {integrity: sha512-ex1nTUMWrseMltXUHmR2GAQ4d+WjkZCT4f+4bVsps8QEdh0vlBsaCokKTPlnqBFqqGaxilDNJG7b8dolW2m43Q==}
+ '@typescript-eslint/typescript-estree@8.56.1':
+ resolution: {integrity: sha512-qzUL1qgalIvKWAf9C1HpvBjif+Vm6rcT5wZd4VoMb9+Km3iS3Cv9DY6dMRMDtPnwRAFyAi7YXJpTIEXLvdfPxg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
typescript: '>=4.8.4 <6.0.0'
- '@typescript-eslint/utils@8.56.0':
- resolution: {integrity: sha512-RZ3Qsmi2nFGsS+n+kjLAYDPVlrzf7UhTffrDIKr+h2yzAlYP/y5ZulU0yeDEPItos2Ph46JAL5P/On3pe7kDIQ==}
+ '@typescript-eslint/utils@8.56.1':
+ resolution: {integrity: sha512-HPAVNIME3tABJ61siYlHzSWCGtOoeP2RTIaHXFMPqjrQKCGB9OgUVdiNgH7TJS2JNIQ5qQ4RsAUDuGaGme/KOA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
typescript: '>=4.8.4 <6.0.0'
- '@typescript-eslint/visitor-keys@8.56.0':
- resolution: {integrity: sha512-q+SL+b+05Ud6LbEE35qe4A99P+htKTKVbyiNEe45eCbJFyh/HVK9QXwlrbz+Q4L8SOW4roxSVwXYj4DMBT7Ieg==}
+ '@typescript-eslint/visitor-keys@8.56.1':
+ resolution: {integrity: sha512-KiROIzYdEV85YygXw6BI/Dx4fnBlFQu6Mq4QE4MOH9fFnhohw6wX/OAvDY2/C+ut0I3RSPKenvZJIVYqJNkhEw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@ungap/structured-clone@1.3.0':
@@ -7958,10 +8172,6 @@ packages:
'@unocss/core@66.6.0':
resolution: {integrity: sha512-Sxm7HmhsPIIzxbPnWembPyobuCeA5j9KxL+jIOW2c+kZiTFjHeju7vuVWX9jmAMMC+UyDuuCQ4yE+kBo3Y7SWQ==}
- '@unocss/eslint-config@66.6.0':
- resolution: {integrity: sha512-SSW5OtPX6vtWjNCOZoGPpVN3SDgfzLMaMN53mMlwZkFVdH+pAAtXok/DqDKq33hJX5Z9KA9xjUanNt4qi46EVQ==}
- engines: {node: '>=14'}
-
'@unocss/eslint-plugin@66.6.0':
resolution: {integrity: sha512-6i+kNVVGb5I+XOCUgLDHol6sxb28ahbJrmLL/eiAWflT850MUqtAlFeyHDYHzScnOFcPy1AcmeY0yM77GgERmg==}
engines: {node: '>=14'}
@@ -7983,101 +8193,6 @@ packages:
next:
optional: true
- '@unrs/resolver-binding-android-arm-eabi@1.11.1':
- resolution: {integrity: sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==}
- cpu: [arm]
- os: [android]
-
- '@unrs/resolver-binding-android-arm64@1.11.1':
- resolution: {integrity: sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g==}
- cpu: [arm64]
- os: [android]
-
- '@unrs/resolver-binding-darwin-arm64@1.11.1':
- resolution: {integrity: sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g==}
- cpu: [arm64]
- os: [darwin]
-
- '@unrs/resolver-binding-darwin-x64@1.11.1':
- resolution: {integrity: sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ==}
- cpu: [x64]
- os: [darwin]
-
- '@unrs/resolver-binding-freebsd-x64@1.11.1':
- resolution: {integrity: sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw==}
- cpu: [x64]
- os: [freebsd]
-
- '@unrs/resolver-binding-linux-arm-gnueabihf@1.11.1':
- resolution: {integrity: sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw==}
- cpu: [arm]
- os: [linux]
-
- '@unrs/resolver-binding-linux-arm-musleabihf@1.11.1':
- resolution: {integrity: sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw==}
- cpu: [arm]
- os: [linux]
-
- '@unrs/resolver-binding-linux-arm64-gnu@1.11.1':
- resolution: {integrity: sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==}
- cpu: [arm64]
- os: [linux]
-
- '@unrs/resolver-binding-linux-arm64-musl@1.11.1':
- resolution: {integrity: sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==}
- cpu: [arm64]
- os: [linux]
-
- '@unrs/resolver-binding-linux-ppc64-gnu@1.11.1':
- resolution: {integrity: sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==}
- cpu: [ppc64]
- os: [linux]
-
- '@unrs/resolver-binding-linux-riscv64-gnu@1.11.1':
- resolution: {integrity: sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==}
- cpu: [riscv64]
- os: [linux]
-
- '@unrs/resolver-binding-linux-riscv64-musl@1.11.1':
- resolution: {integrity: sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==}
- cpu: [riscv64]
- os: [linux]
-
- '@unrs/resolver-binding-linux-s390x-gnu@1.11.1':
- resolution: {integrity: sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==}
- cpu: [s390x]
- os: [linux]
-
- '@unrs/resolver-binding-linux-x64-gnu@1.11.1':
- resolution: {integrity: sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==}
- cpu: [x64]
- os: [linux]
-
- '@unrs/resolver-binding-linux-x64-musl@1.11.1':
- resolution: {integrity: sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==}
- cpu: [x64]
- os: [linux]
-
- '@unrs/resolver-binding-wasm32-wasi@1.11.1':
- resolution: {integrity: sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==}
- engines: {node: '>=14.0.0'}
- cpu: [wasm32]
-
- '@unrs/resolver-binding-win32-arm64-msvc@1.11.1':
- resolution: {integrity: sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw==}
- cpu: [arm64]
- os: [win32]
-
- '@unrs/resolver-binding-win32-ia32-msvc@1.11.1':
- resolution: {integrity: sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ==}
- cpu: [ia32]
- os: [win32]
-
- '@unrs/resolver-binding-win32-x64-msvc@1.11.1':
- resolution: {integrity: sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g==}
- cpu: [x64]
- os: [win32]
-
'@urql/core@4.0.11':
resolution: {integrity: sha512-FFdY97vF5xnUrElcGw9erOLvtu+KGMLfwrLNDfv4IPgdp2IBsiGe+Kb7Aypfd3kH//BETewVSLm3+y2sSzjX6A==}
@@ -8100,6 +8215,11 @@ packages:
peerDependencies:
react: 19.1.0
+ '@valibot/to-json-schema@1.5.0':
+ resolution: {integrity: sha512-GE7DmSr1C2UCWPiV0upRH6mv0cCPsqYGs819fb6srCS1tWhyXrkGGe+zxUiwzn/L1BOfADH4sNjY/YHCuP8phQ==}
+ peerDependencies:
+ valibot: ^1.2.0
+
'@vercel/build-utils@13.4.0':
resolution: {integrity: sha512-hGBYt+olxUtDZu0W8DKl4NjY8tQC1eJUxDpkJdOhcugap4NnHeHZQ33vEKs0Z72bYlqotgu0AoEOv+ri5rlh4w==}
@@ -8198,6 +8318,19 @@ packages:
react-server-dom-webpack:
optional: true
+ '@vitest/eslint-plugin@1.6.9':
+ resolution: {integrity: sha512-9WfPx1OwJ19QLCSRLkqVO7//1WcWnK3fE/3fJhKMAmDe8+9G4rB47xCNIIeCq3FdEzkIoLTfDlwDlPBaUTMhow==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ eslint: '>=8.57.0'
+ typescript: '>=5.0.0'
+ vitest: '*'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+ vitest:
+ optional: true
+
'@vitest/expect@3.2.4':
resolution: {integrity: sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==}
@@ -8246,14 +8379,20 @@ packages:
resolution: {integrity: sha512-rQ/BgMyLuIXSmbA0MSkIPHtcOw14QkeDbAq19sjvaS9LTRr905yij0S8lsyqN5JgOsbtIx7pAcyOxFMzPmqhZQ==}
hasBin: true
- '@vue/compiler-core@3.5.28':
- resolution: {integrity: sha512-kviccYxTgoE8n6OCw96BNdYlBg2GOWfBuOW4Vqwrt7mSKWKwFVvI8egdTltqRgITGPsTFYtKYfxIG8ptX2PJHQ==}
+ '@vue/compiler-core@3.5.29':
+ resolution: {integrity: sha512-cuzPhD8fwRHk8IGfmYaR4eEe4cAyJEL66Ove/WZL7yWNL134nqLddSLwNRIsFlnnW1kK+p8Ck3viFnC0chXCXw==}
- '@vue/compiler-dom@3.5.28':
- resolution: {integrity: sha512-/1ZepxAb159jKR1btkefDP+J2xuWL5V3WtleRmxaT+K2Aqiek/Ab/+Ebrw2pPj0sdHO8ViAyyJWfhXXOP/+LQA==}
+ '@vue/compiler-dom@3.5.29':
+ resolution: {integrity: sha512-n0G5o7R3uBVmVxjTIYcz7ovr8sy7QObFG8OQJ3xGCDNhbG60biP/P5KnyY8NLd81OuT1WJflG7N4KWYHaeeaIg==}
- '@vue/shared@3.5.28':
- resolution: {integrity: sha512-cfWa1fCGBxrvaHRhvV3Is0MgmrbSCxYTXCSCau2I0a1Xw1N1pHAvkWCiXPRAqjvToILvguNyEwjevUqAuBQWvQ==}
+ '@vue/compiler-sfc@3.5.29':
+ resolution: {integrity: sha512-oJZhN5XJs35Gzr50E82jg2cYdZQ78wEwvRO6Y63TvLVTc+6xICzJHP1UIecdSPPYIbkautNBanDiWYa64QSFIA==}
+
+ '@vue/compiler-ssr@3.5.29':
+ resolution: {integrity: sha512-Y/ARJZE6fpjzL5GH/phJmsFwx3g6t2KmHKHx5q+MLl2kencADKIrhH5MLF6HHpRMmlRAYBRSvv347Mepf1zVNw==}
+
+ '@vue/shared@3.5.29':
+ resolution: {integrity: sha512-w7SR0A5zyRByL9XUkCfdLs7t9XOHUyJ67qPGQjOou3p6GvBeBW+AVjUUmlxtZ4PIYaRvE+1LmK44O4uajlZwcg==}
'@webassemblyjs/ast@1.14.1':
resolution: {integrity: sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==}
@@ -8377,8 +8516,8 @@ packages:
resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==}
engines: {node: '>=0.4.0'}
- acorn@8.15.0:
- resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==}
+ acorn@8.16.0:
+ resolution: {integrity: sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==}
engines: {node: '>=0.4.0'}
hasBin: true
@@ -8445,8 +8584,8 @@ packages:
peerDependencies:
ajv: ^8.8.2
- ajv@6.12.6:
- resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==}
+ ajv@6.14.0:
+ resolution: {integrity: sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==}
ajv@8.11.0:
resolution: {integrity: sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==}
@@ -8559,6 +8698,10 @@ packages:
resolution: {integrity: sha512-+25nxyyznAXF7Nef3y0EbBeqmGZgeN/BxHX29Rs39djAfaFalmQ89SE6CWyDCHzGL0yt/ycBtNOmGTW0FyGWNw==}
engines: {node: '>= 10'}
+ are-docs-informative@0.0.2:
+ resolution: {integrity: sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig==}
+ engines: {node: '>=14'}
+
arg@4.1.0:
resolution: {integrity: sha512-ZWc51jO3qegGkVh8Hwpv636EkbesNV5ZNQPCtRa+0qytRYPEs9IYT9qITY9buezqUH5uqyzlWLcufrzU2rffdg==}
@@ -8724,9 +8867,6 @@ packages:
axios@1.13.0:
resolution: {integrity: sha512-zt40Pz4zcRXra9CVV31KeyofwiNvAbJ5B6YPz9pMJ+yOSLikvPT4Yi5LjfgjRa9CawVYBaD1JQzIVcIvBejKeA==}
- axios@1.13.5:
- resolution: {integrity: sha512-cz4ur7Vb0xS4/KUN0tPWe44eqxrIu31me+fbang3ijiNscE129POzipJJA6zniq2C/Z6sJCjMimjS8Lc/GAs8Q==}
-
b4a@1.7.5:
resolution: {integrity: sha512-iEsKNwDh1wiWTps1/hdkNdmBgDlDVZP5U57ZVOlt+dNFqpc/lpPouCIxZw+DYBgc4P9NDfIZMPNR4CHNhzwLIA==}
peerDependencies:
@@ -9312,10 +9452,6 @@ packages:
resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==}
engines: {node: '>=12'}
- cliui@9.0.1:
- resolution: {integrity: sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w==}
- engines: {node: '>=20'}
-
clone-response@1.0.3:
resolution: {integrity: sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==}
@@ -9431,10 +9567,6 @@ packages:
resolution: {integrity: sha512-taEtr3ozUmOB7it68Jll7s0Pwm+aoiHyXKrEC8SEodL4rNpdfDLqa7PfBlrgFoCNNdR8ImL+muti5IGvktJAAg==}
engines: {node: '>= 6'}
- comment-parser@1.4.1:
- resolution: {integrity: sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg==}
- engines: {node: '>= 12.0.0'}
-
comment-parser@1.4.5:
resolution: {integrity: sha512-aRDkn3uyIlCFfk5NUA+VdwMmMsh8JGhc4hapfV4yxymHGQ3BVskMQfoXGpCo5IoBuQ9tS5iiVKhCpTcB4pW4qw==}
engines: {node: '>= 12.0.0'}
@@ -9902,10 +10034,6 @@ packages:
resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==}
engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16}
- detect-indent@7.0.2:
- resolution: {integrity: sha512-y+8xyqdGLL+6sh0tVeHcfP/QDd8gUgbasolJJpY7NgeQGSZ739bDtSiaiDgtoicy+mtYB81dKLxO9xRhCyIB3A==}
- engines: {node: '>=12.20'}
-
detect-libc@1.0.3:
resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==}
engines: {node: '>=0.10'}
@@ -9915,10 +10043,6 @@ packages:
resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==}
engines: {node: '>=8'}
- detect-newline@4.0.1:
- resolution: {integrity: sha512-qE3Veg1YXzGHQhlA6jzebZN2qVf6NX+A7m7qlhCGG30dJixrAQhYOsJjsnBjJkCSmuOPpCk30145fr8FV0bzog==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
-
detect-node-es@1.1.0:
resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==}
@@ -9931,9 +10055,9 @@ packages:
didyoumean@1.2.2:
resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==}
- diff-sequences@27.5.1:
- resolution: {integrity: sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==}
- engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
+ diff-sequences@29.6.3:
+ resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
diff@4.0.4:
resolution: {integrity: sha512-X07nttJQkwkfKfvTPG/KSnE2OMdcUCao6+eXF3wmnIQRn2aPAHH3VxDbDOdegkd6JbPsXqShpvEOHfAT+nCNwQ==}
@@ -10464,45 +10588,27 @@ packages:
resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==}
engines: {node: '>=12'}
- eslint-compat-utils@0.6.5:
- resolution: {integrity: sha512-vAUHYzue4YAa2hNACjB8HvUQj5yehAZgiClyFVVom9cP8z5NSFq3PwB/TtJslN2zAMgRX6FCFCjYBbQh71g5RQ==}
+ eslint-compat-utils@0.5.1:
+ resolution: {integrity: sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q==}
engines: {node: '>=12'}
peerDependencies:
eslint: '>=6.0.0'
- eslint-config-flat-gitignore@2.1.0:
- resolution: {integrity: sha512-cJzNJ7L+psWp5mXM7jBX+fjHtBvvh06RBlcweMhKD8jWqQw0G78hOW5tpVALGHGFPsBV+ot2H+pdDGJy6CV8pA==}
+ eslint-config-flat-gitignore@2.2.1:
+ resolution: {integrity: sha512-wA5EqN0era7/7Gt5Botlsfin/UNY0etJSEeBgbUlFLFrBi47rAN//+39fI7fpYcl8RENutlFtvp/zRa/M/pZNg==}
peerDependencies:
- eslint: ^9.5.0
+ eslint: ^9.5.0 || ^10.0.0
- eslint-config-hyoban@4.0.10:
- resolution: {integrity: sha512-doWDgD8yz9zRt7u4Tu1dJL4RzkLElEzb4J0zAH5/+7bj2H8TVXsbScRJtAUeiBrUPCSr3+oseDl5Ld2BbTmYCw==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- peerDependencies:
- eslint: ^9.0.0
- typescript: '>=4.8.4'
- peerDependenciesMeta:
- typescript:
- optional: true
+ eslint-config-hyoban@6.0.0:
+ resolution: {integrity: sha512-uNVtpqS2eITr9wHYkgZIGLFRSkV0JmQ0vnZFA1tLjdxIMPaKJsEOy1HtOShlzAttG3PVbr6hW4rnGgp8Kk6EsQ==}
- eslint-fix-utils@0.4.1:
- resolution: {integrity: sha512-1xPtnB7RYRHKrFGll3kRv5gOodHm3/jkk76jrKMZ2yk/G8HU9XoN1I9iHgh1ToAqmGG0/FFrybZMqmqUWp4asA==}
- engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0}
- peerDependencies:
- '@types/estree': '>=1'
- eslint: '>=8'
- peerDependenciesMeta:
- '@types/estree':
- optional: true
+ eslint-flat-config-utils@3.0.1:
+ resolution: {integrity: sha512-VMA3u86bLzNAwD/7DkLtQ9lolgIOx2Sj0kTMMnBvrvEz7w0rQj4aGCR+lqsqtld63gKiLyT4BnQZ3gmGDXtvjg==}
- eslint-import-context@0.1.9:
- resolution: {integrity: sha512-K9Hb+yRaGAGUbwjhFNHvSmmkZs9+zbuoe3kFQ4V1wYjrepUFYM2dZAfNtjbbj3qsPfUfsA68Bx/ICWQMi+C8Eg==}
- engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0}
+ eslint-formatting-reporter@0.0.0:
+ resolution: {integrity: sha512-k9RdyTqxqN/wNYVaTk/ds5B5rA8lgoAmvceYN7bcZMBwU7TuXx5ntewJv81eF3pIL/CiJE+pJZm36llG8yhyyw==}
peerDependencies:
- unrs-resolver: ^1.0.0
- peerDependenciesMeta:
- unrs-resolver:
- optional: true
+ eslint: '>=8.40.0'
eslint-json-compat-utils@0.2.1:
resolution: {integrity: sha512-YzEodbDyW8DX8bImKhAcCeu/L31Dd/70Bidx2Qex9OFUtgzXLqtfWL4Hr5fM/aCCB8QUZLuJur0S9k6UfgFkfg==}
@@ -10515,98 +10621,130 @@ packages:
'@eslint/json':
optional: true
+ eslint-markdown@0.5.0:
+ resolution: {integrity: sha512-EVY0viuqqPLNxo+/hcSuSsG2OhKlAi+NOzSICLZk1WqgI5OzAwGBELXnN6KoZWNp/ISzzeRtvUayavv9tlSpvg==}
+ engines: {node: ^20.19.0 || ^22.13.0 || >=24.0.0}
+ peerDependencies:
+ eslint: ^9.31.0 || ^10.0.0-rc.0
+ peerDependenciesMeta:
+ eslint:
+ optional: true
+
+ eslint-merge-processors@2.0.0:
+ resolution: {integrity: sha512-sUuhSf3IrJdGooquEUB5TNpGNpBoQccbnaLHsb1XkBLUPPqCNivCpY05ZcpCOiV9uHwO2yxXEWVczVclzMxYlA==}
+ peerDependencies:
+ eslint: '*'
+
+ eslint-parser-plain@0.1.1:
+ resolution: {integrity: sha512-KRgd6wuxH4U8kczqPp+Oyk4irThIhHWxgFgLDtpgjUGVIS3wGrJntvZW/p6hHq1T4FOwnOtCNkvAI4Kr+mQ/Hw==}
+
eslint-plugin-antfu@3.2.2:
resolution: {integrity: sha512-Qzixht2Dmd/pMbb5EnKqw2V8TiWHbotPlsORO8a+IzCLFwE0RxK8a9k4DCTFPzBwyxJzH+0m2Mn8IUGeGQkyUw==}
peerDependencies:
eslint: '*'
- eslint-plugin-command@3.4.0:
- resolution: {integrity: sha512-EW4eg/a7TKEhG0s5IEti72kh3YOTlnhfFNuctq5WnB1fst37/IHTd5OkD+vnlRf3opTvUcSRihAateP6bT5ZcA==}
+ eslint-plugin-better-tailwindcss@4.3.1:
+ resolution: {integrity: sha512-b6xM31GukKz0WlgMD0tQdY/rLjf/9mWIk8EcA45ngOKJPPQf1C482xZtBlT357jyunQE2mOk4NlPcL4i9Pr85A==}
+ engines: {node: ^20.19.0 || ^22.12.0 || >=23.0.0}
+ peerDependencies:
+ eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 || ^10.0.0
+ oxlint: ^1.35.0
+ tailwindcss: ^3.3.0 || ^4.1.17
+ peerDependenciesMeta:
+ eslint:
+ optional: true
+ oxlint:
+ optional: true
+
+ eslint-plugin-command@3.5.2:
+ resolution: {integrity: sha512-PA59QAkQDwvcCMEt5lYLJLI3zDGVKJeC4id/pcRY2XdRYhSGW7iyYT1VC1N3bmpuvu6Qb/9QptiS3GJMjeGTJg==}
peerDependencies:
+ '@typescript-eslint/rule-tester': '*'
+ '@typescript-eslint/typescript-estree': '*'
+ '@typescript-eslint/utils': '*'
eslint: '*'
- eslint-plugin-hyoban@0.6.1:
- resolution: {integrity: sha512-DJI5rCIATcK2e4f7TMt1+sdMSXEAytcn469dLV0hSn4lVvVXsT6uLH/Pogj/cm+m6I8AuUWoHGj/OId5M8tLCg==}
+ eslint-plugin-es-x@7.8.0:
+ resolution: {integrity: sha512-7Ds8+wAAoV3T+LAKeu39Y5BzXCrGKrcISfgKEqTS4BDN8SFEDQd0S43jiQ8vIa3wUKD07qitZdfzlenSi8/0qQ==}
+ engines: {node: ^14.18.0 || >=16.0.0}
+ peerDependencies:
+ eslint: '>=8'
+
+ eslint-plugin-format@2.0.1:
+ resolution: {integrity: sha512-0BA65p5DAiuKtx5MmMJfPk9WaTjoHHbyVW7ZXRhaZoA1fdiMHhay9QRiDL2wr0hJWZxdF7CRThOK/70VUKVg2g==}
+ peerDependencies:
+ eslint: ^8.40.0 || ^9.0.0 || ^10.0.0
+
+ eslint-plugin-hyoban@0.13.3:
+ resolution: {integrity: sha512-M3gae1C14RTwmy/kJDzLrz9oA1VppkPs+vu8dU4NHwgIuru7X+QxVmi7jJPI/picSEwE7Isd3PfMpv8KmJtUnw==}
peerDependencies:
eslint: '*'
- eslint-plugin-import-x@4.16.1:
- resolution: {integrity: sha512-vPZZsiOKaBAIATpFE2uMI4w5IRwdv/FpQ+qZZMR4E+PeOcM4OeoEbqxRMnywdxP19TyB/3h6QBB0EWon7letSQ==}
+ eslint-plugin-import-lite@0.5.2:
+ resolution: {integrity: sha512-XvfdWOC5dSLEI9krIPRlNmKSI2ViIE9pVylzfV9fCq0ZpDaNeUk6o0wZv0OzN83QdadgXp1NsY0qjLINxwYCsw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
- '@typescript-eslint/utils': ^8.0.0
- eslint: ^8.57.0 || ^9.0.0
- eslint-import-resolver-node: '*'
- peerDependenciesMeta:
- '@typescript-eslint/utils':
- optional: true
- eslint-import-resolver-node:
- optional: true
+ eslint: '>=9.0.0'
- eslint-plugin-jsonc@2.21.1:
- resolution: {integrity: sha512-dbNR5iEnQeORwsK2WZzr3QaMtFCY3kKJVMRHPzUpKzMhmVy2zIpVgFDpX8MNoIdoqz6KCpCfOJavhfiSbZbN+w==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ eslint-plugin-jsdoc@62.7.1:
+ resolution: {integrity: sha512-4Zvx99Q7d1uggYBUX/AIjvoyqXhluGbbKrRmG8SQTLprPFg6fa293tVJH1o1GQwNe3lUydd8ZHzn37OaSncgSQ==}
+ engines: {node: ^20.19.0 || ^22.13.0 || >=24}
peerDependencies:
- eslint: '>=6.0.0'
+ eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 || ^10.0.0
- eslint-plugin-package-json@0.45.2:
- resolution: {integrity: sha512-ti6G8qfNt9qFFUoosJFB/nx66OfAFlytv7jLBW7/jIuo0OJkF95FgIozhHkoqhwNe1gB+KXWSmRg7v1LToE+Jw==}
- engines: {node: ^=20.19.0 || >=22.12.0}
+ eslint-plugin-jsonc@3.1.1:
+ resolution: {integrity: sha512-7TSQO8ZyvOuXWb0sYke3KUSh0DJA4/QviKfuzD3/Cy3XDjtrIrTWQbjb7j/Yy2l/DgwuM+lCS2c/jqJifv5jhg==}
+ engines: {node: ^20.19.0 || ^22.13.0 || >=24}
peerDependencies:
- eslint: '>=8.0.0'
- jsonc-eslint-parser: ^2.0.0
+ eslint: '>=9.38.0'
- eslint-plugin-react-debug@1.53.1:
- resolution: {integrity: sha512-WNOiQ6jhodJE88VjBU/IVDM+2Zr9gKHlBFDUSA3fQ0dMB5RiBVj5wMtxbxRuipK/GqNJbteqHcZoYEod7nfddg==}
- engines: {node: '>=18.18.0'}
+ eslint-plugin-n@17.24.0:
+ resolution: {integrity: sha512-/gC7/KAYmfNnPNOb3eu8vw+TdVnV0zhdQwexsw6FLXbhzroVj20vRn2qL8lDWDGnAQ2J8DhdfvXxX9EoxvERvw==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
- eslint: ^8.57.0 || ^9.0.0
- typescript: ^4.9.5 || ^5.3.3
- peerDependenciesMeta:
- typescript:
- optional: true
+ eslint: '>=8.23.0'
- eslint-plugin-react-dom@1.53.1:
- resolution: {integrity: sha512-UYrWJ2cS4HpJ1A5XBuf1HfMpPoLdfGil+27g/ldXfGemb4IXqlxHt4ANLyC8l2CWcE3SXGJW7mTslL34MG0qTQ==}
- engines: {node: '>=18.18.0'}
+ eslint-plugin-no-only-tests@3.3.0:
+ resolution: {integrity: sha512-brcKcxGnISN2CcVhXJ/kEQlNa0MEfGRtwKtWA16SkqXHKitaKIMrfemJKLKX1YqDU5C/5JY3PvZXd5jEW04e0Q==}
+ engines: {node: '>=5.0.0'}
+
+ eslint-plugin-perfectionist@5.6.0:
+ resolution: {integrity: sha512-pxrLrfRp5wl1Vol1fAEa/G5yTXxefTPJjz07qC7a8iWFXcOZNuWBItMQ2OtTzfQIvMq6bMyYcrzc3Wz++na55Q==}
+ engines: {node: ^20.0.0 || >=22.0.0}
peerDependencies:
- eslint: ^8.57.0 || ^9.0.0
- typescript: ^4.9.5 || ^5.3.3
- peerDependenciesMeta:
- typescript:
- optional: true
+ eslint: ^8.45.0 || ^9.0.0 || ^10.0.0
- eslint-plugin-react-google-translate@0.1.1:
- resolution: {integrity: sha512-70w3YW211yFSexWLshO+rSVtr6NDuA0qaU/ARVQ9pG0WFia5CyGFhKCed6LKKngdgfQTzjrcWlg7IPJehJwTsg==}
- engines: {node: ^14.17.0 || ^16.0.0 || >= 18.0.0}
+ eslint-plugin-pnpm@1.6.0:
+ resolution: {integrity: sha512-dxmt9r3zvPaft6IugS4i0k16xag3fTbOvm/road5uV9Y8qUCQT0xzheSh3gMlYAlC6vXRpfArBDsTZ7H7JKCbg==}
peerDependencies:
- eslint: '>=7'
+ eslint: ^9.0.0 || ^10.0.0
- eslint-plugin-react-hooks-extra@1.53.1:
- resolution: {integrity: sha512-fshTnMWNn9NjFLIuy7HzkRgGK29vKv4ZBO9UMr+kltVAfKLMeXXP6021qVKk66i/XhQjbktiS+vQsu1Rd3ZKvg==}
- engines: {node: '>=18.18.0'}
+ eslint-plugin-react-dom@2.13.0:
+ resolution: {integrity: sha512-+2IZzQ1WEFYOWatW+xvNUqmZn55YBCufzKA7hX3XQ/8eu85Mp4vnlOyNvdVHEOGhUnGuC6+9+zLK+IlEHKdKLQ==}
+ engines: {node: '>=20.19.0'}
peerDependencies:
- eslint: ^8.57.0 || ^9.0.0
- typescript: ^4.9.5 || ^5.3.3
- peerDependenciesMeta:
- typescript:
- optional: true
+ eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
+ typescript: '>=4.8.4 <6.0.0'
- eslint-plugin-react-hooks@6.0.0-rc.2:
- resolution: {integrity: sha512-2cnFkQl2xld2BgKDtxLSd/JqkpZHBXZKcz+ZurfiQ7GECzMckIddJN5PZyWach3MN4h/CjwfqPigAtYxInXtuw==}
+ eslint-plugin-react-hooks-extra@2.13.0:
+ resolution: {integrity: sha512-qIbha1nzuyhXM9SbEfrcGVqmyvQu7GAOB2sy9Y4Qo5S8nCqw4fSBxq+8lSce5Tk5Y7XzIkgHOhNyXEvUHRWFMQ==}
+ engines: {node: '>=20.19.0'}
+ peerDependencies:
+ eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
+ typescript: '>=4.8.4 <6.0.0'
+
+ eslint-plugin-react-hooks@7.0.1:
+ resolution: {integrity: sha512-O0d0m04evaNzEPoSW+59Mezf8Qt0InfgGIBJnpC0h3NH/WjUAR7BIKUfysC6todmtiZ/A0oUVS8Gce0WhBrHsA==}
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
- eslint-plugin-react-naming-convention@1.53.1:
- resolution: {integrity: sha512-rvZ/B/CSVF8d34HQ4qIt90LRuxotVx+KUf3i1OMXAyhsagEFMRe4gAlPJiRufZ+h9lnuu279bEdd+NINsXOteA==}
- engines: {node: '>=18.18.0'}
+ eslint-plugin-react-naming-convention@2.13.0:
+ resolution: {integrity: sha512-uSd25JzSg2R4p81s3Wqck0AdwRlO9Yc+cZqTEXv7vW8exGGAM3mWnF6hgrgdqVJqBEGJIbS/Vx1r5BdKcY/MHA==}
+ engines: {node: '>=20.19.0'}
peerDependencies:
- eslint: ^8.57.0 || ^9.0.0
- typescript: ^4.9.5 || ^5.3.3
- peerDependenciesMeta:
- typescript:
- optional: true
+ eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
+ typescript: '>=4.8.4 <6.0.0'
eslint-plugin-react-native-globals@0.1.2:
resolution: {integrity: sha512-9aEPf1JEpiTjcFAmmyw8eiIXmcNZOqaZyHO77wgm0/dWfT/oxC1SrIq8ET38pMxHYrcB6Uew+TzUVsBeczF88g==}
@@ -10616,56 +10754,54 @@ packages:
peerDependencies:
eslint: ^3.17.0 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9
- eslint-plugin-react-refresh@0.4.26:
- resolution: {integrity: sha512-1RETEylht2O6FM/MvgnyvT+8K21wLqDNg4qD51Zj3guhjt433XbnnkVttHMyaVyAFD03QSV4LPS5iE3VQmO7XQ==}
+ eslint-plugin-react-refresh@0.5.2:
+ resolution: {integrity: sha512-hmgTH57GfzoTFjVN0yBwTggnsVUF2tcqi7RJZHqi9lIezSs4eFyAMktA68YD4r5kNw1mxyY4dmkyoFDb3FIqrA==}
peerDependencies:
- eslint: '>=8.40'
+ eslint: ^9 || ^10
- eslint-plugin-react-web-api@1.53.1:
- resolution: {integrity: sha512-INVZ3Cbl9/b+sizyb43ChzEPXXYuDsBGU9BIg7OVTNPyDPloCXdI+dQFAcSlDocZhPrLxhPV3eT6+gXbygzYXg==}
- engines: {node: '>=18.18.0'}
+ eslint-plugin-react-rsc@2.13.0:
+ resolution: {integrity: sha512-RaftgITDLQm1zIgYyvR51sBdy4FlVaXFts5VISBaKbSUB0oqXyzOPxMHasfr9BCSjPLKus9zYe+G/Hr6rjFLXQ==}
+ engines: {node: '>=20.19.0'}
peerDependencies:
- eslint: ^8.57.0 || ^9.0.0
- typescript: ^4.9.5 || ^5.3.3
- peerDependenciesMeta:
- typescript:
- optional: true
+ eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
+ typescript: '>=4.8.4 <6.0.0'
- eslint-plugin-react-x@1.53.1:
- resolution: {integrity: sha512-MwMNnVwiPem0U6SlejDF/ddA4h/lmP6imL1RDZ2m3pUBrcdcOwOx0gyiRVTA3ENnhRlWfHljHf5y7m8qDSxMEg==}
- engines: {node: '>=18.18.0'}
+ eslint-plugin-react-web-api@2.13.0:
+ resolution: {integrity: sha512-nmJbzIAte7PeAkp22CwcKEASkKi49MshSdiDGO1XuN3f4N4/8sBfDcWbQuLPde6JiuzDT/0+l7Gi8wwTHtR1kg==}
+ engines: {node: '>=20.19.0'}
peerDependencies:
- eslint: ^8.57.0 || ^9.0.0
- ts-api-utils: ^2.1.0
- typescript: ^4.9.5 || ^5.3.3
- peerDependenciesMeta:
- ts-api-utils:
- optional: true
- typescript:
- optional: true
+ eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
+ typescript: '>=4.8.4 <6.0.0'
- eslint-plugin-regexp@2.10.0:
- resolution: {integrity: sha512-ovzQT8ESVn5oOe5a7gIDPD5v9bCSjIFJu57sVPDqgPRXicQzOnYfFN21WoQBQF18vrhT5o7UMKFwJQVVjyJ0ng==}
- engines: {node: ^18 || >=20}
+ eslint-plugin-react-x@2.13.0:
+ resolution: {integrity: sha512-cMNX0+ws/fWTgVxn52qAQbaFF2rqvaDAtjrPUzY6XOzPjY0rJQdR2tSlWJttz43r2yBfqu+LGvHlGpWL2wfpTQ==}
+ engines: {node: '>=20.19.0'}
+ peerDependencies:
+ eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
+ typescript: '>=4.8.4 <6.0.0'
+
+ eslint-plugin-regexp@3.0.0:
+ resolution: {integrity: sha512-iW7hgAV8NOG6E2dz+VeKpq67YLQ9jaajOKYpoOSic2/q8y9BMdXBKkSR9gcMtbqEhNQzdW41E3wWzvhp8ExYwQ==}
+ engines: {node: ^20.19.0 || ^22.13.0 || >=24}
peerDependencies:
- eslint: '>=8.44.0'
+ eslint: '>=9.38.0'
eslint-plugin-simple-import-sort@12.1.1:
resolution: {integrity: sha512-6nuzu4xwQtE3332Uz0to+TxDQYRLTKRESSc2hefVT48Zc8JthmN23Gx9lnYhu0FtkRSL1oxny3kJ2aveVhmOVA==}
peerDependencies:
eslint: '>=5.0.0'
- eslint-plugin-tailwindcss@4.0.0-beta.0:
- resolution: {integrity: sha512-WWCajZgQu38Sd67ZCl2W6i3MRzqB0d+H8s4qV9iB6lBJbsDOIpIlj6R1Fj2FXkoWErbo05pZnZYbCGIU9o/DsA==}
- engines: {node: '>=18.12.0'}
+ eslint-plugin-toml@1.3.0:
+ resolution: {integrity: sha512-+jjKAs2WRNom9PU1APlrL1kNexy1RHoKB7SHw7FLZBlqOCYXUKyG3Quiv1XUICdWDJ6oGVgW/mSm+BDuQrcc3w==}
+ engines: {node: ^20.19.0 || ^22.13.0 || >=24}
peerDependencies:
- tailwindcss: ^3.4.0 || ^4.0.0
+ eslint: '>=9.38.0'
- eslint-plugin-unicorn@61.0.2:
- resolution: {integrity: sha512-zLihukvneYT7f74GNbVJXfWIiNQmkc/a9vYBTE4qPkQZswolWNdu+Wsp9sIXno1JOzdn6OUwLPd19ekXVkahRA==}
+ eslint-plugin-unicorn@63.0.0:
+ resolution: {integrity: sha512-Iqecl9118uQEXYh7adylgEmGfkn5es3/mlQTLLkd4pXkIk9CTGrAbeUux+YljSa2ohXCBmQQ0+Ej1kZaFgcfkA==}
engines: {node: ^20.10.0 || >=21.0.0}
peerDependencies:
- eslint: '>=9.29.0'
+ eslint: '>=9.38.0'
eslint-plugin-unused-imports@4.4.1:
resolution: {integrity: sha512-oZGYUz1X3sRMGUB+0cZyK2VcvRX5lm/vB56PgNNcU+7ficUCKm66oZWKUubXWnOuPjQ8PvmXtCViXBMONPe7tQ==}
@@ -10676,6 +10812,32 @@ packages:
'@typescript-eslint/eslint-plugin':
optional: true
+ eslint-plugin-vue@10.8.0:
+ resolution: {integrity: sha512-f1J/tcbnrpgC8suPN5AtdJ5MQjuXbSU9pGRSSYAuF3SHoiYCOdEX6O22pLaRyLHXvDcOe+O5ENgc1owQ587agA==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ peerDependencies:
+ '@stylistic/eslint-plugin': ^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0
+ '@typescript-eslint/parser': ^7.0.0 || ^8.0.0
+ eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
+ vue-eslint-parser: ^10.0.0
+ peerDependenciesMeta:
+ '@stylistic/eslint-plugin':
+ optional: true
+ '@typescript-eslint/parser':
+ optional: true
+
+ eslint-plugin-yml@3.3.0:
+ resolution: {integrity: sha512-kRja5paNrMfZnbNqDbZSFrSHz5x7jmGBQq7d6z/+wRvWD4Y0yb1fbjojBg3ReMewFhBB7nD2nPC86+m3HmILJA==}
+ engines: {node: ^20.19.0 || ^22.13.0 || >=24.0.0}
+ peerDependencies:
+ eslint: '>=9.38.0'
+
+ eslint-processor-vue-blocks@2.0.0:
+ resolution: {integrity: sha512-u4W0CJwGoWY3bjXAuFpc/b6eK3NQEI8MoeW7ritKj3G3z/WtHrKjkqf+wk8mPEy5rlMGS+k6AZYOw2XBoN/02Q==}
+ peerDependencies:
+ '@vue/compiler-sfc': ^3.3.0
+ eslint: '>=9.0.0'
+
eslint-scope@5.1.1:
resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==}
engines: {node: '>=8.0.0'}
@@ -10684,6 +10846,10 @@ packages:
resolution: {integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ eslint-scope@9.1.1:
+ resolution: {integrity: sha512-GaUN0sWim5qc8KVErfPBWmc31LEsOkrUJbvJZV+xuL3u2phMUK4HIvXlWAakfC8W4nzlK+chPEAkYOYb5ZScIw==}
+ 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}
@@ -10692,23 +10858,13 @@ packages:
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.0:
- resolution: {integrity: sha512-A0XeIi7CXU7nPlfHS9loMYEKxUaONu/hTEzHTGba9Huu94Cq1hPivf+DE5erJozZOky0LfvXAyrV/tcswpLI0Q==}
+ eslint-visitor-keys@5.0.1:
+ resolution: {integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==}
engines: {node: ^20.19.0 || ^22.13.0 || >=24}
- eslint@9.27.0:
- resolution: {integrity: sha512-ixRawFQuMB9DZ7fjU3iGGganFDp3+45bPOdaRurcFHSXO1e/sYwUX/FtQZpLZJR6SjMoJH8hR2pPEAfDyCoU2Q==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- hasBin: true
- peerDependencies:
- jiti: '*'
- peerDependenciesMeta:
- jiti:
- optional: true
-
- eslint@9.38.0:
- resolution: {integrity: sha512-t5aPOpmtJcZcz5UJyY2GbvpDlsK5E8JqRqoKtfiKE3cNh437KIqfJr3A3AKf5k64NPx6d0G3dno6XDY05PqPtw==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ eslint@10.0.2:
+ resolution: {integrity: sha512-uYixubwmqJZH+KLVYIVKY1JQt7tysXhtj21WSvjcSmU5SVNzMus1bgLe+pAt816yQ8opKfheVVoPLqvVMGejYw==}
+ engines: {node: ^20.19.0 || ^22.13.0 || >=24}
hasBin: true
peerDependencies:
jiti: '*'
@@ -10716,8 +10872,8 @@ packages:
jiti:
optional: true
- eslint@9.39.1:
- resolution: {integrity: sha512-BhHmn2yNOFA9H9JmmIVKJmd288g9hrVRDkdoIgRCRuSySRUHH7r/DI6aAXW9T1WwUuY3DFgrcaqB+deURBLR5g==}
+ eslint@9.27.0:
+ resolution: {integrity: sha512-ixRawFQuMB9DZ7fjU3iGGganFDp3+45bPOdaRurcFHSXO1e/sYwUX/FtQZpLZJR6SjMoJH8hR2pPEAfDyCoU2Q==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
hasBin: true
peerDependencies:
@@ -10733,9 +10889,9 @@ packages:
resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- espree@9.6.1:
- resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ espree@11.1.1:
+ resolution: {integrity: sha512-AVHPqQoZYc+RUM4/3Ly5udlZY/U4LS8pIG05jEjWM2lQMU/oaZ7qshzAl2YP1tfNmXfftH3ohurfwNAug+MnsQ==}
+ engines: {node: ^20.19.0 || ^22.13.0 || >=24}
esprima@4.0.1:
resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==}
@@ -11160,6 +11316,9 @@ packages:
fast-deep-equal@3.1.3:
resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
+ fast-diff@1.3.0:
+ resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==}
+
fast-fifo@1.3.2:
resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==}
@@ -11183,6 +11342,12 @@ packages:
fast-querystring@1.1.2:
resolution: {integrity: sha512-g6KuKWmFXc0fID8WWH0jit4g0AGBoJhCkJMb1RmbsSEUNvQ+ZC8D6CUZ+GtF8nMzSPXnhiePyyqqipzNNEnHjg==}
+ fast-string-truncated-width@3.0.3:
+ resolution: {integrity: sha512-0jjjIEL6+0jag3l2XWWizO64/aZVtpiGE3t0Zgqxv0DPuxiMjvB3M24fCyhZUO4KomJQPj3LTSUnDP3GpdwC0g==}
+
+ fast-string-width@3.0.2:
+ resolution: {integrity: sha512-gX8LrtNEI5hq8DVUfRQMbr5lpaS4nMIWV+7XEbXk2b8kiQIizgnlr12B4dA3ZEx3308ze0O4Q1R+cHts8kyUJg==}
+
fast-uri@3.1.0:
resolution: {integrity: sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==}
@@ -11198,6 +11363,9 @@ packages:
fastq@1.20.1:
resolution: {integrity: sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==}
+ fault@2.0.1:
+ resolution: {integrity: sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ==}
+
faye-websocket@0.11.4:
resolution: {integrity: sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==}
engines: {node: '>=0.8.0'}
@@ -11343,6 +11511,10 @@ packages:
resolution: {integrity: sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==}
engines: {node: '>= 6'}
+ format@0.2.2:
+ resolution: {integrity: sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==}
+ engines: {node: '>=0.4.x'}
+
foxact@0.2.49:
resolution: {integrity: sha512-9Pbu4IbkaNqtS/H4887/QWegclMpBn54mzbPp3t1mg0iJuB83jpQGBY2fshal50NmchlAFIT/GSWBFsa0YI31Q==}
peerDependencies:
@@ -11547,9 +11719,6 @@ packages:
resolution: {integrity: sha512-L5bGsVkxJbJgdnwyuheIunkGatUF/zssUoxxjACCseZYAVbaqdh9Tsmmlkl8vYan09H7sbvKt4pS8GqKLBrEzA==}
hasBin: true
- git-hooks-list@4.2.1:
- resolution: {integrity: sha512-WNvqJjOxxs/8ZP9+DWdwWJ7cDsd60NHf39XnD82pDVrKO5q7xfPqpkK6hwEAmBa/ZSEE4IOoR75EzbbIuwGlMw==}
-
git-raw-commits@5.0.0:
resolution: {integrity: sha512-I2ZXrXeOc0KrCvC7swqtIFXFN+rbjnC7b2T943tvemIOVNl+XP8YnA9UVwqFhzzLClnSA60KR/qEjLpXzs73Qg==}
engines: {node: '>=18'}
@@ -11563,6 +11732,9 @@ packages:
github-from-package@0.0.0:
resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==}
+ github-slugger@2.0.0:
+ resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==}
+
glob-parent@5.1.2:
resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
engines: {node: '>= 6'}
@@ -11626,6 +11798,10 @@ packages:
resolution: {integrity: sha512-c/c15i26VrJ4IRt5Z89DnIzCGDn9EcebibhAOjw5ibqEHsE1wLUgkPn9RDmNcUKyU87GeaL633nyJ+pplFR2ZQ==}
engines: {node: '>=18'}
+ globals@17.4.0:
+ resolution: {integrity: sha512-hjrNztw/VajQwOLsMNT1cbJiH2muO3OROCHnbehc8eY5JyD2gqz4AcMHPqgaOR59DjgUjYAYLeH699g/eWi2jw==}
+ engines: {node: '>=18'}
+
globalthis@1.0.4:
resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==}
engines: {node: '>= 0.4'}
@@ -11655,9 +11831,6 @@ packages:
resolution: {integrity: sha512-is3hDn9zb8XXnjbEeAEIqxTpLHUiGBqjegLmXPuyMBfKAggpadWFku4/AP8iYAGBX6qR9/5UIUIp47V0XI3aMw==}
hasBin: true
- graphemer@1.4.0:
- resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==}
-
graphql-tag@2.12.6:
resolution: {integrity: sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==}
engines: {node: '>=10'}
@@ -11809,6 +11982,9 @@ packages:
resolution: {integrity: sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==}
engines: {node: ^16.14.0 || >=18.0.0}
+ html-entities@2.6.0:
+ resolution: {integrity: sha512-kig+rMn/QOVRvr7c86gQ8lWXq+Hkv6CbAH1hLu+RG338StTpE8Z0b44SDVaqVu7HGKf27frdmUYEs9hTUX/cLQ==}
+
html-escaper@3.0.3:
resolution: {integrity: sha512-RuMffC89BOWQoY0WKGpIhn5gX3iI54O6nRA0yC124NYVtzjmFWBIiFd8M0x+ZdX0P9R4lADg1mgP8C7PxGOWuQ==}
@@ -12376,23 +12552,14 @@ packages:
jsc-safe-url@0.2.4:
resolution: {integrity: sha512-0wM3YBWtYePOjfyXQH5MWQ8H7sdk5EXSwZvmSLKk2RboVQ2Bu239jycHDz5J/8Blf3K0Qnoy2b6xD+z10MFB+Q==}
- jsdoc-type-pratt-parser@4.8.0:
- resolution: {integrity: sha512-iZ8Bdb84lWRuGHamRXFyML07r21pcwBrLkHEuHgEY5UbCouBwv7ECknDRKzsQIXMiqpPymqtIf8TC/shYKB5rw==}
- engines: {node: '>=12.0.0'}
-
- jsdoc-type-pratt-parser@7.0.0:
- resolution: {integrity: sha512-c7YbokssPOSHmqTbSAmTtnVgAVa/7lumWNYqomgd5KOMyPrRve2anx6lonfOsXEQacqF9FKVUj7bLg4vRSvdYA==}
+ jsdoc-type-pratt-parser@7.1.1:
+ resolution: {integrity: sha512-/2uqY7x6bsrpi3i9LVU6J89352C0rpMk0as8trXxCtvd4kPk1ke/Eyif6wqfSLvoNJqcDG9Vk4UsXgygzCt2xA==}
engines: {node: '>=20.0.0'}
jsep@1.4.0:
resolution: {integrity: sha512-B7qPcEVE3NVkmSJbaYxvv4cHkVW7DQsZz13pUMrfS8z8Q/BuShN+gcTXrUlPiGqM2/t/EEaI030bpxMqY8gMlw==}
engines: {node: '>= 10.16.0'}
- jsesc@3.0.2:
- resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==}
- engines: {node: '>=6'}
- hasBin: true
-
jsesc@3.1.0:
resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==}
engines: {node: '>=6'}
@@ -12436,9 +12603,9 @@ packages:
engines: {node: '>=6'}
hasBin: true
- jsonc-eslint-parser@2.4.2:
- resolution: {integrity: sha512-1e4qoRgnn448pRuMvKGsFFymUCquZV0mpGgOyIKNgD3JVDTsVJyRBGH/Fm0tBb8WsWGgmB1mDe6/yJMQM37DUA==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ jsonc-eslint-parser@3.1.0:
+ resolution: {integrity: sha512-75EA7EWZExL/j+MDKQrRbdzcRI2HOkRlmUw8fZJc1ioqFEOvBsq7Rt+A6yCxOt9w/TYNpkt52gC6nm/g5tFIng==}
+ engines: {node: ^20.19.0 || ^22.13.0 || >=24}
jsonfile@4.0.0:
resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==}
@@ -13020,6 +13187,9 @@ packages:
mdast-util-from-markdown@2.0.2:
resolution: {integrity: sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==}
+ mdast-util-frontmatter@2.0.1:
+ resolution: {integrity: sha512-LRqI9+wdgC25P0URIJY9vwocIzCcksduHQ9OF2joxQoyTNVduwLAFUzjoopuRJbJAReaKrNQKAZKL3uCMugWJA==}
+
mdast-util-gfm-autolink-literal@2.0.1:
resolution: {integrity: sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==}
@@ -13071,6 +13241,9 @@ packages:
mdn-data@2.12.2:
resolution: {integrity: sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==}
+ mdn-data@2.23.0:
+ resolution: {integrity: sha512-786vq1+4079JSeu2XdcDjrhi/Ry7BWtjDl9WtGPWLiIHb2T66GvIVflZTBoSNZ5JqTtJGYEVMuFA/lbQlMOyDQ==}
+
mem@4.3.0:
resolution: {integrity: sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==}
engines: {node: '>=6'}
@@ -13156,6 +13329,9 @@ packages:
micromark-extension-directive@4.0.0:
resolution: {integrity: sha512-/C2nqVmXXmiseSSuCdItCMho7ybwwop6RrrRPk0KbOHW21JKoCldC+8rFOaundDoRBUWBnJJcxeA/Kvi34WQXg==}
+ micromark-extension-frontmatter@2.0.0:
+ resolution: {integrity: sha512-C4AkuM3dA58cgZha7zVnuVxBhDsbttIMiytjgsM2XbHAB2faRVaHRle40558FBN+DJcrLNCoqG5mlrpdU4cRtg==}
+
micromark-extension-gfm-autolink-literal@2.1.0:
resolution: {integrity: sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==}
@@ -13302,9 +13478,9 @@ packages:
resolution: {integrity: sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==}
engines: {node: 20 || >=22}
- minimatch@10.2.1:
- resolution: {integrity: sha512-MClCe8IL5nRRmawL6ib/eT4oLyeKMGCghibcDWK+J0hh0Q8kqSdia6BvbRMVk6mPa6WqUa5uR2oxt6C5jd533A==}
- engines: {node: 20 || >=22}
+ minimatch@10.2.4:
+ resolution: {integrity: sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==}
+ engines: {node: 18 || 20 || >=22}
minimatch@3.1.2:
resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
@@ -13498,11 +13674,6 @@ packages:
napi-build-utils@2.0.0:
resolution: {integrity: sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==}
- napi-postinstall@0.3.4:
- resolution: {integrity: sha512-PHI5f1O0EP5xJ9gQmFGMS6IZcrVvTjpXjz7Na41gTE7eE2hK11lg04CECCYEEjdc17EV4DO+fkGEtt7TpTaTiQ==}
- engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0}
- hasBin: true
-
nativewind@4.2.1:
resolution: {integrity: sha512-10uUB2Dlli3MH3NDL5nMHqJHz1A3e/E6mzjTj6cl7hHECClJ7HpE6v+xZL+GXdbwQSnWE+UWMIMsNz7yOQkAJQ==}
engines: {node: '>=16'}
@@ -13515,6 +13686,10 @@ packages:
natural-orderby@2.0.3:
resolution: {integrity: sha512-p7KTHxU0CUrcOXe62Zfrb5Z13nLvPhSWR/so3kFulUQU0sgUll2Z0LwpsLN351eOOD+hRGu/F1g+6xDfPeD++Q==}
+ natural-orderby@5.0.0:
+ resolution: {integrity: sha512-kKHJhxwpR/Okycz4HhQKKlhWe4ASEfPgkSWNmKFHd7+ezuQlxkA5cM3+XkBPvm1gmHen3w53qsYAv+8GwRrBlg==}
+ engines: {node: '>=18'}
+
nbump@2.1.8:
resolution: {integrity: sha512-xbqzRVnGPNCVHBi4+0qrm1jSpZPZ1uZaJrYt/JAvnhf2WDeELGvDxdcqL9fn9ExlwU4g7K9GjdG7gVI794bceg==}
hasBin: true
@@ -13718,6 +13893,9 @@ packages:
resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
engines: {node: '>=0.10.0'}
+ object-deep-merge@2.0.0:
+ resolution: {integrity: sha512-3DC3UMpeffLTHiuXSy/UG4NOIYTLlY9u3V82+djSCLYClWobZiS4ivYzpIUWrRY/nfsJ8cWsKyG3QfyLePmhvg==}
+
object-hash@3.0.0:
resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==}
engines: {node: '>= 6'}
@@ -13828,6 +14006,11 @@ packages:
overlap-area@1.1.0:
resolution: {integrity: sha512-3dlJgJCaVeXH0/eZjYVJvQiLVVrPO4U1ZGqlATtx6QGO3b5eNM6+JgUKa7oStBTdYuGTk7gVoABCW6Tp+dhRdw==}
+ oxfmt@0.35.0:
+ resolution: {integrity: sha512-QYeXWkP+aLt7utt5SLivNIk09glWx9QE235ODjgcEZ3sd1VMaUBSpLymh6ZRCA76gD2rMP4bXanUz/fx+nLM9Q==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ hasBin: true
+
p-cancelable@2.1.1:
resolution: {integrity: sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==}
engines: {node: '>=8'}
@@ -13883,11 +14066,6 @@ packages:
package-json-from-dist@1.0.1:
resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==}
- package-json-validator@0.23.0:
- resolution: {integrity: sha512-HJokcABTkX8Calu86WCG0EknqWwf+doB7Xk3/EnXoO5/mjHC8H+D66UDZBjHtyZ1MIo0lrdSasbdOCHlr80n6Q==}
- engines: {node: ^20.19.0 || >=22.12.0}
- hasBin: true
-
package-manager-detector@1.5.0:
resolution: {integrity: sha512-uBj69dVlYe/+wxj8JOpr97XfsxH/eumMt6HqjNTmJDf/6NO9s+0uxeOneIz3AsPt2m6y9PqzDzd3ATcU17MNfw==}
@@ -13920,6 +14098,13 @@ packages:
parse-entities@4.0.2:
resolution: {integrity: sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==}
+ parse-gitignore@2.0.0:
+ resolution: {integrity: sha512-RmVuCHWsfu0QPNW+mraxh/xjQVw/lhUCUru8Zni3Ctq3AoMhpDTq0OVdKS6iesd6Kqb7viCV3isAL43dciOSog==}
+ engines: {node: '>=14'}
+
+ parse-imports-exports@0.2.4:
+ resolution: {integrity: sha512-4s6vd6dx1AotCx/RCI2m7t7GCh5bDRUtGNvRfHSP2wbBQdMi67pPe7mtzmgwcaQ8VKK/6IB7Glfyu3qdZJPybQ==}
+
parse-json@2.2.0:
resolution: {integrity: sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==}
engines: {node: '>=0.10.0'}
@@ -13944,6 +14129,9 @@ packages:
resolution: {integrity: sha512-Nt/a5SfCLiTnQAjx3fHlqp8hRgTL3z7kTQZzvIMS9uCAepnCyjpdEc6M/sz69WqMBdaDBw9sF1F1UaHROYzGkQ==}
engines: {node: '>=10'}
+ parse-statements@1.0.11:
+ resolution: {integrity: sha512-HlsyYdMBnbPQ9Jr/VgJ1YF4scnldvJpJxCVx6KgqPL4dxppsWrJHCIIxQXMJrqGnsRkNPATbeMJ8Yxu7JMsYcA==}
+
parse5-htmlparser2-tree-adapter@7.1.0:
resolution: {integrity: sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g==}
@@ -13953,6 +14141,9 @@ packages:
parse5@7.3.0:
resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==}
+ parse5@8.0.0:
+ resolution: {integrity: sha512-9m4m5GSgXjL4AjumKzq1Fgfp3Z8rsvjRNbnkVwfu2ImRqE5D0LnY2QfDen18FSY9C573YU5XxSapdHZTZ2WolA==}
+
parseurl@1.3.3:
resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==}
engines: {node: '>= 0.8'}
@@ -14179,6 +14370,9 @@ packages:
resolution: {integrity: sha512-LKWqWJRhstyYo9pGvgor/ivk2w94eSjE3RGVuzLGlr3NmD8bf7RcYGze1mNdEHRP6TRP6rMuDHk5t44hnTRyow==}
engines: {node: '>=14.19.0'}
+ pnpm-workspace-yaml@1.6.0:
+ resolution: {integrity: sha512-uUy4dK3E11sp7nK+hnT7uAWfkBMe00KaUw8OG3NuNlYQoTk4sc9pcdIy1+XIP85v9Tvr02mK3JPaNNrP0QyRaw==}
+
portfinder@1.0.38:
resolution: {integrity: sha512-rEwq/ZHlJIKw++XtLAO8PPuOQA/zaPJOZJ37BVuN97nLpMJeuDVLVGRwbFoBgLudgdTMP2hdRJP++H+8QOA3vg==}
engines: {node: '>= 10.12'}
@@ -14514,6 +14708,10 @@ packages:
resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
engines: {node: '>= 0.8.0'}
+ prettier-linter-helpers@1.0.1:
+ resolution: {integrity: sha512-SxToR7P8Y2lWmv/kTzVLC1t/GDI2WGjMwNhLLE9qtH8Q13C+aEmuRlzDst4Up4s0Wc8sF2M+J57iB3cMLqftfg==}
+ engines: {node: '>=6.0.0'}
+
prettier-package-json@2.8.0:
resolution: {integrity: sha512-WxtodH/wWavfw3MR7yK/GrS4pASEQ+iSTkdtSxPJWvqzG55ir5nvbLt9rw5AOiEcqqPCRM92WCtR1rk3TG3JSQ==}
hasBin: true
@@ -15390,10 +15588,6 @@ packages:
regjsgen@0.8.0:
resolution: {integrity: sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==}
- regjsparser@0.12.0:
- resolution: {integrity: sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==}
- hasBin: true
-
regjsparser@0.13.0:
resolution: {integrity: sha512-NZQZdC5wOE/H3UT28fVGL+ikOZcEzfMGk/c3iN9UGxzWHMa1op7274oyiUVrAG4B2EuFhus8SvkaYnhvW92p9Q==}
hasBin: true
@@ -15470,10 +15664,6 @@ packages:
resolution: {integrity: sha512-nYzyjnFcPNGR3lx9lwPPPnuQxv6JWEZd2Ci0u9opN7N5zUEPIhY/GbL3vMGOr2UXwEg9WwSyV9X9Y/kLFgPsOg==}
engines: {node: '>= 4.0.0'}
- requireindex@1.2.0:
- resolution: {integrity: sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww==}
- engines: {node: '>=0.10.5'}
-
resedit@2.0.3:
resolution: {integrity: sha512-oTeemxwoMuxxTYxXUwjkrOPfngTQehlv0/HoYFNkB4uzsP1Un1A9nI8JQKGOFkxpqkC7qkMs0lUsGrvUlbLNUA==}
engines: {node: '>=14', npm: '>=7'}
@@ -15481,6 +15671,10 @@ packages:
reselect@5.1.1:
resolution: {integrity: sha512-K/BG6eIky/SBpzfHZv/dd+9JBFiS4SWV7FIujVyJRux6e45+73RaUHXLmIR1f7WOMaQ0U1km6qwklRQxpJJY0w==}
+ reserved-identifiers@1.2.0:
+ resolution: {integrity: sha512-yE7KUfFvaBFzGPs5H3Ops1RevfUEsDc5Iz65rOwWg4lE8HJSYtle77uul3+573457oHvBKuHYDl/xqUkKpEEdw==}
+ engines: {node: '>=18'}
+
resolve-alpn@1.2.1:
resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==}
@@ -15919,17 +16113,9 @@ packages:
sort-object-keys@1.1.3:
resolution: {integrity: sha512-855pvK+VkU7PaKYPc+Jjnmt4EzejQHyhhF33q31qG8x7maDzkeFhAAThdCYay11CISO+qAMwjOBP+fPZe0IPyg==}
- sort-object-keys@2.1.0:
- resolution: {integrity: sha512-SOiEnthkJKPv2L6ec6HMwhUcN0/lppkeYuN1x63PbyPRrgSPIuBJCiYxYyvWRTtjMlOi14vQUCGUJqS6PLVm8g==}
-
sort-order@1.1.2:
resolution: {integrity: sha512-Q8tOrwB1TSv9fNUXym9st3TZJODtmcOIi2JWCkVNQPrRg17KPwlpwweTEb7pMwUIFMTAgx2/JsQQXEPFzYQj3A==}
- sort-package-json@3.6.1:
- resolution: {integrity: sha512-Chgejw1+10p2D0U2tB7au1lHtz6TkFnxmvZktyBCRyV0GgmF6nl1IxXxAsPtJVsUyg/fo+BfCMAVVFUVRkAHrQ==}
- engines: {node: '>=20'}
- hasBin: true
-
source-map-js@1.2.1:
resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
engines: {node: '>=0.10.0'}
@@ -15966,6 +16152,9 @@ packages:
spdx-expression-parse@3.0.1:
resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==}
+ spdx-expression-parse@4.0.0:
+ resolution: {integrity: sha512-Clya5JIij/7C6bRR22+tnGXbc4VKlibKSVj2iHvVeX5iMW7s1SIQlqu699JkODJJIhh/pUu8L0/VLh8xflD+LQ==}
+
spdx-license-ids@3.0.22:
resolution: {integrity: sha512-4PRT4nh1EImPbt2jASOKHX7PB7I+e4IWNLvkKFDxNhJlfjbYlleYQh285Z/3mPTHSAK/AvdMmw5BNNuYH8ShgQ==}
@@ -15991,10 +16180,6 @@ packages:
resolution: {integrity: sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==}
engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
- stable-hash-x@0.2.0:
- resolution: {integrity: sha512-o3yWv49B/o4QZk5ZcsALc6t0+eCelPc44zZsLtCQnZPDwFpDYSWcDnrv2TtMmMbQ7uKo3J0HTURCqckw23czNQ==}
- engines: {node: '>=12.0.0'}
-
stack-utils@2.0.6:
resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==}
engines: {node: '>=10'}
@@ -16255,10 +16440,9 @@ packages:
resolution: {integrity: sha512-yEFYrVhod+hdNyx7g5Bnkkb0G6si8HJurOoOEgC8B/O0uXLHlaey/65KRv6cuWBNhBgHKAROVpc7QyYqE5gFng==}
engines: {node: '>=20'}
- tailwind-api-utils@1.0.3:
- resolution: {integrity: sha512-KpzUHkH1ug1sq4394SLJX38ZtpeTiqQ1RVyFTTSY2XuHsNSTWUkRo108KmyyrMWdDbQrLYkSHaNKj/a3bmA4sQ==}
- peerDependencies:
- tailwindcss: ^3.3.0 || ^4.0.0 || ^4.0.0-beta
+ tailwind-csstree@0.1.4:
+ resolution: {integrity: sha512-FzD187HuFIZEyeR7Xy6sJbJll2d4SybS90satC8SKIuaNRC05CxMvdzN7BUsfDQffcnabckRM5OIcfArjsZ0mg==}
+ engines: {node: '>=18.18'}
tailwind-merge@3.3.1:
resolution: {integrity: sha512-gBXpgUm/3rp1lMZZrM/w7D8GKqshif0zAymAhbCyIt8KMe+0v9DQ7cdYLR4FHH/cKpdTXb+A/tKKU3eolfsI+g==}
@@ -16458,6 +16642,10 @@ packages:
resolution: {integrity: sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==}
engines: {node: ^18.0.0 || >=20.0.0}
+ tinypool@2.1.0:
+ resolution: {integrity: sha512-Pugqs6M0m7Lv1I7FtxN4aoyToKg1C4tu+/381vH35y8oENM/Ai7f7C4StcoK4/+BSw9ebcS8jRiVrORFKCALLw==}
+ engines: {node: ^20.0.0 || >=22.0.0}
+
tinyrainbow@2.0.0:
resolution: {integrity: sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==}
engines: {node: '>=14.0.0'}
@@ -16501,6 +16689,10 @@ packages:
resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
engines: {node: '>=8.0'}
+ to-valid-identifier@1.0.0:
+ resolution: {integrity: sha512-41wJyvKep3yT2tyPqX/4blcfybknGB4D+oETKLs7Q76UiPqRpUJK3hr1nxelyYO0PHKVzJwlu0aCeEAsGI6rpw==}
+ engines: {node: '>=20'}
+
toad-cache@3.7.0:
resolution: {integrity: sha512-/m8M+2BJUpoJdgAHoG+baCwBT+tf2VraSfkBgl0Y00qIWt41DJ8R5B8nsEw0I58YwF5IZH6z24/2TobDKnqSWw==}
engines: {node: '>=12'}
@@ -16513,6 +16705,10 @@ packages:
resolution: {integrity: sha512-6udB24Q737UD/SDsKAHI9FCRP7Bqc9D/MQUV02ORQg5iskjtLJlZJNdN4kKtcdtwCeWIwIHDGaUsTsCCAa8sFQ==}
engines: {node: '>=10'}
+ toml-eslint-parser@1.0.3:
+ resolution: {integrity: sha512-A5F0cM6+mDleacLIEUkmfpkBbnHJFV1d2rprHU2MXNk7mlxHq2zGojA+SRvQD1RoMo9gqjZPWEaKG4v1BQ48lw==}
+ engines: {node: ^20.19.0 || ^22.13.0 || >=24}
+
tr46@0.0.3:
resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==}
@@ -16599,6 +16795,14 @@ packages:
typescript:
optional: true
+ tsconfig-paths-webpack-plugin@4.2.0:
+ resolution: {integrity: sha512-zbem3rfRS8BgeNK50Zz5SIQgXzLafiHjOwUAvk/38/o1jHn/V5QAgVUcz884or7WYcPaH3N2CIfUc2u0ul7UcA==}
+ engines: {node: '>=10.13.0'}
+
+ tsconfig-paths@4.2.0:
+ resolution: {integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==}
+ engines: {node: '>=6'}
+
tsdown@0.20.3:
resolution: {integrity: sha512-qWOUXSbe4jN8JZEgrkc/uhJpC8VN2QpNu3eZkBWwNuTEjc/Ik1kcc54ycfcQ5QPRHeu9OQXaLfCI3o7pEJgB2w==}
engines: {node: '>=20.19.0'}
@@ -16743,13 +16947,6 @@ packages:
resolution: {integrity: sha512-JnTrzGu+zPV3aXIUhnyWJj4z/wigMsdYajGLIYakqyOW1nPllzXEJee0QQbHj+CTIQtXGlAjuK0UY+2xTyjVAw==}
engines: {node: '>=20'}
- typescript-eslint@8.56.0:
- resolution: {integrity: sha512-c7toRLrotJ9oixgdW7liukZpsnq5CZ7PuKztubGYlNppuTqhIoWfhgHo/7EU0v06gS2l/x0i2NEFK1qMIf0rIg==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- peerDependencies:
- eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
- typescript: '>=4.8.4 <6.0.0'
-
typescript@5.4.5:
resolution: {integrity: sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==}
engines: {node: '>=14.17'}
@@ -16932,9 +17129,6 @@ packages:
resolution: {integrity: sha512-0Mqk3AT2TZCXWKdcoaufeXNukv2mTrEZExeXlHIOZXdqYoHHr4n51pymnwV8x2BOVxwXbK2HLlI7usrqMpycdg==}
engines: {node: ^20.19.0 || >=22.12.0}
- unrs-resolver@1.11.1:
- resolution: {integrity: sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==}
-
unrun@0.2.27:
resolution: {integrity: sha512-Mmur1UJpIbfxasLOhPRvox/QS4xBiDii71hMP7smfRthGcwFL2OAmYRgduLANOAU4LUkvVamuP+02U+c90jlrw==}
engines: {node: '>=20.19.0'}
@@ -17046,6 +17240,14 @@ packages:
v8-compile-cache-lib@3.0.1:
resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==}
+ valibot@1.2.0:
+ resolution: {integrity: sha512-mm1rxUsmOxzrwnX5arGS+U4T25RdvpPjPN4yR0u9pUBov9+zGVtO84tif1eY4r6zWxVxu3KzIyknJy3rxfRZZg==}
+ peerDependencies:
+ typescript: '>=5'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
validate-npm-package-license@3.0.4:
resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==}
@@ -17053,10 +17255,6 @@ packages:
resolution: {integrity: sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==}
engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
- validate-npm-package-name@6.0.2:
- resolution: {integrity: sha512-IUoow1YUtvoBBC06dXs8bR8B9vuA3aJfmQNKMoaPG/OFsPmoQvw8xh+6Ye25Gx9DQhoEom3Pcu9MKHerm/NpUQ==}
- engines: {node: ^18.17.0 || >=20.5.0}
-
vary@1.1.2:
resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==}
engines: {node: '>= 0.8'}
@@ -17216,6 +17414,12 @@ packages:
vscode-uri@3.1.0:
resolution: {integrity: sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==}
+ vue-eslint-parser@10.4.0:
+ resolution: {integrity: sha512-Vxi9pJdbN3ZnVGLODVtZ7y4Y2kzAAE2Cm0CZ3ZDRvydVYxZ6VrnBhLikBsRS+dpwj4Jv4UCv21PTEwF5rQ9WXg==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ peerDependencies:
+ eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
+
wa-sqlite@https://codeload.github.com/rhashimoto/wa-sqlite/tar.gz/03c00ed67cd934bd664ae310234bba317928f851:
resolution: {tarball: https://codeload.github.com/rhashimoto/wa-sqlite/tar.gz/03c00ed67cd934bd664ae310234bba317928f851}
version: 1.0.8
@@ -17505,6 +17709,10 @@ packages:
resolution: {integrity: sha512-kCz5k7J7XbJtjABOvkc5lJmkiDh8VhjVCGNiqdKCscmVpdVUpEAyXv1xmCLkQJ5dsHqx3IPO4XW+NTDhU/fatA==}
engines: {node: '>=10.0.0'}
+ xml-name-validator@4.0.0:
+ resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==}
+ engines: {node: '>=12'}
+
xml2js@0.6.0:
resolution: {integrity: sha512-eLTh0kA8uHceqesPqSE+VvO1CDDJWMwlQfB6LuN6T8w6MaDJ8Txm8P7s5cHD0miF0V+GGTZrDQfxPZQVsur33w==}
engines: {node: '>=4.0.0'}
@@ -17550,6 +17758,10 @@ packages:
resolution: {integrity: sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==}
engines: {node: '>=18'}
+ yaml-eslint-parser@2.0.0:
+ resolution: {integrity: sha512-h0uDm97wvT2bokfwwTmY6kJ1hp6YDFL0nRHwNKz8s/VD1FH/vvZjAKoMUE+un0eaYBSG7/c6h+lJTP+31tjgTw==}
+ engines: {node: ^20.19.0 || ^22.13.0 || >=24}
+
yaml@1.10.2:
resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==}
engines: {node: '>= 6'}
@@ -17572,10 +17784,6 @@ packages:
resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==}
engines: {node: '>=12'}
- yargs-parser@22.0.0:
- resolution: {integrity: sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw==}
- engines: {node: ^20.19.0 || ^22.12.0 || >=23}
-
yargs@15.4.1:
resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==}
engines: {node: '>=8'}
@@ -17584,10 +17792,6 @@ packages:
resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==}
engines: {node: '>=12'}
- yargs@18.0.0:
- resolution: {integrity: sha512-4UEqdc2RYGHZc7Doyqkrqiln3p9X2DZVxaGbwhn2pi7MrRagKaOcIKe8L3OxYcbhXLgLFUS3zAYuQjKBQgmuNg==}
- engines: {node: ^20.19.0 || ^22.12.0 || >=23}
-
yauzl@2.10.0:
resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==}
@@ -17632,11 +17836,11 @@ packages:
resolution: {integrity: sha512-9qv4rlDiopXg4E69k+vMHjNN63YFMe9sZMrdlvKnCjlCRWeCBswPPMPUfx+ipsAWq1LXHe70RcbaHdJJpS6hyQ==}
engines: {node: '>= 10'}
- zod-validation-error@3.5.4:
- resolution: {integrity: sha512-+hEiRIiPobgyuFlEojnqjJnhFvg4r/i3cqgcm67eehZf/WBaK3g6cD02YU9mtdVxZjv8CzCA9n/Rhrs3yAAvAw==}
+ zod-validation-error@4.0.2:
+ resolution: {integrity: sha512-Q6/nZLe6jxuU80qb/4uJ4t5v2VEZ44lzQjPDhYJNztRQ4wyWc6VF3D3Kb/fAuPetZQnhS3hnajCf9CsWesghLQ==}
engines: {node: '>=18.0.0'}
peerDependencies:
- zod: ^3.24.4
+ zod: ^3.25.0 || ^4.0.0
zod@3.22.4:
resolution: {integrity: sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==}
@@ -17771,7 +17975,59 @@ snapshots:
'@alloc/quick-lru@5.2.0': {}
- '@altano/repository-tools@2.0.1': {}
+ '@antfu/eslint-config@7.6.1(@eslint-react/eslint-plugin@2.13.0(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3))(@typescript-eslint/rule-tester@8.56.1(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3))(@typescript-eslint/typescript-estree@8.56.1(typescript@5.9.3))(@typescript-eslint/utils@8.56.1(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3))(@unocss/eslint-plugin@66.6.0(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3))(@vue/compiler-sfc@3.5.29)(eslint-plugin-format@2.0.1(eslint@10.0.2(jiti@2.6.1)))(eslint-plugin-react-hooks@7.0.1(eslint@10.0.2(jiti@2.6.1)))(eslint-plugin-react-refresh@0.5.2(eslint@10.0.2(jiti@2.6.1)))(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3)(vitest@3.2.4(@edge-runtime/vm@3.2.0)(@types/debug@4.1.12)(@types/node@25.2.3)(happy-dom@20.6.1(bufferutil@4.1.0))(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))':
+ dependencies:
+ '@antfu/install-pkg': 1.1.0
+ '@clack/prompts': 1.0.1
+ '@eslint-community/eslint-plugin-eslint-comments': 4.6.0(eslint@10.0.2(jiti@2.6.1))
+ '@eslint/markdown': 7.5.1
+ '@stylistic/eslint-plugin': 5.9.0(eslint@10.0.2(jiti@2.6.1))
+ '@typescript-eslint/eslint-plugin': 8.56.1(@typescript-eslint/parser@8.56.1(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3))(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3)
+ '@typescript-eslint/parser': 8.56.1(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3)
+ '@vitest/eslint-plugin': 1.6.9(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3)(vitest@3.2.4(@edge-runtime/vm@3.2.0)(@types/debug@4.1.12)(@types/node@25.2.3)(happy-dom@20.6.1(bufferutil@4.1.0))(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))
+ ansis: 4.2.0
+ cac: 6.7.14
+ eslint: 10.0.2(jiti@2.6.1)
+ eslint-config-flat-gitignore: 2.2.1(eslint@10.0.2(jiti@2.6.1))
+ eslint-flat-config-utils: 3.0.1
+ eslint-merge-processors: 2.0.0(eslint@10.0.2(jiti@2.6.1))
+ eslint-plugin-antfu: 3.2.2(eslint@10.0.2(jiti@2.6.1))
+ eslint-plugin-command: 3.5.2(@typescript-eslint/rule-tester@8.56.1(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3))(@typescript-eslint/typescript-estree@8.56.1(typescript@5.9.3))(@typescript-eslint/utils@8.56.1(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3))(eslint@10.0.2(jiti@2.6.1))
+ eslint-plugin-import-lite: 0.5.2(eslint@10.0.2(jiti@2.6.1))
+ eslint-plugin-jsdoc: 62.7.1(eslint@10.0.2(jiti@2.6.1))
+ eslint-plugin-jsonc: 3.1.1(eslint@10.0.2(jiti@2.6.1))
+ eslint-plugin-n: 17.24.0(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3)
+ eslint-plugin-no-only-tests: 3.3.0
+ eslint-plugin-perfectionist: 5.6.0(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3)
+ eslint-plugin-pnpm: 1.6.0(eslint@10.0.2(jiti@2.6.1))
+ eslint-plugin-regexp: 3.0.0(eslint@10.0.2(jiti@2.6.1))
+ eslint-plugin-toml: 1.3.0(eslint@10.0.2(jiti@2.6.1))
+ eslint-plugin-unicorn: 63.0.0(eslint@10.0.2(jiti@2.6.1))
+ eslint-plugin-unused-imports: 4.4.1(@typescript-eslint/eslint-plugin@8.56.1(@typescript-eslint/parser@8.56.1(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3))(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3))(eslint@10.0.2(jiti@2.6.1))
+ eslint-plugin-vue: 10.8.0(@stylistic/eslint-plugin@5.9.0(eslint@10.0.2(jiti@2.6.1)))(@typescript-eslint/parser@8.56.1(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3))(eslint@10.0.2(jiti@2.6.1))(vue-eslint-parser@10.4.0(eslint@10.0.2(jiti@2.6.1)))
+ eslint-plugin-yml: 3.3.0(eslint@10.0.2(jiti@2.6.1))
+ eslint-processor-vue-blocks: 2.0.0(@vue/compiler-sfc@3.5.29)(eslint@10.0.2(jiti@2.6.1))
+ globals: 17.4.0
+ local-pkg: 1.1.2
+ parse-gitignore: 2.0.0
+ toml-eslint-parser: 1.0.3
+ vue-eslint-parser: 10.4.0(eslint@10.0.2(jiti@2.6.1))
+ yaml-eslint-parser: 2.0.0
+ optionalDependencies:
+ '@eslint-react/eslint-plugin': 2.13.0(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3)
+ '@unocss/eslint-plugin': 66.6.0(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3)
+ eslint-plugin-format: 2.0.1(eslint@10.0.2(jiti@2.6.1))
+ eslint-plugin-react-hooks: 7.0.1(eslint@10.0.2(jiti@2.6.1))
+ eslint-plugin-react-refresh: 0.5.2(eslint@10.0.2(jiti@2.6.1))
+ transitivePeerDependencies:
+ - '@eslint/json'
+ - '@typescript-eslint/rule-tester'
+ - '@typescript-eslint/typescript-estree'
+ - '@typescript-eslint/utils'
+ - '@vue/compiler-sfc'
+ - supports-color
+ - typescript
+ - vitest
'@antfu/install-pkg@1.1.0':
dependencies:
@@ -18047,14 +18303,6 @@ snapshots:
'@babel/core': 7.29.0
'@babel/helper-plugin-utils': 7.28.6
- '@babel/plugin-proposal-private-methods@7.18.6(@babel/core@7.29.0)':
- dependencies:
- '@babel/core': 7.29.0
- '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.29.0)
- '@babel/helper-plugin-utils': 7.28.6
- transitivePeerDependencies:
- - supports-color
-
'@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.29.0)':
dependencies:
'@babel/core': 7.29.0
@@ -18710,7 +18958,7 @@ snapshots:
'@babel/types@8.0.0-rc.1':
dependencies:
'@babel/helper-string-parser': 8.0.0-rc.2
- '@babel/helper-validator-identifier': 8.0.0-rc.1
+ '@babel/helper-validator-identifier': 8.0.0-rc.2
'@babel/types@8.0.0-rc.2':
dependencies:
@@ -18801,12 +19049,23 @@ snapshots:
picocolors: 1.1.1
sisteransi: 1.0.5
+ '@clack/core@1.0.1':
+ dependencies:
+ picocolors: 1.1.1
+ sisteransi: 1.0.5
+
'@clack/prompts@0.8.2':
dependencies:
'@clack/core': 0.3.5
picocolors: 1.1.1
sisteransi: 1.0.5
+ '@clack/prompts@1.0.1':
+ dependencies:
+ '@clack/core': 1.0.1
+ picocolors: 1.1.1
+ sisteransi: 1.0.5
+
'@cloudflare/kv-asset-handler@0.4.2': {}
'@cloudflare/unenv-preset@2.14.0(unenv@2.0.0-rc.24)(workerd@1.20260219.0)':
@@ -18866,7 +19125,7 @@ snapshots:
'@code-inspector/core@1.2.10':
dependencies:
- '@vue/compiler-dom': 3.5.28
+ '@vue/compiler-dom': 3.5.29
chalk: 4.1.2
dotenv: 16.6.1
launch-ide: 1.2.0
@@ -18876,8 +19135,8 @@ snapshots:
'@code-inspector/core@1.4.2':
dependencies:
- '@vue/compiler-dom': 3.5.28
- chalk: 4.1.1
+ '@vue/compiler-dom': 3.5.29
+ chalk: 4.1.2
dotenv: 16.6.1
launch-ide: 1.4.0
portfinder: 1.0.38
@@ -18964,8 +19223,8 @@ snapshots:
'@develar/schema-utils@2.6.5':
dependencies:
- ajv: 6.12.6
- ajv-keywords: 3.5.2(ajv@6.12.6)
+ ajv: 6.14.0
+ ajv-keywords: 3.5.2(ajv@6.14.0)
'@dnd-kit/accessibility@3.1.1(react@19.1.0)':
dependencies:
@@ -18994,6 +19253,12 @@ snapshots:
'@dominicstop/ts-event-emitter@1.1.0': {}
+ '@dprint/formatter@0.5.1': {}
+
+ '@dprint/markdown@0.21.1': {}
+
+ '@dprint/toml@0.7.0': {}
+
'@drizzle-team/brocli@0.10.2': {}
'@edge-runtime/format@2.2.1': {}
@@ -19503,13 +19768,15 @@ snapshots:
'@epic-web/invariant@1.0.0': {}
- '@es-joy/jsdoccomment@0.78.0':
+ '@es-joy/jsdoccomment@0.84.0':
dependencies:
'@types/estree': 1.0.8
- '@typescript-eslint/types': 8.56.0
- comment-parser: 1.4.1
+ '@typescript-eslint/types': 8.56.1
+ comment-parser: 1.4.5
esquery: 1.7.0
- jsdoc-type-pratt-parser: 7.0.0
+ jsdoc-type-pratt-parser: 7.1.1
+
+ '@es-joy/resolve.exports@1.2.0': {}
'@esbuild-kit/core-utils@3.3.2':
dependencies:
@@ -19821,216 +20088,103 @@ snapshots:
'@esbuild/win32-x64@0.27.3':
optional: true
- '@eslint-community/eslint-utils@4.9.1(eslint@9.27.0(jiti@2.6.1))':
+ '@eslint-community/eslint-plugin-eslint-comments@4.6.0(eslint@10.0.2(jiti@2.6.1))':
dependencies:
- eslint: 9.27.0(jiti@2.6.1)
- eslint-visitor-keys: 3.4.3
+ escape-string-regexp: 4.0.0
+ eslint: 10.0.2(jiti@2.6.1)
+ ignore: 7.0.5
- '@eslint-community/eslint-utils@4.9.1(eslint@9.38.0(jiti@2.6.1))':
+ '@eslint-community/eslint-utils@4.9.1(eslint@10.0.2(jiti@2.6.1))':
dependencies:
- eslint: 9.38.0(jiti@2.6.1)
+ eslint: 10.0.2(jiti@2.6.1)
eslint-visitor-keys: 3.4.3
- '@eslint-community/eslint-utils@4.9.1(eslint@9.39.1(jiti@2.6.1))':
+ '@eslint-community/eslint-utils@4.9.1(eslint@9.27.0(jiti@2.6.1))':
dependencies:
- eslint: 9.39.1(jiti@2.6.1)
+ eslint: 9.27.0(jiti@2.6.1)
eslint-visitor-keys: 3.4.3
'@eslint-community/regexpp@4.12.2': {}
- '@eslint-react/ast@1.53.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)':
- dependencies:
- '@eslint-react/eff': 1.53.1
- '@typescript-eslint/types': 8.56.0
- '@typescript-eslint/typescript-estree': 8.56.0(typescript@5.9.3)
- '@typescript-eslint/utils': 8.56.0(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)
- string-ts: 2.3.1
- ts-pattern: 5.9.0
- transitivePeerDependencies:
- - eslint
- - supports-color
- - typescript
-
- '@eslint-react/ast@1.53.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)':
+ '@eslint-react/ast@2.13.0(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3)':
dependencies:
- '@eslint-react/eff': 1.53.1
- '@typescript-eslint/types': 8.56.0
- '@typescript-eslint/typescript-estree': 8.56.0(typescript@5.9.3)
- '@typescript-eslint/utils': 8.56.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
+ '@eslint-react/eff': 2.13.0
+ '@typescript-eslint/types': 8.56.1
+ '@typescript-eslint/typescript-estree': 8.56.1(typescript@5.9.3)
+ '@typescript-eslint/utils': 8.56.1(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3)
+ eslint: 10.0.2(jiti@2.6.1)
string-ts: 2.3.1
- ts-pattern: 5.9.0
- transitivePeerDependencies:
- - eslint
- - supports-color
- - typescript
-
- '@eslint-react/core@1.53.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)':
- dependencies:
- '@eslint-react/ast': 1.53.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)
- '@eslint-react/eff': 1.53.1
- '@eslint-react/kit': 1.53.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)
- '@eslint-react/shared': 1.53.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)
- '@eslint-react/var': 1.53.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)
- '@typescript-eslint/scope-manager': 8.56.0
- '@typescript-eslint/type-utils': 8.56.0(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)
- '@typescript-eslint/types': 8.56.0
- '@typescript-eslint/utils': 8.56.0(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)
- birecord: 0.1.1
- ts-pattern: 5.9.0
- transitivePeerDependencies:
- - eslint
- - supports-color
- - typescript
-
- '@eslint-react/core@1.53.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)':
- dependencies:
- '@eslint-react/ast': 1.53.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
- '@eslint-react/eff': 1.53.1
- '@eslint-react/kit': 1.53.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
- '@eslint-react/shared': 1.53.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
- '@eslint-react/var': 1.53.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
- '@typescript-eslint/scope-manager': 8.56.0
- '@typescript-eslint/type-utils': 8.56.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
- '@typescript-eslint/types': 8.56.0
- '@typescript-eslint/utils': 8.56.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
- birecord: 0.1.1
- ts-pattern: 5.9.0
- transitivePeerDependencies:
- - eslint
- - supports-color
- - typescript
-
- '@eslint-react/eff@1.53.1': {}
-
- '@eslint-react/eslint-plugin@1.53.1(eslint@9.38.0(jiti@2.6.1))(ts-api-utils@2.4.0(typescript@5.9.3))(typescript@5.9.3)':
- dependencies:
- '@eslint-react/eff': 1.53.1
- '@eslint-react/kit': 1.53.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)
- '@eslint-react/shared': 1.53.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)
- '@typescript-eslint/scope-manager': 8.56.0
- '@typescript-eslint/type-utils': 8.56.0(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)
- '@typescript-eslint/types': 8.56.0
- '@typescript-eslint/utils': 8.56.0(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)
- eslint: 9.38.0(jiti@2.6.1)
- eslint-plugin-react-debug: 1.53.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)
- eslint-plugin-react-dom: 1.53.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)
- eslint-plugin-react-hooks-extra: 1.53.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)
- eslint-plugin-react-naming-convention: 1.53.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)
- eslint-plugin-react-web-api: 1.53.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)
- eslint-plugin-react-x: 1.53.1(eslint@9.38.0(jiti@2.6.1))(ts-api-utils@2.4.0(typescript@5.9.3))(typescript@5.9.3)
- optionalDependencies:
- typescript: 5.9.3
- transitivePeerDependencies:
- - supports-color
- - ts-api-utils
-
- '@eslint-react/eslint-plugin@1.53.1(eslint@9.39.1(jiti@2.6.1))(ts-api-utils@2.4.0(typescript@5.9.3))(typescript@5.9.3)':
- dependencies:
- '@eslint-react/eff': 1.53.1
- '@eslint-react/kit': 1.53.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
- '@eslint-react/shared': 1.53.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
- '@typescript-eslint/scope-manager': 8.56.0
- '@typescript-eslint/type-utils': 8.56.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
- '@typescript-eslint/types': 8.56.0
- '@typescript-eslint/utils': 8.56.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
- eslint: 9.39.1(jiti@2.6.1)
- eslint-plugin-react-debug: 1.53.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
- eslint-plugin-react-dom: 1.53.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
- eslint-plugin-react-hooks-extra: 1.53.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
- eslint-plugin-react-naming-convention: 1.53.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
- eslint-plugin-react-web-api: 1.53.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
- eslint-plugin-react-x: 1.53.1(eslint@9.39.1(jiti@2.6.1))(ts-api-utils@2.4.0(typescript@5.9.3))(typescript@5.9.3)
- optionalDependencies:
typescript: 5.9.3
transitivePeerDependencies:
- supports-color
- - ts-api-utils
- '@eslint-react/kit@1.53.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)':
+ '@eslint-react/core@2.13.0(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3)':
dependencies:
- '@eslint-react/eff': 1.53.1
- '@typescript-eslint/utils': 8.56.0(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)
+ '@eslint-react/ast': 2.13.0(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3)
+ '@eslint-react/eff': 2.13.0
+ '@eslint-react/shared': 2.13.0(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3)
+ '@eslint-react/var': 2.13.0(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3)
+ '@typescript-eslint/scope-manager': 8.56.1
+ '@typescript-eslint/types': 8.56.1
+ '@typescript-eslint/utils': 8.56.1(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3)
+ eslint: 10.0.2(jiti@2.6.1)
ts-pattern: 5.9.0
- zod: 4.3.6
+ typescript: 5.9.3
transitivePeerDependencies:
- - eslint
- supports-color
- - typescript
- '@eslint-react/kit@1.53.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)':
- dependencies:
- '@eslint-react/eff': 1.53.1
- '@typescript-eslint/utils': 8.56.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
- ts-pattern: 5.9.0
- zod: 4.3.6
- transitivePeerDependencies:
- - eslint
- - supports-color
- - typescript
+ '@eslint-react/eff@2.13.0': {}
- '@eslint-react/shared@1.53.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)':
+ '@eslint-react/eslint-plugin@2.13.0(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3)':
dependencies:
- '@eslint-react/eff': 1.53.1
- '@eslint-react/kit': 1.53.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)
- '@typescript-eslint/utils': 8.56.0(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)
- ts-pattern: 5.9.0
- zod: 4.3.6
+ '@eslint-react/eff': 2.13.0
+ '@eslint-react/shared': 2.13.0(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3)
+ '@typescript-eslint/scope-manager': 8.56.1
+ '@typescript-eslint/type-utils': 8.56.1(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3)
+ '@typescript-eslint/types': 8.56.1
+ '@typescript-eslint/utils': 8.56.1(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3)
+ eslint: 10.0.2(jiti@2.6.1)
+ eslint-plugin-react-dom: 2.13.0(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3)
+ eslint-plugin-react-hooks-extra: 2.13.0(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3)
+ eslint-plugin-react-naming-convention: 2.13.0(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3)
+ eslint-plugin-react-rsc: 2.13.0(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3)
+ eslint-plugin-react-web-api: 2.13.0(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3)
+ eslint-plugin-react-x: 2.13.0(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3)
+ ts-api-utils: 2.4.0(typescript@5.9.3)
+ typescript: 5.9.3
transitivePeerDependencies:
- - eslint
- supports-color
- - typescript
- '@eslint-react/shared@1.53.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)':
+ '@eslint-react/shared@2.13.0(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3)':
dependencies:
- '@eslint-react/eff': 1.53.1
- '@eslint-react/kit': 1.53.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
- '@typescript-eslint/utils': 8.56.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
- ts-pattern: 5.9.0
- zod: 4.3.6
- transitivePeerDependencies:
- - eslint
- - supports-color
- - typescript
-
- '@eslint-react/var@1.53.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)':
- dependencies:
- '@eslint-react/ast': 1.53.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)
- '@eslint-react/eff': 1.53.1
- '@typescript-eslint/scope-manager': 8.56.0
- '@typescript-eslint/types': 8.56.0
- '@typescript-eslint/utils': 8.56.0(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)
- string-ts: 2.3.1
+ '@eslint-react/eff': 2.13.0
+ '@typescript-eslint/utils': 8.56.1(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3)
+ eslint: 10.0.2(jiti@2.6.1)
ts-pattern: 5.9.0
+ typescript: 5.9.3
+ zod: 3.25.76
transitivePeerDependencies:
- - eslint
- supports-color
- - typescript
- '@eslint-react/var@1.53.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)':
+ '@eslint-react/var@2.13.0(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3)':
dependencies:
- '@eslint-react/ast': 1.53.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
- '@eslint-react/eff': 1.53.1
- '@typescript-eslint/scope-manager': 8.56.0
- '@typescript-eslint/types': 8.56.0
- '@typescript-eslint/utils': 8.56.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
- string-ts: 2.3.1
+ '@eslint-react/ast': 2.13.0(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3)
+ '@eslint-react/eff': 2.13.0
+ '@eslint-react/shared': 2.13.0(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3)
+ '@typescript-eslint/scope-manager': 8.56.1
+ '@typescript-eslint/types': 8.56.1
+ '@typescript-eslint/utils': 8.56.1(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3)
+ eslint: 10.0.2(jiti@2.6.1)
ts-pattern: 5.9.0
+ typescript: 5.9.3
transitivePeerDependencies:
- - eslint
- supports-color
- - typescript
- '@eslint/compat@1.4.1(eslint@9.38.0(jiti@2.6.1))':
+ '@eslint/compat@2.0.2(eslint@10.0.2(jiti@2.6.1))':
dependencies:
- '@eslint/core': 0.17.0
- optionalDependencies:
- eslint: 9.38.0(jiti@2.6.1)
-
- '@eslint/compat@1.4.1(eslint@9.39.1(jiti@2.6.1))':
- dependencies:
- '@eslint/core': 0.17.0
+ '@eslint/core': 1.1.0
optionalDependencies:
- eslint: 9.39.1(jiti@2.6.1)
+ eslint: 10.0.2(jiti@2.6.1)
'@eslint/config-array@0.20.1':
dependencies:
@@ -20040,19 +20194,19 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@eslint/config-array@0.21.1':
+ '@eslint/config-array@0.23.2':
dependencies:
- '@eslint/object-schema': 2.1.7
+ '@eslint/object-schema': 3.0.2
debug: 4.4.3(supports-color@8.1.1)
- minimatch: 3.1.2
+ minimatch: 10.2.4
transitivePeerDependencies:
- supports-color
'@eslint/config-helpers@0.2.3': {}
- '@eslint/config-helpers@0.4.2':
+ '@eslint/config-helpers@0.5.2':
dependencies:
- '@eslint/core': 0.17.0
+ '@eslint/core': 1.1.0
'@eslint/core@0.14.0':
dependencies:
@@ -20062,17 +20216,22 @@ snapshots:
dependencies:
'@types/json-schema': 7.0.15
- '@eslint/core@0.16.0':
+ '@eslint/core@0.17.0':
dependencies:
'@types/json-schema': 7.0.15
- '@eslint/core@0.17.0':
+ '@eslint/core@1.1.0':
dependencies:
'@types/json-schema': 7.0.15
+ '@eslint/css-tree@3.6.9':
+ dependencies:
+ mdn-data: 2.23.0
+ source-map-js: 1.2.1
+
'@eslint/eslintrc@3.3.3':
dependencies:
- ajv: 6.12.6
+ ajv: 6.14.0
debug: 4.4.3(supports-color@8.1.1)
espree: 10.4.0
globals: 14.0.0
@@ -20086,14 +20245,24 @@ snapshots:
'@eslint/js@9.27.0': {}
- '@eslint/js@9.38.0': {}
-
- '@eslint/js@9.39.1': {}
-
- '@eslint/js@9.39.2': {}
+ '@eslint/markdown@7.5.1':
+ dependencies:
+ '@eslint/core': 0.17.0
+ '@eslint/plugin-kit': 0.4.1
+ github-slugger: 2.0.0
+ mdast-util-from-markdown: 2.0.2
+ mdast-util-frontmatter: 2.0.1
+ mdast-util-gfm: 3.1.0
+ micromark-extension-frontmatter: 2.0.0
+ micromark-extension-gfm: 3.0.0
+ micromark-util-normalize-identifier: 2.0.1
+ transitivePeerDependencies:
+ - supports-color
'@eslint/object-schema@2.1.7': {}
+ '@eslint/object-schema@3.0.2': {}
+
'@eslint/plugin-kit@0.3.5':
dependencies:
'@eslint/core': 0.15.2
@@ -20104,6 +20273,11 @@ snapshots:
'@eslint/core': 0.17.0
levn: 0.4.1
+ '@eslint/plugin-kit@0.6.0':
+ dependencies:
+ '@eslint/core': 1.1.0
+ levn: 0.4.1
+
'@essentials/memoize-one@1.1.0': {}
'@essentials/one-key-map@1.2.0': {}
@@ -20196,7 +20370,7 @@ snapshots:
'@expo/code-signing-certificates@0.0.5':
dependencies:
- node-forge: 1.3.1
+ node-forge: 1.3.3
nullthrows: 1.1.1
'@expo/code-signing-certificates@0.0.6':
@@ -20515,7 +20689,7 @@ snapshots:
'@expo/pkcs12@0.1.3':
dependencies:
- node-forge: 1.3.1
+ node-forge: 1.3.3
'@expo/plist@0.2.0':
dependencies:
@@ -20603,7 +20777,7 @@ snapshots:
'@segment/loosely-validate-event': 2.0.0
fetch-retry: 4.1.1
md5: 2.3.0
- node-fetch: 2.6.7(encoding@0.1.13)
+ node-fetch: 2.7.0(encoding@0.1.13)
remove-trailing-slash: 0.1.1
uuid: 8.3.2
transitivePeerDependencies:
@@ -20623,14 +20797,14 @@ snapshots:
'@expo/logger': 1.0.221
'@expo/spawn-async': 1.7.2
arg: 5.0.2
- fs-extra: 11.2.0
+ fs-extra: 11.3.3
joi: 17.13.3
jsep: 1.4.0
lodash.clonedeep: 4.5.0
lodash.get: 4.4.2
this-file: 2.0.3
uuid: 9.0.1
- yaml: 2.6.0
+ yaml: 2.8.2
'@expo/sudo-prompt@9.3.2': {}
@@ -21620,7 +21794,20 @@ snapshots:
- bufferutil
- utf-8-validate
- '@ianvs/prettier-plugin-sort-imports@4.4.2(prettier@3.8.1)':
+ '@ianvs/prettier-plugin-sort-imports@4.4.2(@vue/compiler-sfc@3.5.29)(prettier@3.6.2)':
+ dependencies:
+ '@babel/generator': 7.29.1
+ '@babel/parser': 7.29.0
+ '@babel/traverse': 7.29.0
+ '@babel/types': 7.29.0
+ prettier: 3.6.2
+ semver: 7.7.4
+ optionalDependencies:
+ '@vue/compiler-sfc': 3.5.29
+ transitivePeerDependencies:
+ - supports-color
+
+ '@ianvs/prettier-plugin-sort-imports@4.4.2(@vue/compiler-sfc@3.5.29)(prettier@3.8.1)':
dependencies:
'@babel/generator': 7.29.1
'@babel/parser': 7.29.0
@@ -21628,8 +21815,11 @@ snapshots:
'@babel/types': 7.29.0
prettier: 3.8.1
semver: 7.7.4
+ optionalDependencies:
+ '@vue/compiler-sfc': 3.5.29
transitivePeerDependencies:
- supports-color
+ optional: true
'@iconify-json/logos@1.2.10':
dependencies:
@@ -21664,7 +21854,7 @@ snapshots:
'@iconify/types': 2.0.0
'@iconify/utils': 2.3.0
'@types/tar': 6.1.13
- axios: 1.13.0
+ axios: 1.13.0(debug@4.4.3)
cheerio: 1.0.0
domhandler: 5.0.3
extract-zip: 2.0.1
@@ -21870,14 +22060,14 @@ snapshots:
'@img/sharp-win32-x64@0.34.5':
optional: true
- '@innei/prettier@1.0.0':
+ '@innei/prettier@1.0.0(@vue/compiler-sfc@3.5.29)':
dependencies:
- '@ianvs/prettier-plugin-sort-imports': 4.4.2(prettier@3.8.1)
+ '@ianvs/prettier-plugin-sort-imports': 4.4.2(@vue/compiler-sfc@3.5.29)(prettier@3.6.2)
prettier: 3.8.1
prettier-package-json: 2.8.0
prettier-plugin-autocorrect: 0.4.3(prettier@3.8.1)
prettier-plugin-sh: 0.18.0(prettier@3.8.1)
- prettier-plugin-tailwindcss: 0.6.14(@ianvs/prettier-plugin-sort-imports@4.4.2(prettier@3.8.1))(prettier@3.8.1)
+ prettier-plugin-tailwindcss: 0.6.14(@ianvs/prettier-plugin-sort-imports@4.4.2(@vue/compiler-sfc@3.5.29)(prettier@3.8.1))(prettier@3.8.1)
transitivePeerDependencies:
- '@prettier/plugin-hermes'
- '@prettier/plugin-oxc'
@@ -22394,13 +22584,6 @@ snapshots:
'@mozilla/readability@0.6.0(patch_hash=61709486ef07e9c8175a4b3f19f1aa4e2a1a75a3c557643c574d6cdacd6dd959)': {}
- '@napi-rs/wasm-runtime@0.2.12':
- dependencies:
- '@emnapi/core': 1.8.1
- '@emnapi/runtime': 1.8.1
- '@tybys/wasm-util': 0.10.1
- optional: true
-
'@napi-rs/wasm-runtime@1.1.1':
dependencies:
'@emnapi/core': 1.8.1
@@ -22667,8 +22850,67 @@ snapshots:
'@opentelemetry/api@1.9.0': {}
+ '@ota-meshi/ast-token-store@0.3.0': {}
+
'@oxc-project/types@0.112.0': {}
+ '@oxfmt/binding-android-arm-eabi@0.35.0':
+ optional: true
+
+ '@oxfmt/binding-android-arm64@0.35.0':
+ optional: true
+
+ '@oxfmt/binding-darwin-arm64@0.35.0':
+ optional: true
+
+ '@oxfmt/binding-darwin-x64@0.35.0':
+ optional: true
+
+ '@oxfmt/binding-freebsd-x64@0.35.0':
+ optional: true
+
+ '@oxfmt/binding-linux-arm-gnueabihf@0.35.0':
+ optional: true
+
+ '@oxfmt/binding-linux-arm-musleabihf@0.35.0':
+ optional: true
+
+ '@oxfmt/binding-linux-arm64-gnu@0.35.0':
+ optional: true
+
+ '@oxfmt/binding-linux-arm64-musl@0.35.0':
+ optional: true
+
+ '@oxfmt/binding-linux-ppc64-gnu@0.35.0':
+ optional: true
+
+ '@oxfmt/binding-linux-riscv64-gnu@0.35.0':
+ optional: true
+
+ '@oxfmt/binding-linux-riscv64-musl@0.35.0':
+ optional: true
+
+ '@oxfmt/binding-linux-s390x-gnu@0.35.0':
+ optional: true
+
+ '@oxfmt/binding-linux-x64-gnu@0.35.0':
+ optional: true
+
+ '@oxfmt/binding-linux-x64-musl@0.35.0':
+ optional: true
+
+ '@oxfmt/binding-openharmony-arm64@0.35.0':
+ optional: true
+
+ '@oxfmt/binding-win32-arm64-msvc@0.35.0':
+ optional: true
+
+ '@oxfmt/binding-win32-ia32-msvc@0.35.0':
+ optional: true
+
+ '@oxfmt/binding-win32-x64-msvc@0.35.0':
+ optional: true
+
'@peculiar/asn1-android@2.6.0':
dependencies:
'@peculiar/asn1-schema': 2.6.0
@@ -24270,6 +24512,8 @@ snapshots:
'@sinclair/typebox@0.27.10': {}
+ '@sindresorhus/base62@1.0.0': {}
+
'@sindresorhus/is@4.6.0': {}
'@sindresorhus/is@7.2.0': {}
@@ -24307,21 +24551,11 @@ snapshots:
'@standard-schema/utils@0.3.0': {}
- '@stylistic/eslint-plugin@5.8.0(eslint@9.38.0(jiti@2.6.1))':
- dependencies:
- '@eslint-community/eslint-utils': 4.9.1(eslint@9.38.0(jiti@2.6.1))
- '@typescript-eslint/types': 8.56.0
- eslint: 9.38.0(jiti@2.6.1)
- eslint-visitor-keys: 4.2.1
- espree: 10.4.0
- estraverse: 5.3.0
- picomatch: 4.0.3
-
- '@stylistic/eslint-plugin@5.8.0(eslint@9.39.1(jiti@2.6.1))':
+ '@stylistic/eslint-plugin@5.9.0(eslint@10.0.2(jiti@2.6.1))':
dependencies:
- '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.1(jiti@2.6.1))
- '@typescript-eslint/types': 8.56.0
- eslint: 9.39.1(jiti@2.6.1)
+ '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.2(jiti@2.6.1))
+ '@typescript-eslint/types': 8.56.1
+ eslint: 10.0.2(jiti@2.6.1)
eslint-visitor-keys: 4.2.1
espree: 10.4.0
estraverse: 5.3.0
@@ -24346,9 +24580,10 @@ snapshots:
dependencies:
defer-to-connect: 2.0.1
- '@t3-oss/env-core@0.13.10(typescript@5.9.3)(zod@3.25.76)':
+ '@t3-oss/env-core@0.13.10(typescript@5.9.3)(valibot@1.2.0(typescript@5.9.3))(zod@3.25.76)':
optionalDependencies:
typescript: 5.9.3
+ valibot: 1.2.0(typescript@5.9.3)
zod: 3.25.76
'@tailwindcss/container-queries@0.1.1(tailwindcss@3.4.17(ts-node@10.9.2(@types/node@25.2.3)(typescript@5.9.3)))':
@@ -24533,13 +24768,13 @@ snapshots:
'@volar/language-core': 2.4.28
'@volar/language-hub': 0.0.1
'@volar/typescript': 2.4.28
- minimatch: 10.2.1
+ minimatch: 10.2.4
typescript: 5.9.3
'@tsslint/config@2.0.7(typescript@5.9.3)':
dependencies:
'@tsslint/types': 2.0.7
- minimatch: 10.2.1
+ minimatch: 10.2.4
ts-api-utils: 2.4.0(typescript@5.9.3)
transitivePeerDependencies:
- typescript
@@ -24548,12 +24783,12 @@ snapshots:
dependencies:
'@tsslint/types': 2.0.7
esbuild: 0.27.3
- minimatch: 10.2.1
+ minimatch: 10.2.4
'@tsslint/eslint@2.0.7(jiti@2.6.1)(typescript@5.9.3)':
dependencies:
'@tsslint/config': 2.0.7(typescript@5.9.3)
- '@typescript-eslint/parser': 8.56.0(eslint@9.27.0(jiti@2.6.1))(typescript@5.9.3)
+ '@typescript-eslint/parser': 8.56.1(eslint@9.27.0(jiti@2.6.1))(typescript@5.9.3)
eslint: 9.27.0(jiti@2.6.1)
transitivePeerDependencies:
- jiti
@@ -24650,6 +24885,8 @@ snapshots:
'@types/estree': 1.0.8
'@types/json-schema': 7.0.15
+ '@types/esrecurse@4.3.1': {}
+
'@types/estree-jsx@1.0.5':
dependencies:
'@types/estree': 1.0.8
@@ -24814,31 +25051,15 @@ snapshots:
'@types/node': 25.2.3
optional: true
- '@typescript-eslint/eslint-plugin@8.56.0(@typescript-eslint/parser@8.56.0(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)':
- dependencies:
- '@eslint-community/regexpp': 4.12.2
- '@typescript-eslint/parser': 8.56.0(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)
- '@typescript-eslint/scope-manager': 8.56.0
- '@typescript-eslint/type-utils': 8.56.0(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)
- '@typescript-eslint/utils': 8.56.0(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)
- '@typescript-eslint/visitor-keys': 8.56.0
- eslint: 9.38.0(jiti@2.6.1)
- ignore: 7.0.5
- natural-compare: 1.4.0
- ts-api-utils: 2.4.0(typescript@5.9.3)
- typescript: 5.9.3
- transitivePeerDependencies:
- - supports-color
-
- '@typescript-eslint/eslint-plugin@8.56.0(@typescript-eslint/parser@8.56.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)':
+ '@typescript-eslint/eslint-plugin@8.56.1(@typescript-eslint/parser@8.56.1(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3))(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3)':
dependencies:
'@eslint-community/regexpp': 4.12.2
- '@typescript-eslint/parser': 8.56.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
- '@typescript-eslint/scope-manager': 8.56.0
- '@typescript-eslint/type-utils': 8.56.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
- '@typescript-eslint/utils': 8.56.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
- '@typescript-eslint/visitor-keys': 8.56.0
- eslint: 9.39.1(jiti@2.6.1)
+ '@typescript-eslint/parser': 8.56.1(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3)
+ '@typescript-eslint/scope-manager': 8.56.1
+ '@typescript-eslint/type-utils': 8.56.1(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3)
+ '@typescript-eslint/utils': 8.56.1(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3)
+ '@typescript-eslint/visitor-keys': 8.56.1
+ eslint: 10.0.2(jiti@2.6.1)
ignore: 7.0.5
natural-compare: 1.4.0
ts-api-utils: 2.4.0(typescript@5.9.3)
@@ -24846,94 +25067,84 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/parser@8.56.0(eslint@9.27.0(jiti@2.6.1))(typescript@5.9.3)':
+ '@typescript-eslint/parser@8.56.1(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3)':
dependencies:
- '@typescript-eslint/scope-manager': 8.56.0
- '@typescript-eslint/types': 8.56.0
- '@typescript-eslint/typescript-estree': 8.56.0(typescript@5.9.3)
- '@typescript-eslint/visitor-keys': 8.56.0
+ '@typescript-eslint/scope-manager': 8.56.1
+ '@typescript-eslint/types': 8.56.1
+ '@typescript-eslint/typescript-estree': 8.56.1(typescript@5.9.3)
+ '@typescript-eslint/visitor-keys': 8.56.1
debug: 4.4.3(supports-color@8.1.1)
- eslint: 9.27.0(jiti@2.6.1)
+ eslint: 10.0.2(jiti@2.6.1)
typescript: 5.9.3
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/parser@8.56.0(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)':
+ '@typescript-eslint/parser@8.56.1(eslint@9.27.0(jiti@2.6.1))(typescript@5.9.3)':
dependencies:
- '@typescript-eslint/scope-manager': 8.56.0
- '@typescript-eslint/types': 8.56.0
- '@typescript-eslint/typescript-estree': 8.56.0(typescript@5.9.3)
- '@typescript-eslint/visitor-keys': 8.56.0
+ '@typescript-eslint/scope-manager': 8.56.1
+ '@typescript-eslint/types': 8.56.1
+ '@typescript-eslint/typescript-estree': 8.56.1(typescript@5.9.3)
+ '@typescript-eslint/visitor-keys': 8.56.1
debug: 4.4.3(supports-color@8.1.1)
- eslint: 9.38.0(jiti@2.6.1)
+ eslint: 9.27.0(jiti@2.6.1)
typescript: 5.9.3
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/parser@8.56.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)':
+ '@typescript-eslint/project-service@8.56.1(typescript@5.9.3)':
dependencies:
- '@typescript-eslint/scope-manager': 8.56.0
- '@typescript-eslint/types': 8.56.0
- '@typescript-eslint/typescript-estree': 8.56.0(typescript@5.9.3)
- '@typescript-eslint/visitor-keys': 8.56.0
+ '@typescript-eslint/tsconfig-utils': 8.56.1(typescript@5.9.3)
+ '@typescript-eslint/types': 8.56.1
debug: 4.4.3(supports-color@8.1.1)
- eslint: 9.39.1(jiti@2.6.1)
typescript: 5.9.3
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/project-service@8.56.0(typescript@5.9.3)':
+ '@typescript-eslint/rule-tester@8.56.1(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3)':
dependencies:
- '@typescript-eslint/tsconfig-utils': 8.56.0(typescript@5.9.3)
- '@typescript-eslint/types': 8.56.0
- debug: 4.4.3(supports-color@8.1.1)
- typescript: 5.9.3
+ '@typescript-eslint/parser': 8.56.1(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3)
+ '@typescript-eslint/typescript-estree': 8.56.1(typescript@5.9.3)
+ '@typescript-eslint/utils': 8.56.1(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3)
+ ajv: 6.14.0
+ eslint: 10.0.2(jiti@2.6.1)
+ json-stable-stringify-without-jsonify: 1.0.1
+ lodash.merge: 4.6.2
+ semver: 7.7.4
transitivePeerDependencies:
- supports-color
+ - typescript
- '@typescript-eslint/scope-manager@8.56.0':
- dependencies:
- '@typescript-eslint/types': 8.56.0
- '@typescript-eslint/visitor-keys': 8.56.0
-
- '@typescript-eslint/tsconfig-utils@8.56.0(typescript@5.9.3)':
+ '@typescript-eslint/scope-manager@8.56.1':
dependencies:
- typescript: 5.9.3
+ '@typescript-eslint/types': 8.56.1
+ '@typescript-eslint/visitor-keys': 8.56.1
- '@typescript-eslint/type-utils@8.56.0(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)':
+ '@typescript-eslint/tsconfig-utils@8.56.1(typescript@5.9.3)':
dependencies:
- '@typescript-eslint/types': 8.56.0
- '@typescript-eslint/typescript-estree': 8.56.0(typescript@5.9.3)
- '@typescript-eslint/utils': 8.56.0(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)
- debug: 4.4.3(supports-color@8.1.1)
- eslint: 9.38.0(jiti@2.6.1)
- ts-api-utils: 2.4.0(typescript@5.9.3)
typescript: 5.9.3
- transitivePeerDependencies:
- - supports-color
- '@typescript-eslint/type-utils@8.56.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)':
+ '@typescript-eslint/type-utils@8.56.1(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3)':
dependencies:
- '@typescript-eslint/types': 8.56.0
- '@typescript-eslint/typescript-estree': 8.56.0(typescript@5.9.3)
- '@typescript-eslint/utils': 8.56.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
+ '@typescript-eslint/types': 8.56.1
+ '@typescript-eslint/typescript-estree': 8.56.1(typescript@5.9.3)
+ '@typescript-eslint/utils': 8.56.1(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3)
debug: 4.4.3(supports-color@8.1.1)
- eslint: 9.39.1(jiti@2.6.1)
+ eslint: 10.0.2(jiti@2.6.1)
ts-api-utils: 2.4.0(typescript@5.9.3)
typescript: 5.9.3
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/types@8.56.0': {}
+ '@typescript-eslint/types@8.56.1': {}
- '@typescript-eslint/typescript-estree@8.56.0(typescript@5.9.3)':
+ '@typescript-eslint/typescript-estree@8.56.1(typescript@5.9.3)':
dependencies:
- '@typescript-eslint/project-service': 8.56.0(typescript@5.9.3)
- '@typescript-eslint/tsconfig-utils': 8.56.0(typescript@5.9.3)
- '@typescript-eslint/types': 8.56.0
- '@typescript-eslint/visitor-keys': 8.56.0
+ '@typescript-eslint/project-service': 8.56.1(typescript@5.9.3)
+ '@typescript-eslint/tsconfig-utils': 8.56.1(typescript@5.9.3)
+ '@typescript-eslint/types': 8.56.1
+ '@typescript-eslint/visitor-keys': 8.56.1
debug: 4.4.3(supports-color@8.1.1)
- minimatch: 9.0.5
+ minimatch: 10.2.4
semver: 7.7.4
tinyglobby: 0.2.15
ts-api-utils: 2.4.0(typescript@5.9.3)
@@ -24941,32 +25152,21 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/utils@8.56.0(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)':
- dependencies:
- '@eslint-community/eslint-utils': 4.9.1(eslint@9.38.0(jiti@2.6.1))
- '@typescript-eslint/scope-manager': 8.56.0
- '@typescript-eslint/types': 8.56.0
- '@typescript-eslint/typescript-estree': 8.56.0(typescript@5.9.3)
- eslint: 9.38.0(jiti@2.6.1)
- typescript: 5.9.3
- transitivePeerDependencies:
- - supports-color
-
- '@typescript-eslint/utils@8.56.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)':
+ '@typescript-eslint/utils@8.56.1(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3)':
dependencies:
- '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.1(jiti@2.6.1))
- '@typescript-eslint/scope-manager': 8.56.0
- '@typescript-eslint/types': 8.56.0
- '@typescript-eslint/typescript-estree': 8.56.0(typescript@5.9.3)
- eslint: 9.39.1(jiti@2.6.1)
+ '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.2(jiti@2.6.1))
+ '@typescript-eslint/scope-manager': 8.56.1
+ '@typescript-eslint/types': 8.56.1
+ '@typescript-eslint/typescript-estree': 8.56.1(typescript@5.9.3)
+ eslint: 10.0.2(jiti@2.6.1)
typescript: 5.9.3
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/visitor-keys@8.56.0':
+ '@typescript-eslint/visitor-keys@8.56.1':
dependencies:
- '@typescript-eslint/types': 8.56.0
- eslint-visitor-keys: 5.0.0
+ '@typescript-eslint/types': 8.56.1
+ eslint-visitor-keys: 5.0.1
'@ungap/structured-clone@1.3.0': {}
@@ -24976,41 +25176,14 @@ snapshots:
dependencies:
'@unocss/core': 66.6.0
unconfig: 7.5.0
+ optional: true
- '@unocss/core@66.6.0': {}
-
- '@unocss/eslint-config@66.6.0(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)':
- dependencies:
- '@unocss/eslint-plugin': 66.6.0(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)
- transitivePeerDependencies:
- - eslint
- - supports-color
- - typescript
-
- '@unocss/eslint-config@66.6.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)':
- dependencies:
- '@unocss/eslint-plugin': 66.6.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
- transitivePeerDependencies:
- - eslint
- - supports-color
- - typescript
-
- '@unocss/eslint-plugin@66.6.0(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)':
- dependencies:
- '@typescript-eslint/utils': 8.56.0(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)
- '@unocss/config': 66.6.0
- '@unocss/core': 66.6.0
- '@unocss/rule-utils': 66.6.0
- magic-string: 0.30.21
- synckit: 0.11.12
- transitivePeerDependencies:
- - eslint
- - supports-color
- - typescript
+ '@unocss/core@66.6.0':
+ optional: true
- '@unocss/eslint-plugin@66.6.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)':
+ '@unocss/eslint-plugin@66.6.0(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3)':
dependencies:
- '@typescript-eslint/utils': 8.56.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
+ '@typescript-eslint/utils': 8.56.1(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3)
'@unocss/config': 66.6.0
'@unocss/core': 66.6.0
'@unocss/rule-utils': 66.6.0
@@ -25020,11 +25193,13 @@ snapshots:
- eslint
- supports-color
- typescript
+ optional: true
'@unocss/rule-utils@66.6.0':
dependencies:
'@unocss/core': 66.6.0
magic-string: 0.30.21
+ optional: true
'@unpic/core@1.0.3':
dependencies:
@@ -25038,65 +25213,6 @@ snapshots:
optionalDependencies:
next: 16.0.11(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
- '@unrs/resolver-binding-android-arm-eabi@1.11.1':
- optional: true
-
- '@unrs/resolver-binding-android-arm64@1.11.1':
- optional: true
-
- '@unrs/resolver-binding-darwin-arm64@1.11.1':
- optional: true
-
- '@unrs/resolver-binding-darwin-x64@1.11.1':
- optional: true
-
- '@unrs/resolver-binding-freebsd-x64@1.11.1':
- optional: true
-
- '@unrs/resolver-binding-linux-arm-gnueabihf@1.11.1':
- optional: true
-
- '@unrs/resolver-binding-linux-arm-musleabihf@1.11.1':
- optional: true
-
- '@unrs/resolver-binding-linux-arm64-gnu@1.11.1':
- optional: true
-
- '@unrs/resolver-binding-linux-arm64-musl@1.11.1':
- optional: true
-
- '@unrs/resolver-binding-linux-ppc64-gnu@1.11.1':
- optional: true
-
- '@unrs/resolver-binding-linux-riscv64-gnu@1.11.1':
- optional: true
-
- '@unrs/resolver-binding-linux-riscv64-musl@1.11.1':
- optional: true
-
- '@unrs/resolver-binding-linux-s390x-gnu@1.11.1':
- optional: true
-
- '@unrs/resolver-binding-linux-x64-gnu@1.11.1':
- optional: true
-
- '@unrs/resolver-binding-linux-x64-musl@1.11.1':
- optional: true
-
- '@unrs/resolver-binding-wasm32-wasi@1.11.1':
- dependencies:
- '@napi-rs/wasm-runtime': 0.2.12
- optional: true
-
- '@unrs/resolver-binding-win32-arm64-msvc@1.11.1':
- optional: true
-
- '@unrs/resolver-binding-win32-ia32-msvc@1.11.1':
- optional: true
-
- '@unrs/resolver-binding-win32-x64-msvc@1.11.1':
- optional: true
-
'@urql/core@4.0.11(graphql@16.8.1)':
dependencies:
'@0no-co/graphql.web': 1.2.0(graphql@16.8.1)
@@ -25113,7 +25229,7 @@ snapshots:
'@urql/exchange-retry@1.2.0(graphql@16.8.1)':
dependencies:
- '@urql/core': 4.0.11(graphql@16.8.1)
+ '@urql/core': 5.2.0(graphql@16.8.1)
wonka: 6.3.5
transitivePeerDependencies:
- graphql
@@ -25130,6 +25246,10 @@ snapshots:
'@use-gesture/core': 10.3.1
react: 19.1.0
+ '@valibot/to-json-schema@1.5.0(valibot@1.2.0(typescript@5.9.3))':
+ dependencies:
+ valibot: 1.2.0(typescript@5.9.3)
+
'@vercel/build-utils@13.4.0':
dependencies:
'@vercel/python-analysis': 0.4.1
@@ -25140,8 +25260,8 @@ snapshots:
dependencies:
'@mapbox/node-pre-gyp': 2.0.3(encoding@0.1.13)
'@rollup/pluginutils': 5.3.0(rollup@4.57.1)
- acorn: 8.15.0
- acorn-import-attributes: 1.9.5(acorn@8.15.0)
+ acorn: 8.16.0
+ acorn-import-attributes: 1.9.5(acorn@8.16.0)
async-sema: 3.1.1
bindings: 1.5.0
estree-walker: 2.0.2
@@ -25324,6 +25444,17 @@ snapshots:
optionalDependencies:
react-server-dom-webpack: 19.2.4(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(webpack@5.105.2)
+ '@vitest/eslint-plugin@1.6.9(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3)(vitest@3.2.4(@edge-runtime/vm@3.2.0)(@types/debug@4.1.12)(@types/node@25.2.3)(happy-dom@20.6.1(bufferutil@4.1.0))(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))':
+ dependencies:
+ '@typescript-eslint/scope-manager': 8.56.1
+ '@typescript-eslint/utils': 8.56.1(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3)
+ eslint: 10.0.2(jiti@2.6.1)
+ optionalDependencies:
+ typescript: 5.9.3
+ vitest: 3.2.4(@edge-runtime/vm@3.2.0)(@types/debug@4.1.12)(@types/node@25.2.3)(happy-dom@20.6.1(bufferutil@4.1.0))(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
+ transitivePeerDependencies:
+ - supports-color
+
'@vitest/expect@3.2.4':
dependencies:
'@types/chai': 5.2.3
@@ -25384,20 +25515,37 @@ snapshots:
'@vscode/vscode-languagedetection@1.0.22': {}
- '@vue/compiler-core@3.5.28':
+ '@vue/compiler-core@3.5.29':
dependencies:
'@babel/parser': 7.29.0
- '@vue/shared': 3.5.28
+ '@vue/shared': 3.5.29
entities: 7.0.1
estree-walker: 2.0.2
source-map-js: 1.2.1
- '@vue/compiler-dom@3.5.28':
+ '@vue/compiler-dom@3.5.29':
+ dependencies:
+ '@vue/compiler-core': 3.5.29
+ '@vue/shared': 3.5.29
+
+ '@vue/compiler-sfc@3.5.29':
+ dependencies:
+ '@babel/parser': 7.29.0
+ '@vue/compiler-core': 3.5.29
+ '@vue/compiler-dom': 3.5.29
+ '@vue/compiler-ssr': 3.5.29
+ '@vue/shared': 3.5.29
+ estree-walker: 2.0.2
+ magic-string: 0.30.21
+ postcss: 8.5.6
+ source-map-js: 1.2.1
+
+ '@vue/compiler-ssr@3.5.29':
dependencies:
- '@vue/compiler-core': 3.5.28
- '@vue/shared': 3.5.28
+ '@vue/compiler-dom': 3.5.29
+ '@vue/shared': 3.5.29
- '@vue/shared@3.5.28': {}
+ '@vue/shared@3.5.29': {}
'@webassemblyjs/ast@1.14.1':
dependencies:
@@ -25532,27 +25680,27 @@ snapshots:
mime-types: 2.1.35
negotiator: 0.6.3
- acorn-import-attributes@1.9.5(acorn@8.15.0):
+ acorn-import-attributes@1.9.5(acorn@8.16.0):
dependencies:
- acorn: 8.15.0
+ acorn: 8.16.0
- acorn-import-phases@1.0.4(acorn@8.15.0):
+ acorn-import-phases@1.0.4(acorn@8.16.0):
dependencies:
- acorn: 8.15.0
+ acorn: 8.16.0
- acorn-jsx@5.3.2(acorn@8.15.0):
+ acorn-jsx@5.3.2(acorn@8.16.0):
dependencies:
- acorn: 8.15.0
+ acorn: 8.16.0
acorn-loose@8.5.2:
dependencies:
- acorn: 8.15.0
+ acorn: 8.16.0
acorn-walk@8.3.4:
dependencies:
- acorn: 8.15.0
+ acorn: 8.16.0
- acorn@8.15.0: {}
+ acorn@8.16.0: {}
add-stream@1.0.0: {}
@@ -25617,16 +25765,16 @@ snapshots:
optionalDependencies:
ajv: 8.18.0
- ajv-keywords@3.5.2(ajv@6.12.6):
+ ajv-keywords@3.5.2(ajv@6.14.0):
dependencies:
- ajv: 6.12.6
+ ajv: 6.14.0
ajv-keywords@5.1.0(ajv@8.18.0):
dependencies:
ajv: 8.18.0
fast-deep-equal: 3.1.3
- ajv@6.12.6:
+ ajv@6.14.0:
dependencies:
fast-deep-equal: 3.1.3
fast-json-stable-stringify: 2.1.0
@@ -25796,6 +25944,8 @@ snapshots:
tar-stream: 2.2.0
zip-stream: 4.1.1
+ are-docs-informative@0.0.2: {}
+
arg@4.1.0: {}
arg@4.1.3: {}
@@ -25934,15 +26084,7 @@ snapshots:
await-lock@2.2.2: {}
- axios@1.13.0:
- dependencies:
- follow-redirects: 1.15.11(debug@4.4.3)
- form-data: 4.0.5
- proxy-from-env: 1.1.0
- transitivePeerDependencies:
- - debug
-
- axios@1.13.5(debug@4.4.3):
+ axios@1.13.0(debug@4.4.3):
dependencies:
follow-redirects: 1.15.11(debug@4.4.3)
form-data: 4.0.5
@@ -26650,12 +26792,6 @@ snapshots:
strip-ansi: 6.0.1
wrap-ansi: 7.0.0
- cliui@9.0.1:
- dependencies:
- string-width: 7.2.0
- strip-ansi: 7.1.2
- wrap-ansi: 9.0.2
-
clone-response@1.0.3:
dependencies:
mimic-response: 1.0.1
@@ -26779,8 +26915,6 @@ snapshots:
core-util-is: 1.0.3
esprima: 4.0.1
- comment-parser@1.4.1: {}
-
comment-parser@1.4.5: {}
common-tags@1.8.2: {}
@@ -27265,14 +27399,10 @@ snapshots:
destroy@1.2.0: {}
- detect-indent@7.0.2: {}
-
detect-libc@1.0.3: {}
detect-libc@2.1.2: {}
- detect-newline@4.0.1: {}
-
detect-node-es@1.1.0: {}
detect-node@2.1.0:
@@ -27284,7 +27414,7 @@ snapshots:
didyoumean@1.2.2: {}
- diff-sequences@27.5.1: {}
+ diff-sequences@29.6.3: {}
diff@4.0.4: {}
@@ -27328,7 +27458,7 @@ snapshots:
dependencies:
'@types/plist': 3.0.5
'@types/verror': 1.10.11
- ajv: 6.12.6
+ ajv: 6.14.0
crc: 3.8.0
iconv-corefoundation: 1.1.7
plist: 3.1.0
@@ -27945,605 +28075,379 @@ snapshots:
escape-string-regexp@5.0.0: {}
- eslint-compat-utils@0.6.5(eslint@9.38.0(jiti@2.6.1)):
- dependencies:
- eslint: 9.38.0(jiti@2.6.1)
- semver: 7.7.4
-
- eslint-compat-utils@0.6.5(eslint@9.39.1(jiti@2.6.1)):
+ eslint-compat-utils@0.5.1(eslint@10.0.2(jiti@2.6.1)):
dependencies:
- eslint: 9.39.1(jiti@2.6.1)
+ eslint: 10.0.2(jiti@2.6.1)
semver: 7.7.4
- eslint-config-flat-gitignore@2.1.0(eslint@9.38.0(jiti@2.6.1)):
+ eslint-config-flat-gitignore@2.2.1(eslint@10.0.2(jiti@2.6.1)):
dependencies:
- '@eslint/compat': 1.4.1(eslint@9.38.0(jiti@2.6.1))
- eslint: 9.38.0(jiti@2.6.1)
+ '@eslint/compat': 2.0.2(eslint@10.0.2(jiti@2.6.1))
+ eslint: 10.0.2(jiti@2.6.1)
- eslint-config-flat-gitignore@2.1.0(eslint@9.39.1(jiti@2.6.1)):
+ eslint-config-hyoban@6.0.0(@typescript-eslint/rule-tester@8.56.1(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3))(@typescript-eslint/typescript-estree@8.56.1(typescript@5.9.3))(@typescript-eslint/utils@8.56.1(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3))(@unocss/eslint-plugin@66.6.0(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3))(@vue/compiler-sfc@3.5.29)(eslint@10.0.2(jiti@2.6.1))(tailwindcss@3.4.17(ts-node@10.9.2(@types/node@25.2.3)(typescript@5.9.3)))(typescript@5.9.3)(vitest@3.2.4(@edge-runtime/vm@3.2.0)(@types/debug@4.1.12)(@types/node@25.2.3)(happy-dom@20.6.1(bufferutil@4.1.0))(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)):
dependencies:
- '@eslint/compat': 1.4.1(eslint@9.39.1(jiti@2.6.1))
- eslint: 9.39.1(jiti@2.6.1)
-
- eslint-config-hyoban@4.0.10(@types/estree@1.0.8)(@typescript-eslint/eslint-plugin@8.56.0(@typescript-eslint/parser@8.56.0(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3))(@typescript-eslint/utils@8.56.0(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.38.0(jiti@2.6.1))(tailwindcss@4.1.16)(ts-api-utils@2.4.0(typescript@5.9.3))(typescript@5.9.3):
- dependencies:
- '@eslint-react/eslint-plugin': 1.53.1(eslint@9.38.0(jiti@2.6.1))(ts-api-utils@2.4.0(typescript@5.9.3))(typescript@5.9.3)
- '@eslint/js': 9.39.2
- '@stylistic/eslint-plugin': 5.8.0(eslint@9.38.0(jiti@2.6.1))
- '@typescript-eslint/types': 8.56.0
- '@unocss/eslint-config': 66.6.0(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)
+ '@antfu/eslint-config': 7.6.1(@eslint-react/eslint-plugin@2.13.0(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3))(@typescript-eslint/rule-tester@8.56.1(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3))(@typescript-eslint/typescript-estree@8.56.1(typescript@5.9.3))(@typescript-eslint/utils@8.56.1(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3))(@unocss/eslint-plugin@66.6.0(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3))(@vue/compiler-sfc@3.5.29)(eslint-plugin-format@2.0.1(eslint@10.0.2(jiti@2.6.1)))(eslint-plugin-react-hooks@7.0.1(eslint@10.0.2(jiti@2.6.1)))(eslint-plugin-react-refresh@0.5.2(eslint@10.0.2(jiti@2.6.1)))(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3)(vitest@3.2.4(@edge-runtime/vm@3.2.0)(@types/debug@4.1.12)(@types/node@25.2.3)(happy-dom@20.6.1(bufferutil@4.1.0))(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))
+ '@eslint-react/eslint-plugin': 2.13.0(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3)
defu: 6.1.4
- eslint: 9.38.0(jiti@2.6.1)
- eslint-config-flat-gitignore: 2.1.0(eslint@9.38.0(jiti@2.6.1))
- eslint-plugin-antfu: 3.2.2(eslint@9.38.0(jiti@2.6.1))
- eslint-plugin-command: 3.4.0(eslint@9.38.0(jiti@2.6.1))
- eslint-plugin-hyoban: 0.6.1(eslint@9.38.0(jiti@2.6.1))
- eslint-plugin-import-x: 4.16.1(@typescript-eslint/utils@8.56.0(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.38.0(jiti@2.6.1))
- eslint-plugin-jsonc: 2.21.1(eslint@9.38.0(jiti@2.6.1))
- eslint-plugin-package-json: 0.45.2(@types/estree@1.0.8)(eslint@9.38.0(jiti@2.6.1))(jsonc-eslint-parser@2.4.2)
- eslint-plugin-react-google-translate: 0.1.1(eslint@9.38.0(jiti@2.6.1))
- eslint-plugin-react-hooks: 6.0.0-rc.2(eslint@9.38.0(jiti@2.6.1))
- eslint-plugin-react-refresh: 0.4.26(eslint@9.38.0(jiti@2.6.1))
- eslint-plugin-regexp: 2.10.0(eslint@9.38.0(jiti@2.6.1))
- eslint-plugin-simple-import-sort: 12.1.1(eslint@9.38.0(jiti@2.6.1))
- eslint-plugin-tailwindcss: 4.0.0-beta.0(tailwindcss@4.1.16)
- eslint-plugin-unicorn: 61.0.2(eslint@9.38.0(jiti@2.6.1))
- eslint-plugin-unused-imports: 4.4.1(@typescript-eslint/eslint-plugin@8.56.0(@typescript-eslint/parser@8.56.0(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.38.0(jiti@2.6.1))
- globals: 16.5.0
- jsonc-eslint-parser: 2.4.2
+ eslint-flat-config-utils: 3.0.1
+ eslint-markdown: 0.5.0(eslint@10.0.2(jiti@2.6.1))
+ eslint-plugin-better-tailwindcss: 4.3.1(eslint@10.0.2(jiti@2.6.1))(tailwindcss@3.4.17(ts-node@10.9.2(@types/node@25.2.3)(typescript@5.9.3)))(typescript@5.9.3)
+ eslint-plugin-format: 2.0.1(eslint@10.0.2(jiti@2.6.1))
+ eslint-plugin-hyoban: 0.13.3(eslint@10.0.2(jiti@2.6.1))
+ eslint-plugin-react-hooks: 7.0.1(eslint@10.0.2(jiti@2.6.1))
+ eslint-plugin-react-refresh: 0.5.2(eslint@10.0.2(jiti@2.6.1))
+ eslint-plugin-simple-import-sort: 12.1.1(eslint@10.0.2(jiti@2.6.1))
local-pkg: 1.1.2
- read-package-up: 11.0.0
- typescript-eslint: 8.56.0(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)
- optionalDependencies:
- typescript: 5.9.3
transitivePeerDependencies:
+ - '@angular-eslint/eslint-plugin'
+ - '@angular-eslint/eslint-plugin-template'
+ - '@angular-eslint/template-parser'
- '@eslint/json'
- - '@types/estree'
- - '@typescript-eslint/eslint-plugin'
+ - '@next/eslint-plugin-next'
+ - '@prettier/plugin-xml'
+ - '@typescript-eslint/rule-tester'
+ - '@typescript-eslint/typescript-estree'
- '@typescript-eslint/utils'
- - eslint-import-resolver-node
+ - '@unocss/eslint-plugin'
+ - '@vue/compiler-sfc'
+ - astro-eslint-parser
+ - eslint
+ - eslint-plugin-astro
+ - eslint-plugin-jsx-a11y
+ - eslint-plugin-solid
+ - eslint-plugin-svelte
+ - eslint-plugin-vuejs-accessibility
+ - oxlint
+ - prettier-plugin-astro
+ - prettier-plugin-slidev
- supports-color
+ - svelte-eslint-parser
- tailwindcss
- - ts-api-utils
+ - typescript
+ - vitest
- eslint-config-hyoban@4.0.10(@types/estree@1.0.8)(@typescript-eslint/eslint-plugin@8.56.0(@typescript-eslint/parser@8.56.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(@typescript-eslint/utils@8.56.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1))(tailwindcss@4.1.16)(ts-api-utils@2.4.0(typescript@5.9.3))(typescript@5.9.3):
+ eslint-flat-config-utils@3.0.1:
dependencies:
- '@eslint-react/eslint-plugin': 1.53.1(eslint@9.39.1(jiti@2.6.1))(ts-api-utils@2.4.0(typescript@5.9.3))(typescript@5.9.3)
- '@eslint/js': 9.39.2
- '@stylistic/eslint-plugin': 5.8.0(eslint@9.39.1(jiti@2.6.1))
- '@typescript-eslint/types': 8.56.0
- '@unocss/eslint-config': 66.6.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
- defu: 6.1.4
- eslint: 9.39.1(jiti@2.6.1)
- eslint-config-flat-gitignore: 2.1.0(eslint@9.39.1(jiti@2.6.1))
- eslint-plugin-antfu: 3.2.2(eslint@9.39.1(jiti@2.6.1))
- eslint-plugin-command: 3.4.0(eslint@9.39.1(jiti@2.6.1))
- eslint-plugin-hyoban: 0.6.1(eslint@9.39.1(jiti@2.6.1))
- eslint-plugin-import-x: 4.16.1(@typescript-eslint/utils@8.56.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1))
- eslint-plugin-jsonc: 2.21.1(eslint@9.39.1(jiti@2.6.1))
- eslint-plugin-package-json: 0.45.2(@types/estree@1.0.8)(eslint@9.39.1(jiti@2.6.1))(jsonc-eslint-parser@2.4.2)
- eslint-plugin-react-google-translate: 0.1.1(eslint@9.39.1(jiti@2.6.1))
- eslint-plugin-react-hooks: 6.0.0-rc.2(eslint@9.39.1(jiti@2.6.1))
- eslint-plugin-react-refresh: 0.4.26(eslint@9.39.1(jiti@2.6.1))
- eslint-plugin-regexp: 2.10.0(eslint@9.39.1(jiti@2.6.1))
- eslint-plugin-simple-import-sort: 12.1.1(eslint@9.39.1(jiti@2.6.1))
- eslint-plugin-tailwindcss: 4.0.0-beta.0(tailwindcss@4.1.16)
- eslint-plugin-unicorn: 61.0.2(eslint@9.39.1(jiti@2.6.1))
- eslint-plugin-unused-imports: 4.4.1(@typescript-eslint/eslint-plugin@8.56.0(@typescript-eslint/parser@8.56.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1))
- globals: 16.5.0
- jsonc-eslint-parser: 2.4.2
- local-pkg: 1.1.2
- read-package-up: 11.0.0
- typescript-eslint: 8.56.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
- optionalDependencies:
- typescript: 5.9.3
- transitivePeerDependencies:
- - '@eslint/json'
- - '@types/estree'
- - '@typescript-eslint/eslint-plugin'
- - '@typescript-eslint/utils'
- - eslint-import-resolver-node
- - supports-color
- - tailwindcss
- - ts-api-utils
+ '@eslint/config-helpers': 0.5.2
+ pathe: 2.0.3
- eslint-fix-utils@0.4.1(@types/estree@1.0.8)(eslint@9.38.0(jiti@2.6.1)):
+ eslint-formatting-reporter@0.0.0(eslint@10.0.2(jiti@2.6.1)):
dependencies:
- eslint: 9.38.0(jiti@2.6.1)
- optionalDependencies:
- '@types/estree': 1.0.8
+ eslint: 10.0.2(jiti@2.6.1)
+ prettier-linter-helpers: 1.0.1
- eslint-fix-utils@0.4.1(@types/estree@1.0.8)(eslint@9.39.1(jiti@2.6.1)):
+ eslint-json-compat-utils@0.2.1(eslint@10.0.2(jiti@2.6.1))(jsonc-eslint-parser@3.1.0):
dependencies:
- eslint: 9.39.1(jiti@2.6.1)
- optionalDependencies:
- '@types/estree': 1.0.8
+ eslint: 10.0.2(jiti@2.6.1)
+ esquery: 1.7.0
+ jsonc-eslint-parser: 3.1.0
- eslint-import-context@0.1.9(unrs-resolver@1.11.1):
+ eslint-markdown@0.5.0(eslint@10.0.2(jiti@2.6.1)):
dependencies:
- get-tsconfig: 4.13.6
- stable-hash-x: 0.2.0
+ '@eslint/markdown': 7.5.1
+ micromark-util-normalize-identifier: 2.0.1
+ parse5: 8.0.0
optionalDependencies:
- unrs-resolver: 1.11.1
+ eslint: 10.0.2(jiti@2.6.1)
+ transitivePeerDependencies:
+ - supports-color
- eslint-json-compat-utils@0.2.1(eslint@9.38.0(jiti@2.6.1))(jsonc-eslint-parser@2.4.2):
+ eslint-merge-processors@2.0.0(eslint@10.0.2(jiti@2.6.1)):
dependencies:
- eslint: 9.38.0(jiti@2.6.1)
- esquery: 1.7.0
- jsonc-eslint-parser: 2.4.2
+ eslint: 10.0.2(jiti@2.6.1)
- eslint-json-compat-utils@0.2.1(eslint@9.39.1(jiti@2.6.1))(jsonc-eslint-parser@2.4.2):
- dependencies:
- eslint: 9.39.1(jiti@2.6.1)
- esquery: 1.7.0
- jsonc-eslint-parser: 2.4.2
+ eslint-parser-plain@0.1.1: {}
- eslint-plugin-antfu@3.2.2(eslint@9.38.0(jiti@2.6.1)):
+ eslint-plugin-antfu@3.2.2(eslint@10.0.2(jiti@2.6.1)):
dependencies:
- eslint: 9.38.0(jiti@2.6.1)
+ eslint: 10.0.2(jiti@2.6.1)
- eslint-plugin-antfu@3.2.2(eslint@9.39.1(jiti@2.6.1)):
+ eslint-plugin-better-tailwindcss@4.3.1(eslint@10.0.2(jiti@2.6.1))(tailwindcss@3.4.17(ts-node@10.9.2(@types/node@25.2.3)(typescript@5.9.3)))(typescript@5.9.3):
dependencies:
- eslint: 9.39.1(jiti@2.6.1)
+ '@eslint/css-tree': 3.6.9
+ '@valibot/to-json-schema': 1.5.0(valibot@1.2.0(typescript@5.9.3))
+ enhanced-resolve: 5.19.0
+ jiti: 2.6.1
+ synckit: 0.11.12
+ tailwind-csstree: 0.1.4
+ tailwindcss: 3.4.17(ts-node@10.9.2(@types/node@25.2.3)(typescript@5.9.3))
+ tsconfig-paths-webpack-plugin: 4.2.0
+ valibot: 1.2.0(typescript@5.9.3)
+ optionalDependencies:
+ eslint: 10.0.2(jiti@2.6.1)
+ transitivePeerDependencies:
+ - typescript
- eslint-plugin-command@3.4.0(eslint@9.38.0(jiti@2.6.1)):
+ eslint-plugin-command@3.5.2(@typescript-eslint/rule-tester@8.56.1(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3))(@typescript-eslint/typescript-estree@8.56.1(typescript@5.9.3))(@typescript-eslint/utils@8.56.1(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3))(eslint@10.0.2(jiti@2.6.1)):
dependencies:
- '@es-joy/jsdoccomment': 0.78.0
- eslint: 9.38.0(jiti@2.6.1)
+ '@es-joy/jsdoccomment': 0.84.0
+ '@typescript-eslint/rule-tester': 8.56.1(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3)
+ '@typescript-eslint/typescript-estree': 8.56.1(typescript@5.9.3)
+ '@typescript-eslint/utils': 8.56.1(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3)
+ eslint: 10.0.2(jiti@2.6.1)
- eslint-plugin-command@3.4.0(eslint@9.39.1(jiti@2.6.1)):
+ eslint-plugin-es-x@7.8.0(eslint@10.0.2(jiti@2.6.1)):
dependencies:
- '@es-joy/jsdoccomment': 0.78.0
- eslint: 9.39.1(jiti@2.6.1)
+ '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.2(jiti@2.6.1))
+ '@eslint-community/regexpp': 4.12.2
+ eslint: 10.0.2(jiti@2.6.1)
+ eslint-compat-utils: 0.5.1(eslint@10.0.2(jiti@2.6.1))
- eslint-plugin-hyoban@0.6.1(eslint@9.38.0(jiti@2.6.1)):
+ eslint-plugin-format@2.0.1(eslint@10.0.2(jiti@2.6.1)):
dependencies:
- eslint: 9.38.0(jiti@2.6.1)
+ '@dprint/formatter': 0.5.1
+ '@dprint/markdown': 0.21.1
+ '@dprint/toml': 0.7.0
+ eslint: 10.0.2(jiti@2.6.1)
+ eslint-formatting-reporter: 0.0.0(eslint@10.0.2(jiti@2.6.1))
+ eslint-parser-plain: 0.1.1
+ ohash: 2.0.11
+ oxfmt: 0.35.0
+ prettier: 3.8.1
+ synckit: 0.11.12
- eslint-plugin-hyoban@0.6.1(eslint@9.39.1(jiti@2.6.1)):
+ eslint-plugin-hyoban@0.13.3(eslint@10.0.2(jiti@2.6.1)):
dependencies:
- eslint: 9.39.1(jiti@2.6.1)
+ eslint: 10.0.2(jiti@2.6.1)
+ fast-string-width: 3.0.2
- eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.56.0(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.38.0(jiti@2.6.1)):
+ eslint-plugin-import-lite@0.5.2(eslint@10.0.2(jiti@2.6.1)):
dependencies:
- '@typescript-eslint/types': 8.56.0
- comment-parser: 1.4.5
- debug: 4.4.3(supports-color@8.1.1)
- eslint: 9.38.0(jiti@2.6.1)
- eslint-import-context: 0.1.9(unrs-resolver@1.11.1)
- is-glob: 4.0.3
- minimatch: 10.2.1
- semver: 7.7.4
- stable-hash-x: 0.2.0
- unrs-resolver: 1.11.1
- optionalDependencies:
- '@typescript-eslint/utils': 8.56.0(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)
- transitivePeerDependencies:
- - supports-color
+ eslint: 10.0.2(jiti@2.6.1)
- eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.56.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1)):
+ eslint-plugin-jsdoc@62.7.1(eslint@10.0.2(jiti@2.6.1)):
dependencies:
- '@typescript-eslint/types': 8.56.0
+ '@es-joy/jsdoccomment': 0.84.0
+ '@es-joy/resolve.exports': 1.2.0
+ are-docs-informative: 0.0.2
comment-parser: 1.4.5
debug: 4.4.3(supports-color@8.1.1)
- eslint: 9.39.1(jiti@2.6.1)
- eslint-import-context: 0.1.9(unrs-resolver@1.11.1)
- is-glob: 4.0.3
- minimatch: 10.2.1
+ escape-string-regexp: 4.0.0
+ eslint: 10.0.2(jiti@2.6.1)
+ espree: 11.1.1
+ esquery: 1.7.0
+ html-entities: 2.6.0
+ object-deep-merge: 2.0.0
+ parse-imports-exports: 0.2.4
semver: 7.7.4
- stable-hash-x: 0.2.0
- unrs-resolver: 1.11.1
- optionalDependencies:
- '@typescript-eslint/utils': 8.56.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
+ spdx-expression-parse: 4.0.0
+ to-valid-identifier: 1.0.0
transitivePeerDependencies:
- supports-color
- eslint-plugin-jsonc@2.21.1(eslint@9.38.0(jiti@2.6.1)):
+ eslint-plugin-jsonc@3.1.1(eslint@10.0.2(jiti@2.6.1)):
dependencies:
- '@eslint-community/eslint-utils': 4.9.1(eslint@9.38.0(jiti@2.6.1))
- diff-sequences: 27.5.1
- eslint: 9.38.0(jiti@2.6.1)
- eslint-compat-utils: 0.6.5(eslint@9.38.0(jiti@2.6.1))
- eslint-json-compat-utils: 0.2.1(eslint@9.38.0(jiti@2.6.1))(jsonc-eslint-parser@2.4.2)
- espree: 10.4.0
- graphemer: 1.4.0
- jsonc-eslint-parser: 2.4.2
+ '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.2(jiti@2.6.1))
+ '@eslint/core': 1.1.0
+ '@eslint/plugin-kit': 0.6.0
+ '@ota-meshi/ast-token-store': 0.3.0
+ diff-sequences: 29.6.3
+ eslint: 10.0.2(jiti@2.6.1)
+ eslint-json-compat-utils: 0.2.1(eslint@10.0.2(jiti@2.6.1))(jsonc-eslint-parser@3.1.0)
+ jsonc-eslint-parser: 3.1.0
natural-compare: 1.4.0
synckit: 0.11.12
transitivePeerDependencies:
- '@eslint/json'
- eslint-plugin-jsonc@2.21.1(eslint@9.39.1(jiti@2.6.1)):
+ eslint-plugin-n@17.24.0(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3):
dependencies:
- '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.1(jiti@2.6.1))
- diff-sequences: 27.5.1
- eslint: 9.39.1(jiti@2.6.1)
- eslint-compat-utils: 0.6.5(eslint@9.39.1(jiti@2.6.1))
- eslint-json-compat-utils: 0.2.1(eslint@9.39.1(jiti@2.6.1))(jsonc-eslint-parser@2.4.2)
- espree: 10.4.0
- graphemer: 1.4.0
- jsonc-eslint-parser: 2.4.2
- natural-compare: 1.4.0
- synckit: 0.11.12
- transitivePeerDependencies:
- - '@eslint/json'
-
- eslint-plugin-package-json@0.45.2(@types/estree@1.0.8)(eslint@9.38.0(jiti@2.6.1))(jsonc-eslint-parser@2.4.2):
- dependencies:
- '@altano/repository-tools': 2.0.1
- change-case: 5.4.4
- detect-indent: 7.0.2
- detect-newline: 4.0.1
- eslint: 9.38.0(jiti@2.6.1)
- eslint-fix-utils: 0.4.1(@types/estree@1.0.8)(eslint@9.38.0(jiti@2.6.1))
- jsonc-eslint-parser: 2.4.2
- package-json-validator: 0.23.0
- semver: 7.7.4
- sort-object-keys: 1.1.3
- sort-package-json: 3.6.1
- validate-npm-package-name: 6.0.2
- transitivePeerDependencies:
- - '@types/estree'
-
- eslint-plugin-package-json@0.45.2(@types/estree@1.0.8)(eslint@9.39.1(jiti@2.6.1))(jsonc-eslint-parser@2.4.2):
- dependencies:
- '@altano/repository-tools': 2.0.1
- change-case: 5.4.4
- detect-indent: 7.0.2
- detect-newline: 4.0.1
- eslint: 9.39.1(jiti@2.6.1)
- eslint-fix-utils: 0.4.1(@types/estree@1.0.8)(eslint@9.39.1(jiti@2.6.1))
- jsonc-eslint-parser: 2.4.2
- package-json-validator: 0.23.0
+ '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.2(jiti@2.6.1))
+ enhanced-resolve: 5.19.0
+ eslint: 10.0.2(jiti@2.6.1)
+ eslint-plugin-es-x: 7.8.0(eslint@10.0.2(jiti@2.6.1))
+ get-tsconfig: 4.13.6
+ globals: 15.15.0
+ globrex: 0.1.2
+ ignore: 5.3.2
semver: 7.7.4
- sort-object-keys: 1.1.3
- sort-package-json: 3.6.1
- validate-npm-package-name: 6.0.2
- transitivePeerDependencies:
- - '@types/estree'
-
- eslint-plugin-react-debug@1.53.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3):
- dependencies:
- '@eslint-react/ast': 1.53.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)
- '@eslint-react/core': 1.53.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)
- '@eslint-react/eff': 1.53.1
- '@eslint-react/kit': 1.53.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)
- '@eslint-react/shared': 1.53.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)
- '@eslint-react/var': 1.53.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)
- '@typescript-eslint/scope-manager': 8.56.0
- '@typescript-eslint/type-utils': 8.56.0(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)
- '@typescript-eslint/types': 8.56.0
- '@typescript-eslint/utils': 8.56.0(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)
- eslint: 9.38.0(jiti@2.6.1)
- string-ts: 2.3.1
- ts-pattern: 5.9.0
- optionalDependencies:
- typescript: 5.9.3
+ ts-declaration-location: 1.0.7(typescript@5.9.3)
transitivePeerDependencies:
- - supports-color
+ - typescript
- eslint-plugin-react-debug@1.53.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3):
- dependencies:
- '@eslint-react/ast': 1.53.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
- '@eslint-react/core': 1.53.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
- '@eslint-react/eff': 1.53.1
- '@eslint-react/kit': 1.53.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
- '@eslint-react/shared': 1.53.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
- '@eslint-react/var': 1.53.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
- '@typescript-eslint/scope-manager': 8.56.0
- '@typescript-eslint/type-utils': 8.56.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
- '@typescript-eslint/types': 8.56.0
- '@typescript-eslint/utils': 8.56.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
- eslint: 9.39.1(jiti@2.6.1)
- string-ts: 2.3.1
- ts-pattern: 5.9.0
- optionalDependencies:
- typescript: 5.9.3
- transitivePeerDependencies:
- - supports-color
+ eslint-plugin-no-only-tests@3.3.0: {}
- eslint-plugin-react-dom@1.53.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3):
+ eslint-plugin-perfectionist@5.6.0(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3):
dependencies:
- '@eslint-react/ast': 1.53.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)
- '@eslint-react/core': 1.53.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)
- '@eslint-react/eff': 1.53.1
- '@eslint-react/kit': 1.53.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)
- '@eslint-react/shared': 1.53.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)
- '@eslint-react/var': 1.53.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)
- '@typescript-eslint/scope-manager': 8.56.0
- '@typescript-eslint/types': 8.56.0
- '@typescript-eslint/utils': 8.56.0(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)
- compare-versions: 6.1.1
- eslint: 9.38.0(jiti@2.6.1)
- string-ts: 2.3.1
- ts-pattern: 5.9.0
- optionalDependencies:
- typescript: 5.9.3
+ '@typescript-eslint/utils': 8.56.1(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3)
+ eslint: 10.0.2(jiti@2.6.1)
+ natural-orderby: 5.0.0
transitivePeerDependencies:
- supports-color
+ - typescript
- eslint-plugin-react-dom@1.53.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3):
+ eslint-plugin-pnpm@1.6.0(eslint@10.0.2(jiti@2.6.1)):
dependencies:
- '@eslint-react/ast': 1.53.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
- '@eslint-react/core': 1.53.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
- '@eslint-react/eff': 1.53.1
- '@eslint-react/kit': 1.53.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
- '@eslint-react/shared': 1.53.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
- '@eslint-react/var': 1.53.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
- '@typescript-eslint/scope-manager': 8.56.0
- '@typescript-eslint/types': 8.56.0
- '@typescript-eslint/utils': 8.56.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
+ empathic: 2.0.0
+ eslint: 10.0.2(jiti@2.6.1)
+ jsonc-eslint-parser: 3.1.0
+ pathe: 2.0.3
+ pnpm-workspace-yaml: 1.6.0
+ tinyglobby: 0.2.15
+ yaml: 2.8.2
+ yaml-eslint-parser: 2.0.0
+
+ eslint-plugin-react-dom@2.13.0(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3):
+ dependencies:
+ '@eslint-react/ast': 2.13.0(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3)
+ '@eslint-react/core': 2.13.0(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3)
+ '@eslint-react/eff': 2.13.0
+ '@eslint-react/shared': 2.13.0(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3)
+ '@eslint-react/var': 2.13.0(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3)
+ '@typescript-eslint/scope-manager': 8.56.1
+ '@typescript-eslint/types': 8.56.1
+ '@typescript-eslint/utils': 8.56.1(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3)
compare-versions: 6.1.1
- eslint: 9.39.1(jiti@2.6.1)
- string-ts: 2.3.1
+ eslint: 10.0.2(jiti@2.6.1)
ts-pattern: 5.9.0
- optionalDependencies:
typescript: 5.9.3
transitivePeerDependencies:
- supports-color
- eslint-plugin-react-google-translate@0.1.1(eslint@9.38.0(jiti@2.6.1)):
- dependencies:
- eslint: 9.38.0(jiti@2.6.1)
- requireindex: 1.2.0
-
- eslint-plugin-react-google-translate@0.1.1(eslint@9.39.1(jiti@2.6.1)):
+ eslint-plugin-react-hooks-extra@2.13.0(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3):
dependencies:
- eslint: 9.39.1(jiti@2.6.1)
- requireindex: 1.2.0
-
- eslint-plugin-react-hooks-extra@1.53.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3):
- dependencies:
- '@eslint-react/ast': 1.53.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)
- '@eslint-react/core': 1.53.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)
- '@eslint-react/eff': 1.53.1
- '@eslint-react/kit': 1.53.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)
- '@eslint-react/shared': 1.53.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)
- '@eslint-react/var': 1.53.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)
- '@typescript-eslint/scope-manager': 8.56.0
- '@typescript-eslint/type-utils': 8.56.0(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)
- '@typescript-eslint/types': 8.56.0
- '@typescript-eslint/utils': 8.56.0(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)
- eslint: 9.38.0(jiti@2.6.1)
- string-ts: 2.3.1
+ '@eslint-react/ast': 2.13.0(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3)
+ '@eslint-react/core': 2.13.0(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3)
+ '@eslint-react/eff': 2.13.0
+ '@eslint-react/shared': 2.13.0(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3)
+ '@eslint-react/var': 2.13.0(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3)
+ '@typescript-eslint/scope-manager': 8.56.1
+ '@typescript-eslint/type-utils': 8.56.1(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3)
+ '@typescript-eslint/types': 8.56.1
+ '@typescript-eslint/utils': 8.56.1(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3)
+ eslint: 10.0.2(jiti@2.6.1)
ts-pattern: 5.9.0
- optionalDependencies:
typescript: 5.9.3
transitivePeerDependencies:
- supports-color
- eslint-plugin-react-hooks-extra@1.53.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3):
- dependencies:
- '@eslint-react/ast': 1.53.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
- '@eslint-react/core': 1.53.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
- '@eslint-react/eff': 1.53.1
- '@eslint-react/kit': 1.53.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
- '@eslint-react/shared': 1.53.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
- '@eslint-react/var': 1.53.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
- '@typescript-eslint/scope-manager': 8.56.0
- '@typescript-eslint/type-utils': 8.56.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
- '@typescript-eslint/types': 8.56.0
- '@typescript-eslint/utils': 8.56.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
- eslint: 9.39.1(jiti@2.6.1)
- string-ts: 2.3.1
- ts-pattern: 5.9.0
- optionalDependencies:
- typescript: 5.9.3
- transitivePeerDependencies:
- - supports-color
-
- eslint-plugin-react-hooks@6.0.0-rc.2(eslint@9.38.0(jiti@2.6.1)):
+ eslint-plugin-react-hooks@7.0.1(eslint@10.0.2(jiti@2.6.1)):
dependencies:
'@babel/core': 7.29.0
'@babel/parser': 7.29.0
- '@babel/plugin-proposal-private-methods': 7.18.6(@babel/core@7.29.0)
- eslint: 9.38.0(jiti@2.6.1)
+ eslint: 10.0.2(jiti@2.6.1)
hermes-parser: 0.25.1
zod: 3.25.76
- zod-validation-error: 3.5.4(zod@3.25.76)
+ zod-validation-error: 4.0.2(zod@3.25.76)
transitivePeerDependencies:
- supports-color
- eslint-plugin-react-hooks@6.0.0-rc.2(eslint@9.39.1(jiti@2.6.1)):
+ eslint-plugin-react-naming-convention@2.13.0(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3):
dependencies:
- '@babel/core': 7.29.0
- '@babel/parser': 7.29.0
- '@babel/plugin-proposal-private-methods': 7.18.6(@babel/core@7.29.0)
- eslint: 9.39.1(jiti@2.6.1)
- hermes-parser: 0.25.1
- zod: 3.25.76
- zod-validation-error: 3.5.4(zod@3.25.76)
- transitivePeerDependencies:
- - supports-color
-
- eslint-plugin-react-naming-convention@1.53.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3):
- dependencies:
- '@eslint-react/ast': 1.53.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)
- '@eslint-react/core': 1.53.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)
- '@eslint-react/eff': 1.53.1
- '@eslint-react/kit': 1.53.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)
- '@eslint-react/shared': 1.53.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)
- '@eslint-react/var': 1.53.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)
- '@typescript-eslint/scope-manager': 8.56.0
- '@typescript-eslint/type-utils': 8.56.0(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)
- '@typescript-eslint/types': 8.56.0
- '@typescript-eslint/utils': 8.56.0(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)
- eslint: 9.38.0(jiti@2.6.1)
- string-ts: 2.3.1
- ts-pattern: 5.9.0
- optionalDependencies:
- typescript: 5.9.3
- transitivePeerDependencies:
- - supports-color
-
- eslint-plugin-react-naming-convention@1.53.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3):
- dependencies:
- '@eslint-react/ast': 1.53.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
- '@eslint-react/core': 1.53.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
- '@eslint-react/eff': 1.53.1
- '@eslint-react/kit': 1.53.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
- '@eslint-react/shared': 1.53.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
- '@eslint-react/var': 1.53.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
- '@typescript-eslint/scope-manager': 8.56.0
- '@typescript-eslint/type-utils': 8.56.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
- '@typescript-eslint/types': 8.56.0
- '@typescript-eslint/utils': 8.56.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
- eslint: 9.39.1(jiti@2.6.1)
+ '@eslint-react/ast': 2.13.0(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3)
+ '@eslint-react/core': 2.13.0(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3)
+ '@eslint-react/eff': 2.13.0
+ '@eslint-react/shared': 2.13.0(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3)
+ '@eslint-react/var': 2.13.0(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3)
+ '@typescript-eslint/scope-manager': 8.56.1
+ '@typescript-eslint/type-utils': 8.56.1(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3)
+ '@typescript-eslint/types': 8.56.1
+ '@typescript-eslint/utils': 8.56.1(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3)
+ compare-versions: 6.1.1
+ eslint: 10.0.2(jiti@2.6.1)
string-ts: 2.3.1
ts-pattern: 5.9.0
- optionalDependencies:
typescript: 5.9.3
transitivePeerDependencies:
- supports-color
eslint-plugin-react-native-globals@0.1.2: {}
- eslint-plugin-react-native@5.0.0(eslint@9.39.1(jiti@2.6.1)):
+ eslint-plugin-react-native@5.0.0(eslint@10.0.2(jiti@2.6.1)):
dependencies:
- eslint: 9.39.1(jiti@2.6.1)
+ eslint: 10.0.2(jiti@2.6.1)
eslint-plugin-react-native-globals: 0.1.2
- eslint-plugin-react-refresh@0.4.26(eslint@9.38.0(jiti@2.6.1)):
- dependencies:
- eslint: 9.38.0(jiti@2.6.1)
-
- eslint-plugin-react-refresh@0.4.26(eslint@9.39.1(jiti@2.6.1)):
+ eslint-plugin-react-refresh@0.5.2(eslint@10.0.2(jiti@2.6.1)):
dependencies:
- eslint: 9.39.1(jiti@2.6.1)
+ eslint: 10.0.2(jiti@2.6.1)
- eslint-plugin-react-web-api@1.53.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3):
+ eslint-plugin-react-rsc@2.13.0(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3):
dependencies:
- '@eslint-react/ast': 1.53.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)
- '@eslint-react/core': 1.53.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)
- '@eslint-react/eff': 1.53.1
- '@eslint-react/kit': 1.53.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)
- '@eslint-react/shared': 1.53.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)
- '@eslint-react/var': 1.53.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)
- '@typescript-eslint/scope-manager': 8.56.0
- '@typescript-eslint/types': 8.56.0
- '@typescript-eslint/utils': 8.56.0(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)
- eslint: 9.38.0(jiti@2.6.1)
- string-ts: 2.3.1
+ '@eslint-react/ast': 2.13.0(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3)
+ '@eslint-react/shared': 2.13.0(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3)
+ '@eslint-react/var': 2.13.0(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3)
+ '@typescript-eslint/types': 8.56.1
+ '@typescript-eslint/utils': 8.56.1(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3)
+ eslint: 10.0.2(jiti@2.6.1)
ts-pattern: 5.9.0
- optionalDependencies:
typescript: 5.9.3
transitivePeerDependencies:
- supports-color
- eslint-plugin-react-web-api@1.53.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3):
+ eslint-plugin-react-web-api@2.13.0(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3):
dependencies:
- '@eslint-react/ast': 1.53.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
- '@eslint-react/core': 1.53.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
- '@eslint-react/eff': 1.53.1
- '@eslint-react/kit': 1.53.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
- '@eslint-react/shared': 1.53.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
- '@eslint-react/var': 1.53.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
- '@typescript-eslint/scope-manager': 8.56.0
- '@typescript-eslint/types': 8.56.0
- '@typescript-eslint/utils': 8.56.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
- eslint: 9.39.1(jiti@2.6.1)
- string-ts: 2.3.1
+ '@eslint-react/ast': 2.13.0(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3)
+ '@eslint-react/core': 2.13.0(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3)
+ '@eslint-react/eff': 2.13.0
+ '@eslint-react/shared': 2.13.0(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3)
+ '@eslint-react/var': 2.13.0(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3)
+ '@typescript-eslint/scope-manager': 8.56.1
+ '@typescript-eslint/types': 8.56.1
+ '@typescript-eslint/utils': 8.56.1(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3)
+ birecord: 0.1.1
+ eslint: 10.0.2(jiti@2.6.1)
ts-pattern: 5.9.0
- optionalDependencies:
typescript: 5.9.3
transitivePeerDependencies:
- supports-color
- eslint-plugin-react-x@1.53.1(eslint@9.38.0(jiti@2.6.1))(ts-api-utils@2.4.0(typescript@5.9.3))(typescript@5.9.3):
+ eslint-plugin-react-x@2.13.0(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3):
dependencies:
- '@eslint-react/ast': 1.53.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)
- '@eslint-react/core': 1.53.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)
- '@eslint-react/eff': 1.53.1
- '@eslint-react/kit': 1.53.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)
- '@eslint-react/shared': 1.53.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)
- '@eslint-react/var': 1.53.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)
- '@typescript-eslint/scope-manager': 8.56.0
- '@typescript-eslint/type-utils': 8.56.0(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)
- '@typescript-eslint/types': 8.56.0
- '@typescript-eslint/utils': 8.56.0(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)
+ '@eslint-react/ast': 2.13.0(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3)
+ '@eslint-react/core': 2.13.0(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3)
+ '@eslint-react/eff': 2.13.0
+ '@eslint-react/shared': 2.13.0(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3)
+ '@eslint-react/var': 2.13.0(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3)
+ '@typescript-eslint/scope-manager': 8.56.1
+ '@typescript-eslint/type-utils': 8.56.1(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3)
+ '@typescript-eslint/types': 8.56.1
+ '@typescript-eslint/utils': 8.56.1(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3)
compare-versions: 6.1.1
- eslint: 9.38.0(jiti@2.6.1)
- is-immutable-type: 5.0.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)
- string-ts: 2.3.1
- ts-pattern: 5.9.0
- optionalDependencies:
+ eslint: 10.0.2(jiti@2.6.1)
+ is-immutable-type: 5.0.1(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3)
ts-api-utils: 2.4.0(typescript@5.9.3)
- typescript: 5.9.3
- transitivePeerDependencies:
- - supports-color
-
- eslint-plugin-react-x@1.53.1(eslint@9.39.1(jiti@2.6.1))(ts-api-utils@2.4.0(typescript@5.9.3))(typescript@5.9.3):
- dependencies:
- '@eslint-react/ast': 1.53.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
- '@eslint-react/core': 1.53.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
- '@eslint-react/eff': 1.53.1
- '@eslint-react/kit': 1.53.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
- '@eslint-react/shared': 1.53.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
- '@eslint-react/var': 1.53.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
- '@typescript-eslint/scope-manager': 8.56.0
- '@typescript-eslint/type-utils': 8.56.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
- '@typescript-eslint/types': 8.56.0
- '@typescript-eslint/utils': 8.56.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
- compare-versions: 6.1.1
- eslint: 9.39.1(jiti@2.6.1)
- is-immutable-type: 5.0.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
- string-ts: 2.3.1
ts-pattern: 5.9.0
- optionalDependencies:
- ts-api-utils: 2.4.0(typescript@5.9.3)
typescript: 5.9.3
transitivePeerDependencies:
- supports-color
- eslint-plugin-regexp@2.10.0(eslint@9.38.0(jiti@2.6.1)):
- dependencies:
- '@eslint-community/eslint-utils': 4.9.1(eslint@9.38.0(jiti@2.6.1))
- '@eslint-community/regexpp': 4.12.2
- comment-parser: 1.4.5
- eslint: 9.38.0(jiti@2.6.1)
- jsdoc-type-pratt-parser: 4.8.0
- refa: 0.12.1
- regexp-ast-analysis: 0.7.1
- scslre: 0.3.0
-
- eslint-plugin-regexp@2.10.0(eslint@9.39.1(jiti@2.6.1)):
+ eslint-plugin-regexp@3.0.0(eslint@10.0.2(jiti@2.6.1)):
dependencies:
- '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.1(jiti@2.6.1))
+ '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.2(jiti@2.6.1))
'@eslint-community/regexpp': 4.12.2
comment-parser: 1.4.5
- eslint: 9.39.1(jiti@2.6.1)
- jsdoc-type-pratt-parser: 4.8.0
+ eslint: 10.0.2(jiti@2.6.1)
+ jsdoc-type-pratt-parser: 7.1.1
refa: 0.12.1
regexp-ast-analysis: 0.7.1
scslre: 0.3.0
- eslint-plugin-simple-import-sort@12.1.1(eslint@9.38.0(jiti@2.6.1)):
- dependencies:
- eslint: 9.38.0(jiti@2.6.1)
-
- eslint-plugin-simple-import-sort@12.1.1(eslint@9.39.1(jiti@2.6.1)):
+ eslint-plugin-simple-import-sort@12.1.1(eslint@10.0.2(jiti@2.6.1)):
dependencies:
- eslint: 9.39.1(jiti@2.6.1)
+ eslint: 10.0.2(jiti@2.6.1)
- eslint-plugin-tailwindcss@4.0.0-beta.0(tailwindcss@4.1.16):
+ eslint-plugin-toml@1.3.0(eslint@10.0.2(jiti@2.6.1)):
dependencies:
- fast-glob: 3.3.3
- postcss: 8.5.6
- synckit: 0.11.12
- tailwind-api-utils: 1.0.3(tailwindcss@4.1.16)
- tailwindcss: 4.1.16
+ '@eslint/core': 1.1.0
+ '@eslint/plugin-kit': 0.6.0
+ '@ota-meshi/ast-token-store': 0.3.0
+ debug: 4.4.3(supports-color@8.1.1)
+ eslint: 10.0.2(jiti@2.6.1)
+ toml-eslint-parser: 1.0.3
+ transitivePeerDependencies:
+ - supports-color
- eslint-plugin-unicorn@61.0.2(eslint@9.38.0(jiti@2.6.1)):
+ eslint-plugin-unicorn@63.0.0(eslint@10.0.2(jiti@2.6.1)):
dependencies:
'@babel/helper-validator-identifier': 7.28.5
- '@eslint-community/eslint-utils': 4.9.1(eslint@9.38.0(jiti@2.6.1))
- '@eslint/plugin-kit': 0.3.5
+ '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.2(jiti@2.6.1))
change-case: 5.4.4
ci-info: 4.4.0
clean-regexp: 1.0.0
core-js-compat: 3.48.0
- eslint: 9.38.0(jiti@2.6.1)
- esquery: 1.7.0
+ eslint: 10.0.2(jiti@2.6.1)
find-up-simple: 1.0.1
globals: 16.5.0
indent-string: 5.0.0
@@ -28551,43 +28455,48 @@ snapshots:
jsesc: 3.1.0
pluralize: 8.0.0
regexp-tree: 0.1.27
- regjsparser: 0.12.0
+ regjsparser: 0.13.0
semver: 7.7.4
strip-indent: 4.1.1
- eslint-plugin-unicorn@61.0.2(eslint@9.39.1(jiti@2.6.1)):
+ eslint-plugin-unused-imports@4.4.1(@typescript-eslint/eslint-plugin@8.56.1(@typescript-eslint/parser@8.56.1(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3))(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3))(eslint@10.0.2(jiti@2.6.1)):
dependencies:
- '@babel/helper-validator-identifier': 7.28.5
- '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.1(jiti@2.6.1))
- '@eslint/plugin-kit': 0.3.5
- change-case: 5.4.4
- ci-info: 4.4.0
- clean-regexp: 1.0.0
- core-js-compat: 3.48.0
- eslint: 9.39.1(jiti@2.6.1)
- esquery: 1.7.0
- find-up-simple: 1.0.1
- globals: 16.5.0
- indent-string: 5.0.0
- is-builtin-module: 5.0.0
- jsesc: 3.1.0
- pluralize: 8.0.0
- regexp-tree: 0.1.27
- regjsparser: 0.12.0
- semver: 7.7.4
- strip-indent: 4.1.1
+ eslint: 10.0.2(jiti@2.6.1)
+ optionalDependencies:
+ '@typescript-eslint/eslint-plugin': 8.56.1(@typescript-eslint/parser@8.56.1(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3))(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3)
- eslint-plugin-unused-imports@4.4.1(@typescript-eslint/eslint-plugin@8.56.0(@typescript-eslint/parser@8.56.0(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.38.0(jiti@2.6.1)):
+ eslint-plugin-vue@10.8.0(@stylistic/eslint-plugin@5.9.0(eslint@10.0.2(jiti@2.6.1)))(@typescript-eslint/parser@8.56.1(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3))(eslint@10.0.2(jiti@2.6.1))(vue-eslint-parser@10.4.0(eslint@10.0.2(jiti@2.6.1))):
dependencies:
- eslint: 9.38.0(jiti@2.6.1)
+ '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.2(jiti@2.6.1))
+ eslint: 10.0.2(jiti@2.6.1)
+ natural-compare: 1.4.0
+ nth-check: 2.1.1
+ postcss-selector-parser: 7.1.1
+ semver: 7.7.4
+ vue-eslint-parser: 10.4.0(eslint@10.0.2(jiti@2.6.1))
+ xml-name-validator: 4.0.0
optionalDependencies:
- '@typescript-eslint/eslint-plugin': 8.56.0(@typescript-eslint/parser@8.56.0(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)
+ '@stylistic/eslint-plugin': 5.9.0(eslint@10.0.2(jiti@2.6.1))
+ '@typescript-eslint/parser': 8.56.1(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3)
- eslint-plugin-unused-imports@4.4.1(@typescript-eslint/eslint-plugin@8.56.0(@typescript-eslint/parser@8.56.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1)):
+ eslint-plugin-yml@3.3.0(eslint@10.0.2(jiti@2.6.1)):
dependencies:
- eslint: 9.39.1(jiti@2.6.1)
- optionalDependencies:
- '@typescript-eslint/eslint-plugin': 8.56.0(@typescript-eslint/parser@8.56.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
+ '@eslint/core': 1.1.0
+ '@eslint/plugin-kit': 0.6.0
+ '@ota-meshi/ast-token-store': 0.3.0
+ debug: 4.4.3(supports-color@8.1.1)
+ diff-sequences: 29.6.3
+ escape-string-regexp: 5.0.0
+ eslint: 10.0.2(jiti@2.6.1)
+ natural-compare: 1.4.0
+ yaml-eslint-parser: 2.0.0
+ transitivePeerDependencies:
+ - supports-color
+
+ eslint-processor-vue-blocks@2.0.0(@vue/compiler-sfc@3.5.29)(eslint@10.0.2(jiti@2.6.1)):
+ dependencies:
+ '@vue/compiler-sfc': 3.5.29
+ eslint: 10.0.2(jiti@2.6.1)
eslint-scope@5.1.1:
dependencies:
@@ -28599,35 +28508,38 @@ snapshots:
esrecurse: 4.3.0
estraverse: 5.3.0
+ eslint-scope@9.1.1:
+ dependencies:
+ '@types/esrecurse': 4.3.1
+ '@types/estree': 1.0.8
+ 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.0: {}
+ eslint-visitor-keys@5.0.1: {}
- eslint@9.27.0(jiti@2.6.1):
+ eslint@10.0.2(jiti@2.6.1):
dependencies:
- '@eslint-community/eslint-utils': 4.9.1(eslint@9.27.0(jiti@2.6.1))
+ '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.2(jiti@2.6.1))
'@eslint-community/regexpp': 4.12.2
- '@eslint/config-array': 0.20.1
- '@eslint/config-helpers': 0.2.3
- '@eslint/core': 0.14.0
- '@eslint/eslintrc': 3.3.3
- '@eslint/js': 9.27.0
- '@eslint/plugin-kit': 0.3.5
+ '@eslint/config-array': 0.23.2
+ '@eslint/config-helpers': 0.5.2
+ '@eslint/core': 1.1.0
+ '@eslint/plugin-kit': 0.6.0
'@humanfs/node': 0.16.7
'@humanwhocodes/module-importer': 1.0.1
'@humanwhocodes/retry': 0.4.3
'@types/estree': 1.0.8
- '@types/json-schema': 7.0.15
- ajv: 6.12.6
- chalk: 4.1.2
+ ajv: 6.14.0
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.1
+ eslint-visitor-keys: 5.0.1
+ espree: 11.1.1
esquery: 1.7.0
esutils: 2.0.3
fast-deep-equal: 3.1.3
@@ -28638,8 +28550,7 @@ snapshots:
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.2
+ minimatch: 10.2.4
natural-compare: 1.4.0
optionator: 0.9.4
optionalDependencies:
@@ -28647,62 +28558,22 @@ snapshots:
transitivePeerDependencies:
- supports-color
- eslint@9.38.0(jiti@2.6.1):
- dependencies:
- '@eslint-community/eslint-utils': 4.9.1(eslint@9.38.0(jiti@2.6.1))
- '@eslint-community/regexpp': 4.12.2
- '@eslint/config-array': 0.21.1
- '@eslint/config-helpers': 0.4.2
- '@eslint/core': 0.16.0
- '@eslint/eslintrc': 3.3.3
- '@eslint/js': 9.38.0
- '@eslint/plugin-kit': 0.4.1
- '@humanfs/node': 0.16.7
- '@humanwhocodes/module-importer': 1.0.1
- '@humanwhocodes/retry': 0.4.3
- '@types/estree': 1.0.8
- ajv: 6.12.6
- 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
- esquery: 1.7.0
- esutils: 2.0.3
- fast-deep-equal: 3.1.3
- file-entry-cache: 8.0.0
- 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.2
- natural-compare: 1.4.0
- optionator: 0.9.4
- optionalDependencies:
- jiti: 2.6.1
- transitivePeerDependencies:
- - supports-color
-
- eslint@9.39.1(jiti@2.6.1):
+ eslint@9.27.0(jiti@2.6.1):
dependencies:
- '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.1(jiti@2.6.1))
+ '@eslint-community/eslint-utils': 4.9.1(eslint@9.27.0(jiti@2.6.1))
'@eslint-community/regexpp': 4.12.2
- '@eslint/config-array': 0.21.1
- '@eslint/config-helpers': 0.4.2
- '@eslint/core': 0.17.0
+ '@eslint/config-array': 0.20.1
+ '@eslint/config-helpers': 0.2.3
+ '@eslint/core': 0.14.0
'@eslint/eslintrc': 3.3.3
- '@eslint/js': 9.39.1
- '@eslint/plugin-kit': 0.4.1
+ '@eslint/js': 9.27.0
+ '@eslint/plugin-kit': 0.3.5
'@humanfs/node': 0.16.7
'@humanwhocodes/module-importer': 1.0.1
'@humanwhocodes/retry': 0.4.3
'@types/estree': 1.0.8
- ajv: 6.12.6
+ '@types/json-schema': 7.0.15
+ ajv: 6.14.0
chalk: 4.1.2
cross-spawn: 7.0.6
debug: 4.4.3(supports-color@8.1.1)
@@ -28733,15 +28604,15 @@ snapshots:
espree@10.4.0:
dependencies:
- acorn: 8.15.0
- acorn-jsx: 5.3.2(acorn@8.15.0)
+ acorn: 8.16.0
+ acorn-jsx: 5.3.2(acorn@8.16.0)
eslint-visitor-keys: 4.2.1
- espree@9.6.1:
+ espree@11.1.1:
dependencies:
- acorn: 8.15.0
- acorn-jsx: 5.3.2(acorn@8.15.0)
- eslint-visitor-keys: 3.4.3
+ acorn: 8.16.0
+ acorn-jsx: 5.3.2(acorn@8.16.0)
+ eslint-visitor-keys: 5.0.1
esprima@4.0.1: {}
@@ -29195,6 +29066,8 @@ snapshots:
fast-deep-equal@3.1.3: {}
+ fast-diff@1.3.0: {}
+
fast-fifo@1.3.2: {}
fast-glob@3.3.2:
@@ -29230,6 +29103,12 @@ snapshots:
dependencies:
fast-decode-uri-component: 1.0.1
+ fast-string-truncated-width@3.0.3: {}
+
+ fast-string-width@3.0.2:
+ dependencies:
+ fast-string-truncated-width: 3.0.3
+
fast-uri@3.1.0: {}
fastify-plugin@5.1.0: {}
@@ -29258,6 +29137,10 @@ snapshots:
dependencies:
reusify: 1.1.0
+ fault@2.0.1:
+ dependencies:
+ format: 0.2.2
+
faye-websocket@0.11.4:
dependencies:
websocket-driver: 0.7.4
@@ -29483,6 +29366,8 @@ snapshots:
hasown: 2.0.2
mime-types: 2.1.35
+ format@0.2.2: {}
+
foxact@0.2.49(react@19.1.0):
dependencies:
client-only: 0.0.1
@@ -29696,8 +29581,6 @@ snapshots:
nypm: 0.6.5
pathe: 2.0.3
- git-hooks-list@4.2.1: {}
-
git-raw-commits@5.0.0(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.2.1):
dependencies:
'@conventional-changelog/git-client': 1.0.1(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.2.1)
@@ -29716,6 +29599,8 @@ snapshots:
github-from-package@0.0.0: {}
+ github-slugger@2.0.0: {}
+
glob-parent@5.1.2:
dependencies:
is-glob: 4.0.3
@@ -29739,14 +29624,14 @@ snapshots:
dependencies:
foreground-child: 3.3.1
jackspeak: 4.2.3
- minimatch: 10.2.1
+ minimatch: 10.2.4
minipass: 7.1.3
package-json-from-dist: 1.0.1
path-scurry: 2.0.1
glob@13.0.5:
dependencies:
- minimatch: 10.2.1
+ minimatch: 10.2.4
minipass: 7.1.3
path-scurry: 2.0.1
@@ -29800,6 +29685,8 @@ snapshots:
globals@16.5.0: {}
+ globals@17.4.0: {}
+
globalthis@1.0.4:
dependencies:
define-properties: 1.2.1
@@ -29841,8 +29728,6 @@ snapshots:
dependencies:
lodash.merge: 4.6.2
- graphemer@1.4.0: {}
-
graphql-tag@2.12.6(graphql@16.8.1):
dependencies:
graphql: 16.8.1
@@ -30119,6 +30004,8 @@ snapshots:
dependencies:
lru-cache: 10.4.3
+ html-entities@2.6.0: {}
+
html-escaper@3.0.3: {}
html-minifier-terser@7.2.0:
@@ -30419,20 +30306,10 @@ snapshots:
is-hexadecimal@2.0.1: {}
- is-immutable-type@5.0.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3):
+ is-immutable-type@5.0.1(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3):
dependencies:
- '@typescript-eslint/type-utils': 8.56.0(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)
- eslint: 9.38.0(jiti@2.6.1)
- ts-api-utils: 2.4.0(typescript@5.9.3)
- ts-declaration-location: 1.0.7(typescript@5.9.3)
- typescript: 5.9.3
- transitivePeerDependencies:
- - supports-color
-
- is-immutable-type@5.0.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3):
- dependencies:
- '@typescript-eslint/type-utils': 8.56.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
- eslint: 9.39.1(jiti@2.6.1)
+ '@typescript-eslint/type-utils': 8.56.1(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3)
+ eslint: 10.0.2(jiti@2.6.1)
ts-api-utils: 2.4.0(typescript@5.9.3)
ts-declaration-location: 1.0.7(typescript@5.9.3)
typescript: 5.9.3
@@ -30637,7 +30514,7 @@ snapshots:
jks-js@1.1.0:
dependencies:
- node-forge: 1.3.1
+ node-forge: 1.3.3
node-int64: 0.4.0
node-rsa: 1.1.1
@@ -30702,14 +30579,10 @@ snapshots:
jsc-safe-url@0.2.4: {}
- jsdoc-type-pratt-parser@4.8.0: {}
-
- jsdoc-type-pratt-parser@7.0.0: {}
+ jsdoc-type-pratt-parser@7.1.1: {}
jsep@1.4.0: {}
- jsesc@3.0.2: {}
-
jsesc@3.1.0: {}
json-buffer@3.0.1: {}
@@ -30742,11 +30615,10 @@ snapshots:
json5@2.2.3: {}
- jsonc-eslint-parser@2.4.2:
+ jsonc-eslint-parser@3.1.0:
dependencies:
- acorn: 8.15.0
- eslint-visitor-keys: 3.4.3
- espree: 9.6.1
+ acorn: 8.16.0
+ eslint-visitor-keys: 5.0.1
semver: 7.7.4
jsonfile@4.0.0:
@@ -31342,6 +31214,17 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ mdast-util-frontmatter@2.0.1:
+ dependencies:
+ '@types/mdast': 4.0.4
+ devlop: 1.1.0
+ escape-string-regexp: 5.0.0
+ mdast-util-from-markdown: 2.0.2
+ mdast-util-to-markdown: 2.1.2
+ micromark-extension-frontmatter: 2.0.0
+ transitivePeerDependencies:
+ - supports-color
+
mdast-util-gfm-autolink-literal@2.0.1:
dependencies:
'@types/mdast': 4.0.4
@@ -31479,6 +31362,8 @@ snapshots:
mdn-data@2.12.2: {}
+ mdn-data@2.23.0: {}
+
mem@4.3.0:
dependencies:
map-age-cleaner: 0.1.3
@@ -31699,6 +31584,13 @@ snapshots:
micromark-util-types: 2.0.2
parse-entities: 4.0.2
+ micromark-extension-frontmatter@2.0.0:
+ dependencies:
+ fault: 2.0.1
+ micromark-util-character: 2.1.1
+ micromark-util-symbol: 2.0.1
+ micromark-util-types: 2.0.2
+
micromark-extension-gfm-autolink-literal@2.1.0:
dependencies:
micromark-util-character: 2.1.1
@@ -31928,7 +31820,7 @@ snapshots:
dependencies:
'@isaacs/brace-expansion': 5.0.1
- minimatch@10.2.1:
+ minimatch@10.2.4:
dependencies:
brace-expansion: 5.0.2
@@ -32008,7 +31900,7 @@ snapshots:
mlly@1.8.0:
dependencies:
- acorn: 8.15.0
+ acorn: 8.16.0
pathe: 2.0.3
pkg-types: 1.3.1
ufo: 1.6.3
@@ -32046,7 +31938,7 @@ snapshots:
msedge-tts@2.0.4(bufferutil@4.1.0):
dependencies:
- axios: 1.13.5(debug@4.4.3)
+ axios: 1.13.0(debug@4.4.3)
buffer: 6.0.3
isomorphic-ws: 5.0.0(ws@8.19.0(bufferutil@4.1.0))
stream-browserify: 3.0.0
@@ -32107,8 +31999,6 @@ snapshots:
napi-build-utils@2.0.0: {}
- napi-postinstall@0.3.4: {}
-
nativewind@4.2.1(react-native-reanimated@4.1.6(@babel/core@7.29.0)(react-native-worklets@0.5.1(@babel/core@7.29.0)(react-native@0.81.5(@babel/core@7.29.0)(@types/react@19.1.17)(bufferutil@4.1.0)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@types/react@19.1.17)(bufferutil@4.1.0)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@types/react@19.1.17)(bufferutil@4.1.0)(react@19.1.0))(react@19.1.0))(react-native-svg@15.12.1(react-native@0.81.5(@babel/core@7.29.0)(@types/react@19.1.17)(bufferutil@4.1.0)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@types/react@19.1.17)(bufferutil@4.1.0)(react@19.1.0))(react@19.1.0)(tailwindcss@3.4.17(ts-node@10.9.2(@types/node@25.2.3)(typescript@5.9.3))):
dependencies:
comment-json: 4.5.1
@@ -32127,6 +32017,8 @@ snapshots:
natural-orderby@2.0.3: {}
+ natural-orderby@5.0.0: {}
+
nbump@2.1.8(conventional-commits-filter@5.0.0):
dependencies:
c12: 3.3.3
@@ -32324,6 +32216,8 @@ snapshots:
object-assign@4.1.1: {}
+ object-deep-merge@2.0.0: {}
+
object-hash@3.0.0: {}
object-is@1.1.6:
@@ -32451,6 +32345,30 @@ snapshots:
dependencies:
'@daybrush/utils': 1.13.0
+ oxfmt@0.35.0:
+ dependencies:
+ tinypool: 2.1.0
+ optionalDependencies:
+ '@oxfmt/binding-android-arm-eabi': 0.35.0
+ '@oxfmt/binding-android-arm64': 0.35.0
+ '@oxfmt/binding-darwin-arm64': 0.35.0
+ '@oxfmt/binding-darwin-x64': 0.35.0
+ '@oxfmt/binding-freebsd-x64': 0.35.0
+ '@oxfmt/binding-linux-arm-gnueabihf': 0.35.0
+ '@oxfmt/binding-linux-arm-musleabihf': 0.35.0
+ '@oxfmt/binding-linux-arm64-gnu': 0.35.0
+ '@oxfmt/binding-linux-arm64-musl': 0.35.0
+ '@oxfmt/binding-linux-ppc64-gnu': 0.35.0
+ '@oxfmt/binding-linux-riscv64-gnu': 0.35.0
+ '@oxfmt/binding-linux-riscv64-musl': 0.35.0
+ '@oxfmt/binding-linux-s390x-gnu': 0.35.0
+ '@oxfmt/binding-linux-x64-gnu': 0.35.0
+ '@oxfmt/binding-linux-x64-musl': 0.35.0
+ '@oxfmt/binding-openharmony-arm64': 0.35.0
+ '@oxfmt/binding-win32-arm64-msvc': 0.35.0
+ '@oxfmt/binding-win32-ia32-msvc': 0.35.0
+ '@oxfmt/binding-win32-x64-msvc': 0.35.0
+
p-cancelable@2.1.1: {}
p-defer@1.0.0: {}
@@ -32493,12 +32411,6 @@ snapshots:
package-json-from-dist@1.0.1: {}
- package-json-validator@0.23.0:
- dependencies:
- semver: 7.7.4
- validate-npm-package-license: 3.0.4
- yargs: 18.0.0
-
package-manager-detector@1.5.0: {}
package-manager-detector@1.6.0: {}
@@ -32540,6 +32452,12 @@ snapshots:
is-decimal: 2.0.1
is-hexadecimal: 2.0.1
+ parse-gitignore@2.0.0: {}
+
+ parse-imports-exports@0.2.4:
+ dependencies:
+ parse-statements: 1.0.11
+
parse-json@2.2.0:
dependencies:
error-ex: 1.3.4
@@ -32568,6 +32486,8 @@ snapshots:
dependencies:
pngjs: 3.4.0
+ parse-statements@1.0.11: {}
+
parse5-htmlparser2-tree-adapter@7.1.0:
dependencies:
domhandler: 5.0.3
@@ -32581,6 +32501,10 @@ snapshots:
dependencies:
entities: 6.0.1
+ parse5@8.0.0:
+ dependencies:
+ entities: 6.0.1
+
parseurl@1.3.3: {}
pascal-case@3.1.2:
@@ -32776,6 +32700,10 @@ snapshots:
pngjs@7.0.0: {}
+ pnpm-workspace-yaml@1.6.0:
+ dependencies:
+ yaml: 2.8.2
+
portfinder@1.0.38:
dependencies:
async: 3.2.6
@@ -33059,6 +32987,10 @@ snapshots:
prelude-ls@1.2.1: {}
+ prettier-linter-helpers@1.0.1:
+ dependencies:
+ fast-diff: 1.3.0
+
prettier-package-json@2.8.0:
dependencies:
'@types/parse-author': 2.0.3
@@ -33082,17 +33014,17 @@ snapshots:
prettier: 3.8.1
sh-syntax: 0.5.8
- prettier-plugin-tailwindcss@0.6.14(@ianvs/prettier-plugin-sort-imports@4.4.2(prettier@3.8.1))(prettier@3.8.1):
+ prettier-plugin-tailwindcss@0.6.14(@ianvs/prettier-plugin-sort-imports@4.4.2(@vue/compiler-sfc@3.5.29)(prettier@3.8.1))(prettier@3.8.1):
dependencies:
prettier: 3.8.1
optionalDependencies:
- '@ianvs/prettier-plugin-sort-imports': 4.4.2(prettier@3.8.1)
+ '@ianvs/prettier-plugin-sort-imports': 4.4.2(@vue/compiler-sfc@3.5.29)(prettier@3.6.2)
- prettier-plugin-tailwindcss@0.7.2(@ianvs/prettier-plugin-sort-imports@4.4.2(prettier@3.8.1))(prettier@3.8.1):
+ prettier-plugin-tailwindcss@0.7.2(@ianvs/prettier-plugin-sort-imports@4.4.2(@vue/compiler-sfc@3.5.29)(prettier@3.8.1))(prettier@3.8.1):
dependencies:
prettier: 3.8.1
optionalDependencies:
- '@ianvs/prettier-plugin-sort-imports': 4.4.2(prettier@3.8.1)
+ '@ianvs/prettier-plugin-sort-imports': 4.4.2(@vue/compiler-sfc@3.5.29)(prettier@3.8.1)
prettier@3.6.2: {}
@@ -33941,10 +33873,6 @@ snapshots:
regjsgen@0.8.0: {}
- regjsparser@0.12.0:
- dependencies:
- jsesc: 3.0.2
-
regjsparser@0.13.0:
dependencies:
jsesc: 3.1.0
@@ -34068,14 +33996,14 @@ snapshots:
rc: 1.2.8
resolve: 1.7.1
- requireindex@1.2.0: {}
-
resedit@2.0.3:
dependencies:
pe-library: 1.0.1
reselect@5.1.1: {}
+ reserved-identifiers@1.2.0: {}
+
resolve-alpn@1.2.1: {}
resolve-from@4.0.0: {}
@@ -34444,7 +34372,7 @@ snapshots:
dependencies:
decode-ico: 0.4.1
ico-endec: 0.1.6
- sharp: 0.33.5
+ sharp: 0.34.5
sharp@0.33.5:
dependencies:
@@ -34627,20 +34555,8 @@ snapshots:
sort-object-keys@1.1.3: {}
- sort-object-keys@2.1.0: {}
-
sort-order@1.1.2: {}
- sort-package-json@3.6.1:
- dependencies:
- detect-indent: 7.0.2
- detect-newline: 4.0.1
- git-hooks-list: 4.2.1
- is-plain-obj: 4.1.0
- semver: 7.7.4
- sort-object-keys: 2.1.0
- tinyglobby: 0.2.15
-
source-map-js@1.2.1: {}
source-map-support@0.5.21:
@@ -34672,6 +34588,11 @@ snapshots:
spdx-exceptions: 2.5.0
spdx-license-ids: 3.0.22
+ spdx-expression-parse@4.0.0:
+ dependencies:
+ spdx-exceptions: 2.5.0
+ spdx-license-ids: 3.0.22
+
spdx-license-ids@3.0.22: {}
split2@4.2.0: {}
@@ -34691,8 +34612,6 @@ snapshots:
dependencies:
minipass: 3.3.6
- stable-hash-x@0.2.0: {}
-
stack-utils@2.0.6:
dependencies:
escape-string-regexp: 2.0.0
@@ -34948,12 +34867,7 @@ snapshots:
tagged-tag@1.0.0: {}
- tailwind-api-utils@1.0.3(tailwindcss@4.1.16):
- dependencies:
- enhanced-resolve: 5.19.0
- jiti: 2.6.1
- local-pkg: 1.1.2
- tailwindcss: 4.1.16
+ tailwind-csstree@0.1.4: {}
tailwind-merge@3.3.1: {}
@@ -35117,7 +35031,7 @@ snapshots:
terser@5.46.0:
dependencies:
'@jridgewell/source-map': 0.3.11
- acorn: 8.15.0
+ acorn: 8.16.0
commander: 2.20.3
source-map-support: 0.5.21
@@ -35180,6 +35094,8 @@ snapshots:
tinypool@1.1.1: {}
+ tinypool@2.1.0: {}
+
tinyrainbow@2.0.0: {}
tinyspy@4.0.4: {}
@@ -35215,6 +35131,11 @@ snapshots:
dependencies:
is-number: 7.0.0
+ to-valid-identifier@1.0.0:
+ dependencies:
+ '@sindresorhus/base62': 1.0.0
+ reserved-identifiers: 1.2.0
+
toad-cache@3.7.0: {}
toidentifier@1.0.1: {}
@@ -35224,6 +35145,10 @@ snapshots:
'@tokenizer/token': 0.3.0
ieee754: 1.2.1
+ toml-eslint-parser@1.0.3:
+ dependencies:
+ eslint-visitor-keys: 5.0.1
+
tr46@0.0.3: {}
tr46@1.0.1:
@@ -35279,7 +35204,7 @@ snapshots:
'@tsconfig/node14': 1.0.3
'@tsconfig/node16': 1.0.4
'@types/node': 25.2.3
- acorn: 8.15.0
+ acorn: 8.16.0
acorn-walk: 8.3.4
arg: 4.1.3
create-require: 1.1.1
@@ -35299,6 +35224,19 @@ snapshots:
optionalDependencies:
typescript: 5.9.3
+ tsconfig-paths-webpack-plugin@4.2.0:
+ dependencies:
+ chalk: 4.1.2
+ enhanced-resolve: 5.19.0
+ tapable: 2.3.0
+ tsconfig-paths: 4.2.0
+
+ tsconfig-paths@4.2.0:
+ dependencies:
+ json5: 2.2.3
+ minimist: 1.2.8
+ strip-bom: 3.0.0
+
tsdown@0.20.3(synckit@0.11.12)(typescript@5.9.3):
dependencies:
ansis: 4.2.0
@@ -35433,28 +35371,6 @@ snapshots:
dependencies:
tagged-tag: 1.0.0
- typescript-eslint@8.56.0(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3):
- dependencies:
- '@typescript-eslint/eslint-plugin': 8.56.0(@typescript-eslint/parser@8.56.0(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)
- '@typescript-eslint/parser': 8.56.0(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)
- '@typescript-eslint/typescript-estree': 8.56.0(typescript@5.9.3)
- '@typescript-eslint/utils': 8.56.0(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)
- eslint: 9.38.0(jiti@2.6.1)
- typescript: 5.9.3
- transitivePeerDependencies:
- - supports-color
-
- typescript-eslint@8.56.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3):
- dependencies:
- '@typescript-eslint/eslint-plugin': 8.56.0(@typescript-eslint/parser@8.56.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
- '@typescript-eslint/parser': 8.56.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
- '@typescript-eslint/typescript-estree': 8.56.0(typescript@5.9.3)
- '@typescript-eslint/utils': 8.56.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
- eslint: 9.39.1(jiti@2.6.1)
- typescript: 5.9.3
- transitivePeerDependencies:
- - supports-color
-
typescript@5.4.5: {}
typescript@5.9.3: {}
@@ -35623,7 +35539,7 @@ snapshots:
unplugin@2.1.0:
dependencies:
- acorn: 8.15.0
+ acorn: 8.16.0
webpack-virtual-modules: 0.6.2
optional: true
@@ -35633,30 +35549,6 @@ snapshots:
picomatch: 4.0.3
webpack-virtual-modules: 0.6.2
- unrs-resolver@1.11.1:
- dependencies:
- napi-postinstall: 0.3.4
- optionalDependencies:
- '@unrs/resolver-binding-android-arm-eabi': 1.11.1
- '@unrs/resolver-binding-android-arm64': 1.11.1
- '@unrs/resolver-binding-darwin-arm64': 1.11.1
- '@unrs/resolver-binding-darwin-x64': 1.11.1
- '@unrs/resolver-binding-freebsd-x64': 1.11.1
- '@unrs/resolver-binding-linux-arm-gnueabihf': 1.11.1
- '@unrs/resolver-binding-linux-arm-musleabihf': 1.11.1
- '@unrs/resolver-binding-linux-arm64-gnu': 1.11.1
- '@unrs/resolver-binding-linux-arm64-musl': 1.11.1
- '@unrs/resolver-binding-linux-ppc64-gnu': 1.11.1
- '@unrs/resolver-binding-linux-riscv64-gnu': 1.11.1
- '@unrs/resolver-binding-linux-riscv64-musl': 1.11.1
- '@unrs/resolver-binding-linux-s390x-gnu': 1.11.1
- '@unrs/resolver-binding-linux-x64-gnu': 1.11.1
- '@unrs/resolver-binding-linux-x64-musl': 1.11.1
- '@unrs/resolver-binding-wasm32-wasi': 1.11.1
- '@unrs/resolver-binding-win32-arm64-msvc': 1.11.1
- '@unrs/resolver-binding-win32-ia32-msvc': 1.11.1
- '@unrs/resolver-binding-win32-x64-msvc': 1.11.1
-
unrun@0.2.27(synckit@0.11.12):
dependencies:
rolldown: 1.0.0-rc.3
@@ -35756,6 +35648,10 @@ snapshots:
v8-compile-cache-lib@3.0.1: {}
+ valibot@1.2.0(typescript@5.9.3):
+ optionalDependencies:
+ typescript: 5.9.3
+
validate-npm-package-license@3.0.4:
dependencies:
spdx-correct: 3.2.0
@@ -35763,8 +35659,6 @@ snapshots:
validate-npm-package-name@5.0.1: {}
- validate-npm-package-name@6.0.2: {}
-
vary@1.1.2: {}
vaul@1.1.2(@types/react-dom@19.2.3(@types/react@19.1.17))(@types/react@19.1.17)(react-dom@19.1.0(react@19.1.0))(react@19.1.0):
@@ -35853,7 +35747,7 @@ snapshots:
vite-plugin-mkcert@1.17.9(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)):
dependencies:
- axios: 1.13.5(debug@4.4.3)
+ axios: 1.13.0(debug@4.4.3)
debug: 4.4.3(supports-color@8.1.1)
picocolors: 1.1.1
vite: 7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
@@ -35983,6 +35877,18 @@ snapshots:
vscode-uri@3.1.0: {}
+ vue-eslint-parser@10.4.0(eslint@10.0.2(jiti@2.6.1)):
+ dependencies:
+ debug: 4.4.3(supports-color@8.1.1)
+ eslint: 10.0.2(jiti@2.6.1)
+ eslint-scope: 9.1.1
+ eslint-visitor-keys: 5.0.1
+ espree: 11.1.1
+ esquery: 1.7.0
+ semver: 7.7.4
+ transitivePeerDependencies:
+ - supports-color
+
wa-sqlite@https://codeload.github.com/rhashimoto/wa-sqlite/tar.gz/03c00ed67cd934bd664ae310234bba317928f851: {}
walker@1.0.8:
@@ -36022,8 +35928,8 @@ snapshots:
'@webassemblyjs/ast': 1.14.1
'@webassemblyjs/wasm-edit': 1.14.1
'@webassemblyjs/wasm-parser': 1.14.1
- acorn: 8.15.0
- acorn-import-phases: 1.0.4(acorn@8.15.0)
+ acorn: 8.16.0
+ acorn-import-phases: 1.0.4(acorn@8.16.0)
browserslist: 4.28.1
chrome-trace-event: 1.0.4
enhanced-resolve: 5.19.0
@@ -36351,6 +36257,8 @@ snapshots:
simple-plist: 1.3.1
uuid: 7.0.3
+ xml-name-validator@4.0.0: {}
+
xml2js@0.6.0:
dependencies:
sax: 1.4.4
@@ -36381,6 +36289,11 @@ snapshots:
yallist@5.0.0: {}
+ yaml-eslint-parser@2.0.0:
+ dependencies:
+ eslint-visitor-keys: 5.0.1
+ yaml: 2.8.2
+
yaml@1.10.2: {}
yaml@2.6.0: {}
@@ -36394,8 +36307,6 @@ snapshots:
yargs-parser@21.1.1: {}
- yargs-parser@22.0.0: {}
-
yargs@15.4.1:
dependencies:
cliui: 6.0.0
@@ -36420,15 +36331,6 @@ snapshots:
y18n: 5.0.8
yargs-parser: 21.1.1
- yargs@18.0.0:
- dependencies:
- cliui: 9.0.1
- escalade: 3.2.0
- get-caller-file: 2.0.5
- string-width: 7.2.0
- y18n: 5.0.8
- yargs-parser: 22.0.0
-
yauzl@2.10.0:
dependencies:
buffer-crc32: 0.2.13
@@ -36482,7 +36384,7 @@ snapshots:
compress-commons: 4.1.2
readable-stream: 3.6.2
- zod-validation-error@3.5.4(zod@3.25.76):
+ zod-validation-error@4.0.2(zod@3.25.76):
dependencies:
zod: 3.25.76
diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml
index 433d0d83f7..372009de5f 100644
--- a/pnpm-workspace.yaml
+++ b/pnpm-workspace.yaml
@@ -48,6 +48,7 @@ overrides:
array.prototype.flatmap: npm:@nolyfill/array.prototype.flatmap@latest
array.prototype.tosorted: npm:@nolyfill/array.prototype.tosorted@latest
drizzle-orm: 0.45.1
+ eslint-plugin-react-hooks>zod-validation-error: 4.0.2
global-agent>serialize-error: 7.0.1
has: npm:@nolyfill/has@latest
is-core-module: npm:@nolyfill/is-core-module@1.0.39
From a35d08f312c8873a213e0c141693cd732f5aef73 Mon Sep 17 00:00:00 2001
From: Stephen Zhou <38493346+hyoban@users.noreply.github.com>
Date: Sun, 1 Mar 2026 23:15:27 +0800
Subject: [PATCH 2/4] remove sub eslint config
---
apps/landing/eslint.config.mjs | 80 ----------------------------------
1 file changed, 80 deletions(-)
delete mode 100644 apps/landing/eslint.config.mjs
diff --git a/apps/landing/eslint.config.mjs b/apps/landing/eslint.config.mjs
deleted file mode 100644
index 7b431334b3..0000000000
--- a/apps/landing/eslint.config.mjs
+++ /dev/null
@@ -1,80 +0,0 @@
-// @ts-check
-import { defineConfig } from 'eslint-config-hyoban'
-
-import recursiveSort from './plugins/eslint-recursive-sort.mjs'
-
-export default defineConfig(
- {
- formatting: false,
- lessOpinionated: true,
- ignores: ['dist/**'],
- preferESM: false,
- },
- {
- settings: {
- tailwindcss: {
- whitelist: ['center'],
- },
- },
- rules: {
- 'tailwindcss/classnames-order': 'off',
- 'tailwindcss/no-custom-classname': 'off',
- 'unicorn/prefer-math-trunc': 'off',
- 'unicorn/expiring-todo-comments': 0,
- '@eslint-react/no-clone-element': 0,
- '@eslint-react/hooks-extra/no-direct-set-state-in-use-effect': 0,
- // NOTE: Disable this temporarily
- 'react-compiler/react-compiler': 0,
- 'no-restricted-syntax': 0,
- 'package-json/valid-name': 0,
-
- // disable react compiler rules for now
- 'react-hooks/no-unused-directives': 'off',
- 'react-hooks/static-components': 'off',
- 'react-hooks/use-memo': 'off',
- 'react-hooks/component-hook-factories': 'off',
- 'react-hooks/preserve-manual-memoization': 'off',
- 'react-hooks/immutability': 'off',
- 'react-hooks/globals': 'off',
- 'react-hooks/refs': 'off',
- 'react-hooks/set-state-in-effect': 'off',
- 'react-hooks/error-boundaries': 'off',
- 'react-hooks/purity': 'off',
- 'react-hooks/set-state-in-render': 'off',
- 'react-hooks/unsupported-syntax': 'off',
- 'react-hooks/config': 'off',
- 'react-hooks/gating': 'off',
-
- 'no-restricted-globals': [
- 'error',
- {
- name: 'location',
- message:
- "Since you don't use the same router instance in electron and browser, you can't use the global location to get the route info. \n\n" +
- 'You can use `useLocaltion` or `getReadonlyRoute` to get the route info.',
- },
- ],
- },
- },
- {
- files: ['**/*.tsx'],
- rules: {
- '@stylistic/jsx-self-closing-comp': 'error',
- },
- },
- {
- files: ['locales/**/*.json'],
- plugins: {
- 'recursive-sort': recursiveSort,
- },
- rules: {
- 'recursive-sort/recursive-sort': 'error',
- },
- },
- {
- files: ['package.json'],
- rules: {
- 'package-json/valid-name': 0,
- },
- },
-)
From d4be2c7187899a29d461de030b1778571696cc38 Mon Sep 17 00:00:00 2001
From: Stephen Zhou <38493346+hyoban@users.noreply.github.com>
Date: Sun, 1 Mar 2026 23:17:00 +0800
Subject: [PATCH 3/4] update suppression
---
eslint-suppressions.json | 756 +--------------------------------------
1 file changed, 5 insertions(+), 751 deletions(-)
diff --git a/eslint-suppressions.json b/eslint-suppressions.json
index 7bfd56725b..34b120e0d8 100644
--- a/eslint-suppressions.json
+++ b/eslint-suppressions.json
@@ -1751,14 +1751,6 @@
"count": 1
}
},
- "apps/landing/eslint.config.mjs": {
- "style/operator-linebreak": {
- "count": 1
- },
- "style/quotes": {
- "count": 1
- }
- },
"apps/landing/global.d.ts": {
"@typescript-eslint/method-signature-style": {
"count": 1
@@ -1766,12 +1758,6 @@
"@typescript-eslint/no-empty-object-type": {
"count": 1
},
- "style/indent-binary-ops": {
- "count": 1
- },
- "style/operator-linebreak": {
- "count": 1
- },
"ts/method-signature-style": {
"count": 3
},
@@ -1782,22 +1768,6 @@
"apps/landing/next.config.mjs": {
"node/prefer-global/process": {
"count": 2
- },
- "style/quotes": {
- "count": 1
- }
- },
- "apps/landing/plugins/eslint-recursive-sort.mjs": {
- "style/arrow-parens": {
- "count": 1
- },
- "style/brace-style": {
- "count": 1
- }
- },
- "apps/landing/src/app/[locale]/download/page.tsx": {
- "style/operator-linebreak": {
- "count": 2
}
},
"apps/landing/src/app/[locale]/error.tsx": {
@@ -1805,105 +1775,19 @@
"count": 1
}
},
- "apps/landing/src/app/[locale]/layout.tsx": {
- "style/arrow-parens": {
- "count": 2
- },
- "style/quote-props": {
- "count": 2
- }
- },
- "apps/landing/src/app/[locale]/privacy-policy/page.tsx": {
- "style/quotes": {
- "count": 3
- }
- },
- "apps/landing/src/app/[locale]/terms-of-service/page.tsx": {
- "style/quotes": {
- "count": 3
- }
- },
"apps/landing/src/atoms/viewport.ts": {
- "style/arrow-parens": {
- "count": 1
- },
- "style/quote-props": {
- "count": 6
- },
"ts/ban-ts-comment": {
"count": 1
}
},
- "apps/landing/src/components/common/ClientOnly.tsx": {
- "curly": {
- "count": 1
- }
- },
"apps/landing/src/components/common/HydrationEndDetector.tsx": {
"react-refresh/only-export-components": {
"count": 1
}
},
- "apps/landing/src/components/common/Lazyload.tsx": {
- "react-hooks-extra/no-direct-set-state-in-use-effect": {
- "count": 1
- }
- },
"apps/landing/src/components/common/LightRays.tsx": {
- "curly": {
- "count": 10
- },
"no-useless-return": {
"count": 1
- },
- "style/brace-style": {
- "count": 2
- },
- "style/member-delimiter-style": {
- "count": 1
- },
- "style/operator-linebreak": {
- "count": 7
- }
- },
- "apps/landing/src/components/common/ScrollTop.tsx": {
- "curly": {
- "count": 1
- }
- },
- "apps/landing/src/components/hoc/with-no-ssr.tsx": {
- "curly": {
- "count": 1
- }
- },
- "apps/landing/src/components/layout/footer/Footer.tsx": {
- "style/arrow-parens": {
- "count": 2
- },
- "style/jsx-one-expression-per-line": {
- "count": 2
- },
- "style/member-delimiter-style": {
- "count": 3
- }
- },
- "apps/landing/src/components/ui/3d-models/AISpline.ts": {
- "style/arrow-parens": {
- "count": 1
- },
- "style/exp-list-style": {
- "count": 1
- }
- },
- "apps/landing/src/components/ui/3d-models/AISplineLoader.tsx": {
- "curly": {
- "count": 3
- },
- "style/brace-style": {
- "count": 1
- },
- "style/operator-linebreak": {
- "count": 1
}
},
"apps/landing/src/components/ui/accordion/Accordion.tsx": {
@@ -1914,287 +1798,48 @@
"count": 2
}
},
- "apps/landing/src/components/ui/border-beam.tsx": {
- "style/quote-props": {
- "count": 2
- }
- },
- "apps/landing/src/components/ui/button/Button.tsx": {
- "style/indent": {
- "count": 2
- },
- "style/multiline-ternary": {
- "count": 2
- }
- },
- "apps/landing/src/components/ui/checkbox/Checkbox.tsx": {
- "curly": {
- "count": 1
- },
- "react-hooks-extra/no-direct-set-state-in-use-effect": {
- "count": 1
- },
- "style/operator-linebreak": {
- "count": 2
- }
- },
"apps/landing/src/components/ui/collapse/CollapseCss.tsx": {
"ts/no-use-before-define": {
"count": 2
}
},
- "apps/landing/src/components/ui/dialog/Dialog.tsx": {
- "curly": {
- "count": 1
- },
- "react-hooks-extra/no-direct-set-state-in-use-effect": {
- "count": 1
- },
- "style/indent-binary-ops": {
- "count": 1
- },
- "style/operator-linebreak": {
- "count": 1
- }
- },
- "apps/landing/src/components/ui/dropdown-menu/DropdownMenu.tsx": {
- "style/operator-linebreak": {
- "count": 3
- }
- },
"apps/landing/src/components/ui/effects/GridGuides.tsx": {
"no-multi-str": {
"count": 1
}
},
- "apps/landing/src/components/ui/effects/TiltCard.tsx": {
- "curly": {
- "count": 1
- },
- "style/arrow-parens": {
- "count": 2
- },
- "style/multiline-ternary": {
- "count": 2
- },
- "style/quote-props": {
- "count": 2
- }
- },
- "apps/landing/src/components/ui/glass/index.tsx": {
- "curly": {
- "count": 3
- },
- "style/brace-style": {
- "count": 4
- },
- "style/operator-linebreak": {
- "count": 2
- },
- "style/quote-props": {
- "count": 3
- }
- },
- "apps/landing/src/components/ui/highlighter.tsx": {
- "curly": {
- "count": 2
- },
- "style/operator-linebreak": {
- "count": 1
- }
- },
- "apps/landing/src/components/ui/input/Input.tsx": {
- "curly": {
- "count": 1
- },
- "react-hooks-extra/no-direct-set-state-in-use-effect": {
- "count": 2
- },
- "style/indent": {
- "count": 2
- },
- "style/multiline-ternary": {
- "count": 4
- },
- "style/operator-linebreak": {
- "count": 4
- }
- },
- "apps/landing/src/components/ui/json-highlighter/index.tsx": {
- "style/brace-style": {
- "count": 4
- },
- "style/multiline-ternary": {
- "count": 2
- },
- "style/operator-linebreak": {
- "count": 2
- }
- },
- "apps/landing/src/components/ui/light-rays.tsx": {
- "curly": {
- "count": 1
- },
- "react-hooks-extra/no-direct-set-state-in-use-effect": {
- "count": 1
- },
- "style/arrow-parens": {
- "count": 1
- }
- },
"apps/landing/src/components/ui/markdown/index.tsx": {
"node/prefer-global/process": {
"count": 1
},
"react-refresh/only-export-components": {
"count": 1
- },
- "style/brace-style": {
- "count": 1
}
},
"apps/landing/src/components/ui/modal/ModalContainer.tsx": {
- "curly": {
- "count": 1
- },
- "style/arrow-parens": {
- "count": 2
- },
"ts/no-use-before-define": {
"count": 1
}
},
- "apps/landing/src/components/ui/modal/ModalManager.ts": {
- "style/arrow-parens": {
- "count": 2
- }
- },
- "apps/landing/src/components/ui/panel/PanelSplitter.tsx": {
- "curly": {
- "count": 1
- }
- },
"apps/landing/src/components/ui/portal/provider.tsx": {
"ts/no-use-before-define": {
"count": 1
}
},
- "apps/landing/src/components/ui/prompts/BasePrompt.tsx": {
- "style/brace-style": {
- "count": 2
- },
- "style/multiline-ternary": {
- "count": 2
- }
- },
- "apps/landing/src/components/ui/prompts/InputPrompt.tsx": {
- "style/arrow-parens": {
- "count": 1
- },
- "style/brace-style": {
- "count": 3
- },
- "style/multiline-ternary": {
- "count": 2
- }
- },
- "apps/landing/src/components/ui/radio/index.tsx": {
- "style/operator-linebreak": {
- "count": 1
- }
- },
"apps/landing/src/components/ui/relative-time/RelativeTime.tsx": {
- "react-hooks-extra/no-direct-set-state-in-use-effect": {
- "count": 2
- },
- "style/operator-linebreak": {
- "count": 1
- },
"ts/ban-ts-comment": {
"count": 1
}
},
- "apps/landing/src/components/ui/scroll-areas/ScrollArea.tsx": {
- "style/multiline-ternary": {
- "count": 2
- }
- },
- "apps/landing/src/components/ui/segment-tab/SegmentTab.tsx": {
- "style/multiline-ternary": {
- "count": 2
- }
- },
- "apps/landing/src/components/ui/select/ComboboxSelect.tsx": {
- "style/arrow-parens": {
- "count": 1
- },
- "style/multiline-ternary": {
- "count": 2
- }
- },
- "apps/landing/src/components/ui/select/MultiSelect.tsx": {
- "curly": {
- "count": 2
- },
- "style/arrow-parens": {
- "count": 3
- },
- "style/multiline-ternary": {
- "count": 2
- },
- "style/operator-linebreak": {
- "count": 1
- }
- },
- "apps/landing/src/components/ui/select/Select.tsx": {
- "style/indent-binary-ops": {
- "count": 1
- },
- "style/multiline-ternary": {
- "count": 2
- },
- "style/operator-linebreak": {
- "count": 2
- }
- },
"apps/landing/src/components/ui/sheet/Sheet.tsx": {
- "curly": {
- "count": 1
- },
"react-refresh/only-export-components": {
"count": 1
- },
- "style/arrow-parens": {
- "count": 1
- }
- },
- "apps/landing/src/components/ui/switch/index.tsx": {
- "curly": {
- "count": 1
- },
- "react-hooks-extra/no-direct-set-state-in-use-effect": {
- "count": 1
- },
- "style/jsx-curly-brace-presence": {
- "count": 1
- },
- "style/multiline-ternary": {
- "count": 4
- },
- "style/operator-linebreak": {
- "count": 1
}
},
"apps/landing/src/components/ui/theme-switcher/ThemeSwitcher.tsx": {
"@eslint-react/dom/no-flush-sync": {
"count": 1
},
- "curly": {
- "count": 2
- },
- "react-dom/no-flush-sync": {
- "count": 1
- },
"ts/no-use-before-define": {
"count": 2
}
@@ -2204,410 +1849,84 @@
"count": 1
}
},
- "apps/landing/src/components/ui/viewport/OnlyDesktop.tsx": {
- "curly": {
- "count": 2
- }
- },
- "apps/landing/src/components/ui/viewport/OnlyMobile.tsx": {
- "curly": {
- "count": 2
- }
- },
- "apps/landing/src/components/widgets/download/DownloadHero.tsx": {
- "style/arrow-parens": {
- "count": 1
- }
- },
- "apps/landing/src/components/widgets/download/PlatformDownloads.tsx": {
- "style/arrow-parens": {
- "count": 4
- }
- },
- "apps/landing/src/components/widgets/landing/Audience.tsx": {
- "curly": {
- "count": 1
- },
- "style/arrow-parens": {
- "count": 2
- },
- "style/brace-style": {
- "count": 1
- },
- "style/jsx-one-expression-per-line": {
- "count": 5
- }
- },
"apps/landing/src/components/widgets/landing/BuiltOpen.tsx": {
- "style/arrow-parens": {
+ "tailwindcss/no-unnecessary-whitespace": {
"count": 1
},
- "style/multiline-ternary": {
- "count": 2
- },
"ts/no-use-before-define": {
"count": 12
}
},
- "apps/landing/src/components/widgets/landing/Features.tsx": {
- "style/jsx-one-expression-per-line": {
- "count": 1
- },
- "style/jsx-wrap-multilines": {
- "count": 3
- },
- "style/multiline-ternary": {
- "count": 2
- }
- },
- "apps/landing/src/components/widgets/landing/Header.tsx": {
- "style/arrow-parens": {
- "count": 1
- },
- "style/jsx-curly-brace-presence": {
- "count": 1
- }
- },
"apps/landing/src/components/widgets/landing/Hero.tsx": {
"no-useless-rename": {
"count": 1
},
- "style/arrow-parens": {
- "count": 2
- },
- "ts/no-use-before-define": {
- "count": 1
- }
- },
- "apps/landing/src/components/widgets/landing/PromptDemo.tsx": {
- "style/arrow-parens": {
- "count": 2
- }
- },
- "apps/landing/src/components/widgets/landing/SocialProof.tsx": {
- "curly": {
- "count": 1
- },
- "style/quotes": {
- "count": 5
- }
- },
- "apps/landing/src/components/widgets/landing/ViewsShowcase.tsx": {
- "style/arrow-parens": {
+ "tailwindcss/no-unnecessary-whitespace": {
"count": 1
},
- "style/member-delimiter-style": {
+ "ts/no-use-before-define": {
"count": 1
}
},
"apps/landing/src/components/widgets/landing/WindowChrome.tsx": {
- "style/multiline-ternary": {
- "count": 2
+ "tailwindcss/no-unnecessary-whitespace": {
+ "count": 1
}
},
"apps/landing/src/components/widgets/simulators/EntryPage.tsx": {
- "style/jsx-one-expression-per-line": {
- "count": 3
- },
"ts/no-use-before-define": {
"count": 1
}
},
"apps/landing/src/components/widgets/simulators/ListDemo.tsx": {
- "style/arrow-parens": {
- "count": 1
- },
"ts/no-use-before-define": {
"count": 1
}
},
- "apps/landing/src/components/widgets/simulators/components/SimulatorReaders.tsx": {
- "style/jsx-one-expression-per-line": {
- "count": 2
- }
- },
"apps/landing/src/components/widgets/simulators/components/ai/AIChainOfThought.tsx": {
- "curly": {
- "count": 7
- },
"no-useless-return": {
"count": 1
},
- "style/jsx-one-expression-per-line": {
- "count": 1
- },
- "style/jsx-wrap-multilines": {
- "count": 2
- },
- "style/multiline-ternary": {
- "count": 4
- },
"ts/no-use-before-define": {
"count": 3
}
},
- "apps/landing/src/components/widgets/simulators/components/ai/AIReasoningPart.tsx": {
- "curly": {
- "count": 1
- },
- "react-hooks-extra/no-direct-set-state-in-use-effect": {
- "count": 3
- }
- },
- "apps/landing/src/components/widgets/simulators/components/ai/ToolInvocationComponent.tsx": {
- "style/jsx-curly-brace-presence": {
- "count": 4
- },
- "style/jsx-wrap-multilines": {
- "count": 1
- },
- "style/multiline-ternary": {
- "count": 4
- },
- "style/operator-linebreak": {
- "count": 1
- }
- },
- "apps/landing/src/components/widgets/simulators/components/ai/animated/AnimatedMarkdown.tsx": {
- "style/brace-style": {
- "count": 4
- },
- "style/quote-props": {
- "count": 18
- }
- },
- "apps/landing/src/components/widgets/simulators/components/ai/animated/TokenizedText.tsx": {
- "curly": {
- "count": 2
- },
- "style/brace-style": {
- "count": 3
- },
- "style/operator-linebreak": {
- "count": 3
- }
- },
"apps/landing/src/components/widgets/simulators/components/ai/parse-incomplete-markdown.ts": {
- "curly": {
- "count": 2
- },
"no-cond-assign": {
"count": 2
},
- "style/brace-style": {
- "count": 2
- },
- "style/operator-linebreak": {
- "count": 19
- },
- "style/quotes": {
- "count": 2
- },
"ts/no-use-before-define": {
"count": 3
}
},
- "apps/landing/src/components/widgets/simulators/components/chat/AiMockMessage.tsx": {
- "react-hooks-extra/no-direct-set-state-in-use-effect": {
- "count": 3
- },
- "style/arrow-parens": {
- "count": 3
- },
- "style/indent": {
- "count": 4
- },
- "style/indent-binary-ops": {
- "count": 2
- },
- "style/member-delimiter-style": {
- "count": 6
- },
- "style/multiline-ternary": {
- "count": 4
- },
- "style/operator-linebreak": {
- "count": 1
- }
- },
- "apps/landing/src/components/widgets/simulators/components/chat/ListChatPlayer.tsx": {
- "curly": {
- "count": 5
- },
- "style/arrow-parens": {
- "count": 9
- },
- "style/brace-style": {
- "count": 2
- },
- "style/jsx-curly-brace-presence": {
- "count": 1
- },
- "style/jsx-one-expression-per-line": {
- "count": 3
- },
- "style/jsx-wrap-multilines": {
- "count": 1
- },
- "style/member-delimiter-style": {
- "count": 2
- },
- "style/multiline-ternary": {
- "count": 12
- },
- "style/operator-linebreak": {
- "count": 1
- }
- },
- "apps/landing/src/components/widgets/simulators/components/chat/stream.ts": {
- "style/brace-style": {
- "count": 1
- },
- "style/operator-linebreak": {
- "count": 1
- }
- },
- "apps/landing/src/components/widgets/simulators/mocks.tsx": {
- "style/quotes": {
- "count": 3
- }
- },
- "apps/landing/src/constants/download.ts": {
- "style/member-delimiter-style": {
- "count": 1
- }
- },
"apps/landing/src/constants/env.ts": {
- "curly": {
- "count": 1
- },
"node/prefer-global/process": {
"count": 5
}
},
- "apps/landing/src/constants/site.ts": {
- "style/quote-props": {
- "count": 2
- }
- },
- "apps/landing/src/hooks/biz/use-github-star.ts": {
- "style/brace-style": {
- "count": 1
- }
- },
"apps/landing/src/hooks/common/use-click-away.ts": {
"@typescript-eslint/no-unsafe-function-type": {
"count": 1
},
- "style/indent-binary-ops": {
- "count": 1
- },
- "style/operator-linebreak": {
- "count": 2
- },
"ts/no-unsafe-function-type": {
"count": 2
}
},
- "apps/landing/src/hooks/common/use-is-client.ts": {
- "react-hooks-extra/no-direct-set-state-in-use-effect": {
- "count": 1
- }
- },
- "apps/landing/src/hooks/common/use-is-mounted.ts": {
- "react-hooks-extra/no-direct-set-state-in-use-effect": {
- "count": 1
- }
- },
- "apps/landing/src/hooks/common/use-sync-effect.ts": {
- "curly": {
- "count": 1
- }
- },
"apps/landing/src/hooks/common/useMeasure.ts": {
- "curly": {
- "count": 4
- },
- "style/arrow-parens": {
- "count": 4
- },
- "style/exp-list-style": {
- "count": 2
- },
- "style/member-delimiter-style": {
- "count": 1
- },
- "style/operator-linebreak": {
- "count": 1
- },
"ts/no-use-before-define": {
"count": 1
}
},
- "apps/landing/src/hooks/shared/use-mask-scrollarea.ts": {
- "curly": {
- "count": 2
- },
- "react-hooks-extra/no-direct-set-state-in-use-effect": {
- "count": 20
- },
- "style/arrow-parens": {
- "count": 1
- },
- "style/brace-style": {
- "count": 1
- }
- },
- "apps/landing/src/i18n/request.ts": {
- "style/operator-linebreak": {
- "count": 1
- }
- },
- "apps/landing/src/i18n/routing.ts": {
- "style/operator-linebreak": {
- "count": 1
- }
- },
"apps/landing/src/legal/privacy.md": {
- "hyoban/md-one-sentence-per-line": {
- "count": 17
- },
"md/no-curly-quote": {
"count": 12
}
},
"apps/landing/src/legal/tos.md": {
- "hyoban/md-one-sentence-per-line": {
- "count": 38
- },
"md/no-curly-quote": {
"count": 19
}
},
- "apps/landing/src/lib/color.ts": {
- "style/arrow-parens": {
- "count": 1
- },
- "style/brace-style": {
- "count": 1
- },
- "style/operator-linebreak": {
- "count": 4
- }
- },
- "apps/landing/src/lib/datetime.ts": {
- "style/brace-style": {
- "count": 5
- }
- },
- "apps/landing/src/lib/dom.ts": {
- "style/arrow-parens": {
- "count": 2
- },
- "style/brace-style": {
- "count": 1
- }
- },
"apps/landing/src/lib/env.ts": {
"node/prefer-global/process": {
"count": 1
@@ -2618,39 +1937,11 @@
"count": 1
}
},
- "apps/landing/src/lib/jotai.ts": {
- "style/arrow-parens": {
- "count": 1
- }
- },
- "apps/landing/src/lib/platform.ts": {
- "style/brace-style": {
- "count": 2
- }
- },
"apps/landing/src/lib/scroller.ts": {
- "style/operator-linebreak": {
- "count": 1
- },
"ts/no-use-before-define": {
"count": 2
}
},
- "apps/landing/src/lib/sleep.ts": {
- "style/arrow-parens": {
- "count": 1
- }
- },
- "apps/landing/src/providers/root/event-provider.tsx": {
- "style/brace-style": {
- "count": 1
- }
- },
- "apps/landing/src/providers/root/index.tsx": {
- "style/arrow-parens": {
- "count": 1
- }
- },
"apps/landing/src/providers/root/page-scroll-info-provider.tsx": {
"react-refresh/only-export-components": {
"count": 5
@@ -2659,26 +1950,7 @@
"count": 1
}
},
- "apps/landing/src/providers/root/react-query-provider.tsx": {
- "curly": {
- "count": 1
- },
- "style/brace-style": {
- "count": 1
- },
- "style/operator-linebreak": {
- "count": 1
- }
- },
- "apps/landing/src/providers/shared/LayoutRightSideProvider.tsx": {
- "curly": {
- "count": 2
- }
- },
"apps/landing/src/providers/shared/WrappedElementProvider.tsx": {
- "curly": {
- "count": 2
- },
"react-refresh/only-export-components": {
"count": 5
},
@@ -2686,29 +1958,11 @@
"count": 4
}
},
- "apps/landing/src/proxy.ts": {
- "style/arrow-parens": {
- "count": 1
- },
- "style/operator-linebreak": {
- "count": 1
- }
- },
"apps/landing/tsconfig.json": {
"jsonc/sort-keys": {
"count": 9
}
},
- "apps/landing/worker/index.js": {
- "style/arrow-parens": {
- "count": 1
- }
- },
- "apps/landing/wrangler.jsonc": {
- "jsonc/comma-dangle": {
- "count": 9
- }
- },
"apps/mobile/AGENTS.md": {
"md/code-lang-shorthand": {
"count": 1
From e73e5b673b96769f516a4deb8caa17bf9b9d0892 Mon Sep 17 00:00:00 2001
From: Stephen Zhou <38493346+hyoban@users.noreply.github.com>
Date: Sun, 1 Mar 2026 23:19:15 +0800
Subject: [PATCH 4/4] save
---
.claude/skills/desktop-release/SKILL.md | 24 +-
.../installing-mobile-preview-builds/SKILL.md | 12 +-
.claude/skills/mobile-release/SKILL.md | 16 +-
.claude/skills/update-deps/SKILL.md | 4 +-
.github/ISSUE_TEMPLATE/i18n.yml | 2 +-
.github/actions/setup-version/action.yml | 10 +-
.github/actions/setup-xcode/action.yml | 10 +-
.github/advanced-issue-labeler.yml | 6 +-
.github/dependabot.yaml | 6 +-
.github/workflows/build-android.yml | 12 +-
.github/workflows/build-desktop.yml | 22 +-
.github/workflows/build-ios-development.yml | 8 +-
.github/workflows/build-ios.yml | 6 +-
.github/workflows/build-web.yml | 2 +-
.github/workflows/deploy-cloudflare.yml | 2 +-
.github/workflows/lint.yml | 2 +-
.github/workflows/translator.yml | 2 +-
AGENTS.md | 6 +-
README.md | 4 +-
apps/cli/tsconfig.json | 2 +-
apps/desktop/AGENTS.md | 2 +-
apps/desktop/changelog/0.4.3.md | 2 +-
apps/desktop/changelog/0.4.5.md | 6 +-
apps/desktop/changelog/0.4.6.md | 2 +-
apps/desktop/changelog/0.4.8.md | 6 +-
apps/desktop/changelog/0.5.0.md | 6 +-
apps/desktop/changelog/0.6.2.md | 10 +-
apps/desktop/changelog/0.9.0.md | 4 +-
apps/desktop/changelog/1.1.0.md | 2 +-
apps/desktop/changelog/1.2.2.md | 2 +-
.../main/src/ipc/services/integration.ts | 1 -
apps/desktop/layer/main/src/lib/proxy.ts | 4 +-
apps/desktop/layer/main/src/lib/router.ts | 1 -
.../layer/main/src/manager/bootstrap.ts | 2 +-
apps/desktop/layer/main/src/manager/window.ts | 7 +-
apps/desktop/layer/main/tsconfig.json | 18 +-
.../layer/renderer/src/@types/constants.ts | 8 +-
.../layer/renderer/src/atoms/player.ts | 1 -
.../src/components/common/ShadowDOM.tsx | 2 +-
.../ui/code-highlighter/shiki/Shiki.tsx | 2 +-
.../components/ui/crop/AvatarUploadModal.tsx | 12 +-
.../src/components/ui/media/VideoPlayer.tsx | 2 +-
.../src/components/ui/modal/stacked/modal.tsx | 652 +++++++++---------
.../ai-chat/components/layouts/ChatTitle.tsx | 2 +-
.../editor/plugins/mention/constants.ts | 2 +-
.../editor/plugins/shortcut/constants.ts | 2 +-
.../src/modules/ai-chat/utils/extractor.ts | 1 -
.../modules/ai-chat/utils/file-validation.ts | 2 +-
.../AIEnhancedTimelineLayout.tsx | 2 +-
.../MobileTimelineLayout.tsx | 143 ++--
.../modules/command/commands/integration.tsx | 1 -
.../src/modules/customize-toolbar/dnd.tsx | 2 +-
.../entry-column/Items/picture-item.tsx | 140 ++--
.../hooks/useEntryMarkReadHandler.tsx | 1 -
.../src/modules/entry-column/item.tsx | 7 +-
.../components/selection/SharePosterModal.tsx | 2 +-
.../layer/renderer/src/modules/panel/cmdk.tsx | 90 +--
.../subscription-column/FeedCategory.tsx | 4 +-
.../src/modules/subscription-column/index.tsx | 2 +-
.../renderer/src/providers/setting-sync.tsx | 1 -
apps/desktop/layer/renderer/src/router.tsx | 2 +-
.../desktop/layer/renderer/src/router.web.tsx | 2 +-
.../layer/renderer/src/store/utils/helper.ts | 1 -
apps/desktop/layer/renderer/tsconfig.json | 30 +-
apps/desktop/plugins/vite/html-inject.ts | 4 +-
.../plugins/vite/utils/i18n-completeness.ts | 2 +-
.../src/components/common/LightRays.tsx | 1 -
.../components/widgets/landing/BuiltOpen.tsx | 2 +-
.../src/components/widgets/landing/Hero.tsx | 4 +-
.../widgets/landing/WindowChrome.tsx | 2 +-
.../components/ai/AIChainOfThought.tsx | 1 -
apps/landing/src/legal/privacy.md | 8 +-
apps/landing/src/legal/tos.md | 10 +-
apps/landing/src/lib/helper.ts | 8 +-
apps/landing/tsconfig.json | 24 +-
apps/mobile/AGENTS.md | 2 +-
apps/mobile/README.md | 6 +-
apps/mobile/changelog/0.1.6.md | 2 +-
apps/mobile/changelog/0.1.8.md | 2 +-
apps/mobile/changelog/0.1.9.md | 2 +-
apps/mobile/changelog/0.2.0.md | 2 +-
apps/mobile/changelog/0.2.1.md | 4 +-
apps/mobile/src/@types/constants.ts | 8 +-
.../src/components/layouts/tabbar/hooks.ts | 1 -
.../ui/lightbox/ImageViewing/transforms.ts | 18 +-
.../src/components/ui/qrcode/useQRCodeData.ts | 4 +-
apps/mobile/src/hooks/useIntentHandler.ts | 1 -
apps/mobile/src/lib/api-client.ts | 2 +-
apps/mobile/src/lib/client-session.ts | 4 +-
.../mobile/src/modules/context-menu/feeds.tsx | 1 -
.../mobile/src/modules/context-menu/video.tsx | 1 -
.../use-pull-up-navigation.tsx | 1 -
apps/mobile/tsconfig.json | 14 +-
.../src/components/shiki/Shiki.tsx | 2 +-
.../web-app/html-renderer/tsconfig.json | 18 +-
apps/ssr/client/@types/constants.ts | 6 +-
apps/ssr/client/lib/helper.ts | 1 -
apps/ssr/client/modules/login/index.tsx | 1 -
.../pages/(main)/share/users/[id]/metadata.ts | 4 +-
apps/ssr/client/query/entries.ts | 2 +-
apps/ssr/client/router.tsx | 2 +-
apps/ssr/src/lib/api-client.ts | 2 +-
apps/ssr/tsconfig.json | 30 +-
eslint-suppressions.json | 634 -----------------
packages/configs/tsconfig.extend.json | 18 +-
packages/internal/atoms/package.json | 8 +-
packages/internal/atoms/tsconfig.json | 6 +-
.../src/ui/progressive-blur/index.tsx | 2 +-
.../src/ui/shrinking-focus-border/index.tsx | 4 +-
packages/internal/components/tsconfig.json | 8 +-
packages/internal/constants/tsconfig.json | 6 +-
packages/internal/database/package.json | 12 +-
.../hooks/src/factory/createHTMLMediaHook.ts | 1 -
.../src/optimistic/useOptimisticMutation.ts | 2 +-
packages/internal/hooks/src/useLongPress.ts | 3 +-
.../internal/hooks/src/useSmoothScroll.ts | 2 +-
packages/internal/hooks/tsconfig.json | 10 +-
packages/internal/logger/tsconfig.json | 8 +-
packages/internal/models/package.json | 4 +-
packages/internal/models/tsconfig.json | 8 +-
packages/internal/shared/package.json | 12 +-
packages/internal/shared/src/constants.ts | 2 +-
packages/internal/shared/tsconfig.json | 12 +-
packages/internal/store/package.json | 68 +-
packages/internal/store/src/lib/helper.ts | 1 -
.../internal/store/src/modules/feed/getter.ts | 1 -
.../internal/store/src/modules/feed/store.ts | 6 +-
packages/internal/tracker/src/manager.ts | 2 +-
packages/internal/utils/package.json | 8 +-
packages/internal/utils/src/cjk.ts | 1 -
packages/internal/utils/src/color.ts | 4 +-
packages/internal/utils/src/lru-cache.test.ts | 2 +-
.../internal/utils/src/path-parser.test.ts | 52 +-
packages/internal/utils/src/utils.spec.ts | 10 +-
packages/internal/utils/src/utils.ts | 10 +-
packages/internal/utils/tsconfig.json | 6 +-
packages/readability/tsconfig.json | 4 +-
plugins/eslint/eslint-package-json.js | 78 +--
tsconfig.json | 4 +-
wiki/contribute-i18n.md | 2 +-
140 files changed, 958 insertions(+), 1623 deletions(-)
diff --git a/.claude/skills/desktop-release/SKILL.md b/.claude/skills/desktop-release/SKILL.md
index 2ccd562078..f95f47ba2c 100644
--- a/.claude/skills/desktop-release/SKILL.md
+++ b/.claude/skills/desktop-release/SKILL.md
@@ -18,11 +18,11 @@ Perform a regular desktop release. This skill handles the full release workflow
## Step 1: Gather changes since last release
1. Find the last release tag:
- ```bash
+ ```sh
git tag --sort=-creatordate | grep '^desktop/v' | head -1
```
2. Get all commits since that tag on the current branch:
- ```bash
+ ```sh
git log ..HEAD --oneline --no-merges
```
3. Categorize commits into:
@@ -38,7 +38,7 @@ Perform a regular desktop release. This skill handles the full release workflow
3. Wait for user confirmation or edits before writing.
4. Write the final content to `apps/desktop/changelog/next.md`, following the template format:
- ```markdown
+ ```md
# What's new in vNEXT_VERSION
## Shiny new things
@@ -65,11 +65,11 @@ Perform a regular desktop release. This skill handles the full release workflow
`nbump` requires a clean working tree. Commit changelog edits before running bump.
1. Stage the changelog update:
- ```bash
+ ```sh
git add apps/desktop/changelog/next.md
```
2. Commit it on `dev`:
- ```bash
+ ```sh
git commit -m "docs(desktop): prepare release changelog"
```
3. If there are no changes to commit, continue without creating an extra commit.
@@ -79,11 +79,11 @@ Perform a regular desktop release. This skill handles the full release workflow
This is critical for determining whether users need a full app update or can use the lightweight renderer hot update.
1. Check what files changed in `apps/desktop/layer/main/` since the last release tag:
- ```bash
+ ```sh
git diff ..HEAD --name-only -- apps/desktop/layer/main/
```
2. Also check changes to `apps/desktop/package.json` fields other than version/mainHash (since package.json is included in the hash calculation):
- ```bash
+ ```sh
git diff ..HEAD -- apps/desktop/package.json
```
@@ -104,11 +104,11 @@ Present your analysis to the user with:
1. Save the current mainHash from `apps/desktop/package.json` for later comparison.
2. Verify working tree is clean before bump:
- ```bash
+ ```sh
git status --short
```
3. Change directory to `apps/desktop/` and run the bump:
- ```bash
+ ```sh
cd apps/desktop && pnpm bump
```
4. This command will:
@@ -126,17 +126,17 @@ Present your analysis to the user with:
If Step 4 decided mainHash should NOT be updated, restore the old value now. The bump has already committed, pushed, and created the PR on a new release branch, so we amend the commit and force push. This is safe because the release branch was just created.
1. Change back to the repo root first (Step 5 left the working directory at `apps/desktop/`):
- ```bash
+ ```sh
cd ../..
```
2. Ensure you are on the `release/desktop/{NEW_VERSION}` branch (bump should have switched to it).
3. Replace the recalculated mainHash with the saved old value in `apps/desktop/package.json`.
4. Stage and amend the release commit:
- ```bash
+ ```sh
git add apps/desktop/package.json && git commit --amend --no-edit
```
5. Force push the release branch:
- ```bash
+ ```sh
git push --force origin release/desktop/{NEW_VERSION}
```
diff --git a/.claude/skills/installing-mobile-preview-builds/SKILL.md b/.claude/skills/installing-mobile-preview-builds/SKILL.md
index c842a1536b..8ba5e94cd0 100644
--- a/.claude/skills/installing-mobile-preview-builds/SKILL.md
+++ b/.claude/skills/installing-mobile-preview-builds/SKILL.md
@@ -21,13 +21,13 @@ Use this skill to create a fresh local `preview` iOS build and install it on a c
- Run from repo root and ensure `apps/mobile` exists.
- Verify `pnpm`, `xcrun`, `xcodebuild`, and `eas-cli` are available.
- Verify EAS login:
- ```bash
+ ```sh
cd apps/mobile
pnpm dlx eas-cli whoami
```
2. Resolve target device.
- List paired devices:
- ```bash
+ ```sh
xcrun devicectl list devices
```
- Choose device in this order:
@@ -35,7 +35,7 @@ Use this skill to create a fresh local `preview` iOS build and install it on a c
- Otherwise, first paired iPhone.
3. Trigger local `preview` iOS build.
- ```bash
+ ```sh
mkdir -p .context/preview-install
cd apps/mobile
pnpm dlx eas-cli build -p ios --profile preview --non-interactive --local --output=./build-preview.ipa
@@ -44,14 +44,14 @@ Use this skill to create a fresh local `preview` iOS build and install it on a c
```
4. Install to device locally.
- ```bash
+ ```sh
unzip -q -o .context/preview-install/folo-preview.ipa -d .context/preview-install/unpacked
APP_PATH=$(find .context/preview-install/unpacked/Payload -maxdepth 1 -name '*.app' -type d | head -n 1)
xcrun devicectl device install app --device "" "$APP_PATH"
```
5. Try launching app.
- ```bash
+ ```sh
xcrun devicectl device process launch --device "" is.follow --activate
```
@@ -64,7 +64,7 @@ Use this skill to create a fresh local `preview` iOS build and install it on a c
- failing command
- key error message from command output
- If app config fails with `Assets source directory not found ... /out/rn-web`, prebuild assets then retry once:
- ```bash
+ ```sh
pnpm --filter @follow/rn-micro-web-app build --outDir out/rn-web/html-renderer
```
diff --git a/.claude/skills/mobile-release/SKILL.md b/.claude/skills/mobile-release/SKILL.md
index 308abb9656..8ad43fffbc 100644
--- a/.claude/skills/mobile-release/SKILL.md
+++ b/.claude/skills/mobile-release/SKILL.md
@@ -18,15 +18,15 @@ Perform a regular mobile release. This skill handles the full release workflow f
## Step 1: Gather changes since last release
1. Find the last release tag (both old `mobile@` and new `mobile/v` prefixes exist):
- ```bash
+ ```sh
git tag --sort=-creatordate | grep -E '^mobile[@/]' | head -1
```
2. If no tag found, find the last release commit by matching only the subject line:
- ```bash
+ ```sh
git log --format="%H %s" | grep "^[a-f0-9]* release(mobile): release v" | head -1 | awk '{print $1}'
```
3. Get all commits since the last release on the current branch:
- ```bash
+ ```sh
git log ..HEAD --oneline --no-merges
```
4. Categorize commits into:
@@ -42,7 +42,7 @@ Perform a regular mobile release. This skill handles the full release workflow f
3. Wait for user confirmation or edits before writing.
4. Write the final content to `apps/mobile/changelog/next.md`, following the template format:
- ```markdown
+ ```md
# What's New in vNEXT_VERSION
## Shiny new things
@@ -69,11 +69,11 @@ Perform a regular mobile release. This skill handles the full release workflow f
`nbump` requires a clean working tree. Commit changelog edits before running bump.
1. Stage the changelog update:
- ```bash
+ ```sh
git add apps/mobile/changelog/next.md
```
2. Commit it on `dev`:
- ```bash
+ ```sh
git commit -m "docs(mobile): prepare release changelog"
```
3. If there are no changes to commit, continue without creating an extra commit.
@@ -81,11 +81,11 @@ Perform a regular mobile release. This skill handles the full release workflow f
## Step 4: Execute bump
1. Verify working tree is clean before bump:
- ```bash
+ ```sh
git status --short
```
2. Change directory to `apps/mobile/` and run the bump:
- ```bash
+ ```sh
cd apps/mobile && pnpm bump
```
3. This is an interactive `nbump` command that prompts for version selection. It will:
diff --git a/.claude/skills/update-deps/SKILL.md b/.claude/skills/update-deps/SKILL.md
index ab08c837e9..d6e3b46747 100644
--- a/.claude/skills/update-deps/SKILL.md
+++ b/.claude/skills/update-deps/SKILL.md
@@ -108,7 +108,7 @@ After all updates are applied:
Run these commands sequentially in the repo root and capture results:
-```bash
+```sh
pnpm install
pnpm typecheck
pnpm test
@@ -119,7 +119,7 @@ pnpm lint
Run these commands sequentially in `BACKEND_DIR` and capture results:
-```bash
+```sh
pnpm install
pnpm typecheck
pnpm test
diff --git a/.github/ISSUE_TEMPLATE/i18n.yml b/.github/ISSUE_TEMPLATE/i18n.yml
index e125c70bde..ab0781c118 100644
--- a/.github/ISSUE_TEMPLATE/i18n.yml
+++ b/.github/ISSUE_TEMPLATE/i18n.yml
@@ -1,7 +1,7 @@
name: 🌐 Internationalization (i18n)
description: Contribute to or report issues with translations
title: "[i18n]: "
-labels: ["i18n", "triage"]
+labels: [i18n, triage]
body:
- type: markdown
attributes:
diff --git a/.github/actions/setup-version/action.yml b/.github/actions/setup-version/action.yml
index c790bdd7dc..b8a5776514 100644
--- a/.github/actions/setup-version/action.yml
+++ b/.github/actions/setup-version/action.yml
@@ -1,18 +1,18 @@
name: Setup Version
-description: "Setup Version"
+description: Setup Version
inputs:
type:
required: true
description: "Type of the app, either 'desktop' or 'mobile'"
- default: "desktop"
+ default: desktop
outputs:
APP_VERSION:
- description: "App Version"
+ description: App Version
value: ${{ steps.version.outputs.APP_VERSION }}
runs:
- using: "composite"
+ using: composite
steps:
- - name: "Write Version"
+ - name: Write Version
id: version
shell: bash
run: |
diff --git a/.github/actions/setup-xcode/action.yml b/.github/actions/setup-xcode/action.yml
index 7bc7e9c0c7..90d6e8d1b0 100644
--- a/.github/actions/setup-xcode/action.yml
+++ b/.github/actions/setup-xcode/action.yml
@@ -1,13 +1,13 @@
-name: "Setup Xcode"
-description: "Setup specific Xcode version for iOS builds"
+name: Setup Xcode
+description: Setup specific Xcode version for iOS builds
inputs:
xcode-version:
- description: "Xcode version to use"
+ description: Xcode version to use
required: false
- default: "26.0.1"
+ default: 26.0.1
runs:
- using: "composite"
+ using: composite
steps:
- uses: maxim-lobanov/setup-xcode@v1
with:
diff --git a/.github/advanced-issue-labeler.yml b/.github/advanced-issue-labeler.yml
index 707546174e..9a321b34ea 100644
--- a/.github/advanced-issue-labeler.yml
+++ b/.github/advanced-issue-labeler.yml
@@ -1,9 +1,9 @@
policy:
- section:
- id: [platform]
- block-list: ["None", "Other"]
+ block-list: [None, Other]
label:
- name: "platform: desktop"
- keys: ["Desktop - macOS", "Desktop - Windows", "Desktop - Linux", "Desktop - Web"]
+ keys: [Desktop - macOS, Desktop - Windows, Desktop - Linux, Desktop - Web]
- name: "platform: mobile"
- keys: ["Mobile - iOS", "Mobile - Android", "Mobile - Web"]
+ keys: [Mobile - iOS, Mobile - Android, Mobile - Web]
diff --git a/.github/dependabot.yaml b/.github/dependabot.yaml
index 04675b97b5..45a9e09250 100644
--- a/.github/dependabot.yaml
+++ b/.github/dependabot.yaml
@@ -33,15 +33,15 @@ updates:
# filter not work
- dependency-name: unplugin-ast
- versions: ["0.14.5"]
+ versions: [0.14.5]
open-pull-requests-limit: 100
groups:
minor-and-patch:
applies-to: version-updates
update-types:
- - "minor"
- - "patch"
+ - minor
+ - patch
pathed:
patterns:
- immer
diff --git a/.github/workflows/build-android.yml b/.github/workflows/build-android.yml
index ebb6765a9c..62b7a83c35 100644
--- a/.github/workflows/build-android.yml
+++ b/.github/workflows/build-android.yml
@@ -6,7 +6,7 @@ on:
- "**"
paths:
- "apps/mobile/**"
- - "pnpm-lock.yaml"
+ - pnpm-lock.yaml
workflow_dispatch:
inputs:
profile:
@@ -15,11 +15,11 @@ on:
options:
- preview
- production
- description: "Build profile"
+ description: Build profile
release:
type: boolean
default: false
- description: "Create a release draft for the build"
+ description: Create a release draft for the build
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}-${{ github.event.inputs.profile }}
@@ -52,13 +52,13 @@ jobs:
uses: actions/setup-node@v6
with:
node-version: 22
- cache: "pnpm"
+ cache: pnpm
- name: Set up JDK 17
uses: actions/setup-java@v5
with:
java-version: "17"
- distribution: "zulu"
+ distribution: zulu
- name: Setup Android SDK
uses: android-actions/setup-android@v3
@@ -102,7 +102,7 @@ jobs:
id: version
uses: ./.github/actions/setup-version
with:
- type: "mobile"
+ type: mobile
- name: Prepare Release Notes
if: github.event.inputs.release == 'true'
diff --git a/.github/workflows/build-desktop.yml b/.github/workflows/build-desktop.yml
index ea61e1d0e7..fcd66c26ae 100644
--- a/.github/workflows/build-desktop.yml
+++ b/.github/workflows/build-desktop.yml
@@ -7,16 +7,16 @@ on:
paths:
- "apps/desktop/**"
- "packages/**"
- - "pnpm-lock.yaml"
- - ".github/workflows/build-desktop.yml"
+ - pnpm-lock.yaml
+ - .github/workflows/build-desktop.yml
workflow_dispatch:
inputs:
tag_version:
type: boolean
- description: "Tag Version"
+ description: Tag Version
store:
type: boolean
- description: "Build for Mac App Store and Microsoft Store"
+ description: Build for Mac App Store and Microsoft Store
build_version:
type: string
description: "Build Version, only available when mas is true"
@@ -76,7 +76,7 @@ jobs:
uses: actions/setup-node@v6
with:
node-version: 22
- cache: "pnpm"
+ cache: pnpm
- name: Install Python setuptools
if: runner.os == 'macOS'
@@ -228,12 +228,12 @@ jobs:
if: runner.os == 'windows' && env.RELEASE == 'true' && github.event.inputs.store != 'true'
with:
api-token: "${{ secrets.SIGNPATH_API_TOKEN }}"
- organization-id: "8c651516-fdaf-40a1-9fea-001dffde850e"
- project-slug: "Folo"
- signing-policy-slug: "release-signing"
- artifact-configuration-slug: "github"
+ organization-id: 8c651516-fdaf-40a1-9fea-001dffde850e
+ project-slug: Folo
+ signing-policy-slug: release-signing
+ artifact-configuration-slug: github
github-artifact-id: "${{ steps.upload-unsigned-windows-x64-exe.outputs.artifact-id }}"
- output-artifact-directory: "apps/desktop/out/make/"
+ output-artifact-directory: apps/desktop/out/make/
- name: Update latest.yml
if: runner.os == 'windows' && env.RELEASE == 'true' && github.event.inputs.store != 'true'
@@ -294,7 +294,7 @@ jobs:
id: version
uses: ./.github/actions/setup-version
with:
- type: "desktop"
+ type: desktop
- name: Prepare Release Notes
if: env.RELEASE == 'true'
diff --git a/.github/workflows/build-ios-development.yml b/.github/workflows/build-ios-development.yml
index 1529315efc..3146c58364 100644
--- a/.github/workflows/build-ios-development.yml
+++ b/.github/workflows/build-ios-development.yml
@@ -7,8 +7,8 @@ on:
paths:
- "apps/mobile/web-app/**"
- "apps/mobile/native/**"
- - "apps/mobile/package.json"
- - "apps/mobile/app.config.ts"
+ - apps/mobile/package.json
+ - apps/mobile/app.config.ts
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
@@ -90,7 +90,7 @@ jobs:
uses: actions/setup-node@v6
with:
node-version: 22
- cache: "pnpm"
+ cache: pnpm
- name: 📱 Setup EAS
uses: expo/expo-github-action@v8
@@ -134,7 +134,7 @@ jobs:
uses: actions/setup-node@v6
with:
node-version: 22
- cache: "pnpm"
+ cache: pnpm
- name: 📱 Setup EAS
uses: expo/expo-github-action@v8
diff --git a/.github/workflows/build-ios.yml b/.github/workflows/build-ios.yml
index 3ca17f8149..d0bde93ad1 100644
--- a/.github/workflows/build-ios.yml
+++ b/.github/workflows/build-ios.yml
@@ -6,7 +6,7 @@ on:
- "**"
paths:
- "apps/mobile/**"
- - "pnpm-lock.yaml"
+ - pnpm-lock.yaml
workflow_dispatch:
inputs:
profile:
@@ -15,7 +15,7 @@ on:
options:
- preview
- production
- description: "Build profile"
+ description: Build profile
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}-${{ github.event.inputs.profile }}
@@ -103,7 +103,7 @@ jobs:
uses: actions/setup-node@v6
with:
node-version: 22
- cache: "pnpm"
+ cache: pnpm
- name: 📱 Setup EAS
uses: expo/expo-github-action@v8
diff --git a/.github/workflows/build-web.yml b/.github/workflows/build-web.yml
index 7bee7824c9..7029b9bcfa 100644
--- a/.github/workflows/build-web.yml
+++ b/.github/workflows/build-web.yml
@@ -37,7 +37,7 @@ jobs:
uses: actions/setup-node@v6
with:
node-version: ${{ matrix.node-version }}
- cache: "pnpm"
+ cache: pnpm
- name: Install dependencies
run: pnpm install
- name: Build web and SSR server
diff --git a/.github/workflows/deploy-cloudflare.yml b/.github/workflows/deploy-cloudflare.yml
index bb53a8466b..d469aa3d82 100644
--- a/.github/workflows/deploy-cloudflare.yml
+++ b/.github/workflows/deploy-cloudflare.yml
@@ -36,7 +36,7 @@ jobs:
uses: actions/setup-node@v6
with:
node-version: ${{ matrix.node-version }}
- cache: "pnpm"
+ cache: pnpm
- name: Install dependencies
run: pnpm install
diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml
index 684111fa08..bf0608e1dc 100644
--- a/.github/workflows/lint.yml
+++ b/.github/workflows/lint.yml
@@ -42,7 +42,7 @@ jobs:
uses: actions/setup-node@v6
with:
node-version: ${{ matrix.node-version }}
- cache: "pnpm"
+ cache: pnpm
- name: Install dependencies
run: pnpm install
- name: Build web and SSR server
diff --git a/.github/workflows/translator.yml b/.github/workflows/translator.yml
index dea91e207c..422c917b13 100644
--- a/.github/workflows/translator.yml
+++ b/.github/workflows/translator.yml
@@ -1,4 +1,4 @@
-name: "🌍 translator"
+name: 🌍 translator
on:
issues:
types: [opened, edited]
diff --git a/AGENTS.md b/AGENTS.md
index a874465368..b94dcd2fbe 100644
--- a/AGENTS.md
+++ b/AGENTS.md
@@ -13,7 +13,7 @@ This file provides concise, agent-focused guidance for working in this monorepo.
## Setup commands
-```bash
+```sh
# Install deps
pnpm install
@@ -38,7 +38,7 @@ pnpm run build:web
## Quality gates (must-pass before commit/PR)
-```bash
+```sh
# 1) Typecheck first (required)
pnpm run typecheck
@@ -53,7 +53,7 @@ pnpm run test
- Follow this order strictly: typecheck → lint → test.
- After every modification, run the following checks to catch errors early:
-```bash
+```sh
npm exec turbo run format:check typecheck lint
npm exec turbo run test
```
diff --git a/README.md b/README.md
index bae550000d..a54bf3f0ef 100644
--- a/README.md
+++ b/README.md
@@ -34,7 +34,7 @@
-As they say, your thoughts are what you read—and we’ve been consuming noisy feeds for too long! Folo organizes content into one timeline, keeping you updated on what matters, noise-free. Share lists, explore collections, and enjoy distraction-free browsing.
+As they say, your thoughts are what you read—and we've been consuming noisy feeds for too long! Folo organizes content into one timeline, keeping you updated on what matters, noise-free. Share lists, explore collections, and enjoy distraction-free browsing.
## 👋🏻 Getting Started & Join Our Community
@@ -97,7 +97,7 @@ Because we know content is more than just text. From articles to videos, images
### More Than Just An App
-This isn’t just another app. Folo is a community — introducing a new era of openness and community-driven experience.
+This isn't just another app. Folo is a community — introducing a new era of openness and community-driven experience.

diff --git a/apps/cli/tsconfig.json b/apps/cli/tsconfig.json
index 7120363422..7062eab258 100644
--- a/apps/cli/tsconfig.json
+++ b/apps/cli/tsconfig.json
@@ -2,8 +2,8 @@
"extends": "@follow/configs/tsconfig.extend.json",
"compilerOptions": {
"target": "ES2022",
- "module": "ESNext",
"lib": ["ES2022"],
+ "module": "ESNext",
"moduleResolution": "Bundler",
"types": ["node"],
"noEmit": true
diff --git a/apps/desktop/AGENTS.md b/apps/desktop/AGENTS.md
index 67b689b6ce..006955c90f 100644
--- a/apps/desktop/AGENTS.md
+++ b/apps/desktop/AGENTS.md
@@ -17,7 +17,7 @@ The renderer is the **primary web application** - a Vite + React SPA that can ru
## Development Commands
-```bash
+```sh
# Recommended: Browser development (faster)
pnpm run dev:web
diff --git a/apps/desktop/changelog/0.4.3.md b/apps/desktop/changelog/0.4.3.md
index 7566c7eace..197a8c9e65 100644
--- a/apps/desktop/changelog/0.4.3.md
+++ b/apps/desktop/changelog/0.4.3.md
@@ -21,5 +21,5 @@
- Fixed TTS playback failure (a4d1653)
- Fixed corner player not navigating to the correct entry (#1401)
- Fixed issue that prevented saving to Readwise (53da938)
-- Fixed missing “Mark above as read” option in the picture masonry layout footer (e018736)
+- Fixed missing "Mark above as read" option in the picture masonry layout footer (e018736)
- Fixed a potential login drop issue (0ee8510)
diff --git a/apps/desktop/changelog/0.4.5.md b/apps/desktop/changelog/0.4.5.md
index 8536462415..98ae8f771f 100644
--- a/apps/desktop/changelog/0.4.5.md
+++ b/apps/desktop/changelog/0.4.5.md
@@ -2,11 +2,11 @@
## Shiny new things
-- Translation view toggle – choose between “translation-only” or bilingual display (#3568)
+- Translation view toggle – choose between "translation-only" or bilingual display (#3568)
- Mark Above/Below as Read option in the context menu (#3570)
- Automation actions: auto start entries that match your rules (#3625)
- Trending Feeds now spotlighted on the Discover page (eb6a409)
-- Timeline previews for feeds you haven’t subscribed to yet (eb26cde)
+- Timeline previews for feeds you haven't subscribed to yet (eb26cde)
- Invite-code gates removed – no invite code needed anymore (cee647c)
## Improvements
@@ -25,7 +25,7 @@
- Fixed occasional misplacement of the scroll indicator (87c9a48)
- Font settings now apply correctly (5aed9a7)
-- Different views no longer clash with one another’s scroll positions (#3627)
+- Different views no longer clash with one another's scroll positions (#3627)
- Picture and video view sizes no longer interfere with each other (#3645)
- Correct sorting icon in the feed list (#3675)
- Custom fonts containing spaces now render properly (#3674)
diff --git a/apps/desktop/changelog/0.4.6.md b/apps/desktop/changelog/0.4.6.md
index 3be482b93f..b21e307198 100644
--- a/apps/desktop/changelog/0.4.6.md
+++ b/apps/desktop/changelog/0.4.6.md
@@ -13,7 +13,7 @@
- Clearer RSSHub error messages. (ed95fb6b)
- AI summary is now enabled by default. (f329ae9)
- Social-media view shows a richer action bar. (b06d8ff)
-- No more notification-permission prompts when your actions don’t need them. (450b759)
+- No more notification-permission prompts when your actions don't need them. (450b759)
- Discover page now remembers your language preference. (180933b)
## No longer broken
diff --git a/apps/desktop/changelog/0.4.8.md b/apps/desktop/changelog/0.4.8.md
index 858d6909d1..8b004ad96d 100644
--- a/apps/desktop/changelog/0.4.8.md
+++ b/apps/desktop/changelog/0.4.8.md
@@ -10,14 +10,14 @@
## Improvements
-- Suscription form now shows each list’s subscriber count and last-updated time (e525edc)
-- Video view now displays the video’s total duration (2234b4b)
+- Suscription form now shows each list's subscriber count and last-updated time (e525edc)
+- Video view now displays the video's total duration (2234b4b)
- Added compatibility for both `folo` and `follow` URI schemes (4fa171b)
## No longer broken
- Resolved blur effect not applying on the macOS Electron vibrancy layer (33ef0c4)
-- “More” label stays hidden when the entry-history limit isn’t reached (04583a3)
+- "More" label stays hidden when the entry-history limit isn't reached (04583a3)
- Fixed certain videos failing to render inside entries (c48b94a)
## Thanks
diff --git a/apps/desktop/changelog/0.5.0.md b/apps/desktop/changelog/0.5.0.md
index 43c203db51..21f4da98d8 100644
--- a/apps/desktop/changelog/0.5.0.md
+++ b/apps/desktop/changelog/0.5.0.md
@@ -14,17 +14,17 @@
- Implemented smooth scrolling (6c73ae5)
- Significant overall performance boost
- AI will skip summarising extra-short articles to avoid trivial summaries (852fb1d)
-- Added “Reset to defaults” button to the shortcuts page (#3834)
+- Added "Reset to defaults" button to the shortcuts page (#3834)
- Added a border around 2-factor QR codes for better scan reliability (f7faf78)
- RSSHub routes top-feed list now respects your Discover-language setting (14d4da3)
- Audio player now prefers episode artwork over feed artwork (#3855)
- You can now manually paste your login token to bypass Microsoft Store deeplink issues (47e07a4)
-- Added “Check for updates” button in Settings (ef304cd)
+- Added "Check for updates" button in Settings (ef304cd)
## No longer broken
- Dropdown menus now keep keyboard focus when opened (f31d43d)
-- “Mark as read” button is now perfectly centred (#3836)
+- "Mark as read" button is now perfectly centred (#3836)
- Entry list no longer displays stale cached items (0a167ac)
- Squashed numerous shortcut-key bugs
diff --git a/apps/desktop/changelog/0.6.2.md b/apps/desktop/changelog/0.6.2.md
index f713608eb0..30c8f288b0 100644
--- a/apps/desktop/changelog/0.6.2.md
+++ b/apps/desktop/changelog/0.6.2.md
@@ -2,7 +2,7 @@
## Shiny new things
-- New “Fade Read Items” option dims read entries in the timeline (eeeea47)
+- New "Fade Read Items" option dims read entries in the timeline (eeeea47)
- YouTube videos now play directly in the Articles view (#4096)
- Choose your own accent color for the interface (47129d5)
@@ -12,20 +12,20 @@
- Added a Sign In / Sign Up toggle on the email page (81c544a)
- Smarter visibility logic for the picture action bar (#4033)
- Edit Feed now shows only categories relevant to the current view (#4094)
-- “Mark above as read” button no longer appear in the Starred list (#4083)
+- "Mark above as read" button no longer appear in the Starred list (#4083)
- RSSHub and Trending queries persist between sessions (7a95a15)
- Refined profile layout (#4101)
## No longer broken
- Discover page scroll indicator now can reach 100% (#3962)
-- “Mark as Read” keyboard shortcut works again (24113f7)
+- "Mark as Read" keyboard shortcut works again (24113f7)
- Fixed infinite scrolling when dragging in Customize Toolbar settings (#4018)
-- Fixed the bug that you can’t mark an entry as Unread (8ea13a3)
+- Fixed the bug that you can't mark an entry as Unread (8ea13a3)
- Clicking Read more in Social Media view no longer refreshes the page (#4027)
- Entries with special characters in the title can be saved to Obsidian (f6cff2a)
- Image downloads are now reliable (#4095)
-- Corrected Inbox “Mark as Read” logic (7c1bf99)
+- Corrected Inbox "Mark as Read" logic (7c1bf99)
- Prevented feed click event from bubbling to route item (#4113)
- Fixed the bug that source content not triggered automatically (c5edc76)
diff --git a/apps/desktop/changelog/0.9.0.md b/apps/desktop/changelog/0.9.0.md
index 850b8bd894..e5be169f11 100644
--- a/apps/desktop/changelog/0.9.0.md
+++ b/apps/desktop/changelog/0.9.0.md
@@ -3,10 +3,10 @@
## Improvements
- Removed the limit on the maximum number of views (b69a935)
-- Allow hiding the “All” view (0882e47)
+- Allow hiding the "All" view (0882e47)
- Introduced a right-click menu for views, allowing quick access to hide or open settings (60dcd42)
- Added a smooth sliding animation when opening entry details (1720ebb)
## No longer broken
-- Fixed an issue where the scrollbar didn’t reset when switching between entry details (21124f5)
+- Fixed an issue where the scrollbar didn't reset when switching between entry details (21124f5)
diff --git a/apps/desktop/changelog/1.1.0.md b/apps/desktop/changelog/1.1.0.md
index 95d4e1830c..d0414ca036 100644
--- a/apps/desktop/changelog/1.1.0.md
+++ b/apps/desktop/changelog/1.1.0.md
@@ -20,7 +20,7 @@
## No longer broken
- Fixed an issue where the Windows EXE software update check failed to run properly.
-- Fixed a bug preventing category movement in the “All” view.
+- Fixed a bug preventing category movement in the "All" view.
- Fixed occasional AI chat interruptions under certain conditions.
## Thanks
diff --git a/apps/desktop/changelog/1.2.2.md b/apps/desktop/changelog/1.2.2.md
index ea0c5feb67..71e96f55e4 100644
--- a/apps/desktop/changelog/1.2.2.md
+++ b/apps/desktop/changelog/1.2.2.md
@@ -5,7 +5,7 @@
- **AI**
- Added **BYOK (Bring Your Own Key)** support — choose your own AI provider freely.
- Improved **AI Memory**: you can now update or refine past memories whenever you need.
- - Reduced the “guiding tone” in **AI Summary** so summaries feel more natural and personal.
+ - Reduced the "guiding tone" in **AI Summary** so summaries feel more natural and personal.
- Introduced **AI Timeline Sort (Beta)**: your timeline can now rearrange itself based on your reading preferences.

diff --git a/apps/desktop/layer/main/src/ipc/services/integration.ts b/apps/desktop/layer/main/src/ipc/services/integration.ts
index 035fb9035b..737aa68a59 100644
--- a/apps/desktop/layer/main/src/ipc/services/integration.ts
+++ b/apps/desktop/layer/main/src/ipc/services/integration.ts
@@ -155,7 +155,6 @@ ${content}
}
store.set("qbittorrentSID", match[1])
- return
}
async checkQBittorrentAuth(context: IpcContext, input: CheckQBittorrentAuthInput) {
diff --git a/apps/desktop/layer/main/src/lib/proxy.ts b/apps/desktop/layer/main/src/lib/proxy.ts
index 94bbee9b62..53f6fdfce7 100644
--- a/apps/desktop/layer/main/src/lib/proxy.ts
+++ b/apps/desktop/layer/main/src/lib/proxy.ts
@@ -51,9 +51,7 @@ const normalizeProxyUri = (userProxy: string) => {
// There are multiple ways to specify a proxy in Electron,
// but for security reasons, we only support simple proxy URLs for now.
return `${proxyUrl.protocol}//${proxyUrl.hostname}${proxyUrl.port ? `:${proxyUrl.port}` : ""}`
- } catch {
- return
- }
+ } catch {}
}
const BYPASS_RULES = ["
"].join(";")
diff --git a/apps/desktop/layer/main/src/lib/router.ts b/apps/desktop/layer/main/src/lib/router.ts
index d063b145d9..f86edf0379 100644
--- a/apps/desktop/layer/main/src/lib/router.ts
+++ b/apps/desktop/layer/main/src/lib/router.ts
@@ -99,7 +99,6 @@ export const handleUrlRouting = (url: string) => {
minHeight: 600,
resizable,
})
- return
}
}
} catch (err) {
diff --git a/apps/desktop/layer/main/src/manager/bootstrap.ts b/apps/desktop/layer/main/src/manager/bootstrap.ts
index 2d0205ed9f..3986d7898b 100644
--- a/apps/desktop/layer/main/src/manager/bootstrap.ts
+++ b/apps/desktop/layer/main/src/manager/bootstrap.ts
@@ -21,7 +21,7 @@ import { logger } from "../logger"
import { cleanupOldRender } from "../updater/hot-updater"
import { AppManager } from "./app"
-const apiURL = process.env["VITE_API_URL"] || import.meta.env.VITE_API_URL
+const apiURL = process.env.VITE_API_URL || import.meta.env.VITE_API_URL
const buildSafeHeaders = createBuildSafeHeaders(env.VITE_WEB_URL, [
env.VITE_OPENPANEL_API_URL || "",
IMAGE_PROXY_URL,
diff --git a/apps/desktop/layer/main/src/manager/window.ts b/apps/desktop/layer/main/src/manager/window.ts
index e8d33e0d66..5bef44b864 100644
--- a/apps/desktop/layer/main/src/manager/window.ts
+++ b/apps/desktop/layer/main/src/manager/window.ts
@@ -357,9 +357,9 @@ class WindowManagerStatic {
// HMR for renderer base on electron-vite cli.
// Load the remote URL for development or the local html file for production.
- if (is.dev && process.env["ELECTRON_RENDERER_URL"]) {
- window.loadURL(process.env["ELECTRON_RENDERER_URL"] + (options?.extraPath || ""))
- logger.log(process.env["ELECTRON_RENDERER_URL"] + (options?.extraPath || ""))
+ if (is.dev && process.env.ELECTRON_RENDERER_URL) {
+ window.loadURL(process.env.ELECTRON_RENDERER_URL + (options?.extraPath || ""))
+ logger.log(process.env.ELECTRON_RENDERER_URL + (options?.extraPath || ""))
} else {
// Production entry
const dynamicRenderEntry = loadDynamicRenderEntry()
@@ -450,7 +450,6 @@ class WindowManagerStatic {
this.windows.mainWindow.show()
callWindowExpose(this.windows.mainWindow).showSetting(path)
- return
} else {
this.windows.mainWindow = this.createMainWindow()
this.windows.mainWindow.show()
diff --git a/apps/desktop/layer/main/tsconfig.json b/apps/desktop/layer/main/tsconfig.json
index a6f78f0af2..cf308fbf21 100644
--- a/apps/desktop/layer/main/tsconfig.json
+++ b/apps/desktop/layer/main/tsconfig.json
@@ -2,20 +2,20 @@
"extends": "@electron-toolkit/tsconfig/tsconfig.node.json",
"compilerOptions": {
"composite": true,
- "outDir": "dist",
- "types": ["electron-vite/node", "@follow/types/vite", "@follow/types/global"],
- "moduleResolution": "Bundler",
- "noImplicitReturns": false,
- "noUnusedLocals": false,
- "noUnusedParameters": false,
- "noUncheckedIndexedAccess": true,
- "noImplicitOverride": true,
"experimentalDecorators": true,
"baseUrl": ".",
+ "moduleResolution": "Bundler",
"paths": {
"@pkg": ["../../package.json"],
"@locales/*": ["../../../../locales/*"],
"~/*": ["./src/*"]
- }
+ },
+ "types": ["electron-vite/node", "@follow/types/vite", "@follow/types/global"],
+ "noImplicitOverride": true,
+ "noImplicitReturns": false,
+ "noUncheckedIndexedAccess": true,
+ "noUnusedLocals": false,
+ "noUnusedParameters": false,
+ "outDir": "dist"
}
}
diff --git a/apps/desktop/layer/renderer/src/@types/constants.ts b/apps/desktop/layer/renderer/src/@types/constants.ts
index a1ee081670..6b30efee18 100644
--- a/apps/desktop/layer/renderer/src/@types/constants.ts
+++ b/apps/desktop/layer/renderer/src/@types/constants.ts
@@ -5,10 +5,10 @@ export type RendererSupportedLanguages = (typeof langs)[number]
export const dayjsLocaleImportMap = {
en: ["en", () => import("dayjs/locale/en")],
- ["zh-CN"]: ["zh-cn", () => import("dayjs/locale/zh-cn")],
- ["ja"]: ["ja", () => import("dayjs/locale/ja")],
- ["zh-TW"]: ["zh-tw", () => import("dayjs/locale/zh-tw")],
- ["fr-FR"]: ["fr", () => import("dayjs/locale/fr")],
+ "zh-CN": ["zh-cn", () => import("dayjs/locale/zh-cn")],
+ ja: ["ja", () => import("dayjs/locale/ja")],
+ "zh-TW": ["zh-tw", () => import("dayjs/locale/zh-tw")],
+ "fr-FR": ["fr", () => import("dayjs/locale/fr")],
}
export const ns = ["common", "lang", "errors", "app", "settings", "shortcuts", "ai"] as const
export const defaultNS = "app" as const
diff --git a/apps/desktop/layer/renderer/src/atoms/player.ts b/apps/desktop/layer/renderer/src/atoms/player.ts
index 4822f55ba1..24f4c972dd 100644
--- a/apps/desktop/layer/renderer/src/atoms/player.ts
+++ b/apps/desktop/layer/renderer/src/atoms/player.ts
@@ -158,7 +158,6 @@ export const AudioPlayer = {
currentTime: this.audio.currentTime,
})
this.teardown()
- return
},
togglePlayAndPause() {
const curV = getAudioPlayerAtomValue()
diff --git a/apps/desktop/layer/renderer/src/components/common/ShadowDOM.tsx b/apps/desktop/layer/renderer/src/components/common/ShadowDOM.tsx
index 44c46a0783..420fc7de3e 100644
--- a/apps/desktop/layer/renderer/src/components/common/ShadowDOM.tsx
+++ b/apps/desktop/layer/renderer/src/components/common/ShadowDOM.tsx
@@ -48,7 +48,7 @@ const cloneStylesElement = () => {
createElement(MemoedDangerousHTMLStyle, {
key,
children: style.cssText,
- ["data-href"]: style.ref.href,
+ "data-href": style.ref.href,
}),
)
}
diff --git a/apps/desktop/layer/renderer/src/components/ui/code-highlighter/shiki/Shiki.tsx b/apps/desktop/layer/renderer/src/components/ui/code-highlighter/shiki/Shiki.tsx
index 9573e33c2e..2a1df77b38 100644
--- a/apps/desktop/layer/renderer/src/components/ui/code-highlighter/shiki/Shiki.tsx
+++ b/apps/desktop/layer/renderer/src/components/ui/code-highlighter/shiki/Shiki.tsx
@@ -189,7 +189,7 @@ const ShikiCode: FC<
className={cn(
"group relative my-4 overflow-hidden rounded-lg border backdrop-blur-sm",
styles["shiki-wrapper"],
- transparent ? styles["transparent"] : null,
+ transparent ? styles.transparent : null,
className,
)}
style={{
diff --git a/apps/desktop/layer/renderer/src/components/ui/crop/AvatarUploadModal.tsx b/apps/desktop/layer/renderer/src/components/ui/crop/AvatarUploadModal.tsx
index 649f631a2b..ff51004129 100644
--- a/apps/desktop/layer/renderer/src/components/ui/crop/AvatarUploadModal.tsx
+++ b/apps/desktop/layer/renderer/src/components/ui/crop/AvatarUploadModal.tsx
@@ -168,8 +168,8 @@ export const AvatarUploadModal = ({
const imageAspectRatio = img.naturalWidth / img.naturalHeight
const containerAspectRatio = containerWidth / containerHeight
- let displayWidth = 0,
- displayHeight = 0
+ let displayWidth = 0
+ let displayHeight = 0
if (imageAspectRatio > containerAspectRatio) {
// The image is wider, use the container width
@@ -342,10 +342,10 @@ export const AvatarUploadModal = ({
const imageAspectRatio = img.naturalWidth / img.naturalHeight
const containerAspectRatio = containerWidth / containerHeight
- let displayWidth = 0,
- displayHeight = 0,
- offsetX = 0,
- offsetY = 0
+ let displayWidth = 0
+ let displayHeight = 0
+ let offsetX = 0
+ let offsetY = 0
if (imageAspectRatio > containerAspectRatio) {
// The image is wider, use the container width
diff --git a/apps/desktop/layer/renderer/src/components/ui/media/VideoPlayer.tsx b/apps/desktop/layer/renderer/src/components/ui/media/VideoPlayer.tsx
index 51e1d8106b..a4e11a341d 100644
--- a/apps/desktop/layer/renderer/src/components/ui/media/VideoPlayer.tsx
+++ b/apps/desktop/layer/renderer/src/components/ui/media/VideoPlayer.tsx
@@ -103,7 +103,7 @@ export const VideoPlayer = ({
rest.onClick?.(e)
handleClick(e)
},
- muted: isPlayer ? false : true,
+ muted: !isPlayer,
onDoubleClick(e) {
rest.onDoubleClick?.(e)
if (!isPlayer) return
diff --git a/apps/desktop/layer/renderer/src/components/ui/modal/stacked/modal.tsx b/apps/desktop/layer/renderer/src/components/ui/modal/stacked/modal.tsx
index 1201fc53af..e581232f12 100644
--- a/apps/desktop/layer/renderer/src/components/ui/modal/stacked/modal.tsx
+++ b/apps/desktop/layer/renderer/src/components/ui/modal/stacked/modal.tsx
@@ -47,211 +47,265 @@ import type { ModalOverlayOptions, ModalProps } from "./types"
const DragBar = ELECTRON_BUILD ? (
) : null
-export const ModalInternal = memo(function Modal({
- ref,
- item,
- overlayOptions,
- onClose: onPropsClose,
- children,
- isTop,
- index,
- isBottom,
-}: {
- item: ModalProps & { id: string }
- index: number
-
- isTop?: boolean
- isBottom?: boolean
- overlayOptions?: ModalOverlayOptions
- onClose?: (open: boolean) => void
-} & PropsWithChildren & { ref?: React.Ref }) {
- const {
- CustomModalComponent,
- content,
- title,
- clickOutsideToDismiss,
-
- modalClassName,
- modalContainerClassName,
- modalContentClassName,
-
- wrapper: Wrapper = Fragment,
- max,
- icon,
- canClose = true,
-
- draggable = false,
- resizeable = false,
- resizeDefaultSize,
- modal = true,
- autoFocus = true,
- } = item
-
- const setStack = useSetAtom(modalStackAtom)
-
- // Animation controls
- const { animateController, playNoticeAnimation, playExitAnimation, isClosing, readyToClose } =
- useModalAnimate(!!isTop, item.id)
-
- // Simple dismiss logic
- const close = useEventCallback(async (forceClose = false) => {
- if (!canClose && !forceClose) return
- readyToClose()
- try {
- if (CustomModalComponent) {
- // Custom modals handle their own animation
- setStack((p) => p.filter((modal) => modal.id !== item.id))
- } else {
- // Play exit animation then remove from stack\
- await playExitAnimation()
+export const ModalInternal = memo(
+ ({
+ ref,
+ item,
+ overlayOptions,
+ onClose: onPropsClose,
+ children,
+ isTop,
+ index,
+ isBottom,
+ }: {
+ item: ModalProps & { id: string }
+ index: number
+
+ isTop?: boolean
+ isBottom?: boolean
+ overlayOptions?: ModalOverlayOptions
+ onClose?: (open: boolean) => void
+ } & PropsWithChildren & { ref?: React.Ref }) => {
+ const {
+ CustomModalComponent,
+ content,
+ title,
+ clickOutsideToDismiss,
+
+ modalClassName,
+ modalContainerClassName,
+ modalContentClassName,
+
+ wrapper: Wrapper = Fragment,
+ max,
+ icon,
+ canClose = true,
+
+ draggable = false,
+ resizeable = false,
+ resizeDefaultSize,
+ modal = true,
+ autoFocus = true,
+ } = item
+
+ const setStack = useSetAtom(modalStackAtom)
+
+ // Animation controls
+ const { animateController, playNoticeAnimation, playExitAnimation, isClosing, readyToClose } =
+ useModalAnimate(!!isTop, item.id)
+
+ // Simple dismiss logic
+ const close = useEventCallback(async (forceClose = false) => {
+ if (!canClose && !forceClose) return
+ readyToClose()
+ try {
+ if (CustomModalComponent) {
+ // Custom modals handle their own animation
+ setStack((p) => p.filter((modal) => modal.id !== item.id))
+ } else {
+ // Play exit animation then remove from stack\
+ await playExitAnimation()
+ setStack((p) => p.filter((modal) => modal.id !== item.id))
+ }
+ } catch (error) {
+ // If animation fails, still remove from stack
+ console.warn("Modal animation failed:", error)
setStack((p) => p.filter((modal) => modal.id !== item.id))
}
- } catch (error) {
- // If animation fails, still remove from stack
- console.warn("Modal animation failed:", error)
- setStack((p) => p.filter((modal) => modal.id !== item.id))
- }
-
- item.onClose?.()
- onPropsClose?.(false)
- })
- const onClose = useCallback(
- (open: boolean): void => {
- if (!open) {
- close()
- }
- },
- [close],
- )
+ item.onClose?.()
+ onPropsClose?.(false)
+ })
- const modalSettingOverlay = useUISettingKey("modalOverlay")
+ const onClose = useCallback(
+ (open: boolean): void => {
+ if (!open) {
+ close()
+ }
+ },
+ [close],
+ )
- const dismiss = useCallback(
- (e: SyntheticEvent) => {
- e.stopPropagation()
- close(true)
- },
- [close],
- )
+ const modalSettingOverlay = useUISettingKey("modalOverlay")
- const modalElementRef = useRef(null)
- const {
- handleDrag,
- handleResizeStart,
- handleResizeStop,
- relocateModal,
- preferDragDir,
- isResizeable,
- resizeableStyle,
-
- dragController,
- } = useModalResizeAndDrag(modalElementRef, {
- resizeable,
- draggable,
- })
-
- const getIndex = useEventCallback(() => index)
- const [modalContentRef, setModalContentRef] = useState(null)
- const ModalProps: ModalActionsInternal = useMemo(
- () => ({
- dismiss: close,
- getIndex,
- setClickOutSideToDismiss: (v) => {
- setStack((state) =>
- produce(state, (draft) => {
- const model = draft.find((modal) => modal.id === item.id)
- if (!model) return
- if (model.clickOutsideToDismiss === v) return
- model.clickOutsideToDismiss = v
- }),
- )
+ const dismiss = useCallback(
+ (e: SyntheticEvent) => {
+ e.stopPropagation()
+ close(true)
},
- }),
- [close, getIndex, item.id, setStack],
- )
- useModalSubscriber(item.id, ModalProps)
-
- const ModalContextProps = useMemo(
- () => ({
- ...ModalProps,
- ref: { current: modalContentRef },
- modalElementRef,
- }),
- [ModalProps, modalContentRef],
- )
+ [close],
+ )
- const [edgeElementRef, setEdgeElementRef] = useState(null)
+ const modalElementRef = useRef(null)
+ const {
+ handleDrag,
+ handleResizeStart,
+ handleResizeStop,
+ relocateModal,
+ preferDragDir,
+ isResizeable,
+ resizeableStyle,
+
+ dragController,
+ } = useModalResizeAndDrag(modalElementRef, {
+ resizeable,
+ draggable,
+ })
+
+ const getIndex = useEventCallback(() => index)
+ const [modalContentRef, setModalContentRef] = useState(null)
+ const ModalProps: ModalActionsInternal = useMemo(
+ () => ({
+ dismiss: close,
+ getIndex,
+ setClickOutSideToDismiss: (v) => {
+ setStack((state) =>
+ produce(state, (draft) => {
+ const model = draft.find((modal) => modal.id === item.id)
+ if (!model) return
+ if (model.clickOutsideToDismiss === v) return
+ model.clickOutsideToDismiss = v
+ }),
+ )
+ },
+ }),
+ [close, getIndex, item.id, setStack],
+ )
+ useModalSubscriber(item.id, ModalProps)
+
+ const ModalContextProps = useMemo(
+ () => ({
+ ...ModalProps,
+ ref: { current: modalContentRef },
+ modalElementRef,
+ }),
+ [ModalProps, modalContentRef],
+ )
- const finalChildren = useMemo(
- () => (
-
-
- {children ?? createElement(content, ModalProps)}
-
-
- ),
- [ModalProps, children, content, edgeElementRef],
- )
+ const [edgeElementRef, setEdgeElementRef] = useState(null)
+
+ const finalChildren = useMemo(
+ () => (
+
+
+ {children ?? createElement(content, ModalProps)}
+
+
+ ),
+ [ModalProps, children, content, edgeElementRef],
+ )
- useEffect(() => {
- if (isClosing) {
- // Radix dialog will block pointer events
- document.body.style.pointerEvents = "auto"
- }
- }, [isClosing])
-
- const modalStyle = resizeableStyle
- const { handleSelectStart, handleDetectSelectEnd, isSelectingRef } = useModalSelect()
- const handleClickOutsideToDismiss = useCallback(
- (e: SyntheticEvent) => {
- if (isSelectingRef.current) return
-
- if (modal && clickOutsideToDismiss && canClose) {
- dismiss(e)
- } else if (modal) {
- playNoticeAnimation()
+ useEffect(() => {
+ if (isClosing) {
+ // Radix dialog will block pointer events
+ document.body.style.pointerEvents = "auto"
}
- },
- [canClose, clickOutsideToDismiss, dismiss, modal, playNoticeAnimation, isSelectingRef],
- )
+ }, [isClosing])
+
+ const modalStyle = resizeableStyle
+ const { handleSelectStart, handleDetectSelectEnd, isSelectingRef } = useModalSelect()
+ const handleClickOutsideToDismiss = useCallback(
+ (e: SyntheticEvent) => {
+ if (isSelectingRef.current) return
+
+ if (modal && clickOutsideToDismiss && canClose) {
+ dismiss(e)
+ } else if (modal) {
+ playNoticeAnimation()
+ }
+ },
+ [canClose, clickOutsideToDismiss, dismiss, modal, playNoticeAnimation, isSelectingRef],
+ )
- const openAutoFocus = useCallback(
- (event: Event) => {
- if (!autoFocus) {
- event.preventDefault()
- }
- },
- [autoFocus],
- )
+ const openAutoFocus = useCallback(
+ (event: Event) => {
+ if (!autoFocus) {
+ event.preventDefault()
+ }
+ },
+ [autoFocus],
+ )
- const measureDragConstraints = useRef((constraints: BoundingBox) => {
- if (getOS() === "Windows") {
- return {
- ...constraints,
- top: constraints.top + ElECTRON_CUSTOM_TITLEBAR_HEIGHT,
+ const measureDragConstraints = useRef((constraints: BoundingBox) => {
+ if (getOS() === "Windows") {
+ return {
+ ...constraints,
+ top: constraints.top + ElECTRON_CUSTOM_TITLEBAR_HEIGHT,
+ }
}
+ return constraints
+ }).current
+
+ useImperativeHandle(ref, () => modalElementRef.current!)
+ const currentModalZIndex = MODAL_STACK_Z_INDEX + index * 2
+
+ const Overlay = (
+
+ )
+
+ const mutateableEdgeElementRef = useRefValue(edgeElementRef)
+
+ if (CustomModalComponent) {
+ return (
+
+
+
+ {Overlay}
+
+
+ {title}
+ {DragBar}
+
+
+ {finalChildren}
+
+
+
+
+
+
+
+ )
}
- return constraints
- }).current
-
- useImperativeHandle(ref, () => modalElementRef.current!)
- const currentModalZIndex = MODAL_STACK_Z_INDEX + index * 2
-
- const Overlay = (
-
- )
- const mutateableEdgeElementRef = useRefValue(edgeElementRef)
+ const ResizeSwitch = resizeable ? Resizable : SafeFragment
- if (CustomModalComponent) {
return (
-
+
{Overlay}
- {title}
{DragBar}
-
-
- {finalChildren}
-
-
+
+
+
+
+ {!!icon && {icon}}
+
+ {title}
+
+
+ {canClose && (
+
+
+
+ )}
+
+
+ {(title || icon || canClose) && (
+
+ )}
+
+
+
+
+ {finalChildren}
+
+
+
+
)
- }
-
- const ResizeSwitch = resizeable ? Resizable : SafeFragment
-
- return (
-
-
-
- {Overlay}
-
-
- {DragBar}
-
-
-
-
-
-
- {!!icon && {icon}}
-
- {title}
-
-
- {canClose && (
-
-
-
- )}
-
-
- {(title || icon || canClose) && (
-
- )}
-
-
-
-
- {finalChildren}
-
-
-
-
-
-
-
-
-
- )
-})
+ },
+)
const ModalContext: FC<
PropsWithChildren & {
diff --git a/apps/desktop/layer/renderer/src/modules/ai-chat/components/layouts/ChatTitle.tsx b/apps/desktop/layer/renderer/src/modules/ai-chat/components/layouts/ChatTitle.tsx
index 6f1f4db024..ca5aa8bd05 100644
--- a/apps/desktop/layer/renderer/src/modules/ai-chat/components/layouts/ChatTitle.tsx
+++ b/apps/desktop/layer/renderer/src/modules/ai-chat/components/layouts/ChatTitle.tsx
@@ -16,7 +16,7 @@ export const AIHeaderTitle = ({
...buttonProps
}: AIHeaderTitleProps & { ref?: React.RefObject }) => {
const displayTitle = title || placeholder
- const { ["aria-label"]: ariaLabelProp, ...restButtonProps } = buttonProps
+ const { "aria-label": ariaLabelProp, ...restButtonProps } = buttonProps
const ariaLabel = ariaLabelProp ?? displayTitle
return (
diff --git a/apps/desktop/layer/renderer/src/modules/ai-chat/editor/plugins/mention/constants.ts b/apps/desktop/layer/renderer/src/modules/ai-chat/editor/plugins/mention/constants.ts
index 9b31a762a3..36f833a306 100644
--- a/apps/desktop/layer/renderer/src/modules/ai-chat/editor/plugins/mention/constants.ts
+++ b/apps/desktop/layer/renderer/src/modules/ai-chat/editor/plugins/mention/constants.ts
@@ -13,4 +13,4 @@ export const DEFAULT_MAX_SUGGESTIONS = 10
// Trigger patterns
// Support CJK characters (Chinese, Japanese, Korean) in addition to ASCII
export const MENTION_TRIGGER_PATTERN =
- /(?:^|\s)(@[#+!]?[\w\s\u4e00-\u9fff\u3400-\u4dbf\u3040-\u309f\u30a0-\u30ff\uac00-\ud7af-]*)$/
+ /(?:^|\s)(@[#+!]?[\w\s\u4E00-\u9FFF\u3400-\u4DBF\u3040-\u309F\u30A0-\u30FF\uAC00-\uD7AF-]*)$/
diff --git a/apps/desktop/layer/renderer/src/modules/ai-chat/editor/plugins/shortcut/constants.ts b/apps/desktop/layer/renderer/src/modules/ai-chat/editor/plugins/shortcut/constants.ts
index 8fe72d9eca..2a525b9d6d 100644
--- a/apps/desktop/layer/renderer/src/modules/ai-chat/editor/plugins/shortcut/constants.ts
+++ b/apps/desktop/layer/renderer/src/modules/ai-chat/editor/plugins/shortcut/constants.ts
@@ -7,4 +7,4 @@ export const SHORTCUT_COMMAND = createCommand("SHORTCUT_COMMAND")
export const DEFAULT_MAX_SHORTCUT_SUGGESTIONS = 10
export const SHORTCUT_TRIGGER_PATTERN =
- /(?:^|\s)(\/[\w\-\s\u4e00-\u9fff\u3400-\u4dbf\u3040-\u309f\u30a0-\u30ff\uac00-\ud7af]*)$/
+ /(?:^|\s)(\/[\w\-\s\u4E00-\u9FFF\u3400-\u4DBF\u3040-\u309F\u30A0-\u30FF\uAC00-\uD7AF]*)$/
diff --git a/apps/desktop/layer/renderer/src/modules/ai-chat/utils/extractor.ts b/apps/desktop/layer/renderer/src/modules/ai-chat/utils/extractor.ts
index 7db37c2f94..11fd91f6a0 100644
--- a/apps/desktop/layer/renderer/src/modules/ai-chat/utils/extractor.ts
+++ b/apps/desktop/layer/renderer/src/modules/ai-chat/utils/extractor.ts
@@ -26,5 +26,4 @@ export const findFileAttachmentBlock = (
return block
}
}
- return
}
diff --git a/apps/desktop/layer/renderer/src/modules/ai-chat/utils/file-validation.ts b/apps/desktop/layer/renderer/src/modules/ai-chat/utils/file-validation.ts
index 150a9bb875..ab68b2a49a 100644
--- a/apps/desktop/layer/renderer/src/modules/ai-chat/utils/file-validation.ts
+++ b/apps/desktop/layer/renderer/src/modules/ai-chat/utils/file-validation.ts
@@ -88,7 +88,7 @@ export function formatFileSize(bytes: number): string {
const sizes = ["Bytes", "KB", "MB", "GB"]
const i = Math.floor(Math.log(bytes) / Math.log(k))
- return `${Number.parseFloat((bytes / Math.pow(k, i)).toFixed(1))} ${sizes[i]}`
+ return `${Number.parseFloat((bytes / k ** i).toFixed(1))} ${sizes[i]}`
}
export function getFileCategoryFromMimeType(mimeType: string): FileCategory {
diff --git a/apps/desktop/layer/renderer/src/modules/app-layout/ai-enhanced-timeline/AIEnhancedTimelineLayout.tsx b/apps/desktop/layer/renderer/src/modules/app-layout/ai-enhanced-timeline/AIEnhancedTimelineLayout.tsx
index 551a393071..20690ca672 100644
--- a/apps/desktop/layer/renderer/src/modules/app-layout/ai-enhanced-timeline/AIEnhancedTimelineLayout.tsx
+++ b/apps/desktop/layer/renderer/src/modules/app-layout/ai-enhanced-timeline/AIEnhancedTimelineLayout.tsx
@@ -318,7 +318,7 @@ const AIEnhancedTimelineLayoutImpl = () => {
)
}
-export const AIEnhancedTimelineLayout = memo(function AIEnhancedTimelineLayout() {
+export const AIEnhancedTimelineLayout = memo(() => {
return (
diff --git a/apps/desktop/layer/renderer/src/modules/app-layout/ai-enhanced-timeline/MobileTimelineLayout.tsx b/apps/desktop/layer/renderer/src/modules/app-layout/ai-enhanced-timeline/MobileTimelineLayout.tsx
index 8e6d80cbac..7cb3696ade 100644
--- a/apps/desktop/layer/renderer/src/modules/app-layout/ai-enhanced-timeline/MobileTimelineLayout.tsx
+++ b/apps/desktop/layer/renderer/src/modules/app-layout/ai-enhanced-timeline/MobileTimelineLayout.tsx
@@ -18,79 +18,78 @@ interface MobileTimelineLayoutProps {
hasSelectedEntry: boolean
}
-export const MobileTimelineLayout = memo(function MobileTimelineLayout({
- entryId,
- hasSelectedEntry,
-}: MobileTimelineLayoutProps) {
- const [mobileView, setMobileView] = useState("list")
- const navigate = useNavigateEntry()
- const { view } = useRouteParamsSelector((state) => ({
- view: state.view,
- }))
- const showEntryDetailsColumn = useShowEntryDetailsColumn()
- // Auto-switch to entry view when entry is selected
- useEffect(() => {
- if (hasSelectedEntry && mobileView === "list") {
- setMobileView("entry")
- } else if (!hasSelectedEntry && mobileView === "entry") {
- setMobileView("list")
- }
- }, [hasSelectedEntry, mobileView])
+export const MobileTimelineLayout = memo(
+ ({ entryId, hasSelectedEntry }: MobileTimelineLayoutProps) => {
+ const [mobileView, setMobileView] = useState("list")
+ const navigate = useNavigateEntry()
+ const { view } = useRouteParamsSelector((state) => ({
+ view: state.view,
+ }))
+ const showEntryDetailsColumn = useShowEntryDetailsColumn()
+ // Auto-switch to entry view when entry is selected
+ useEffect(() => {
+ if (hasSelectedEntry && mobileView === "list") {
+ setMobileView("entry")
+ } else if (!hasSelectedEntry && mobileView === "entry") {
+ setMobileView("list")
+ }
+ }, [hasSelectedEntry, mobileView])
- return (
-
-
-
- {/* List View */}
-
- {mobileView === "list" && (
-
-
-
- )}
+ return (
+
+
+
+ {/* List View */}
+
+ {mobileView === "list" && (
+
+
+
+ )}
- {/* Entry View */}
- {mobileView === "entry" && entryId && (
-
-
-
- {/* Mobile back button - only show when EntryHeaderBreadcrumb doesn't show close button */}
- {showEntryDetailsColumn && (
-
- )}
-
-
+ {/* Entry View */}
+ {mobileView === "entry" && entryId && (
+
+
+
+ {/* Mobile back button - only show when EntryHeaderBreadcrumb doesn't show close button */}
+ {showEntryDetailsColumn && (
+
+ )}
+
-
-
-
-
-
- )}
-
-
-
-
- )
-})
+
+
+
+
+ )}
+
+
+
+
+ )
+ },
+)
diff --git a/apps/desktop/layer/renderer/src/modules/command/commands/integration.tsx b/apps/desktop/layer/renderer/src/modules/command/commands/integration.tsx
index b52c894e10..45816ed8e1 100644
--- a/apps/desktop/layer/renderer/src/modules/command/commands/integration.tsx
+++ b/apps/desktop/layer/renderer/src/modules/command/commands/integration.tsx
@@ -777,7 +777,6 @@ const useRegisterQBittorrentCommands = () => {
toast.error(
`${t("entry_actions.failed_to_save_to_qbittorrent")}: ${errorObj.message || ""}`,
)
- return
}
},
}),
diff --git a/apps/desktop/layer/renderer/src/modules/customize-toolbar/dnd.tsx b/apps/desktop/layer/renderer/src/modules/customize-toolbar/dnd.tsx
index b98c08e7f1..95156d5aa2 100644
--- a/apps/desktop/layer/renderer/src/modules/customize-toolbar/dnd.tsx
+++ b/apps/desktop/layer/renderer/src/modules/customize-toolbar/dnd.tsx
@@ -40,7 +40,7 @@ const SortableItem = ({ id, children }: { id: UniqueIdentifier; children: ReactN
diff --git a/apps/desktop/layer/renderer/src/modules/entry-column/Items/picture-item.tsx b/apps/desktop/layer/renderer/src/modules/entry-column/Items/picture-item.tsx
index 71b05d4d9f..a42dd69ccb 100644
--- a/apps/desktop/layer/renderer/src/modules/entry-column/Items/picture-item.tsx
+++ b/apps/desktop/layer/renderer/src/modules/entry-column/Items/picture-item.tsx
@@ -59,76 +59,78 @@ const proxySize = {
height: 0,
}
-export const PictureWaterFallItem = memo(function PictureWaterFallItem({
- entryId,
- translation,
- index,
- className,
-}: UniversalItemProps & { index: number; className?: string }) {
- const entry = useEntry(entryId, (state) => ({
- media: state.media,
- id: state.id,
- }))
-
- const isActive = useRouteParamsSelector(({ entryId }) => entryId === entry?.id)
- const itemWidth = useMasonryItemWidth()
- const isImageOnly = useUISettingKey("pictureViewImageOnly")
-
- const [ref, setRef] = useState
(null)
- const intersectionObserver = use(MasonryIntersectionContext)
-
- useEffect(() => {
- if (!ref || !intersectionObserver) return
-
- intersectionObserver.observe(ref)
-
- return () => {
- intersectionObserver.unobserve(ref)
- }
- }, [ref, intersectionObserver])
-
- const media = entry?.media || []
-
- if (media?.length === 0) return null
- if (!entry) return null
-
- return (
-
-
- {media && media.length > 0 ? (
-
- {
+ const entry = useEntry(entryId, (state) => ({
+ media: state.media,
+ id: state.id,
+ }))
+
+ const isActive = useRouteParamsSelector(({ entryId }) => entryId === entry?.id)
+ const itemWidth = useMasonryItemWidth()
+ const isImageOnly = useUISettingKey("pictureViewImageOnly")
+
+ const [ref, setRef] = useState(null)
+ const intersectionObserver = use(MasonryIntersectionContext)
+
+ useEffect(() => {
+ if (!ref || !intersectionObserver) return
+
+ intersectionObserver.observe(ref)
+
+ return () => {
+ intersectionObserver.unobserve(ref)
+ }
+ }, [ref, intersectionObserver])
+
+ const media = entry?.media || []
+
+ if (media?.length === 0) return null
+ if (!entry) return null
+
+ return (
+
+
+ {media && media.length > 0 ? (
+
+
+ {!isImageOnly && (
+
+
+
)}
- proxySize={proxySize}
- imgClassName="object-cover"
- />
- {!isImageOnly && (
-
-
-
- )}
-
- ) : (
-
-
- No media available
-
- )}
-
-
- )
-})
+
+ ) : (
+
+
+ No media available
+
+ )}
+
+
+ )
+ },
+)
const MasonryItemFixedDimensionWrapper = (
props: PropsWithChildren<{
diff --git a/apps/desktop/layer/renderer/src/modules/entry-column/hooks/useEntryMarkReadHandler.tsx b/apps/desktop/layer/renderer/src/modules/entry-column/hooks/useEntryMarkReadHandler.tsx
index 4867e7db89..2106525888 100644
--- a/apps/desktop/layer/renderer/src/modules/entry-column/hooks/useEntryMarkReadHandler.tsx
+++ b/apps/desktop/layer/renderer/src/modules/entry-column/hooks/useEntryMarkReadHandler.tsx
@@ -40,7 +40,6 @@ export const useEntryMarkReadHandler = (entriesIds: string[]) => {
if (scrollMarkUnread) {
return handleRenderAsRead
}
- return
}, [feedView, handleRenderAsRead, renderAsRead, scrollMarkUnread])
}
diff --git a/apps/desktop/layer/renderer/src/modules/entry-column/item.tsx b/apps/desktop/layer/renderer/src/modules/entry-column/item.tsx
index 99f266bbc7..92e2c7126b 100644
--- a/apps/desktop/layer/renderer/src/modules/entry-column/item.tsx
+++ b/apps/desktop/layer/renderer/src/modules/entry-column/item.tsx
@@ -17,12 +17,7 @@ interface EntryItemProps {
currentFeedTitle?: string
isFirstItem?: boolean
}
-const EntryItemImpl = memo(function EntryItemImpl({
- entryId,
- view,
- currentFeedTitle,
- isFirstItem,
-}: EntryItemProps) {
+const EntryItemImpl = memo(({ entryId, view, currentFeedTitle, isFirstItem }: EntryItemProps) => {
const enableTranslation = useGeneralSettingKey("translation")
const translationMode = useGeneralSettingKey("translationMode")
const actionLanguage = useActionLanguage()
diff --git a/apps/desktop/layer/renderer/src/modules/entry-content/components/selection/SharePosterModal.tsx b/apps/desktop/layer/renderer/src/modules/entry-content/components/selection/SharePosterModal.tsx
index de7bf7a6ad..48d8dc0521 100644
--- a/apps/desktop/layer/renderer/src/modules/entry-content/components/selection/SharePosterModal.tsx
+++ b/apps/desktop/layer/renderer/src/modules/entry-content/components/selection/SharePosterModal.tsx
@@ -486,7 +486,7 @@ function wrapText(ctx: CanvasRenderingContext2D, text: string, maxWidth: number)
const lines: string[] = []
// Check if text contains Chinese/Japanese/Korean characters
- const hasCJK = /[\u4e00-\u9fff\u3040-\u309f\u30a0-\u30ff\uac00-\ud7af]/.test(text)
+ const hasCJK = /[\u4E00-\u9FFF\u3040-\u309F\u30A0-\u30FF\uAC00-\uD7AF]/.test(text)
if (hasCJK) {
// For CJK text, split by character and build lines
diff --git a/apps/desktop/layer/renderer/src/modules/panel/cmdk.tsx b/apps/desktop/layer/renderer/src/modules/panel/cmdk.tsx
index a8071e9861..5902463b1c 100644
--- a/apps/desktop/layer/renderer/src/modules/panel/cmdk.tsx
+++ b/apps/desktop/layer/renderer/src/modules/panel/cmdk.tsx
@@ -151,7 +151,7 @@ export const SearchCmdK: React.FC = () => {
onCompositionStart={onCompositionStart}
onCompositionEnd={onCompositionEnd}
/>
-
+
{
- navigateEntry({
- feedId: feedId!,
- entryId,
- view,
- })
- }}
- >
-
- {feed && }
- {title}
-
- {subtitle}
-
-
-
- )
-})
+const SearchItem = memo(
+ ({
+ id,
+ title,
+ entryId,
+ feedId,
+
+ subtitle,
+ view,
+ }: {} & SearchListType) => {
+ const navigateEntry = useNavigateEntry()
+
+ const feed = getFeedById(feedId!)
+
+ return (
+ {
+ navigateEntry({
+ feedId: feedId!,
+ entryId,
+ view,
+ })
+ }}
+ >
+
+ {feed && }
+ {title}
+
+ {subtitle}
+
+
+
+ )
+ },
+)
const SearchGroupHeading: FC<{ icon: string; title: string }> = ({ icon, title }) => (
diff --git a/apps/desktop/layer/renderer/src/modules/subscription-column/FeedCategory.tsx b/apps/desktop/layer/renderer/src/modules/subscription-column/FeedCategory.tsx
index 99a3b9a640..65986a6de8 100644
--- a/apps/desktop/layer/renderer/src/modules/subscription-column/FeedCategory.tsx
+++ b/apps/desktop/layer/renderer/src/modules/subscription-column/FeedCategory.tsx
@@ -397,9 +397,7 @@ function FilterReadFeedCategory(props: FeedCategoryProps) {
return
}
-export const FeedCategoryAutoHideUnread = memo(function FeedCategoryAutoHideUnread(
- props: FeedCategoryProps,
-) {
+export const FeedCategoryAutoHideUnread = memo((props: FeedCategoryProps) => {
const hideAllReadSubscriptions = useHideAllReadSubscriptions()
if (hideAllReadSubscriptions) {
return
diff --git a/apps/desktop/layer/renderer/src/modules/subscription-column/index.tsx b/apps/desktop/layer/renderer/src/modules/subscription-column/index.tsx
index 5d34afbac3..691a372086 100644
--- a/apps/desktop/layer/renderer/src/modules/subscription-column/index.tsx
+++ b/apps/desktop/layer/renderer/src/modules/subscription-column/index.tsx
@@ -92,7 +92,7 @@ export function SubscriptionColumn({
setActive((_, i) => timelineList[clamp(i + dx, 0, timelineList.length - 1)]!)
return true
} else {
- return
+ /* empty */
}
} else {
return false
diff --git a/apps/desktop/layer/renderer/src/providers/setting-sync.tsx b/apps/desktop/layer/renderer/src/providers/setting-sync.tsx
index 42fb30fadb..56a678ca50 100644
--- a/apps/desktop/layer/renderer/src/providers/setting-sync.tsx
+++ b/apps/desktop/layer/renderer/src/providers/setting-sync.tsx
@@ -28,7 +28,6 @@ const useUpdateDockBadge = (setting: UISettings) => {
ipcServices?.dock.setDockBadge(0)
})
}
- return
}, [setting.showDockBadge])
const prevCount = useRef
(null)
diff --git a/apps/desktop/layer/renderer/src/router.tsx b/apps/desktop/layer/renderer/src/router.tsx
index 38b59a9c00..9536b1bdfb 100644
--- a/apps/desktop/layer/renderer/src/router.tsx
+++ b/apps/desktop/layer/renderer/src/router.tsx
@@ -8,7 +8,7 @@ import { NotFound } from "./components/common/NotFound"
import { routes as tree } from "./generated-routes"
const routerCreator =
- IN_ELECTRON || globalThis["__DEBUG_PROXY__"] ? createHashRouter : createBrowserRouter
+ IN_ELECTRON || globalThis.__DEBUG_PROXY__ ? createHashRouter : createBrowserRouter
export const router = routerCreator([
{
diff --git a/apps/desktop/layer/renderer/src/router.web.tsx b/apps/desktop/layer/renderer/src/router.web.tsx
index 9c59111f6e..6f75148a99 100644
--- a/apps/desktop/layer/renderer/src/router.web.tsx
+++ b/apps/desktop/layer/renderer/src/router.web.tsx
@@ -7,7 +7,7 @@ import { NotFound } from "./components/common/NotFound"
import { routes as tree } from "./generated-routes"
const routerCreator =
- IN_ELECTRON || globalThis["__DEBUG_PROXY__"] ? createHashRouter : createBrowserRouter
+ IN_ELECTRON || globalThis.__DEBUG_PROXY__ ? createHashRouter : createBrowserRouter
export const router = routerCreator([
{
diff --git a/apps/desktop/layer/renderer/src/store/utils/helper.ts b/apps/desktop/layer/renderer/src/store/utils/helper.ts
index 216abdb30b..9716f0971f 100644
--- a/apps/desktop/layer/renderer/src/store/utils/helper.ts
+++ b/apps/desktop/layer/renderer/src/store/utils/helper.ts
@@ -69,7 +69,6 @@ export const createZustandStore =
},
})
}
- return
},
},
)
diff --git a/apps/desktop/layer/renderer/tsconfig.json b/apps/desktop/layer/renderer/tsconfig.json
index 0dd569a621..e0898c740a 100644
--- a/apps/desktop/layer/renderer/tsconfig.json
+++ b/apps/desktop/layer/renderer/tsconfig.json
@@ -1,29 +1,29 @@
{
"extends": "@electron-toolkit/tsconfig/tsconfig.web.json",
"compilerOptions": {
- "jsx": "react-jsx",
- "moduleResolution": "Bundler",
"target": "ES2022",
- "noUnusedLocals": false,
- "noUnusedParameters": false,
- "strict": true,
- "noUncheckedIndexedAccess": true,
- "noImplicitOverride": true,
+ "jsx": "react-jsx",
"baseUrl": ".",
- "noImplicitReturns": false,
- "noEmit": true,
- "skipLibCheck": true,
+ "moduleResolution": "Bundler",
+ "paths": {
+ "~/*": ["src/*"],
+ "@pkg": ["../../package.json"],
+ "@locales/*": ["../../../../locales/*"]
+ },
"types": [
"vite/client",
"vite-plugin-pwa/client",
"@follow/types/global",
"@follow/types/react"
],
- "paths": {
- "~/*": ["src/*"],
- "@pkg": ["../../package.json"],
- "@locales/*": ["../../../../locales/*"]
- }
+ "strict": true,
+ "noImplicitOverride": true,
+ "noImplicitReturns": false,
+ "noUncheckedIndexedAccess": true,
+ "noUnusedLocals": false,
+ "noUnusedParameters": false,
+ "noEmit": true,
+ "skipLibCheck": true
},
"references": [{ "path": "../main" }]
}
diff --git a/apps/desktop/plugins/vite/html-inject.ts b/apps/desktop/plugins/vite/html-inject.ts
index e518d16122..5d7bf0d0ae 100644
--- a/apps/desktop/plugins/vite/html-inject.ts
+++ b/apps/desktop/plugins/vite/html-inject.ts
@@ -12,8 +12,8 @@ export function htmlInjectPlugin(env: typeof EnvType): PluginOption {
${function injectEnv(env: any) {
for (const key in env) {
if (env[key] === undefined) continue
- globalThis["__followEnv"] ??= {}
- globalThis["__followEnv"][key] = env[key]
+ globalThis.__followEnv ??= {}
+ globalThis.__followEnv[key] = env[key]
}
}.toString()}
injectEnv(${JSON.stringify({
diff --git a/apps/desktop/plugins/vite/utils/i18n-completeness.ts b/apps/desktop/plugins/vite/utils/i18n-completeness.ts
index 3da7688fbd..648c8135c3 100644
--- a/apps/desktop/plugins/vite/utils/i18n-completeness.ts
+++ b/apps/desktop/plugins/vite/utils/i18n-completeness.ts
@@ -45,7 +45,7 @@ function calculateCompleteness(localesDir: string): LanguageCompletion {
})
})
- const enCount = keyCount["en"] || 0
+ const enCount = keyCount.en || 0
const completeness: LanguageCompletion = {}
languages.forEach((lang) => {
diff --git a/apps/landing/src/components/common/LightRays.tsx b/apps/landing/src/components/common/LightRays.tsx
index 01030fea5f..2e4dfe0c59 100644
--- a/apps/landing/src/components/common/LightRays.tsx
+++ b/apps/landing/src/components/common/LightRays.tsx
@@ -392,7 +392,6 @@ void main() {
animationIdRef.current = requestAnimationFrame(loop)
} catch (error) {
console.warn('WebGL rendering error:', error)
- return
}
}
diff --git a/apps/landing/src/components/widgets/landing/BuiltOpen.tsx b/apps/landing/src/components/widgets/landing/BuiltOpen.tsx
index 74cc044acd..667497117c 100644
--- a/apps/landing/src/components/widgets/landing/BuiltOpen.tsx
+++ b/apps/landing/src/components/widgets/landing/BuiltOpen.tsx
@@ -57,7 +57,7 @@ export const BuiltOpen: Component = () => {
{/* Tech stack chips */}
-
+
{STACK.map((s) => (
diff --git a/apps/landing/src/components/widgets/landing/Hero.tsx b/apps/landing/src/components/widgets/landing/Hero.tsx
index f4e859a291..a0578544d9 100644
--- a/apps/landing/src/components/widgets/landing/Hero.tsx
+++ b/apps/landing/src/components/widgets/landing/Hero.tsx
@@ -127,7 +127,7 @@ const PreviewAppDemo = () => {
const {
position: columnWidth,
separatorProps,
- isDragging: isDragging,
+ isDragging,
} = useResizable({
axis: 'x',
min: 300,
@@ -158,7 +158,7 @@ const PreviewAppDemo = () => {
{isMobile && (
diff --git a/apps/landing/src/components/widgets/landing/WindowChrome.tsx b/apps/landing/src/components/widgets/landing/WindowChrome.tsx
index fad611623f..a9522b1cc0 100644
--- a/apps/landing/src/components/widgets/landing/WindowChrome.tsx
+++ b/apps/landing/src/components/widgets/landing/WindowChrome.tsx
@@ -29,7 +29,7 @@ export function WindowChrome({
href="https://app.folo.is"
target="_blank"
rel="noreferrer"
- className="ml-auto text-xs pointer-events-auto text-text-secondary cursor-pointer hover:text-text transition-colors"
+ className="ml-auto text-xs pointer-events-auto text-text-secondary cursor-pointer hover:text-text transition-colors"
>
{actionsT('tryOnWeb')}
diff --git a/apps/landing/src/components/widgets/simulators/components/ai/AIChainOfThought.tsx b/apps/landing/src/components/widgets/simulators/components/ai/AIChainOfThought.tsx
index 4a740fbe68..cd50e6fb18 100644
--- a/apps/landing/src/components/widgets/simulators/components/ai/AIChainOfThought.tsx
+++ b/apps/landing/src/components/widgets/simulators/components/ai/AIChainOfThought.tsx
@@ -241,5 +241,4 @@ const extractHeading = (text?: string): string | undefined => {
}
break
}
- return
}
diff --git a/apps/landing/src/legal/privacy.md b/apps/landing/src/legal/privacy.md
index 51ebdfbc20..d263b1d4ad 100644
--- a/apps/landing/src/legal/privacy.md
+++ b/apps/landing/src/legal/privacy.md
@@ -2,7 +2,7 @@
**Last Updated: 2025-09-03**
-This is the privacy policy of NATURAL SELECTION LABS PTE. LTD. (“Company,” “we,” or “Folo”). This Privacy Policy explains how we collect, use, share, store, and protect your personal data when you use our website
and the Folo application (collectively, the “Service”). By accessing or using the Service, you agree to this Privacy Policy and the Terms of Service. If you do not agree, please discontinue use immediately.
+This is the privacy policy of NATURAL SELECTION LABS PTE. LTD. ("Company," "we," or "Folo"). This Privacy Policy explains how we collect, use, share, store, and protect your personal data when you use our website and the Folo application (collectively, the "Service"). By accessing or using the Service, you agree to this Privacy Policy and the Terms of Service. If you do not agree, please discontinue use immediately.
We may update this Privacy Policy from time to time. Any changes will be reflected on our Site with a new Last Updated date. Continued use of the Service after updates constitutes acceptance of the revised Privacy Policy.
@@ -35,7 +35,7 @@ We use your data to provide, improve, and personalize the Service.
- **Service Delivery**: Manage your account, display RSS feeds, and enable features like AI-powered translation, summarization, and recommendations.
- **Personalization**: Tailor content and recommendations based on your subscriptions and usage patterns.
-- **Analytics and Improvement**: Analyze usage trends, troubleshoot issues, and enhance the Service’s functionality and user experience.
+- **Analytics and Improvement**: Analyze usage trends, troubleshoot issues, and enhance the Service's functionality and user experience.
- **Security**: Detect and prevent fraud, unauthorized access, or malicious activities .
- **Communication**: Respond to your inquiries, send service-related notification.
- **Legal Compliance**: Comply with applicable laws, regulations, or legal requests .
@@ -88,7 +88,7 @@ While these jurisdictions may have different data protection laws, we implement
By using the Service, you consent to such international transfers, subject to the protections described in this Privacy Policy.
-## Children’s Privacy
+## Children's Privacy
To use the Service, you must be of legal age to enter into a binding agreement in your jurisdiction. We do not knowingly collect personal data from children. If you believe that a child has provided data to us, please contact us immediately, and we will take appropriate steps to delete such information.
@@ -98,7 +98,7 @@ The Service incorporates third-party RSS feeds and may contain links to external
## AI Features and Data Use
-Folo provides AI-powered functionalities such as summarization, translation, and categorization. These features process input data solely to generate requested outputs.We will not use your personal data to train or improve AI models without your explicit consent. All AI-generated outputs are provided “as is”, and users are advised to verify accuracy before reliance.
+Folo provides AI-powered functionalities such as summarization, translation, and categorization. These features process input data solely to generate requested outputs.We will not use your personal data to train or improve AI models without your explicit consent. All AI-generated outputs are provided "as is", and users are advised to verify accuracy before reliance.
## Governing Law and Dispute Resolution
diff --git a/apps/landing/src/legal/tos.md b/apps/landing/src/legal/tos.md
index d5d80f074d..1bd703f346 100644
--- a/apps/landing/src/legal/tos.md
+++ b/apps/landing/src/legal/tos.md
@@ -6,7 +6,7 @@ Last Updated:2025-09-03
This version of the Terms of Service is the most recent update and supersedes all prior versions. These Terms may be revised from time to time, and continued use of the Service constitutes acceptance of the latest version.
-The Folo platform (“Folo” or the “Service”) is owned, operated, and provided by NATURAL SELECTION LABS PTE. LTD.. All references to “we,” “our,” or “us” in these Terms refer to NATURAL SELECTION LABS PTE. LTD..By accessing or using Folo, you agree to be bound by these Terms of Service and all applicable laws and regulations. If you do not agree, you must not use the Service. You also confirm that you are of the legal age of majority in your jurisdiction.
+The Folo platform ("Folo" or the "Service") is owned, operated, and provided by NATURAL SELECTION LABS PTE. LTD.. All references to "we," "our," or "us" in these Terms refer to NATURAL SELECTION LABS PTE. LTD..By accessing or using Folo, you agree to be bound by these Terms of Service and all applicable laws and regulations. If you do not agree, you must not use the Service. You also confirm that you are of the legal age of majority in your jurisdiction.
## Eligibility
@@ -17,7 +17,7 @@ You must be at least 16 years of age, or the age of majority in your jurisdictio
- Are not barred from using the Service under any applicable laws or regulations; and
- Will use the Service only in compliance with these Terms and all applicable laws.
-If you are accessing the Service on behalf of a company, organization, or other legal entity, you represent and warrant that you have the authority to bind such entity to these Terms, in which case “you” will refer to that entity.
+If you are accessing the Service on behalf of a company, organization, or other legal entity, you represent and warrant that you have the authority to bind such entity to these Terms, in which case "you" will refer to that entity.
## Service Description
@@ -93,7 +93,7 @@ Upon termination or suspension, your right to access the Service will immediatel
## Disclaimers
-The Service is provided on an “as is” and “as available” basis. Folo makes no warranties of any kind, whether express, implied, statutory, or otherwise, including but not limited to warranties of merchantability, fitness for a particular purpose, accuracy, or non-infringement.
+The Service is provided on an "as is" and "as available" basis. Folo makes no warranties of any kind, whether express, implied, statutory, or otherwise, including but not limited to warranties of merchantability, fitness for a particular purpose, accuracy, or non-infringement.
Folo does not guarantee uninterrupted, secure, or error-free access to the Service. You acknowledge and accept that your use of the Service is at your own risk.
@@ -101,7 +101,7 @@ Folo does not guarantee uninterrupted, secure, or error-free access to the Servi
To the maximum extent permitted by law, Folo and its affiliates, officers, and employees shall not be liable for any indirect, incidental, special, consequential, or punitive damages, including but not limited to loss of profits, data, business opportunities, or goodwill.
-Folo’s total aggregate liability for any claim arising out of or in connection with the Service shall not exceed the total amount you paid (if any) to access or use the Service during the twelve (12) months preceding the claim.
+Folo's total aggregate liability for any claim arising out of or in connection with the Service shall not exceed the total amount you paid (if any) to access or use the Service during the twelve (12) months preceding the claim.
These limitations apply regardless of the form of action, whether in contract, tort, strict liability, or otherwise, except where prohibited by applicable law.
@@ -121,7 +121,7 @@ You agree that any dispute, claim, or controversy arising out of or in connectio
## Changes to the Terms
-Folo may revise or update these Terms at any time. Any changes will become effective upon posting the revised Terms to our website with a new “Last Updated” date. Continued use of the Service after such posting constitutes your acceptance of the updated Terms. You are responsible for reviewing the Terms periodically.
+Folo may revise or update these Terms at any time. Any changes will become effective upon posting the revised Terms to our website with a new "Last Updated" date. Continued use of the Service after such posting constitutes your acceptance of the updated Terms. You are responsible for reviewing the Terms periodically.
## Contact Us
diff --git a/apps/landing/src/lib/helper.ts b/apps/landing/src/lib/helper.ts
index 60416ce199..fddb2d7368 100644
--- a/apps/landing/src/lib/helper.ts
+++ b/apps/landing/src/lib/helper.ts
@@ -6,10 +6,10 @@ export const clsxm = (...args: any[]) => {
}
export const escapeHTMLTag = (html: string) => {
- const lt = //g,
- ap = /'/g,
- ic = /"/g
+ const lt = //g
+ const ap = /'/g
+ const ic = /"/g
return html
.toString()
.replaceAll(lt, '<')
diff --git a/apps/landing/tsconfig.json b/apps/landing/tsconfig.json
index 5dcf097e73..6f369fb6d5 100644
--- a/apps/landing/tsconfig.json
+++ b/apps/landing/tsconfig.json
@@ -1,28 +1,28 @@
{
"compilerOptions": {
+ "incremental": true,
"target": "ES2020",
+ "jsx": "react-jsx",
"lib": ["dom", "dom.iterable", "esnext"],
+ "baseUrl": ".",
+ "module": "esnext",
+ "moduleResolution": "node",
+ "paths": {
+ "~/*": ["./src/*"]
+ },
+ "resolveJsonModule": true,
"allowJs": true,
- "skipLibCheck": true,
"strict": true,
- "forceConsistentCasingInFileNames": true,
"noEmit": true,
"esModuleInterop": true,
- "module": "esnext",
- "moduleResolution": "node",
- "resolveJsonModule": true,
+ "forceConsistentCasingInFileNames": true,
"isolatedModules": true,
- "jsx": "react-jsx",
- "baseUrl": ".",
- "incremental": true,
+ "skipLibCheck": true,
"plugins": [
{
"name": "next"
}
- ],
- "paths": {
- "~/*": ["./src/*"]
- }
+ ]
},
"include": [
"next-env.d.ts",
diff --git a/apps/mobile/AGENTS.md b/apps/mobile/AGENTS.md
index 2448f09ef7..5133723972 100644
--- a/apps/mobile/AGENTS.md
+++ b/apps/mobile/AGENTS.md
@@ -11,7 +11,7 @@ This file provides specific guidance for developing the React Native mobile appl
## Development Commands
-```bash
+```sh
# Start Expo development server
pnpm run dev
diff --git a/apps/mobile/README.md b/apps/mobile/README.md
index 997760807c..21a40c471f 100644
--- a/apps/mobile/README.md
+++ b/apps/mobile/README.md
@@ -15,18 +15,18 @@ This is the mobile client for [Folo](https://app.folo.is), built with [Expo](htt
1. Enable Corepack (if not already enabled)
- ```bash
+ ```sh
corepack enable
```
2. Install dependencies
- ```bash
+ ```sh
pnpm install
```
3. Start the development server
- ```bash
+ ```sh
pnpm run dev
```
diff --git a/apps/mobile/changelog/0.1.6.md b/apps/mobile/changelog/0.1.6.md
index 74de0b2457..0cd24d4453 100644
--- a/apps/mobile/changelog/0.1.6.md
+++ b/apps/mobile/changelog/0.1.6.md
@@ -14,6 +14,6 @@
## No longer broken
- Fixed an issue that prevented video preview images from loading (bcf752b)
-- Resolved the iOS swipe‑back gesture conflict with React Native’s Pressable, restoring silky‑smooth navigation
+- Resolved the iOS swipe‑back gesture conflict with React Native's Pressable, restoring silky‑smooth navigation
- Corrected a bug where some images failed to display in the entry body (4654dc9)
- Fixed an issue causing entry timestamps to display incorrectly in the timeline (4ee5944)
diff --git a/apps/mobile/changelog/0.1.8.md b/apps/mobile/changelog/0.1.8.md
index 7315bfce08..d3f5e8b403 100644
--- a/apps/mobile/changelog/0.1.8.md
+++ b/apps/mobile/changelog/0.1.8.md
@@ -3,7 +3,7 @@
## Shiny new things
- Choose whether translations appear on their own or side-by-side with the original text (#3568)
-- “Mark above / below as read” context menu (#3570)
+- "Mark above / below as read" context menu (#3570)
- Automation actions: auto start entries that match your rules (#3625)
- Invite-code gates removed – no invite code needed anymore (cee647c)
diff --git a/apps/mobile/changelog/0.1.9.md b/apps/mobile/changelog/0.1.9.md
index 38fafa4bd3..a6797a16e0 100644
--- a/apps/mobile/changelog/0.1.9.md
+++ b/apps/mobile/changelog/0.1.9.md
@@ -16,5 +16,5 @@
- Tapping the avatar now navigates correctly. (5a9af9f)
- Entries without images now display properly in the video view. (4119b9a)
-- Fixed an issue where some feeds didn’t appear in search results. (74f7d52)
+- Fixed an issue where some feeds didn't appear in search results. (74f7d52)
- Unread indicators now show correctly in both image and video views. (2244dc7)
diff --git a/apps/mobile/changelog/0.2.0.md b/apps/mobile/changelog/0.2.0.md
index 4e8371c183..85732ff0b8 100644
--- a/apps/mobile/changelog/0.2.0.md
+++ b/apps/mobile/changelog/0.2.0.md
@@ -2,7 +2,7 @@
## Shiny new things
-- Video view now displays the video’s total duration (2234b4b)
+- Video view now displays the video's total duration (2234b4b)
- Added the option to hide private subscriptions in the Timeline: `Settings → General → Subscriptions → Hide Private` (#3773)
- Introduced pull-up to next for effortless, continuous reading (#3760)
diff --git a/apps/mobile/changelog/0.2.1.md b/apps/mobile/changelog/0.2.1.md
index 12c327974b..a1fc41fbc3 100644
--- a/apps/mobile/changelog/0.2.1.md
+++ b/apps/mobile/changelog/0.2.1.md
@@ -8,9 +8,9 @@
## Improvements
- Gradually rolling out an experimental unified local database for mobile and desktop (#3809)
-- Added a “Mark as read” option to the long-press menu in lists (7c4b896)
+- Added a "Mark as read" option to the long-press menu in lists (7c4b896)
- RSSHub routes list now shows popularity scores and sorts by them (9c3457a)
-- Polished the RSSHub route detail page and added “Top Feeds” (6a51c8f)
+- Polished the RSSHub route detail page and added "Top Feeds" (6a51c8f)
- Feed-subscription page now displays feed analytics (2c27d91)
- Trending list now shows subscriber counts (bdb6802)
- AI will skip summarising extra-short articles to avoid trivial summaries (63388b4)
diff --git a/apps/mobile/src/@types/constants.ts b/apps/mobile/src/@types/constants.ts
index eb091b9af3..c4f678cda5 100644
--- a/apps/mobile/src/@types/constants.ts
+++ b/apps/mobile/src/@types/constants.ts
@@ -7,8 +7,8 @@ export const defaultNS = "default" as const
export const dayjsLocaleImportMap = {
en: ["en", () => import("dayjs/locale/en")],
- ["zh-CN"]: ["zh-cn", () => import("dayjs/locale/zh-cn")],
- ["ja"]: ["ja", () => import("dayjs/locale/ja")],
- ["zh-TW"]: ["zh-tw", () => import("dayjs/locale/zh-tw")],
- ["fr-FR"]: ["fr", () => import("dayjs/locale/fr")],
+ "zh-CN": ["zh-cn", () => import("dayjs/locale/zh-cn")],
+ ja: ["ja", () => import("dayjs/locale/ja")],
+ "zh-TW": ["zh-tw", () => import("dayjs/locale/zh-tw")],
+ "fr-FR": ["fr", () => import("dayjs/locale/fr")],
} as const
diff --git a/apps/mobile/src/components/layouts/tabbar/hooks.ts b/apps/mobile/src/components/layouts/tabbar/hooks.ts
index 2a22321148..db209089da 100644
--- a/apps/mobile/src/components/layouts/tabbar/hooks.ts
+++ b/apps/mobile/src/components/layouts/tabbar/hooks.ts
@@ -50,7 +50,6 @@ export const useNavigationScrollToTop = (
animated: true,
})
}
- return
}, [attachNavigationScrollViewRef, overrideScrollerRef])
}
diff --git a/apps/mobile/src/components/ui/lightbox/ImageViewing/transforms.ts b/apps/mobile/src/components/ui/lightbox/ImageViewing/transforms.ts
index 5be83110c8..8783fe062e 100644
--- a/apps/mobile/src/components/ui/lightbox/ImageViewing/transforms.ts
+++ b/apps/mobile/src/components/ui/lightbox/ImageViewing/transforms.ts
@@ -59,15 +59,15 @@ export function prependScale(t: TransformMatrix, value: number) {
export function prependTransform(ta: TransformMatrix, tb: TransformMatrix) {
"worklet"
// In-place matrix multiplication.
- const a00 = ta[0],
- a01 = ta[1],
- a02 = ta[2]
- const a10 = ta[3],
- a11 = ta[4],
- a12 = ta[5]
- const a20 = ta[6],
- a21 = ta[7],
- a22 = ta[8]
+ const a00 = ta[0]
+ const a01 = ta[1]
+ const a02 = ta[2]
+ const a10 = ta[3]
+ const a11 = ta[4]
+ const a12 = ta[5]
+ const a20 = ta[6]
+ const a21 = ta[7]
+ const a22 = ta[8]
ta[0] = a00 * tb[0] + a01 * tb[3] + a02 * tb[6]
ta[1] = a00 * tb[1] + a01 * tb[4] + a02 * tb[7]
ta[2] = a00 * tb[2] + a01 * tb[5] + a02 * tb[8]
diff --git a/apps/mobile/src/components/ui/qrcode/useQRCodeData.ts b/apps/mobile/src/components/ui/qrcode/useQRCodeData.ts
index 6a6e8d130b..9141c40291 100644
--- a/apps/mobile/src/components/ui/qrcode/useQRCodeData.ts
+++ b/apps/mobile/src/components/ui/qrcode/useQRCodeData.ts
@@ -11,9 +11,7 @@ export default function useQRCodeData(
const QRCodeData = useMemo(() => {
try {
return createQRCode(data, options)
- } catch {
- return
- }
+ } catch {}
}, [data, options])
const { size: qrCodeSize = 0, bitMatrix = [] } = QRCodeData || {}
diff --git a/apps/mobile/src/hooks/useIntentHandler.ts b/apps/mobile/src/hooks/useIntentHandler.ts
index d408b1b3e5..22053e9f3e 100644
--- a/apps/mobile/src/hooks/useIntentHandler.ts
+++ b/apps/mobile/src/hooks/useIntentHandler.ts
@@ -28,7 +28,6 @@ export function useIntentHandler() {
if (searchParams === "refresh") {
invalidateUserSession()
- return
} else {
navigation.presentControllerView(FollowScreen, {
id: searchParams.id ?? undefined,
diff --git a/apps/mobile/src/lib/api-client.ts b/apps/mobile/src/lib/api-client.ts
index 37de2e4eaf..ee9d4ac458 100644
--- a/apps/mobile/src/lib/api-client.ts
+++ b/apps/mobile/src/lib/api-client.ts
@@ -40,7 +40,7 @@ followClient.addRequestInterceptor(async (ctx) => {
header["X-Client-Id"] = getClientId()
header["X-Session-Id"] = getSessionId()
header["User-Agent"] = await getUserAgent()
- header["cookie"] = getCookie()
+ header.cookie = getCookie()
const apiHeader = createMobileAPIHeaders({
version: nativeApplicationVersion || "",
diff --git a/apps/mobile/src/lib/client-session.ts b/apps/mobile/src/lib/client-session.ts
index e7de46cbdc..9ac07d945b 100644
--- a/apps/mobile/src/lib/client-session.ts
+++ b/apps/mobile/src/lib/client-session.ts
@@ -7,8 +7,8 @@ const SESSION_ID_KEY = getStorageNS("session_id")
const uuid = () => {
return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replaceAll(/[xy]/g, (c) => {
- const r = (Math.random() * 16) | 0,
- v = c === "x" ? r : (r & 0x3) | 0x8
+ const r = (Math.random() * 16) | 0
+ const v = c === "x" ? r : (r & 0x3) | 0x8
return v.toString(16)
})
}
diff --git a/apps/mobile/src/modules/context-menu/feeds.tsx b/apps/mobile/src/modules/context-menu/feeds.tsx
index e681b185ec..23d9cb44b4 100644
--- a/apps/mobile/src/modules/context-menu/feeds.tsx
+++ b/apps/mobile/src/modules/context-menu/feeds.tsx
@@ -209,7 +209,6 @@ const generateSubscriptionContextMenu = (navigation: Navigation, id: string) =>
if (!feed) return
setStringAsync(feed.url)
toast.success(t("operation.copy_which_success", { which: t("operation.copy.link") }))
- return
}
}
}}
diff --git a/apps/mobile/src/modules/context-menu/video.tsx b/apps/mobile/src/modules/context-menu/video.tsx
index 365d2548e8..7a46109930 100644
--- a/apps/mobile/src/modules/context-menu/video.tsx
+++ b/apps/mobile/src/modules/context-menu/video.tsx
@@ -88,7 +88,6 @@ export const VideoContextMenu = ({ entryId, children }: VideoContextMenuProps) =
url: entry.url,
title: entry.title || "Shared Video",
})
- return
}}
>
diff --git a/apps/mobile/web-app/html-renderer/tsconfig.json b/apps/mobile/web-app/html-renderer/tsconfig.json
index a772861f14..7480771377 100644
--- a/apps/mobile/web-app/html-renderer/tsconfig.json
+++ b/apps/mobile/web-app/html-renderer/tsconfig.json
@@ -1,20 +1,20 @@
{
"extends": "@follow/configs/tsconfig.extend.json",
"compilerOptions": {
+ "target": "ES2022",
"jsx": "react-jsx",
"moduleResolution": "Bundler",
- "target": "ES2022",
- "noUnusedLocals": false,
- "noUnusedParameters": false,
+ "paths": {
+ "~/*": ["./src/*"]
+ },
+ "types": ["vite/client", "@follow/types/global", "@follow/types/react"],
"strict": true,
- "noUncheckedIndexedAccess": true,
"noImplicitOverride": true,
"noImplicitReturns": false,
+ "noUncheckedIndexedAccess": true,
+ "noUnusedLocals": false,
+ "noUnusedParameters": false,
"noEmit": true,
- "skipLibCheck": true,
- "types": ["vite/client", "@follow/types/global", "@follow/types/react"],
- "paths": {
- "~/*": ["./src/*"]
- }
+ "skipLibCheck": true
}
}
diff --git a/apps/ssr/client/@types/constants.ts b/apps/ssr/client/@types/constants.ts
index 70947b0c4f..be2f0f4cad 100644
--- a/apps/ssr/client/@types/constants.ts
+++ b/apps/ssr/client/@types/constants.ts
@@ -5,9 +5,9 @@ export type SSRSupportedLanguages = (typeof langs)[number]
export const dayjsLocaleImportMap = {
en: ["en", () => import("dayjs/locale/en")],
- ["zh-CN"]: ["zh-cn", () => import("dayjs/locale/zh-cn")],
- ["ja"]: ["ja", () => import("dayjs/locale/ja")],
- ["zh-TW"]: ["zh-tw", () => import("dayjs/locale/zh-tw")],
+ "zh-CN": ["zh-cn", () => import("dayjs/locale/zh-cn")],
+ ja: ["ja", () => import("dayjs/locale/ja")],
+ "zh-TW": ["zh-tw", () => import("dayjs/locale/zh-tw")],
}
export const ns = ["common", "external"] as const
export const defaultNS = "external" as const
diff --git a/apps/ssr/client/lib/helper.ts b/apps/ssr/client/lib/helper.ts
index 429f27a5da..364fb0378a 100644
--- a/apps/ssr/client/lib/helper.ts
+++ b/apps/ssr/client/lib/helper.ts
@@ -95,7 +95,6 @@ export const openInFollowApp = ({
window.location.href = fallbackUrl
}
resolve(false)
- return
}
}, timeout)
})
diff --git a/apps/ssr/client/modules/login/index.tsx b/apps/ssr/client/modules/login/index.tsx
index 8aa0aba643..5905418eea 100644
--- a/apps/ssr/client/modules/login/index.tsx
+++ b/apps/ssr/client/modules/login/index.tsx
@@ -396,7 +396,6 @@ function LoginWithPassword() {
form.setValue("code", "")
setTimeout(() => form.setFocus("code"), 0)
setIsButtonLoading(false)
- return
} else {
queryClient.invalidateQueries({ queryKey: ["auth", "session"] })
}
diff --git a/apps/ssr/client/pages/(main)/share/users/[id]/metadata.ts b/apps/ssr/client/pages/(main)/share/users/[id]/metadata.ts
index 8f8a9c1a4e..d9d33e00c3 100644
--- a/apps/ssr/client/pages/(main)/share/users/[id]/metadata.ts
+++ b/apps/ssr/client/pages/(main)/share/users/[id]/metadata.ts
@@ -7,8 +7,8 @@ import { defineMetadata } from "../../../../../../src/meta-handler"
export default defineMetadata(async ({ params, apiClient, origin }): Promise => {
const userIdOrHandle = params.id
- let handle = undefined
- let userId = undefined
+ let handle
+ let userId
if (!userIdOrHandle) {
throw new Error("User ID or handle is required")
diff --git a/apps/ssr/client/query/entries.ts b/apps/ssr/client/query/entries.ts
index 491737b6fc..f3c412758e 100644
--- a/apps/ssr/client/query/entries.ts
+++ b/apps/ssr/client/query/entries.ts
@@ -16,7 +16,7 @@ export const useEntriesPreview = ({ id }: { id?: string }) => {
queryKey: ["entries-preview", id],
queryFn: () => fetchEntriesPreview({ id }),
enabled: !!id,
- initialData: getHydrateData(`feeds.$get,query:id=${id}`)?.["entries"],
+ initialData: getHydrateData(`feeds.$get,query:id=${id}`)?.entries,
})
}
diff --git a/apps/ssr/client/router.tsx b/apps/ssr/client/router.tsx
index 329bb6818f..a97f5cf022 100644
--- a/apps/ssr/client/router.tsx
+++ b/apps/ssr/client/router.tsx
@@ -12,7 +12,7 @@ declare global {
__DEBUG_PROXY__: boolean
}
}
-let routerCreator = window["__DEBUG_PROXY__"] ? createHashRouter : createBrowserRouter
+let routerCreator = window.__DEBUG_PROXY__ ? createHashRouter : createBrowserRouter
if (window.SENTRY_RELEASE) {
routerCreator = wrapCreateBrowserRouterV7(routerCreator)
}
diff --git a/apps/ssr/src/lib/api-client.ts b/apps/ssr/src/lib/api-client.ts
index cb896e80a8..13a716c752 100644
--- a/apps/ssr/src/lib/api-client.ts
+++ b/apps/ssr/src/lib/api-client.ts
@@ -40,7 +40,7 @@ export const createApiFetch = () => {
},
onRequestError(context) {
if (context.error.name === "AbortError") {
- return
+ /* empty */
}
},
baseURL,
diff --git a/apps/ssr/tsconfig.json b/apps/ssr/tsconfig.json
index 5ee15d7bc5..2e8cd10be5 100644
--- a/apps/ssr/tsconfig.json
+++ b/apps/ssr/tsconfig.json
@@ -1,31 +1,31 @@
{
"compilerOptions": {
- "lib": ["dom", "dom.iterable", "esnext"],
+ "incremental": true,
"target": "ES2022",
+ "jsx": "react",
+ "lib": ["dom", "dom.iterable", "esnext"],
+ "module": "esnext",
+ "moduleResolution": "Bundler",
+ "paths": {
+ "@src/*": ["./src/*"],
+ "@client/*": ["./client/*"],
+ "@locales/*": ["../../locales/*"]
+ },
+ "resolveJsonModule": true,
+ "types": ["vite/client", "@follow/types/react", "@follow/types/global"],
"allowJs": true,
- "skipLibCheck": true,
"strict": true,
- "noUncheckedIndexedAccess": true,
"noImplicitOverride": true,
+ "noUncheckedIndexedAccess": true,
"noEmit": true,
- "moduleResolution": "Bundler",
"esModuleInterop": true,
- "module": "esnext",
- "resolveJsonModule": true,
"isolatedModules": true,
- "jsx": "react",
- "incremental": true,
- "types": ["vite/client", "@follow/types/react", "@follow/types/global"],
+ "skipLibCheck": true,
"plugins": [
{
"name": "next"
}
- ],
- "paths": {
- "@src/*": ["./src/*"],
- "@client/*": ["./client/*"],
- "@locales/*": ["../../locales/*"]
- }
+ ]
},
"include": [
"./src/**/*.ts",
diff --git a/eslint-suppressions.json b/eslint-suppressions.json
index 34b120e0d8..ee6739d1a6 100644
--- a/eslint-suppressions.json
+++ b/eslint-suppressions.json
@@ -1,107 +1,23 @@
{
".claude/skills/desktop-release/SKILL.md": {
- "md/code-lang-shorthand": {
- "count": 12
- },
"md/no-irregular-dash": {
"count": 1
}
},
- ".claude/skills/installing-mobile-preview-builds/SKILL.md": {
- "md/code-lang-shorthand": {
- "count": 6
- }
- },
- ".claude/skills/mobile-release/SKILL.md": {
- "md/code-lang-shorthand": {
- "count": 8
- }
- },
".claude/skills/update-deps/SKILL.md": {
"markdown/fenced-code-language": {
"count": 1
},
- "md/code-lang-shorthand": {
- "count": 2
- },
"md/no-irregular-dash": {
"count": 3
}
},
- ".github/ISSUE_TEMPLATE/i18n.yml": {
- "yaml/plain-scalar": {
- "count": 2
- }
- },
- ".github/actions/setup-version/action.yml": {
- "yaml/plain-scalar": {
- "count": 5
- }
- },
- ".github/actions/setup-xcode/action.yml": {
- "yaml/plain-scalar": {
- "count": 5
- }
- },
- ".github/advanced-issue-labeler.yml": {
- "yaml/plain-scalar": {
- "count": 9
- }
- },
- ".github/dependabot.yaml": {
- "yaml/plain-scalar": {
- "count": 3
- }
- },
".github/scripts/extract-release-info.mjs": {
"node/prefer-global/process": {
"count": 10
}
},
- ".github/workflows/build-android.yml": {
- "yaml/plain-scalar": {
- "count": 6
- }
- },
- ".github/workflows/build-desktop.yml": {
- "yaml/plain-scalar": {
- "count": 11
- }
- },
- ".github/workflows/build-ios-development.yml": {
- "yaml/plain-scalar": {
- "count": 4
- }
- },
- ".github/workflows/build-ios.yml": {
- "yaml/plain-scalar": {
- "count": 3
- }
- },
- ".github/workflows/build-web.yml": {
- "yaml/plain-scalar": {
- "count": 1
- }
- },
- ".github/workflows/deploy-cloudflare.yml": {
- "yaml/plain-scalar": {
- "count": 1
- }
- },
- ".github/workflows/lint.yml": {
- "yaml/plain-scalar": {
- "count": 1
- }
- },
- ".github/workflows/translator.yml": {
- "yaml/plain-scalar": {
- "count": 1
- }
- },
"AGENTS.md": {
- "md/code-lang-shorthand": {
- "count": 3
- },
"md/no-irregular-dash": {
"count": 4
}
@@ -118,9 +34,6 @@
"markdown/require-alt-text": {
"count": 17
},
- "md/no-curly-quote": {
- "count": 2
- },
"md/no-irregular-dash": {
"count": 3
},
@@ -167,17 +80,9 @@
"count": 3
}
},
- "apps/cli/tsconfig.json": {
- "jsonc/sort-keys": {
- "count": 1
- }
- },
"apps/desktop/AGENTS.md": {
"markdown/fenced-code-language": {
"count": 1
- },
- "md/code-lang-shorthand": {
- "count": 1
}
},
"apps/desktop/changelog/0.2.5.md": {
@@ -196,71 +101,34 @@
}
},
"apps/desktop/changelog/0.4.3.md": {
- "md/no-curly-quote": {
- "count": 2
- },
"md/no-irregular-dash": {
"count": 5
}
},
"apps/desktop/changelog/0.4.5.md": {
- "md/no-curly-quote": {
- "count": 4
- },
"md/no-irregular-dash": {
"count": 2
}
},
- "apps/desktop/changelog/0.4.6.md": {
- "md/no-curly-quote": {
- "count": 1
- }
- },
"apps/desktop/changelog/0.4.8.md": {
- "md/no-curly-quote": {
- "count": 5
- },
"md/no-irregular-dash": {
"count": 3
}
},
- "apps/desktop/changelog/0.5.0.md": {
- "md/no-curly-quote": {
- "count": 6
- }
- },
- "apps/desktop/changelog/0.6.2.md": {
- "md/no-curly-quote": {
- "count": 9
- }
- },
"apps/desktop/changelog/0.6.3.md": {
"md/no-irregular-dash": {
"count": 1
}
},
- "apps/desktop/changelog/0.9.0.md": {
- "md/no-curly-quote": {
- "count": 3
- }
- },
"apps/desktop/changelog/1.0.0.md": {
"md/no-irregular-dash": {
"count": 1
}
},
- "apps/desktop/changelog/1.1.0.md": {
- "md/no-curly-quote": {
- "count": 2
- }
- },
"apps/desktop/changelog/1.2.2.md": {
"markdown/require-alt-text": {
"count": 2
},
- "md/no-curly-quote": {
- "count": 2
- },
"md/no-irregular-dash": {
"count": 2
}
@@ -316,11 +184,6 @@
"count": 2
}
},
- "apps/desktop/layer/main/src/ipc/services/integration.ts": {
- "no-useless-return": {
- "count": 1
- }
- },
"apps/desktop/layer/main/src/lib/api-client.ts": {
"node/prefer-global/process": {
"count": 1
@@ -337,17 +200,11 @@
}
},
"apps/desktop/layer/main/src/lib/proxy.ts": {
- "no-useless-return": {
- "count": 1
- },
"ts/no-use-before-define": {
"count": 2
}
},
"apps/desktop/layer/main/src/lib/router.ts": {
- "no-useless-return": {
- "count": 1
- },
"ts/no-use-before-define": {
"count": 6
}
@@ -363,9 +220,6 @@
}
},
"apps/desktop/layer/main/src/manager/bootstrap.ts": {
- "dot-notation": {
- "count": 1
- },
"no-console": {
"count": 2
},
@@ -379,12 +233,6 @@
}
},
"apps/desktop/layer/main/src/manager/window.ts": {
- "dot-notation": {
- "count": 3
- },
- "no-useless-return": {
- "count": 1
- },
"node/prefer-global/process": {
"count": 4
}
@@ -409,21 +257,11 @@
"count": 8
}
},
- "apps/desktop/layer/main/tsconfig.json": {
- "jsonc/sort-keys": {
- "count": 7
- }
- },
"apps/desktop/layer/renderer/setup-file.ts": {
"ts/ban-ts-comment": {
"count": 1
}
},
- "apps/desktop/layer/renderer/src/@types/constants.ts": {
- "no-useless-computed-key": {
- "count": 4
- }
- },
"apps/desktop/layer/renderer/src/App.tsx": {
"ts/no-use-before-define": {
"count": 2
@@ -434,11 +272,6 @@
"count": 2
}
},
- "apps/desktop/layer/renderer/src/atoms/player.ts": {
- "no-useless-return": {
- "count": 1
- }
- },
"apps/desktop/layer/renderer/src/atoms/readability.ts": {
"ts/no-use-before-define": {
"count": 1
@@ -483,9 +316,6 @@
}
},
"apps/desktop/layer/renderer/src/components/common/ShadowDOM.tsx": {
- "no-useless-computed-key": {
- "count": 1
- },
"ts/ban-ts-comment": {
"count": 1
}
@@ -506,18 +336,10 @@
}
},
"apps/desktop/layer/renderer/src/components/ui/code-highlighter/shiki/Shiki.tsx": {
- "dot-notation": {
- "count": 1
- },
"ts/no-use-before-define": {
"count": 1
}
},
- "apps/desktop/layer/renderer/src/components/ui/crop/AvatarUploadModal.tsx": {
- "one-var": {
- "count": 2
- }
- },
"apps/desktop/layer/renderer/src/components/ui/keyboard-recorder/KeyRecorder.tsx": {
"no-console": {
"count": 1
@@ -564,9 +386,6 @@
"@eslint-react/no-use-context": {
"count": 2
},
- "no-unneeded-ternary": {
- "count": 1
- },
"ts/no-use-before-define": {
"count": 19
}
@@ -595,9 +414,6 @@
"@eslint-react/no-context-provider": {
"count": 1
},
- "prefer-arrow-callback": {
- "count": 1
- },
"ts/no-use-before-define": {
"count": 4
}
@@ -733,11 +549,6 @@
"count": 1
}
},
- "apps/desktop/layer/renderer/src/modules/ai-chat/components/layouts/ChatTitle.tsx": {
- "no-useless-computed-key": {
- "count": 1
- }
- },
"apps/desktop/layer/renderer/src/modules/ai-chat/components/layouts/WelcomeScreen.tsx": {
"ts/no-use-before-define": {
"count": 1
@@ -776,21 +587,11 @@
"count": 1
}
},
- "apps/desktop/layer/renderer/src/modules/ai-chat/editor/plugins/mention/constants.ts": {
- "unicorn/escape-case": {
- "count": 1
- }
- },
"apps/desktop/layer/renderer/src/modules/ai-chat/editor/plugins/mention/hooks/dateMentionUtils.ts": {
"ts/no-use-before-define": {
"count": 1
}
},
- "apps/desktop/layer/renderer/src/modules/ai-chat/editor/plugins/shortcut/constants.ts": {
- "unicorn/escape-case": {
- "count": 1
- }
- },
"apps/desktop/layer/renderer/src/modules/ai-chat/services/index.ts": {
"ts/no-use-before-define": {
"count": 1
@@ -801,16 +602,6 @@
"count": 1
}
},
- "apps/desktop/layer/renderer/src/modules/ai-chat/utils/extractor.ts": {
- "no-useless-return": {
- "count": 1
- }
- },
- "apps/desktop/layer/renderer/src/modules/ai-chat/utils/file-validation.ts": {
- "prefer-exponentiation-operator": {
- "count": 1
- }
- },
"apps/desktop/layer/renderer/src/modules/app-layout/LAYOUT_ARCHITECTURE.md": {
"markdown/fenced-code-language": {
"count": 3
@@ -827,16 +618,6 @@
"count": 2
}
},
- "apps/desktop/layer/renderer/src/modules/app-layout/ai-enhanced-timeline/AIEnhancedTimelineLayout.tsx": {
- "prefer-arrow-callback": {
- "count": 1
- }
- },
- "apps/desktop/layer/renderer/src/modules/app-layout/ai-enhanced-timeline/MobileTimelineLayout.tsx": {
- "prefer-arrow-callback": {
- "count": 1
- }
- },
"apps/desktop/layer/renderer/src/modules/app-layout/ai/AIChatFloatingPanel.tsx": {
"ts/ban-ts-comment": {
"count": 1
@@ -873,11 +654,6 @@
"count": 1
}
},
- "apps/desktop/layer/renderer/src/modules/app-tip/OverviewMedia.tsx": {
- "unicorn/number-literal-case": {
- "count": 1
- }
- },
"apps/desktop/layer/renderer/src/modules/app/EnvironmentIndicator.tsx": {
"@eslint-react/dom/no-missing-iframe-sandbox": {
"count": 1
@@ -889,9 +665,6 @@
}
},
"apps/desktop/layer/renderer/src/modules/command/commands/integration.tsx": {
- "no-useless-return": {
- "count": 1
- },
"ts/no-use-before-define": {
"count": 13
}
@@ -921,11 +694,6 @@
"count": 1
}
},
- "apps/desktop/layer/renderer/src/modules/customize-toolbar/dnd.tsx": {
- "tailwindcss/no-unnecessary-whitespace": {
- "count": 1
- }
- },
"apps/desktop/layer/renderer/src/modules/customize-toolbar/modal.tsx": {
"react-refresh/only-export-components": {
"count": 1
@@ -977,11 +745,6 @@
"count": 3
}
},
- "apps/desktop/layer/renderer/src/modules/discover/OpmlAbstractGraphic.tsx": {
- "unicorn/number-literal-case": {
- "count": 1
- }
- },
"apps/desktop/layer/renderer/src/modules/discover/OpmlSelectionModal.tsx": {
"ts/no-use-before-define": {
"count": 8
@@ -1023,9 +786,6 @@
}
},
"apps/desktop/layer/renderer/src/modules/entry-column/Items/picture-item.tsx": {
- "prefer-arrow-callback": {
- "count": 1
- },
"ts/no-use-before-define": {
"count": 2
}
@@ -1084,21 +844,11 @@
"count": 1
}
},
- "apps/desktop/layer/renderer/src/modules/entry-column/hooks/useEntryMarkReadHandler.tsx": {
- "no-useless-return": {
- "count": 1
- }
- },
"apps/desktop/layer/renderer/src/modules/entry-column/index.tsx": {
"ts/no-use-before-define": {
"count": 2
}
},
- "apps/desktop/layer/renderer/src/modules/entry-column/item.tsx": {
- "prefer-arrow-callback": {
- "count": 1
- }
- },
"apps/desktop/layer/renderer/src/modules/entry-column/layouts/EntryItemWrapper.tsx": {
"ts/no-use-before-define": {
"count": 1
@@ -1184,11 +934,6 @@
"count": 1
}
},
- "apps/desktop/layer/renderer/src/modules/entry-content/components/selection/SharePosterModal.tsx": {
- "unicorn/escape-case": {
- "count": 1
- }
- },
"apps/desktop/layer/renderer/src/modules/entry-content/components/selection/TextSelectionToolbar.tsx": {
"ts/no-use-before-define": {
"count": 1
@@ -1220,12 +965,6 @@
}
},
"apps/desktop/layer/renderer/src/modules/panel/cmdk.tsx": {
- "dot-notation": {
- "count": 1
- },
- "prefer-arrow-callback": {
- "count": 1
- },
"ts/no-use-before-define": {
"count": 9
}
@@ -1428,9 +1167,6 @@
}
},
"apps/desktop/layer/renderer/src/modules/subscription-column/FeedCategory.tsx": {
- "prefer-arrow-callback": {
- "count": 1
- },
"ts/no-use-before-define": {
"count": 3
}
@@ -1462,9 +1198,6 @@
"@eslint-react/web-api/no-leaked-timeout": {
"count": 1
},
- "no-useless-return": {
- "count": 1
- },
"ts/no-use-before-define": {
"count": 5
}
@@ -1600,11 +1333,6 @@
"count": 3
}
},
- "apps/desktop/layer/renderer/src/providers/setting-sync.tsx": {
- "no-useless-return": {
- "count": 1
- }
- },
"apps/desktop/layer/renderer/src/providers/wrapped-element-provider.tsx": {
"ts/no-use-before-define": {
"count": 5
@@ -1621,17 +1349,11 @@
}
},
"apps/desktop/layer/renderer/src/router.tsx": {
- "dot-notation": {
- "count": 1
- },
"ts/ban-ts-comment": {
"count": 1
}
},
"apps/desktop/layer/renderer/src/router.web.tsx": {
- "dot-notation": {
- "count": 1
- },
"ts/ban-ts-comment": {
"count": 1
}
@@ -1651,21 +1373,11 @@
"count": 1
}
},
- "apps/desktop/layer/renderer/src/store/utils/helper.ts": {
- "no-useless-return": {
- "count": 1
- }
- },
"apps/desktop/layer/renderer/src/wdyr.ts": {
"antfu/no-top-level-await": {
"count": 1
}
},
- "apps/desktop/layer/renderer/tsconfig.json": {
- "jsonc/sort-keys": {
- "count": 7
- }
- },
"apps/desktop/layer/renderer/vitest.config.ts": {
"node/prefer-global/process": {
"count": 2
@@ -1702,16 +1414,6 @@
"count": 2
}
},
- "apps/desktop/plugins/vite/html-inject.ts": {
- "dot-notation": {
- "count": 2
- }
- },
- "apps/desktop/plugins/vite/utils/i18n-completeness.ts": {
- "dot-notation": {
- "count": 1
- }
- },
"apps/desktop/postcss.config.cjs": {
"node/prefer-global/process": {
"count": 3
@@ -1785,11 +1487,6 @@
"count": 1
}
},
- "apps/landing/src/components/common/LightRays.tsx": {
- "no-useless-return": {
- "count": 1
- }
- },
"apps/landing/src/components/ui/accordion/Accordion.tsx": {
"react-refresh/only-export-components": {
"count": 1
@@ -1850,29 +1547,15 @@
}
},
"apps/landing/src/components/widgets/landing/BuiltOpen.tsx": {
- "tailwindcss/no-unnecessary-whitespace": {
- "count": 1
- },
"ts/no-use-before-define": {
"count": 12
}
},
"apps/landing/src/components/widgets/landing/Hero.tsx": {
- "no-useless-rename": {
- "count": 1
- },
- "tailwindcss/no-unnecessary-whitespace": {
- "count": 1
- },
"ts/no-use-before-define": {
"count": 1
}
},
- "apps/landing/src/components/widgets/landing/WindowChrome.tsx": {
- "tailwindcss/no-unnecessary-whitespace": {
- "count": 1
- }
- },
"apps/landing/src/components/widgets/simulators/EntryPage.tsx": {
"ts/no-use-before-define": {
"count": 1
@@ -1884,9 +1567,6 @@
}
},
"apps/landing/src/components/widgets/simulators/components/ai/AIChainOfThought.tsx": {
- "no-useless-return": {
- "count": 1
- },
"ts/no-use-before-define": {
"count": 3
}
@@ -1917,26 +1597,11 @@
"count": 1
}
},
- "apps/landing/src/legal/privacy.md": {
- "md/no-curly-quote": {
- "count": 12
- }
- },
- "apps/landing/src/legal/tos.md": {
- "md/no-curly-quote": {
- "count": 19
- }
- },
"apps/landing/src/lib/env.ts": {
"node/prefer-global/process": {
"count": 1
}
},
- "apps/landing/src/lib/helper.ts": {
- "one-var": {
- "count": 1
- }
- },
"apps/landing/src/lib/scroller.ts": {
"ts/no-use-before-define": {
"count": 2
@@ -1958,23 +1623,10 @@
"count": 4
}
},
- "apps/landing/tsconfig.json": {
- "jsonc/sort-keys": {
- "count": 9
- }
- },
- "apps/mobile/AGENTS.md": {
- "md/code-lang-shorthand": {
- "count": 1
- }
- },
"apps/mobile/README.md": {
"markdown/fenced-code-language": {
"count": 1
},
- "md/code-lang-shorthand": {
- "count": 3
- },
"md/no-url-trailing-slash": {
"count": 4
}
@@ -1988,9 +1640,6 @@
}
},
"apps/mobile/changelog/0.1.6.md": {
- "md/no-curly-quote": {
- "count": 1
- },
"md/no-irregular-dash": {
"count": 6
},
@@ -1999,28 +1648,10 @@
}
},
"apps/mobile/changelog/0.1.8.md": {
- "md/no-curly-quote": {
- "count": 2
- },
"md/no-irregular-dash": {
"count": 1
}
},
- "apps/mobile/changelog/0.1.9.md": {
- "md/no-curly-quote": {
- "count": 1
- }
- },
- "apps/mobile/changelog/0.2.0.md": {
- "md/no-curly-quote": {
- "count": 1
- }
- },
- "apps/mobile/changelog/0.2.1.md": {
- "md/no-curly-quote": {
- "count": 4
- }
- },
"apps/mobile/changelog/0.2.4.md": {
"md/no-irregular-dash": {
"count": 2
@@ -2053,11 +1684,6 @@
"count": 1
}
},
- "apps/mobile/src/@types/constants.ts": {
- "no-useless-computed-key": {
- "count": 4
- }
- },
"apps/mobile/src/App.tsx": {
"ts/no-use-before-define": {
"count": 3
@@ -2111,11 +1737,6 @@
"count": 11
}
},
- "apps/mobile/src/components/layouts/tabbar/hooks.ts": {
- "no-useless-return": {
- "count": 1
- }
- },
"apps/mobile/src/components/native/PagerView/index.tsx": {
"ts/no-use-before-define": {
"count": 1
@@ -2208,11 +1829,6 @@
"count": 8
}
},
- "apps/mobile/src/components/ui/lightbox/ImageViewing/transforms.ts": {
- "one-var": {
- "count": 3
- }
- },
"apps/mobile/src/components/ui/lightbox/lightboxState.tsx": {
"react-refresh/only-export-components": {
"count": 2
@@ -2236,11 +1852,6 @@
"count": 1
}
},
- "apps/mobile/src/components/ui/qrcode/useQRCodeData.ts": {
- "no-useless-return": {
- "count": 1
- }
- },
"apps/mobile/src/components/ui/slider/Slider.tsx": {
"ts/no-use-before-define": {
"count": 6
@@ -2303,9 +1914,6 @@
}
},
"apps/mobile/src/hooks/useIntentHandler.ts": {
- "no-useless-return": {
- "count": 1
- },
"ts/no-use-before-define": {
"count": 1
}
@@ -2320,16 +1928,6 @@
"count": 1
}
},
- "apps/mobile/src/lib/api-client.ts": {
- "dot-notation": {
- "count": 1
- }
- },
- "apps/mobile/src/lib/client-session.ts": {
- "one-var": {
- "count": 1
- }
- },
"apps/mobile/src/lib/dialog.tsx": {
"react-refresh/only-export-components": {
"count": 4
@@ -2408,18 +2006,10 @@
}
},
"apps/mobile/src/modules/context-menu/feeds.tsx": {
- "no-useless-return": {
- "count": 1
- },
"ts/no-use-before-define": {
"count": 3
}
},
- "apps/mobile/src/modules/context-menu/video.tsx": {
- "no-useless-return": {
- "count": 1
- }
- },
"apps/mobile/src/modules/debug/index.tsx": {
"ts/ban-ts-comment": {
"count": 1
@@ -2478,11 +2068,6 @@
"count": 1
}
},
- "apps/mobile/src/modules/entry-content/pull-up-navigation/use-pull-up-navigation.tsx": {
- "no-useless-return": {
- "count": 1
- }
- },
"apps/mobile/src/modules/entry-list/EntryListContentArticle.tsx": {
"ts/no-use-before-define": {
"count": 1
@@ -2723,11 +2308,6 @@
"count": 2
}
},
- "apps/mobile/tsconfig.json": {
- "jsonc/sort-keys": {
- "count": 6
- }
- },
"apps/mobile/web-app/html-renderer/src/common/WrappedElementProvider.tsx": {
"react-refresh/only-export-components": {
"count": 4
@@ -2737,9 +2317,6 @@
}
},
"apps/mobile/web-app/html-renderer/src/components/shiki/Shiki.tsx": {
- "dot-notation": {
- "count": 1
- },
"ts/no-use-before-define": {
"count": 1
}
@@ -2754,21 +2331,11 @@
"count": 1
}
},
- "apps/mobile/web-app/html-renderer/tsconfig.json": {
- "jsonc/sort-keys": {
- "count": 6
- }
- },
"apps/ssr/api/index.ts": {
"ts/ban-ts-comment": {
"count": 1
}
},
- "apps/ssr/client/@types/constants.ts": {
- "no-useless-computed-key": {
- "count": 3
- }
- },
"apps/ssr/client/atoms/settings/helper.ts": {
"ts/ban-ts-comment": {
"count": 1
@@ -2806,18 +2373,10 @@
"no-console": {
"count": 1
},
- "no-useless-return": {
- "count": 1
- },
"ts/no-use-before-define": {
"count": 1
}
},
- "apps/ssr/client/modules/login/index.tsx": {
- "no-useless-return": {
- "count": 1
- }
- },
"apps/ssr/client/pages/(login)/layout.tsx": {
"ts/no-use-before-define": {
"count": 1
@@ -2829,9 +2388,6 @@
}
},
"apps/ssr/client/pages/(main)/share/users/[id]/metadata.ts": {
- "no-undef-init": {
- "count": 2
- },
"prefer-promise-reject-errors": {
"count": 2
}
@@ -2841,15 +2397,7 @@
"count": 2
}
},
- "apps/ssr/client/query/entries.ts": {
- "dot-notation": {
- "count": 1
- }
- },
"apps/ssr/client/router.tsx": {
- "dot-notation": {
- "count": 1
- },
"ts/ban-ts-comment": {
"count": 1
}
@@ -2884,9 +2432,6 @@
"no-console": {
"count": 1
},
- "no-useless-return": {
- "count": 1
- },
"ts/no-use-before-define": {
"count": 1
}
@@ -2937,11 +2482,6 @@
"count": 1
}
},
- "apps/ssr/tsconfig.json": {
- "jsonc/sort-keys": {
- "count": 10
- }
- },
"apps/ssr/tsdown.config.ts": {
"node/prefer-global/process": {
"count": 2
@@ -2973,26 +2513,11 @@
"count": 6
}
},
- "packages/configs/tsconfig.extend.json": {
- "jsonc/sort-keys": {
- "count": 9
- }
- },
- "packages/internal/atoms/package.json": {
- "jsonc/sort-keys": {
- "count": 2
- }
- },
"packages/internal/atoms/src/helper/setting.ts": {
"ts/ban-ts-comment": {
"count": 1
}
},
- "packages/internal/atoms/tsconfig.json": {
- "jsonc/sort-keys": {
- "count": 2
- }
- },
"packages/internal/components/src/common/Focusable/Focusable.tsx": {
"no-console": {
"count": 1
@@ -3067,11 +2592,6 @@
"count": 1
}
},
- "packages/internal/components/src/ui/progressive-blur/index.tsx": {
- "prefer-exponentiation-operator": {
- "count": 1
- }
- },
"packages/internal/components/src/ui/radio-group/context.ts": {
"ts/no-redeclare": {
"count": 1
@@ -3082,31 +2602,11 @@
"count": 1
}
},
- "packages/internal/components/src/ui/shrinking-focus-border/index.tsx": {
- "prefer-exponentiation-operator": {
- "count": 2
- }
- },
"packages/internal/components/src/utils/parse-markdown.tsx": {
"ts/ban-ts-comment": {
"count": 1
}
},
- "packages/internal/components/tsconfig.json": {
- "jsonc/sort-keys": {
- "count": 3
- }
- },
- "packages/internal/constants/tsconfig.json": {
- "jsonc/sort-keys": {
- "count": 2
- }
- },
- "packages/internal/database/package.json": {
- "jsonc/sort-keys": {
- "count": 3
- }
- },
"packages/internal/database/src/db.desktop.ts": {
"import/no-mutable-exports": {
"count": 1
@@ -3120,21 +2620,6 @@
"count": 2
}
},
- "packages/internal/hooks/src/factory/createHTMLMediaHook.ts": {
- "no-useless-return": {
- "count": 1
- }
- },
- "packages/internal/hooks/src/optimistic/useOptimisticMutation.ts": {
- "prefer-exponentiation-operator": {
- "count": 1
- }
- },
- "packages/internal/hooks/src/useLongPress.ts": {
- "prefer-exponentiation-operator": {
- "count": 2
- }
- },
"packages/internal/hooks/src/useMeasure.ts": {
"ts/no-use-before-define": {
"count": 1
@@ -3148,36 +2633,6 @@
"count": 1
}
},
- "packages/internal/hooks/src/useSmoothScroll.ts": {
- "prefer-exponentiation-operator": {
- "count": 1
- }
- },
- "packages/internal/hooks/tsconfig.json": {
- "jsonc/sort-keys": {
- "count": 4
- }
- },
- "packages/internal/logger/tsconfig.json": {
- "jsonc/sort-keys": {
- "count": 3
- }
- },
- "packages/internal/models/package.json": {
- "jsonc/sort-keys": {
- "count": 1
- }
- },
- "packages/internal/models/tsconfig.json": {
- "jsonc/sort-keys": {
- "count": 3
- }
- },
- "packages/internal/shared/package.json": {
- "jsonc/sort-keys": {
- "count": 3
- }
- },
"packages/internal/shared/src/auth.ts": {
"ts/no-use-before-define": {
"count": 1
@@ -3189,9 +2644,6 @@
}
},
"packages/internal/shared/src/constants.ts": {
- "dot-notation": {
- "count": 1
- },
"no-shadow-restricted-names": {
"count": 1
},
@@ -3228,22 +2680,9 @@
"count": 1
}
},
- "packages/internal/shared/tsconfig.json": {
- "jsonc/sort-keys": {
- "count": 3
- }
- },
- "packages/internal/store/package.json": {
- "jsonc/sort-keys": {
- "count": 17
- }
- },
"packages/internal/store/src/lib/helper.ts": {
"no-shadow-restricted-names": {
"count": 1
- },
- "no-useless-return": {
- "count": 1
}
},
"packages/internal/store/src/modules/action/store.ts": {
@@ -3261,20 +2700,12 @@
"count": 9
}
},
- "packages/internal/store/src/modules/feed/getter.ts": {
- "no-useless-return": {
- "count": 1
- }
- },
"packages/internal/store/src/modules/feed/hooks.ts": {
"ts/ban-ts-comment": {
"count": 2
}
},
"packages/internal/store/src/modules/feed/store.ts": {
- "dot-notation": {
- "count": 3
- },
"ts/no-use-before-define": {
"count": 6
}
@@ -3322,9 +2753,6 @@
"packages/internal/tracker/src/manager.ts": {
"no-console": {
"count": 1
- },
- "prefer-exponentiation-operator": {
- "count": 1
}
},
"packages/internal/tracker/src/op/index.ts": {
@@ -3340,29 +2768,11 @@
"count": 1
}
},
- "packages/internal/utils/package.json": {
- "jsonc/sort-keys": {
- "count": 4
- }
- },
"packages/internal/utils/src/chain.ts": {
"no-throw-literal": {
"count": 1
}
},
- "packages/internal/utils/src/cjk.ts": {
- "unicorn/number-literal-case": {
- "count": 8
- }
- },
- "packages/internal/utils/src/color.ts": {
- "one-var": {
- "count": 1
- },
- "unicorn/number-literal-case": {
- "count": 3
- }
- },
"packages/internal/utils/src/event-bus.rn.ts": {
"@typescript-eslint/no-empty-object-type": {
"count": 1
@@ -3383,15 +2793,7 @@
"count": 1
}
},
- "packages/internal/utils/src/lru-cache.test.ts": {
- "test/prefer-lowercase-title": {
- "count": 1
- }
- },
"packages/internal/utils/src/path-parser.test.ts": {
- "test/consistent-test-it": {
- "count": 26
- },
"test/no-identical-title": {
"count": 1
}
@@ -3406,27 +2808,11 @@
"count": 2
}
},
- "packages/internal/utils/src/utils.spec.ts": {
- "test/consistent-test-it": {
- "count": 5
- }
- },
"packages/internal/utils/src/utils.ts": {
- "one-var": {
- "count": 1
- },
- "prefer-exponentiation-operator": {
- "count": 1
- },
"ts/ban-ts-comment": {
"count": 1
}
},
- "packages/internal/utils/tsconfig.json": {
- "jsonc/sort-keys": {
- "count": 2
- }
- },
"packages/internal/utils/vitest.config.ts": {
"node/prefer-global/process": {
"count": 2
@@ -3443,29 +2829,9 @@
"count": 2
}
},
- "packages/readability/tsconfig.json": {
- "jsonc/sort-keys": {
- "count": 1
- }
- },
- "plugins/eslint/eslint-package-json.js": {
- "object-shorthand": {
- "count": 2
- }
- },
"scripts/svg-to-rn.ts": {
"node/prefer-global/process": {
"count": 2
}
- },
- "tsconfig.json": {
- "jsonc/sort-keys": {
- "count": 1
- }
- },
- "wiki/contribute-i18n.md": {
- "md/code-lang-shorthand": {
- "count": 1
- }
}
}
diff --git a/packages/configs/tsconfig.extend.json b/packages/configs/tsconfig.extend.json
index d49bec03af..9230a4319b 100644
--- a/packages/configs/tsconfig.extend.json
+++ b/packages/configs/tsconfig.extend.json
@@ -1,19 +1,19 @@
{
"compilerOptions": {
"target": "esnext",
- "module": "esnext",
- "sourceMap": false,
"jsx": "preserve",
- "esModuleInterop": true,
+ "module": "esnext",
"moduleResolution": "Bundler",
"resolveJsonModule": true,
- "isolatedModules": true,
- "forceConsistentCasingInFileNames": true,
- "skipLibCheck": true,
- "noEmit": true,
+ "allowJs": true,
"strict": true,
- "noUncheckedIndexedAccess": true,
"noImplicitOverride": true,
- "allowJs": true
+ "noUncheckedIndexedAccess": true,
+ "noEmit": true,
+ "sourceMap": false,
+ "esModuleInterop": true,
+ "forceConsistentCasingInFileNames": true,
+ "isolatedModules": true,
+ "skipLibCheck": true
}
}
diff --git a/packages/internal/atoms/package.json b/packages/internal/atoms/package.json
index fbd2a09436..e92bff756f 100644
--- a/packages/internal/atoms/package.json
+++ b/packages/internal/atoms/package.json
@@ -4,12 +4,12 @@
"sideEffects": false,
"exports": {
"./atoms/*": {
- "import": "./src/atoms/*",
- "types": "./src/atoms/*"
+ "types": "./src/atoms/*",
+ "import": "./src/atoms/*"
},
"./helper/*": {
- "import": "./src/helper/*",
- "types": "./src/helper/*"
+ "types": "./src/helper/*",
+ "import": "./src/helper/*"
}
},
"scripts": {
diff --git a/packages/internal/atoms/tsconfig.json b/packages/internal/atoms/tsconfig.json
index bf2ad7fcb5..07c723e9aa 100644
--- a/packages/internal/atoms/tsconfig.json
+++ b/packages/internal/atoms/tsconfig.json
@@ -2,12 +2,12 @@
"extends": "@follow/configs/tsconfig.extend.json",
"compilerOptions": {
"baseUrl": ".",
- "declaration": true,
- "types": ["@follow/types/react", "@follow/types/global", "vite/client"],
"paths": {
"@follow/atoms/*": ["./src/*"],
"@pkg": ["../../package.json"]
- }
+ },
+ "types": ["@follow/types/react", "@follow/types/global", "vite/client"],
+ "declaration": true
},
"include": ["src/**/*"]
}
diff --git a/packages/internal/components/src/ui/progressive-blur/index.tsx b/packages/internal/components/src/ui/progressive-blur/index.tsx
index 351a59470e..6dfbde250d 100644
--- a/packages/internal/components/src/ui/progressive-blur/index.tsx
+++ b/packages/internal/components/src/ui/progressive-blur/index.tsx
@@ -28,7 +28,7 @@ export function LinearBlur({
const factor = 0.5
- const base = Math.pow(strength / factor, 1 / (actualSteps - 1))
+ const base = (strength / factor) ** (1 / (actualSteps - 1))
const mainPercentage = 100 - falloffPercentage
diff --git a/packages/internal/components/src/ui/shrinking-focus-border/index.tsx b/packages/internal/components/src/ui/shrinking-focus-border/index.tsx
index 19eab7a49e..fd52584726 100644
--- a/packages/internal/components/src/ui/shrinking-focus-border/index.tsx
+++ b/packages/internal/components/src/ui/shrinking-focus-border/index.tsx
@@ -129,7 +129,7 @@ export const ShrinkingFocusBorder: FC = ({
borderY = canvas.height / 2 - borderHeight / 2
} else {
// Initial shrinking animation in progress
- const easeOutCubic = (t: number) => 1 - Math.pow(1 - t, 3)
+ const easeOutCubic = (t: number) => 1 - (1 - t) ** 3
const progress = Math.min(elapsed / duration, 1)
const easedProgress = easeOutCubic(progress)
@@ -149,7 +149,7 @@ export const ShrinkingFocusBorder: FC = ({
if (transitionElapsed <= transitionDuration) {
const progress = Math.min(transitionElapsed / transitionDuration, 1)
const easeInOutCubic = (t: number) =>
- t < 0.5 ? 4 * t * t * t : 1 - Math.pow(-2 * t + 2, 3) / 2
+ t < 0.5 ? 4 * t * t * t : 1 - (-2 * t + 2) ** 3 / 2
const easedProgress = easeInOutCubic(progress)
const prevRect = previousRectRef.current
diff --git a/packages/internal/components/tsconfig.json b/packages/internal/components/tsconfig.json
index 0e20c46a82..b329ef39f0 100644
--- a/packages/internal/components/tsconfig.json
+++ b/packages/internal/components/tsconfig.json
@@ -1,14 +1,14 @@
{
"extends": "@follow/configs/tsconfig.extend.json",
"compilerOptions": {
- "baseUrl": ".",
"jsx": "preserve",
- "declaration": true,
- "types": ["@follow/types/react", "@follow/types/global", "vite/client"],
+ "baseUrl": ".",
"paths": {
"@follow/components/*": ["./src/*"],
"@pkg": ["../../package.json"]
- }
+ },
+ "types": ["@follow/types/react", "@follow/types/global", "vite/client"],
+ "declaration": true
},
"include": ["src/**/*"]
}
diff --git a/packages/internal/constants/tsconfig.json b/packages/internal/constants/tsconfig.json
index ddd00de10a..be76584f17 100644
--- a/packages/internal/constants/tsconfig.json
+++ b/packages/internal/constants/tsconfig.json
@@ -2,12 +2,12 @@
"extends": "@follow/configs/tsconfig.extend.json",
"compilerOptions": {
"baseUrl": ".",
- "declaration": true,
- "types": ["@follow/types/react", "@follow/types/global", "vite/client"],
"paths": {
"@follow/constants/*": ["./src/*"],
"@pkg": ["../../package.json"]
- }
+ },
+ "types": ["@follow/types/react", "@follow/types/global", "vite/client"],
+ "declaration": true
},
"include": ["src/**/*", "../../../../locales/**/*.json"]
}
diff --git a/packages/internal/database/package.json b/packages/internal/database/package.json
index 4bc90fc56e..07e3dfd8de 100644
--- a/packages/internal/database/package.json
+++ b/packages/internal/database/package.json
@@ -13,18 +13,18 @@
"exports": {
"./*": {
"types": "./src/*.ts",
- "require": "./src/*.ts",
- "import": "./src/*.ts"
+ "import": "./src/*.ts",
+ "require": "./src/*.ts"
},
"./schemas/*": {
"types": "./src/schemas/*.ts",
- "require": "./src/schemas/*.ts",
- "import": "./src/schemas/*.ts"
+ "import": "./src/schemas/*.ts",
+ "require": "./src/schemas/*.ts"
},
"./services/*": {
"types": "./src/services/*.ts",
- "require": "./src/services/*.ts",
- "import": "./src/services/*.ts"
+ "import": "./src/services/*.ts",
+ "require": "./src/services/*.ts"
}
},
"scripts": {
diff --git a/packages/internal/hooks/src/factory/createHTMLMediaHook.ts b/packages/internal/hooks/src/factory/createHTMLMediaHook.ts
index 6e1672bcf2..6baa12172c 100644
--- a/packages/internal/hooks/src/factory/createHTMLMediaHook.ts
+++ b/packages/internal/hooks/src/factory/createHTMLMediaHook.ts
@@ -196,7 +196,6 @@ export default function createHTMLMediaHook {
const el = ref.current
diff --git a/packages/internal/hooks/src/optimistic/useOptimisticMutation.ts b/packages/internal/hooks/src/optimistic/useOptimisticMutation.ts
index 90c818bcc2..2d5bfb838e 100644
--- a/packages/internal/hooks/src/optimistic/useOptimisticMutation.ts
+++ b/packages/internal/hooks/src/optimistic/useOptimisticMutation.ts
@@ -75,6 +75,6 @@ export function useOptimisticMutation<
// Configure retry behavior
retry: config.errorConfig?.retryable ? (config.errorConfig.maxRetries ?? 2) : false,
- retryDelay: (attemptIndex) => Math.min(1000 * Math.pow(2, attemptIndex), 5000),
+ retryDelay: (attemptIndex) => Math.min(1000 * 2 ** attemptIndex, 5000),
})
}
diff --git a/packages/internal/hooks/src/useLongPress.ts b/packages/internal/hooks/src/useLongPress.ts
index 7f1c89ef33..96f2774d22 100644
--- a/packages/internal/hooks/src/useLongPress.ts
+++ b/packages/internal/hooks/src/useLongPress.ts
@@ -80,8 +80,7 @@ export function useLongPress({
const currentY = touch.clientY + window.scrollY
const moveOffset = Math.sqrt(
- Math.pow(currentX - startPosition.current.x, 2) +
- Math.pow(currentY - startPosition.current.y, 2),
+ (currentX - startPosition.current.x) ** 2 + (currentY - startPosition.current.y) ** 2,
)
if (moveOffset > 10) {
diff --git a/packages/internal/hooks/src/useSmoothScroll.ts b/packages/internal/hooks/src/useSmoothScroll.ts
index 9062aae071..265a9bbf29 100644
--- a/packages/internal/hooks/src/useSmoothScroll.ts
+++ b/packages/internal/hooks/src/useSmoothScroll.ts
@@ -32,7 +32,7 @@ export const useSmoothScroll = () => {
// Easing function similar to Vimium's smooth scrolling - ease out cubic for natural feel
const easeOutCubic = (t: number): number => {
- return 1 - Math.pow(1 - t, 3)
+ return 1 - (1 - t) ** 3
}
let animationId: number
diff --git a/packages/internal/hooks/tsconfig.json b/packages/internal/hooks/tsconfig.json
index fa1b1cd991..67d68bb458 100644
--- a/packages/internal/hooks/tsconfig.json
+++ b/packages/internal/hooks/tsconfig.json
@@ -1,15 +1,15 @@
{
"extends": "@follow/configs/tsconfig.extend.json",
"compilerOptions": {
- "noEmit": true,
- "baseUrl": ".",
"jsx": "preserve",
- "declaration": true,
- "types": ["@follow/types/react", "@follow/types/global", "vite/client"],
+ "baseUrl": ".",
"paths": {
"@follow/hooks/*": ["./src/*"],
"@pkg": ["../../package.json"]
- }
+ },
+ "types": ["@follow/types/react", "@follow/types/global", "vite/client"],
+ "declaration": true,
+ "noEmit": true
},
"include": ["src/**/*"]
}
diff --git a/packages/internal/logger/tsconfig.json b/packages/internal/logger/tsconfig.json
index 246025b1cf..a7de1ac7b1 100644
--- a/packages/internal/logger/tsconfig.json
+++ b/packages/internal/logger/tsconfig.json
@@ -1,13 +1,13 @@
{
"extends": "@follow/configs/tsconfig.extend.json",
"compilerOptions": {
- "noEmit": true,
- "baseUrl": ".",
"jsx": "preserve",
- "declaration": true,
+ "baseUrl": ".",
"paths": {
"@pkg": ["../../package.json"]
- }
+ },
+ "declaration": true,
+ "noEmit": true
},
"include": ["**/*"]
}
diff --git a/packages/internal/models/package.json b/packages/internal/models/package.json
index 8370151c8b..8cae4d3266 100644
--- a/packages/internal/models/package.json
+++ b/packages/internal/models/package.json
@@ -8,8 +8,8 @@
"require": "./src/index.ts"
},
"./rsshub": {
- "import": "./src/rsshub.ts",
- "types": "./src/rsshub.ts"
+ "types": "./src/rsshub.ts",
+ "import": "./src/rsshub.ts"
},
"./types": {
"import": "./src/types.ts",
diff --git a/packages/internal/models/tsconfig.json b/packages/internal/models/tsconfig.json
index dda8ec819a..9a1e52ce9c 100644
--- a/packages/internal/models/tsconfig.json
+++ b/packages/internal/models/tsconfig.json
@@ -1,14 +1,14 @@
{
"extends": "@follow/configs/tsconfig.extend.json",
"compilerOptions": {
- "baseUrl": ".",
"jsx": "preserve",
- "declaration": true,
- "types": ["@follow/types/react", "@follow/types/global", "vite/client"],
+ "baseUrl": ".",
"paths": {
"@follow/models/*": ["./src/*"],
"@pkg": ["../../package.json"]
- }
+ },
+ "types": ["@follow/types/react", "@follow/types/global", "vite/client"],
+ "declaration": true
},
"include": ["src/**/*"]
}
diff --git a/packages/internal/shared/package.json b/packages/internal/shared/package.json
index 9d6694deb2..5f919818e0 100644
--- a/packages/internal/shared/package.json
+++ b/packages/internal/shared/package.json
@@ -13,18 +13,18 @@
"exports": {
".": {
"types": "./src/index.ts",
- "require": "./src/index.ts",
- "import": "./src/index.ts"
+ "import": "./src/index.ts",
+ "require": "./src/index.ts"
},
"./*": {
"types": "./src/*.ts",
- "require": "./src/*.ts",
- "import": "./src/*.ts"
+ "import": "./src/*.ts",
+ "require": "./src/*.ts"
},
"./interface/*": {
"types": "./src/interface/*.ts",
- "require": "./src/interface/*.ts",
- "import": "./src/interface/*.ts"
+ "import": "./src/interface/*.ts",
+ "require": "./src/interface/*.ts"
}
},
"scripts": {
diff --git a/packages/internal/shared/src/constants.ts b/packages/internal/shared/src/constants.ts
index 2a93259162..d92372326a 100644
--- a/packages/internal/shared/src/constants.ts
+++ b/packages/internal/shared/src/constants.ts
@@ -29,7 +29,7 @@ export const SYSTEM_CAN_UNDER_BLUR_WINDOW = globalThis?.window?.electron
? globalThis?.window.api?.canWindowBlur
: false
-export const IN_ELECTRON = !!globalThis["electron"]
+export const IN_ELECTRON = !!globalThis.electron
declare const ELECTRON: boolean
/**
diff --git a/packages/internal/shared/tsconfig.json b/packages/internal/shared/tsconfig.json
index 2728ed9fb4..51624ba54d 100644
--- a/packages/internal/shared/tsconfig.json
+++ b/packages/internal/shared/tsconfig.json
@@ -2,17 +2,17 @@
"extends": "@electron-toolkit/tsconfig/tsconfig.node.json",
"compilerOptions": {
"composite": false,
- "types": ["electron-vite/node"],
- "moduleResolution": "Bundler",
- "noImplicitReturns": false,
- "noUnusedLocals": false,
- "noUnusedParameters": false,
"baseUrl": ".",
+ "moduleResolution": "Bundler",
"paths": {
"@shared/*": ["./src/*"],
"@pkg": ["../../package.json"],
"@locales/*": ["../../../../locales/*"],
"~/*": ["./src/*"]
- }
+ },
+ "types": ["electron-vite/node"],
+ "noImplicitReturns": false,
+ "noUnusedLocals": false,
+ "noUnusedParameters": false
}
}
diff --git a/packages/internal/store/package.json b/packages/internal/store/package.json
index 47b4c47f25..29b0eb6e27 100644
--- a/packages/internal/store/package.json
+++ b/packages/internal/store/package.json
@@ -13,88 +13,88 @@
"exports": {
"./action/*": {
"types": "./src/modules/action/*.ts",
- "require": "./src/modules/action/*.ts",
- "import": "./src/modules/action/*.ts"
+ "import": "./src/modules/action/*.ts",
+ "require": "./src/modules/action/*.ts"
},
"./collection/*": {
"types": "./src/modules/collection/*.ts",
- "require": "./src/modules/collection/*.ts",
- "import": "./src/modules/collection/*.ts"
+ "import": "./src/modules/collection/*.ts",
+ "require": "./src/modules/collection/*.ts"
},
"./constants/*": {
"types": "./src/constants/*.ts",
- "require": "./src/constants/*.ts",
- "import": "./src/constants/*.ts"
+ "import": "./src/constants/*.ts",
+ "require": "./src/constants/*.ts"
},
"./context": {
"types": "./src/context.ts",
- "require": "./src/context.ts",
- "import": "./src/context.ts"
+ "import": "./src/context.ts",
+ "require": "./src/context.ts"
},
"./entry/*": {
"types": "./src/modules/entry/*.ts",
- "require": "./src/modules/entry/*.ts",
- "import": "./src/modules/entry/*.ts"
+ "import": "./src/modules/entry/*.ts",
+ "require": "./src/modules/entry/*.ts"
},
"./feed/*": {
"types": "./src/modules/feed/*.ts",
- "require": "./src/modules/feed/*.ts",
- "import": "./src/modules/feed/*.ts"
+ "import": "./src/modules/feed/*.ts",
+ "require": "./src/modules/feed/*.ts"
},
"./hydrate": {
"types": "./src/hydrate.ts",
- "require": "./src/hydrate.ts",
- "import": "./src/hydrate.ts"
+ "import": "./src/hydrate.ts",
+ "require": "./src/hydrate.ts"
},
"./image/*": {
"types": "./src/modules/image/*.ts",
- "require": "./src/modules/image/*.ts",
- "import": "./src/modules/image/*.ts"
+ "import": "./src/modules/image/*.ts",
+ "require": "./src/modules/image/*.ts"
},
"./inbox/*": {
"types": "./src/modules/inbox/*.ts",
- "require": "./src/modules/inbox/*.ts",
- "import": "./src/modules/inbox/*.ts"
+ "import": "./src/modules/inbox/*.ts",
+ "require": "./src/modules/inbox/*.ts"
},
"./list/*": {
"types": "./src/modules/list/*.ts",
- "require": "./src/modules/list/*.ts",
- "import": "./src/modules/list/*.ts"
+ "import": "./src/modules/list/*.ts",
+ "require": "./src/modules/list/*.ts"
},
"./morph": {
"types": "./src/morph/*.ts",
- "require": "./src/morph/*.ts",
- "import": "./src/morph/*.ts"
+ "import": "./src/morph/*.ts",
+ "require": "./src/morph/*.ts"
},
"./reset": {
"types": "./src/reset.ts",
- "require": "./src/reset.ts",
- "import": "./src/reset.ts"
+ "import": "./src/reset.ts",
+ "require": "./src/reset.ts"
},
"./subscription/*": {
"types": "./src/modules/subscription/*.ts",
- "require": "./src/modules/subscription/*.ts",
- "import": "./src/modules/subscription/*.ts"
+ "import": "./src/modules/subscription/*.ts",
+ "require": "./src/modules/subscription/*.ts"
},
"./summary/*": {
"types": "./src/modules/summary/*.ts",
- "require": "./src/modules/summary/*.ts",
- "import": "./src/modules/summary/*.ts"
+ "import": "./src/modules/summary/*.ts",
+ "require": "./src/modules/summary/*.ts"
},
"./translation/*": {
"types": "./src/modules/translation/*.ts",
- "require": "./src/modules/translation/*.ts",
- "import": "./src/modules/translation/*.ts"
+ "import": "./src/modules/translation/*.ts",
+ "require": "./src/modules/translation/*.ts"
},
"./unread/*": {
"types": "./src/modules/unread/*.ts",
- "require": "./src/modules/unread/*.ts",
- "import": "./src/modules/unread/*.ts"
+ "import": "./src/modules/unread/*.ts",
+ "require": "./src/modules/unread/*.ts"
},
"./user/*": {
"types": "./src/modules/user/*.ts",
- "require": "./src/modules/user/*.ts",
- "import": "./src/modules/user/*.ts"
+ "import": "./src/modules/user/*.ts",
+ "require": "./src/modules/user/*.ts"
}
},
"scripts": {
diff --git a/packages/internal/store/src/lib/helper.ts b/packages/internal/store/src/lib/helper.ts
index f4b8d4ac41..68e6803e1d 100644
--- a/packages/internal/store/src/lib/helper.ts
+++ b/packages/internal/store/src/lib/helper.ts
@@ -36,7 +36,6 @@ export const createZustandStore =
},
})
}
- return
},
},
)
diff --git a/packages/internal/store/src/modules/feed/getter.ts b/packages/internal/store/src/modules/feed/getter.ts
index d6892b98e3..28b5a78ed5 100644
--- a/packages/internal/store/src/modules/feed/getter.ts
+++ b/packages/internal/store/src/modules/feed/getter.ts
@@ -17,5 +17,4 @@ export const getFeedByIdOrUrl = ({ id, url }: { id?: string; url?: string }) =>
if (url) {
return getFeedByUrl(url)
}
- return
}
diff --git a/packages/internal/store/src/modules/feed/store.ts b/packages/internal/store/src/modules/feed/store.ts
index 3f501cd352..99ea8ef0a1 100644
--- a/packages/internal/store/src/modules/feed/store.ts
+++ b/packages/internal/store/src/modules/feed/store.ts
@@ -122,7 +122,7 @@ class FeedSyncServices {
latestEntryPublishedAt: res.data.analytics?.latestEntryPublishedAt,
} as FeedModel
if (!finalData.id) {
- finalData["nonce"] = nonce
+ finalData.nonce = nonce
}
feedActions.upsertMany([finalData])
@@ -147,8 +147,8 @@ class FeedSyncServices {
latestEntryPublishedAt: res.data.analytics?.latestEntryPublishedAt,
} as FeedModel
if (!finalData.id) {
- finalData["nonce"] = nonce
- finalData["id"] = nonce
+ finalData.nonce = nonce
+ finalData.id = nonce
}
feedActions.upsertMany([finalData])
diff --git a/packages/internal/tracker/src/manager.ts b/packages/internal/tracker/src/manager.ts
index 0da7374857..49fd947a24 100644
--- a/packages/internal/tracker/src/manager.ts
+++ b/packages/internal/tracker/src/manager.ts
@@ -320,7 +320,7 @@ export class TrackerManager {
while (attempts < maxRetries) {
try {
- await new Promise((resolve) => setTimeout(resolve, 1000 * Math.pow(2, attempts))) // Exponential backoff
+ await new Promise((resolve) => setTimeout(resolve, 1000 * 2 ** attempts)) // Exponential backoff
await operation()
return
} catch (error) {
diff --git a/packages/internal/utils/package.json b/packages/internal/utils/package.json
index 23cbc40590..6ea727a0e9 100644
--- a/packages/internal/utils/package.json
+++ b/packages/internal/utils/package.json
@@ -12,14 +12,14 @@
"sideEffects": false,
"exports": {
".": {
- "require": "./src/index.ts",
+ "types": "./src/index.ts",
"import": "./src/index.ts",
- "types": "./src/index.ts"
+ "require": "./src/index.ts"
},
"./*": {
- "require": "./src/*.ts",
+ "types": "./src/*.ts",
"import": "./src/*.ts",
- "types": "./src/*.ts"
+ "require": "./src/*.ts"
}
},
"scripts": {
diff --git a/packages/internal/utils/src/cjk.ts b/packages/internal/utils/src/cjk.ts
index 17010e3363..4ba35274c7 100644
--- a/packages/internal/utils/src/cjk.ts
+++ b/packages/internal/utils/src/cjk.ts
@@ -1,5 +1,4 @@
export const isCJKChar = (char: string): boolean => {
- // eslint-disable-next-line unicorn/prefer-code-point
const code = char.charCodeAt(0)
return (
(code >= 0x4e00 && code <= 0x9fff) || // CJK Unified Ideographs
diff --git a/packages/internal/utils/src/color.ts b/packages/internal/utils/src/color.ts
index 39bf84a60d..4c81036944 100644
--- a/packages/internal/utils/src/color.ts
+++ b/packages/internal/utils/src/color.ts
@@ -125,8 +125,8 @@ export const getBackgroundGradient = (seed?: string | null | undefined) => {
}
export function getDominantColor(imageObject: HTMLImageElement) {
- const canvas = document.createElement("canvas"),
- ctx = canvas.getContext("2d")!
+ const canvas = document.createElement("canvas")
+ const ctx = canvas.getContext("2d")!
canvas.width = 1
canvas.height = 1
diff --git a/packages/internal/utils/src/lru-cache.test.ts b/packages/internal/utils/src/lru-cache.test.ts
index 7e475acbe5..9f7dfd5482 100644
--- a/packages/internal/utils/src/lru-cache.test.ts
+++ b/packages/internal/utils/src/lru-cache.test.ts
@@ -2,7 +2,7 @@ import { describe, expect, it } from "vitest"
import { LRUCache } from "./lru-cache"
-describe("LRUCache", () => {
+describe("lRUCache", () => {
it("should create cache with given capacity", () => {
const cache = new LRUCache(2)
expect(cache.size()).toBe(0)
diff --git a/packages/internal/utils/src/path-parser.test.ts b/packages/internal/utils/src/path-parser.test.ts
index 6c5ae19c5f..3751dea2ce 100644
--- a/packages/internal/utils/src/path-parser.test.ts
+++ b/packages/internal/utils/src/path-parser.test.ts
@@ -1,5 +1,5 @@
import { compile, pathToRegexp } from "path-to-regexp"
-import { describe, expect, test } from "vitest"
+import { describe, expect, it } from "vitest"
import {
MissingOptionalParamError,
@@ -11,11 +11,11 @@ import {
} from "./path-parser"
describe("test `transformUriPath()`", () => {
- test("normal path", () => {
+ it("normal path", () => {
expect(transformUriPath("/issues/all")).toMatchInlineSnapshot(`"/issues/all"`)
})
- test("has tailing optional params", () => {
+ it("has tailing optional params", () => {
const path = transformUriPath("/issues/:id?")
expect(path).toMatchInlineSnapshot(`"/issues{/:id}"`)
expect(compile(path)({})).toMatchInlineSnapshot(`"/issues"`)
@@ -30,7 +30,7 @@ describe("test `transformUriPath()`", () => {
`)
})
- test("has tailing optional params and with value", () => {
+ it("has tailing optional params and with value", () => {
const path = transformUriPath("/issues/:id?")
expect(
@@ -49,7 +49,7 @@ describe("test `transformUriPath()`", () => {
`)
})
- test("catch all path", () => {
+ it("catch all path", () => {
const path = transformUriPath("/:path{.+}?")
expect(path).toMatchInlineSnapshot(`"{/*path}"`)
expect(
@@ -59,7 +59,7 @@ describe("test `transformUriPath()`", () => {
).toMatchInlineSnapshot(`"/a/b/c"`)
})
- test("catch all path with leading route", () => {
+ it("catch all path with leading route", () => {
const path = transformUriPath("/issues/:path{.+}?")
expect(path).toMatchInlineSnapshot(`"/issues{/*path}"`)
expect(
@@ -69,7 +69,7 @@ describe("test `transformUriPath()`", () => {
).toMatchInlineSnapshot(`"/issues/a/b/c"`)
})
- test("catch all path but value is query search string", () => {
+ it("catch all path but value is query search string", () => {
const path = transformUriPath("/issues/:path{.+}?")
expect(path).toMatchInlineSnapshot(`"/issues{/*path}"`)
expect(
@@ -79,22 +79,22 @@ describe("test `transformUriPath()`", () => {
).toMatchInlineSnapshot(`"/issues/a%3D1%26b%3D2"`)
})
- test("catch all route via `*`", () => {
+ it("catch all route via `*`", () => {
expect(transformUriPath("/issues/*")).toMatchInlineSnapshot(`"/issues{/:__catchAll__}"`)
expect(transformUriPath("*")).toMatchInlineSnapshot(`"{/:__catchAll__}"`)
})
})
describe("test `regexpPathToPath()`", () => {
- test("normal path", () => {
+ it("normal path", () => {
expect(regexpPathToPath("/issues/all", {})).toMatchInlineSnapshot(`"/issues/all"`)
})
- test("path with optional params", () => {
+ it("path with optional params", () => {
expect(regexpPathToPath("/issues/:id?", {})).toMatchInlineSnapshot(`"/issues"`)
expect(regexpPathToPath("/issues/:id?", { id: "1" })).toMatchInlineSnapshot(`"/issues/1"`)
})
- test("path with many optional params", () => {
+ it("path with many optional params", () => {
expect(
regexpPathToPath("/issue/:user/:repo/:state?/:labels?", {
user: "rssnext",
@@ -103,7 +103,7 @@ describe("test `regexpPathToPath()`", () => {
).toMatchInlineSnapshot(`"/issue/rssnext/follow"`)
})
- test("path with many optional params, but when using the optional parameter(s) after the optional parameter(s), the previous optional parameter(s) is/are not filled in.", () => {
+ it("path with many optional params, but when using the optional parameter(s) after the optional parameter(s), the previous optional parameter(s) is/are not filled in.", () => {
expect(() =>
regexpPathToPath("/issue/:user/:repo/:state?/:labels?", {
user: "rssnext",
@@ -112,7 +112,7 @@ describe("test `regexpPathToPath()`", () => {
}),
).toThrowError(MissingOptionalParamError)
})
- test("path with many optional params, but when using the optional parameter(s) after the optional parameter(s), the previous optional parameter(s) is/are not filled in.", () => {
+ it("path with many optional params, but when using the optional parameter(s) after the optional parameter(s), the previous optional parameter(s) is/are not filled in.", () => {
expect(() =>
regexpPathToPath("/ranking/:rid?/:day?/:arc_type?/:disableEmbed?", {
day: "1",
@@ -120,13 +120,13 @@ describe("test `regexpPathToPath()`", () => {
).toThrowError(MissingOptionalParamError)
})
- test("missing required param", () => {
+ it("missing required param", () => {
expect(() => regexpPathToPath("/issue/:user/:repo/:state?/:labels?", {})).toThrow(
MissingRequiredParamError,
)
})
- test("path with many optional params and all inputted", () => {
+ it("path with many optional params and all inputted", () => {
expect(
regexpPathToPath("/issue/:user/:repo/:state?/:labels?", {
user: "rssnext",
@@ -137,7 +137,7 @@ describe("test `regexpPathToPath()`", () => {
).toMatchInlineSnapshot(`"/issue/rssnext/follow/open/rss"`)
})
- test("omit empty string and nil value", () => {
+ it("omit empty string and nil value", () => {
expect(
regexpPathToPath(
"/issue/:user/:repo/:state?/:labels?",
@@ -154,7 +154,7 @@ describe("test `regexpPathToPath()`", () => {
).toMatchInlineSnapshot(`"/issue/rssnext/follow/open"`)
})
- test("omit empty string and nil value will throw", () => {
+ it("omit empty string and nil value will throw", () => {
expect(() =>
regexpPathToPath(
"/issue/:user/:repo/:state?/:labels?",
@@ -171,7 +171,7 @@ describe("test `regexpPathToPath()`", () => {
).toThrow(MissingOptionalParamError)
})
- test("omit empty string and nil value will throw (default behavior)", () => {
+ it("omit empty string and nil value will throw (default behavior)", () => {
expect(() =>
regexpPathToPath("/issue/:user/:repo/:state?/:labels?", {
user: "rssnext",
@@ -182,7 +182,7 @@ describe("test `regexpPathToPath()`", () => {
).toThrow(MissingOptionalParamError)
})
- test("empty string will pass", () => {
+ it("empty string will pass", () => {
expect(
regexpPathToPath(
"/issue/:user/:repo/:state?/:labels?",
@@ -199,13 +199,13 @@ describe("test `regexpPathToPath()`", () => {
})
describe("test `parseRegexpPathParams()`", () => {
- test("normal path", () => {
+ it("normal path", () => {
expect(parseRegexpPathParams("/issues/all")).toMatchInlineSnapshot(`
[]
`)
})
- test("path with optional params", () => {
+ it("path with optional params", () => {
expect(parseRegexpPathParams("/issues/:id?")).toMatchInlineSnapshot(`
[
{
@@ -217,7 +217,7 @@ describe("test `parseRegexpPathParams()`", () => {
`)
})
- test("path with many optional params", () => {
+ it("path with many optional params", () => {
expect(parseRegexpPathParams("/issue/:user/:repo/:state?/:labels?")).toMatchInlineSnapshot(`
[
{
@@ -244,7 +244,7 @@ describe("test `parseRegexpPathParams()`", () => {
`)
})
- test("catch all path", () => {
+ it("catch all path", () => {
expect(parseRegexpPathParams("/:path{.+}?")).toMatchInlineSnapshot(`
[
{
@@ -256,7 +256,7 @@ describe("test `parseRegexpPathParams()`", () => {
`)
})
- test("with excludeNames", () => {
+ it("with excludeNames", () => {
expect(
parseRegexpPathParams("/issue/:user/:repo/:state?/:labels?/:routeParams?", {
excludeNames: ["state", "routeParams"],
@@ -284,14 +284,14 @@ describe("test `parseRegexpPathParams()`", () => {
})
describe("test `parseFullPathParams()`", () => {
- test("case 1", () => {
+ it("case 1", () => {
expect(parseFullPathParams("/user/123344", "/user/:id")).toMatchInlineSnapshot(`
{
"id": "123344",
}
`)
})
- test("case 2", () => {
+ it("case 2", () => {
expect(parseFullPathParams("/build/wangqiru/ttrss", "/build/:user/:name"))
.toMatchInlineSnapshot(`
{
diff --git a/packages/internal/utils/src/utils.spec.ts b/packages/internal/utils/src/utils.spec.ts
index 18e14dbfcf..48cf68f876 100644
--- a/packages/internal/utils/src/utils.spec.ts
+++ b/packages/internal/utils/src/utils.spec.ts
@@ -1,9 +1,9 @@
-import { describe, expect, test } from "vitest"
+import { describe, expect, it } from "vitest"
import { doesTextContainHTML, isBizId, omitShallow, toScientificNotation } from "./utils"
describe("utils", () => {
- test("isBizId", () => {
+ it("isBizId", () => {
expect(isBizId("1712546615000")).toBe(true)
expect(isBizId("17125466150000")).toBe(true)
expect(isBizId("171254661500000")).toBe(true)
@@ -27,7 +27,7 @@ describe("utils", () => {
expect(isBizId("12345678901234567890")).toBe(false)
})
- test("toScientificNotation", () => {
+ it("toScientificNotation", () => {
// Test numbers below threshold (should return original number)
expect(toScientificNotation(123n, 3)).toBe("123.00")
expect(toScientificNotation(999n, 3)).toBe("999.00")
@@ -79,14 +79,14 @@ describe("utils", () => {
expect(toScientificNotation([60386874408275410679920n, 18], 6)).toBe("60,386.87")
})
- test("omitShallow", () => {
+ it("omitShallow", () => {
expect(omitShallow({ a: 1, b: 2, c: 3 }, "a", "b")).toEqual({ c: 3 })
expect(omitShallow(null)).toEqual(null)
expect(omitShallow(void 0)).toEqual(void 0)
expect(omitShallow([1, 2])).toEqual([1, 2])
})
- test("does text contain html", () => {
+ it("does text contain html", () => {
expect(doesTextContainHTML("ab
")).toBe(true)
expect(doesTextContainHTML("Test")).toBe(false)
expect(doesTextContainHTML("
")).toBe(false)
diff --git a/packages/internal/utils/src/utils.ts b/packages/internal/utils/src/utils.ts
index c6ad2949f0..f938781f56 100644
--- a/packages/internal/utils/src/utils.ts
+++ b/packages/internal/utils/src/utils.ts
@@ -67,10 +67,10 @@ export const getOS = once((): OS => {
}
}
- const { userAgent } = window.navigator,
- macosPlatforms = ["Macintosh", "MacIntel", "MacPPC", "Mac68K"],
- windowsPlatforms = ["Win32", "Win64", "Windows", "WinCE"],
- iosPlatforms = ["iPhone", "iPad", "iPod"]
+ const { userAgent } = window.navigator
+ const macosPlatforms = ["Macintosh", "MacIntel", "MacPPC", "Mac68K"]
+ const windowsPlatforms = ["Win32", "Win64", "Windows", "WinCE"]
+ const iosPlatforms = ["iPhone", "iPad", "iPod"]
// @ts-expect-error
const platform = window.navigator.userAgentData?.platform || window.navigator.platform
let os = platform
@@ -328,7 +328,7 @@ export const toScientificNotation = (
})
// Convert bigint to number with correct decimal places
- const asNumber = Number(value) / Math.pow(10, decimals)
+ const asNumber = Number(value) / 10 ** decimals
return formatter.format(asNumber)
}
diff --git a/packages/internal/utils/tsconfig.json b/packages/internal/utils/tsconfig.json
index 89cbad6d43..9154add645 100644
--- a/packages/internal/utils/tsconfig.json
+++ b/packages/internal/utils/tsconfig.json
@@ -2,10 +2,10 @@
"extends": "@follow/configs/tsconfig.extend.json",
"compilerOptions": {
"baseUrl": ".",
- "declaration": false,
- "types": ["@follow/types/global", "@follow/types/vite"],
"paths": {
"@follow/utils/*": ["./src/*"]
- }
+ },
+ "types": ["@follow/types/global", "@follow/types/vite"],
+ "declaration": false
}
}
diff --git a/packages/readability/tsconfig.json b/packages/readability/tsconfig.json
index 7e2257152e..95fefb1b11 100644
--- a/packages/readability/tsconfig.json
+++ b/packages/readability/tsconfig.json
@@ -2,9 +2,9 @@
"extends": "@follow/configs/tsconfig.extend.json",
"compilerOptions": {
"baseUrl": ".",
+ "paths": {},
"declaration": true,
- "esModuleInterop": true,
- "paths": {}
+ "esModuleInterop": true
},
"include": ["src/**/*"]
}
diff --git a/plugins/eslint/eslint-package-json.js b/plugins/eslint/eslint-package-json.js
index 9af9d6b79c..18e18c0a3f 100644
--- a/plugins/eslint/eslint-package-json.js
+++ b/plugins/eslint/eslint-package-json.js
@@ -63,28 +63,27 @@ export default {
})
return {
- "Program > JSONExpressionStatement > JSONObjectExpression > JSONProperty > JSONObjectExpression > JSONProperty"(
- node,
- ) {
- const parent = node?.parent?.parent
- if (!parent) return
- const packageCategory = parent.key.value
- if (!dependencyKeys.includes(packageCategory)) return
- const packageName = node.key.value
- const packageVersion = node.value.value
-
- const versions = packageVersionMap.get(packageName)
- if (!versions || versions.find((v) => v.version === packageVersion)) return
-
- context.report({
- node,
- message: `Inconsistent versions of ${packageName}: ${Array.from(new Set(versions.map((v) => v.version))).join(", ")}`,
- suggest: versions.map((version) => ({
- desc: `Follow the version ${version.version} in ${version.filePath}`,
- fix: (fixer) => fixer.replaceText(node.value, `"${version.version}"`),
- })),
- })
- },
+ "Program > JSONExpressionStatement > JSONObjectExpression > JSONProperty > JSONObjectExpression > JSONProperty":
+ function (node) {
+ const parent = node?.parent?.parent
+ if (!parent) return
+ const packageCategory = parent.key.value
+ if (!dependencyKeys.includes(packageCategory)) return
+ const packageName = node.key.value
+ const packageVersion = node.value.value
+
+ const versions = packageVersionMap.get(packageName)
+ if (!versions || versions.find((v) => v.version === packageVersion)) return
+
+ context.report({
+ node,
+ message: `Inconsistent versions of ${packageName}: ${Array.from(new Set(versions.map((v) => v.version))).join(", ")}`,
+ suggest: versions.map((version) => ({
+ desc: `Follow the version ${version.version} in ${version.filePath}`,
+ fix: (fixer) => fixer.replaceText(node.value, `"${version.version}"`),
+ })),
+ })
+ },
}
},
},
@@ -123,25 +122,24 @@ export default {
})
return {
- "Program > JSONExpressionStatement > JSONObjectExpression > JSONProperty > JSONObjectExpression > JSONProperty"(
- node,
- ) {
- const parent = node?.parent?.parent
- if (!parent) return
- const packageCategory = parent.key.value
- if (!dependencyKeys.includes(packageCategory)) return
- const packageName = node.key.value
-
- dependencyKeys.forEach((key) => {
- if (key === packageCategory) return
- if (!dependencyMap.get(key)?.has(packageName)) return
-
- context.report({
- node,
- message: `Duplicated package ${packageName} in ${key}`,
+ "Program > JSONExpressionStatement > JSONObjectExpression > JSONProperty > JSONObjectExpression > JSONProperty":
+ function (node) {
+ const parent = node?.parent?.parent
+ if (!parent) return
+ const packageCategory = parent.key.value
+ if (!dependencyKeys.includes(packageCategory)) return
+ const packageName = node.key.value
+
+ dependencyKeys.forEach((key) => {
+ if (key === packageCategory) return
+ if (!dependencyMap.get(key)?.has(packageName)) return
+
+ context.report({
+ node,
+ message: `Duplicated package ${packageName} in ${key}`,
+ })
})
- })
- },
+ },
}
},
},
diff --git a/tsconfig.json b/tsconfig.json
index c6b256ee4a..a0712338e4 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -2,8 +2,8 @@
"extends": "@electron-toolkit/tsconfig/tsconfig.node.json",
"compilerOptions": {
"target": "ES2022",
- "noUncheckedIndexedAccess": true,
- "noImplicitOverride": true
+ "noImplicitOverride": true,
+ "noUncheckedIndexedAccess": true
},
"exclude": ["apps", "packages"]
}
diff --git a/wiki/contribute-i18n.md b/wiki/contribute-i18n.md
index 1ef07c4a92..023c2f10df 100644
--- a/wiki/contribute-i18n.md
+++ b/wiki/contribute-i18n.md
@@ -12,7 +12,7 @@ To add support for a new language:
1. Run the following command in the project root:
- ```bash
+ ```sh
npm run generator:i18n-template
```