diff --git a/packages/app-client/package.json b/packages/app-client/package.json index 1bafdb4b..c2a35a9a 100644 --- a/packages/app-client/package.json +++ b/packages/app-client/package.json @@ -40,10 +40,10 @@ "unocss-preset-animations": "^1.1.0" }, "devDependencies": { - "@antfu/eslint-config": "^2.27.0", + "@antfu/eslint-config": "^3.0.0", "@iconify-json/tabler": "^1.1.120", "@types/lodash-es": "^4.17.12", - "eslint": "^9.9.0", + "eslint": "^9.10.0", "jsdom": "^25.0.0", "typescript": "^5.3.3", "unocss": "^0.62.2", diff --git a/packages/app-client/src/index.tsx b/packages/app-client/src/index.tsx index 4cbe28f8..0ec9223a 100644 --- a/packages/app-client/src/index.tsx +++ b/packages/app-client/src/index.tsx @@ -1,13 +1,13 @@ /* @refresh reload */ -import '@unocss/reset/tailwind.css'; -import 'virtual:uno.css'; -import './app.css'; -import { Suspense, render } from 'solid-js/web'; -import { Router } from '@solidjs/router'; import { ColorModeProvider, ColorModeScript, createLocalStorageManager } from '@kobalte/core/color-mode'; -import { routes } from './routes'; +import { Router } from '@solidjs/router'; +import { render, Suspense } from 'solid-js/web'; import { NoteContextProvider } from './modules/notes/notes.context'; +import { routes } from './routes'; +import '@unocss/reset/tailwind.css'; +import 'virtual:uno.css'; +import './app.css'; render( () => { diff --git a/packages/app-client/src/modules/files/files.models.test.ts b/packages/app-client/src/modules/files/files.models.test.ts index d140f62f..b3665601 100644 --- a/packages/app-client/src/modules/files/files.models.test.ts +++ b/packages/app-client/src/modules/files/files.models.test.ts @@ -1,6 +1,6 @@ +import { icons as tablerIconSet } from '@iconify-json/tabler'; import { values } from 'lodash-es'; import { describe, expect, test } from 'vitest'; -import { icons as tablerIconSet } from '@iconify-json/tabler'; import { getFileIcon, iconByFileType } from './files.models'; describe('files models', () => { diff --git a/packages/app-client/src/modules/notes/components/file-uploader.tsx b/packages/app-client/src/modules/notes/components/file-uploader.tsx index 344e0db7..43e436d1 100644 --- a/packages/app-client/src/modules/notes/components/file-uploader.tsx +++ b/packages/app-client/src/modules/notes/components/file-uploader.tsx @@ -1,6 +1,6 @@ -import { type Component, type ComponentProps, type ParentComponent, createSignal, onCleanup, splitProps } from 'solid-js'; -import { Button } from '@/modules/ui/components/button'; import { cn } from '@/modules/shared/style/cn'; +import { Button } from '@/modules/ui/components/button'; +import { type Component, type ComponentProps, createSignal, onCleanup, type ParentComponent, splitProps } from 'solid-js'; const DropArea: Component<{ onFilesDrop?: (args: { files: File[] }) => void }> = (props) => { const [isDragging, setIsDragging] = createSignal(false); diff --git a/packages/app-client/src/modules/notes/components/note-password-field.tsx b/packages/app-client/src/modules/notes/components/note-password-field.tsx index 6e3d193e..0dfbd6c2 100644 --- a/packages/app-client/src/modules/notes/components/note-password-field.tsx +++ b/packages/app-client/src/modules/notes/components/note-password-field.tsx @@ -1,7 +1,7 @@ +import { Button } from '@/modules/ui/components/button'; +import { TextField } from '@/modules/ui/components/textfield'; import { type Component, createSignal } from 'solid-js'; import { createRandomPassword } from '../notes.models'; -import { TextField } from '@/modules/ui/components/textfield'; -import { Button } from '@/modules/ui/components/button'; export const NotePasswordField: Component<{ getPassword: () => string; setPassword: (value: string) => void }> = (props) => { const [getShowPassword, setShowPassword] = createSignal(false); diff --git a/packages/app-client/src/modules/notes/notes.services.ts b/packages/app-client/src/modules/notes/notes.services.ts index 81bf348d..fb5083c3 100644 --- a/packages/app-client/src/modules/notes/notes.services.ts +++ b/packages/app-client/src/modules/notes/notes.services.ts @@ -1,6 +1,6 @@ import { apiClient } from '../shared/http/http-client'; -export { storeNote, fetchNoteById }; +export { fetchNoteById, storeNote }; async function storeNote({ payload, diff --git a/packages/app-client/src/modules/notes/pages/create-note.page.tsx b/packages/app-client/src/modules/notes/pages/create-note.page.tsx index bd0da218..fc116da8 100644 --- a/packages/app-client/src/modules/notes/pages/create-note.page.tsx +++ b/packages/app-client/src/modules/notes/pages/create-note.page.tsx @@ -1,18 +1,18 @@ -import { type Component, Match, Show, Switch, createSignal, onCleanup, onMount } from 'solid-js'; -import { encryptAndCreateNote } from '../notes.usecases'; -import { useNoteContext } from '../notes.context'; -import { NotePasswordField } from '../components/note-password-field'; -import { FileUploaderButton } from '../components/file-uploader'; -import { TextArea } from '@/modules/ui/components/textarea'; -import { TextField, TextFieldLabel, TextFieldRoot } from '@/modules/ui/components/textfield'; -import { Button } from '@/modules/ui/components/button'; -import { Tabs, TabsIndicator, TabsList, TabsTrigger } from '@/modules/ui/components/tabs'; -import { SwitchControl, SwitchLabel, SwitchThumb, Switch as SwitchUiComponent } from '@/modules/ui/components/switch'; -import { Alert, AlertDescription } from '@/modules/ui/components/alert'; -import { CopyButton } from '@/modules/shared/utils/copy'; +import { getFileIcon } from '@/modules/files/files.models'; import { isHttpErrorWithCode, isRateLimitError } from '@/modules/shared/http/http-errors'; import { cn } from '@/modules/shared/style/cn'; -import { getFileIcon } from '@/modules/files/files.models'; +import { CopyButton } from '@/modules/shared/utils/copy'; +import { Alert, AlertDescription } from '@/modules/ui/components/alert'; +import { Button } from '@/modules/ui/components/button'; +import { SwitchControl, SwitchLabel, SwitchThumb, Switch as SwitchUiComponent } from '@/modules/ui/components/switch'; +import { Tabs, TabsIndicator, TabsList, TabsTrigger } from '@/modules/ui/components/tabs'; +import { TextArea } from '@/modules/ui/components/textarea'; +import { TextField, TextFieldLabel, TextFieldRoot } from '@/modules/ui/components/textfield'; +import { type Component, createSignal, Match, onCleanup, onMount, Show, Switch } from 'solid-js'; +import { FileUploaderButton } from '../components/file-uploader'; +import { NotePasswordField } from '../components/note-password-field'; +import { useNoteContext } from '../notes.context'; +import { encryptAndCreateNote } from '../notes.usecases'; export const CreateNotePage: Component = () => { const [getContent, setContent] = createSignal(''); diff --git a/packages/app-client/src/modules/notes/pages/view-note.page.tsx b/packages/app-client/src/modules/notes/pages/view-note.page.tsx index 5144fcc7..7bc5eaab 100644 --- a/packages/app-client/src/modules/notes/pages/view-note.page.tsx +++ b/packages/app-client/src/modules/notes/pages/view-note.page.tsx @@ -1,17 +1,17 @@ -import { useLocation, useParams } from '@solidjs/router'; -import { type Component, Match, Show, Switch, createSignal, onMount } from 'solid-js'; +import { getFileIcon } from '@/modules/files/files.models'; +import { isHttpErrorWithCode, isRateLimitError } from '@/modules/shared/http/http-errors'; +import { cn } from '@/modules/shared/style/cn'; +import { CopyButton } from '@/modules/shared/utils/copy'; +import { Alert, AlertDescription } from '@/modules/ui/components/alert'; +import { Button } from '@/modules/ui/components/button'; +import { Card, CardContent, CardDescription, CardHeader } from '@/modules/ui/components/card'; +import { TextField, TextFieldLabel, TextFieldRoot } from '@/modules/ui/components/textfield'; +import { formatBytes, safely } from '@corentinth/chisels'; import { decryptNote, noteAssetsToFiles, parseNoteUrlHashFragment } from '@enclosed/lib'; +import { useLocation, useParams } from '@solidjs/router'; import JSZip from 'jszip'; -import { formatBytes, safely } from '@corentinth/chisels'; +import { type Component, createSignal, Match, onMount, Show, Switch } from 'solid-js'; import { fetchNoteById } from '../notes.services'; -import { TextField, TextFieldLabel, TextFieldRoot } from '@/modules/ui/components/textfield'; -import { Card, CardContent, CardDescription, CardHeader } from '@/modules/ui/components/card'; -import { Button } from '@/modules/ui/components/button'; -import { isHttpErrorWithCode, isRateLimitError } from '@/modules/shared/http/http-errors'; -import { Alert, AlertDescription } from '@/modules/ui/components/alert'; -import { CopyButton } from '@/modules/shared/utils/copy'; -import { getFileIcon } from '@/modules/files/files.models'; -import { cn } from '@/modules/shared/style/cn'; const RequestPasswordForm: Component<{ onPasswordEntered: (args: { password: string }) => void; getIsPasswordInvalid: () => boolean; setIsPasswordInvalid: (value: boolean) => void }> = (props) => { const [getPassword, setPassword] = createSignal(''); diff --git a/packages/app-client/src/modules/shared/http/http-client.models.ts b/packages/app-client/src/modules/shared/http/http-client.models.ts index 9725280d..a54f078f 100644 --- a/packages/app-client/src/modules/shared/http/http-client.models.ts +++ b/packages/app-client/src/modules/shared/http/http-client.models.ts @@ -1,4 +1,4 @@ -export { isFetchResponseJson, getBody }; +export { getBody, isFetchResponseJson }; function isFetchResponseJson({ response }: { response: Response }): boolean { return Boolean(response.headers.get('content-type')?.includes('application/json')); diff --git a/packages/app-client/src/modules/shared/http/http-client.ts b/packages/app-client/src/modules/shared/http/http-client.ts index 6c400dce..72e2e8fe 100644 --- a/packages/app-client/src/modules/shared/http/http-client.ts +++ b/packages/app-client/src/modules/shared/http/http-client.ts @@ -1,5 +1,5 @@ -import { getBody } from './http-client.models'; import { config } from '@/modules/config/config'; +import { getBody } from './http-client.models'; export { apiClient }; diff --git a/packages/app-client/src/modules/shared/utils/copy.tsx b/packages/app-client/src/modules/shared/utils/copy.tsx index b63446e7..f1a1346a 100644 --- a/packages/app-client/src/modules/shared/utils/copy.tsx +++ b/packages/app-client/src/modules/shared/utils/copy.tsx @@ -1,6 +1,6 @@ import type { ComponentProps, ParentComponent } from 'solid-js'; -import { createSignal } from 'solid-js'; import { Button } from '@/modules/ui/components/button'; +import { createSignal } from 'solid-js'; export function useCopy() { const [getIsJustCopied, setIsJustCopied] = createSignal(false); diff --git a/packages/app-client/src/modules/ui/components/alert.tsx b/packages/app-client/src/modules/ui/components/alert.tsx index 2e3d3a71..72f28ea1 100644 --- a/packages/app-client/src/modules/ui/components/alert.tsx +++ b/packages/app-client/src/modules/ui/components/alert.tsx @@ -1,11 +1,11 @@ import type { AlertRootProps } from '@kobalte/core/alert'; -import { Alert as AlertPrimitive } from '@kobalte/core/alert'; import type { PolymorphicProps } from '@kobalte/core/polymorphic'; import type { VariantProps } from 'class-variance-authority'; -import { cva } from 'class-variance-authority'; import type { ComponentProps, ValidComponent } from 'solid-js'; -import { splitProps } from 'solid-js'; import { cn } from '@/modules/shared/style/cn'; +import { Alert as AlertPrimitive } from '@kobalte/core/alert'; +import { cva } from 'class-variance-authority'; +import { splitProps } from 'solid-js'; export const alertVariants = cva( 'relative w-full rounded-lg border px-4 py-3 text-sm [&:has(svg)]:pl-11 [&>svg+div]:translate-y-[-3px] [&>svg]:(absolute left-4 top-4 text-foreground)', diff --git a/packages/app-client/src/modules/ui/components/button.tsx b/packages/app-client/src/modules/ui/components/button.tsx index d3157164..5f19ba17 100644 --- a/packages/app-client/src/modules/ui/components/button.tsx +++ b/packages/app-client/src/modules/ui/components/button.tsx @@ -1,11 +1,11 @@ import type { ButtonRootProps } from '@kobalte/core/button'; -import { Button as ButtonPrimitive } from '@kobalte/core/button'; import type { PolymorphicProps } from '@kobalte/core/polymorphic'; import type { VariantProps } from 'class-variance-authority'; -import { cva } from 'class-variance-authority'; import type { ValidComponent } from 'solid-js'; -import { splitProps } from 'solid-js'; import { cn } from '@/modules/shared/style/cn'; +import { Button as ButtonPrimitive } from '@kobalte/core/button'; +import { cva } from 'class-variance-authority'; +import { splitProps } from 'solid-js'; export const buttonVariants = cva( 'inline-flex items-center justify-center rounded-md text-sm font-medium transition-shadow focus-visible:(outline-none ring-1.5 ring-ring) disabled:(pointer-events-none opacity-50) bg-inherit', diff --git a/packages/app-client/src/modules/ui/components/card.tsx b/packages/app-client/src/modules/ui/components/card.tsx index 937ab68c..77617e12 100644 --- a/packages/app-client/src/modules/ui/components/card.tsx +++ b/packages/app-client/src/modules/ui/components/card.tsx @@ -1,6 +1,6 @@ import type { ComponentProps, ParentComponent } from 'solid-js'; -import { splitProps } from 'solid-js'; import { cn } from '@/modules/shared/style/cn'; +import { splitProps } from 'solid-js'; export function Card(props: ComponentProps<'div'>) { const [local, rest] = splitProps(props, ['class']); diff --git a/packages/app-client/src/modules/ui/components/dropdown-menu.tsx b/packages/app-client/src/modules/ui/components/dropdown-menu.tsx index ee945dac..bbbd8750 100644 --- a/packages/app-client/src/modules/ui/components/dropdown-menu.tsx +++ b/packages/app-client/src/modules/ui/components/dropdown-menu.tsx @@ -9,11 +9,11 @@ import type { DropdownMenuSeparatorProps, DropdownMenuSubTriggerProps, } from '@kobalte/core/dropdown-menu'; -import { DropdownMenu as DropdownMenuPrimitive } from '@kobalte/core/dropdown-menu'; import type { PolymorphicProps } from '@kobalte/core/polymorphic'; import type { ComponentProps, ParentProps, ValidComponent } from 'solid-js'; -import { mergeProps, splitProps } from 'solid-js'; import { cn } from '@/modules/shared/style/cn'; +import { DropdownMenu as DropdownMenuPrimitive } from '@kobalte/core/dropdown-menu'; +import { mergeProps, splitProps } from 'solid-js'; export const DropdownMenuTrigger = DropdownMenuPrimitive.Trigger; export const DropdownMenuGroup = DropdownMenuPrimitive.Group; diff --git a/packages/app-client/src/modules/ui/components/switch.tsx b/packages/app-client/src/modules/ui/components/switch.tsx index d93ed686..0e98722b 100644 --- a/packages/app-client/src/modules/ui/components/switch.tsx +++ b/packages/app-client/src/modules/ui/components/switch.tsx @@ -3,10 +3,10 @@ import type { SwitchControlProps, SwitchThumbProps, } from '@kobalte/core/switch'; -import { Switch as SwitchPrimitive } from '@kobalte/core/switch'; import type { ParentProps, ValidComponent, VoidProps } from 'solid-js'; -import { splitProps } from 'solid-js'; import { cn } from '@/modules/shared/style/cn'; +import { Switch as SwitchPrimitive } from '@kobalte/core/switch'; +import { splitProps } from 'solid-js'; export const SwitchLabel = SwitchPrimitive.Label; export const Switch = SwitchPrimitive; diff --git a/packages/app-client/src/modules/ui/components/tabs.tsx b/packages/app-client/src/modules/ui/components/tabs.tsx index 095fb1e6..eff8f344 100644 --- a/packages/app-client/src/modules/ui/components/tabs.tsx +++ b/packages/app-client/src/modules/ui/components/tabs.tsx @@ -6,12 +6,12 @@ import type { TabsRootProps, TabsTriggerProps, } from '@kobalte/core/tabs'; -import { Tabs as TabsPrimitive } from '@kobalte/core/tabs'; import type { VariantProps } from 'class-variance-authority'; -import { cva } from 'class-variance-authority'; import type { ValidComponent, VoidProps } from 'solid-js'; -import { splitProps } from 'solid-js'; import { cn } from '@/modules/shared/style/cn'; +import { Tabs as TabsPrimitive } from '@kobalte/core/tabs'; +import { cva } from 'class-variance-authority'; +import { splitProps } from 'solid-js'; type tabsProps = TabsRootProps & { class?: string; diff --git a/packages/app-client/src/modules/ui/components/textarea.tsx b/packages/app-client/src/modules/ui/components/textarea.tsx index 88b57b79..a4d955a7 100644 --- a/packages/app-client/src/modules/ui/components/textarea.tsx +++ b/packages/app-client/src/modules/ui/components/textarea.tsx @@ -1,9 +1,9 @@ import type { PolymorphicProps } from '@kobalte/core/polymorphic'; import type { TextFieldTextAreaProps } from '@kobalte/core/text-field'; -import { TextArea as TextFieldPrimitive } from '@kobalte/core/text-field'; import type { ValidComponent, VoidProps } from 'solid-js'; -import { splitProps } from 'solid-js'; import { cn } from '@/modules/shared/style/cn'; +import { TextArea as TextFieldPrimitive } from '@kobalte/core/text-field'; +import { splitProps } from 'solid-js'; type textAreaProps = VoidProps< TextFieldTextAreaProps & { diff --git a/packages/app-client/src/modules/ui/components/textfield.tsx b/packages/app-client/src/modules/ui/components/textfield.tsx index 53d00af8..71ad61f9 100644 --- a/packages/app-client/src/modules/ui/components/textfield.tsx +++ b/packages/app-client/src/modules/ui/components/textfield.tsx @@ -6,11 +6,11 @@ import type { TextFieldLabelProps, TextFieldRootProps, } from '@kobalte/core/text-field'; +import type { ValidComponent, VoidProps } from 'solid-js'; +import { cn } from '@/modules/shared/style/cn'; import { TextField as TextFieldPrimitive } from '@kobalte/core/text-field'; import { cva } from 'class-variance-authority'; -import type { ValidComponent, VoidProps } from 'solid-js'; import { splitProps } from 'solid-js'; -import { cn } from '@/modules/shared/style/cn'; type textFieldProps = TextFieldRootProps & { diff --git a/packages/app-client/src/modules/ui/layouts/app.layout.tsx b/packages/app-client/src/modules/ui/layouts/app.layout.tsx index 109e08ae..cbb68ec9 100644 --- a/packages/app-client/src/modules/ui/layouts/app.layout.tsx +++ b/packages/app-client/src/modules/ui/layouts/app.layout.tsx @@ -1,12 +1,12 @@ -import { A, useNavigate } from '@solidjs/router'; import type { Component, ParentComponent } from 'solid-js'; +import { config } from '@/modules/config/config'; +import { buildDocUrl } from '@/modules/docs/docs.models'; +import { useNoteContext } from '@/modules/notes/notes.context'; +import { useThemeStore } from '@/modules/theme/theme.store'; +import { Button } from '@/modules/ui/components/button'; import { DropdownMenu } from '@kobalte/core/dropdown-menu'; +import { A, useNavigate } from '@solidjs/router'; import { DropdownMenuContent, DropdownMenuItem, DropdownMenuSeparator, DropdownMenuTrigger } from '../components/dropdown-menu'; -import { Button } from '@/modules/ui/components/button'; -import { useThemeStore } from '@/modules/theme/theme.store'; -import { useNoteContext } from '@/modules/notes/notes.context'; -import { buildDocUrl } from '@/modules/docs/docs.models'; -import { config } from '@/modules/config/config'; export const Navbar: Component = () => { const themeStore = useThemeStore(); diff --git a/packages/app-client/src/routes.tsx b/packages/app-client/src/routes.tsx index c7ef0a8f..31acc016 100644 --- a/packages/app-client/src/routes.tsx +++ b/packages/app-client/src/routes.tsx @@ -1,9 +1,9 @@ import { A, type RouteDefinition } from '@solidjs/router'; -import { AppLayout } from './modules/ui/layouts/app.layout'; +import { NOTE_ID_REGEX } from './modules/notes/notes.constants'; import { CreateNotePage } from './modules/notes/pages/create-note.page'; import { ViewNotePage } from './modules/notes/pages/view-note.page'; import { Button } from './modules/ui/components/button'; -import { NOTE_ID_REGEX } from './modules/notes/notes.constants'; +import { AppLayout } from './modules/ui/layouts/app.layout'; export const routes: RouteDefinition[] = [ { diff --git a/packages/app-client/uno.config.ts b/packages/app-client/uno.config.ts index 6316cf93..23ee9396 100644 --- a/packages/app-client/uno.config.ts +++ b/packages/app-client/uno.config.ts @@ -1,3 +1,4 @@ +import { chain } from 'lodash-es'; import { defineConfig, presetIcons, @@ -7,7 +8,6 @@ import { transformerVariantGroup, } from 'unocss'; import presetAnimations from 'unocss-preset-animations'; -import { chain } from 'lodash-es'; import { iconByFileType } from './src/modules/files/files.models'; export default defineConfig({ diff --git a/packages/app-client/vite.config.ts b/packages/app-client/vite.config.ts index c283d024..f08c384f 100644 --- a/packages/app-client/vite.config.ts +++ b/packages/app-client/vite.config.ts @@ -1,8 +1,8 @@ import path from 'node:path'; import process from 'node:process'; +import unoCssPlugin from 'unocss/vite'; import { defineConfig } from 'vite'; import solidPlugin from 'vite-plugin-solid'; -import unoCssPlugin from 'unocss/vite'; export default defineConfig({ plugins: [ diff --git a/packages/app-server/package.json b/packages/app-server/package.json index 3931a3a3..49a785dd 100644 --- a/packages/app-server/package.json +++ b/packages/app-server/package.json @@ -42,7 +42,7 @@ "zod": "^3.23.8" }, "devDependencies": { - "@antfu/eslint-config": "^2.27.0", + "@antfu/eslint-config": "^3.0.0", "@cloudflare/workers-types": "^4.20240821.1", "@total-typescript/ts-reset": "^0.6.0", "@types/lodash-es": "^4.17.12", @@ -50,7 +50,7 @@ "@vitest/coverage-v8": "^2.0.5", "dotenv": "^16.4.5", "esbuild": "^0.23.1", - "eslint": "^9.9.0", + "eslint": "^9.10.0", "pino-pretty": "^11.2.2", "tsx": "^4.17.0", "typescript": "^5.5.4", diff --git a/packages/app-server/src/index.node.ts b/packages/app-server/src/index.node.ts index e9691a74..7c129cee 100644 --- a/packages/app-server/src/index.node.ts +++ b/packages/app-server/src/index.node.ts @@ -1,12 +1,12 @@ import process, { env } from 'node:process'; import { serve } from '@hono/node-server'; import { serveStatic } from '@hono/node-server/serve-static'; -import { createServer } from './modules/app/server'; import { getConfig } from './modules/app/config/config'; +import { createServer } from './modules/app/server'; import { deleteExpiredNotesTask } from './modules/notes/tasks/delete-expired-notes.tasks'; -import { createTaskScheduler } from './modules/tasks/task-scheduler'; import { createFsLiteStorage } from './modules/storage/factories/fs-lite.storage'; +import { createTaskScheduler } from './modules/tasks/task-scheduler'; const config = getConfig({ env }); const { storage } = createFsLiteStorage({ config }); diff --git a/packages/app-server/src/modules/app/config/config.test-utils.ts b/packages/app-server/src/modules/app/config/config.test-utils.ts index 60e64896..1590ee8b 100644 --- a/packages/app-server/src/modules/app/config/config.test-utils.ts +++ b/packages/app-server/src/modules/app/config/config.test-utils.ts @@ -1,7 +1,7 @@ -import { merge } from 'lodash-es'; import type { DeepPartial } from '@corentinth/chisels'; -import { getConfig } from './config'; import type { Config } from './config.types'; +import { merge } from 'lodash-es'; +import { getConfig } from './config'; export { overrideConfig }; diff --git a/packages/app-server/src/modules/app/middlewares/config.middleware.ts b/packages/app-server/src/modules/app/middlewares/config.middleware.ts index 24892100..f8db3440 100644 --- a/packages/app-server/src/modules/app/middlewares/config.middleware.ts +++ b/packages/app-server/src/modules/app/middlewares/config.middleware.ts @@ -1,7 +1,7 @@ +import type { Config } from '../config/config.types'; import { env as getEnv } from 'hono/adapter'; import { createMiddleware } from 'hono/factory'; import { getConfig } from '../config/config'; -import type { Config } from '../config/config.types'; export function createConfigMiddleware({ config: initialConfig }: { config?: Config } = {}) { return createMiddleware(async (c, next) => { diff --git a/packages/app-server/src/modules/app/middlewares/cors.middleware.ts b/packages/app-server/src/modules/app/middlewares/cors.middleware.ts index afd27964..7ece397e 100644 --- a/packages/app-server/src/modules/app/middlewares/cors.middleware.ts +++ b/packages/app-server/src/modules/app/middlewares/cors.middleware.ts @@ -1,6 +1,6 @@ +import type { Context } from '../server.types'; import { cors } from 'hono/cors'; import { createMiddleware } from 'hono/factory'; -import type { Context } from '../server.types'; export const corsMiddleware = createMiddleware(async (context: Context, next) => { const { server: { corsOrigins } } = context.get('config'); diff --git a/packages/app-server/src/modules/app/middlewares/errors.middleware.ts b/packages/app-server/src/modules/app/middlewares/errors.middleware.ts index b4c0654f..7dfcc603 100644 --- a/packages/app-server/src/modules/app/middlewares/errors.middleware.ts +++ b/packages/app-server/src/modules/app/middlewares/errors.middleware.ts @@ -1,6 +1,6 @@ +import type { ServerInstance } from '../server.types'; import { isCustomError } from '../../shared/errors/errors'; import { createLogger } from '../../shared/logger/logger'; -import type { ServerInstance } from '../server.types'; const logger = createLogger({ namespace: 'middlewares:error' }); diff --git a/packages/app-server/src/modules/app/middlewares/storage.middleware.ts b/packages/app-server/src/modules/app/middlewares/storage.middleware.ts index 3b51893e..1b268e59 100644 --- a/packages/app-server/src/modules/app/middlewares/storage.middleware.ts +++ b/packages/app-server/src/modules/app/middlewares/storage.middleware.ts @@ -1,5 +1,5 @@ -import { createMiddleware } from 'hono/factory'; import type { BindableStorageFactory } from '../../storage/storage.types'; +import { createMiddleware } from 'hono/factory'; export function createStorageMiddleware({ storageFactory }: { storageFactory: BindableStorageFactory }) { return createMiddleware(async (context, next) => { diff --git a/packages/app-server/src/modules/app/middlewares/timeout.middleware.test.ts b/packages/app-server/src/modules/app/middlewares/timeout.middleware.test.ts index a0552f8d..2561bae7 100644 --- a/packages/app-server/src/modules/app/middlewares/timeout.middleware.test.ts +++ b/packages/app-server/src/modules/app/middlewares/timeout.middleware.test.ts @@ -1,7 +1,7 @@ -import { describe, expect, test } from 'vitest'; import { Hono } from 'hono'; -import { timeoutMiddleware } from './timeout.middleware'; +import { describe, expect, test } from 'vitest'; import { registerErrorMiddleware } from './errors.middleware'; +import { timeoutMiddleware } from './timeout.middleware'; describe('middlewares', () => { describe('timeoutMiddleware', () => { diff --git a/packages/app-server/src/modules/app/middlewares/timeout.middleware.ts b/packages/app-server/src/modules/app/middlewares/timeout.middleware.ts index 26fa74fc..4636603a 100644 --- a/packages/app-server/src/modules/app/middlewares/timeout.middleware.ts +++ b/packages/app-server/src/modules/app/middlewares/timeout.middleware.ts @@ -1,5 +1,5 @@ -import { createMiddleware } from 'hono/factory'; import type { Context } from '../server.types'; +import { createMiddleware } from 'hono/factory'; import { createError } from '../../shared/errors/errors'; export const timeoutMiddleware = createMiddleware(async (context: Context, next) => { diff --git a/packages/app-server/src/modules/app/server.ts b/packages/app-server/src/modules/app/server.ts index e62c27fb..9ddbae89 100644 --- a/packages/app-server/src/modules/app/server.ts +++ b/packages/app-server/src/modules/app/server.ts @@ -1,14 +1,14 @@ +import type { BindableStorageFactory } from '../storage/storage.types'; +import type { Config } from './config/config.types'; +import type { ServerInstanceGenerics } from './server.types'; import { Hono } from 'hono'; import { secureHeaders } from 'hono/secure-headers'; import { registerNotesRoutes } from '../notes/notes.routes'; -import type { BindableStorageFactory } from '../storage/storage.types'; -import type { ServerInstanceGenerics } from './server.types'; -import { corsMiddleware } from './middlewares/cors.middleware'; import { createConfigMiddleware } from './middlewares/config.middleware'; -import { loggerMiddleware } from './middlewares/logger.middleware'; +import { corsMiddleware } from './middlewares/cors.middleware'; import { registerErrorMiddleware } from './middlewares/errors.middleware'; +import { loggerMiddleware } from './middlewares/logger.middleware'; import { createStorageMiddleware } from './middlewares/storage.middleware'; -import type { Config } from './config/config.types'; import { timeoutMiddleware } from './middlewares/timeout.middleware'; export { createServer }; diff --git a/packages/app-server/src/modules/notes/e2e/create-and-view-note.e2e.test.ts b/packages/app-server/src/modules/notes/e2e/create-and-view-note.e2e.test.ts index 73d1b9a3..f3f166c2 100644 --- a/packages/app-server/src/modules/notes/e2e/create-and-view-note.e2e.test.ts +++ b/packages/app-server/src/modules/notes/e2e/create-and-view-note.e2e.test.ts @@ -1,5 +1,5 @@ -import { describe, expect, test } from 'vitest'; import { omit } from 'lodash-es'; +import { describe, expect, test } from 'vitest'; import { createServer } from '../../app/server'; import { createMemoryStorage } from '../../storage/factories/memory.storage'; diff --git a/packages/app-server/src/modules/notes/e2e/size-limited-note-cration.e2e.test.ts b/packages/app-server/src/modules/notes/e2e/size-limited-note-cration.e2e.test.ts index dff77242..2e47188e 100644 --- a/packages/app-server/src/modules/notes/e2e/size-limited-note-cration.e2e.test.ts +++ b/packages/app-server/src/modules/notes/e2e/size-limited-note-cration.e2e.test.ts @@ -1,7 +1,7 @@ import { describe, expect, test } from 'vitest'; +import { overrideConfig } from '../../app/config/config.test-utils'; import { createServer } from '../../app/server'; import { createMemoryStorage } from '../../storage/factories/memory.storage'; -import { overrideConfig } from '../../app/config/config.test-utils'; describe('e2e', () => { describe('body limit note creation', async () => { diff --git a/packages/app-server/src/modules/notes/notes.models.ts b/packages/app-server/src/modules/notes/notes.models.ts index b8bc7ceb..0028ff71 100644 --- a/packages/app-server/src/modules/notes/notes.models.ts +++ b/packages/app-server/src/modules/notes/notes.models.ts @@ -1,8 +1,8 @@ +import type { StoredNote } from './notes.types'; import { addSeconds, isBefore, isEqual } from 'date-fns'; import { omit } from 'lodash-es'; -import type { StoredNote } from './notes.types'; -export { isNoteExpired, formatNoteForApi, getNoteExpirationDate }; +export { formatNoteForApi, getNoteExpirationDate, isNoteExpired }; function isNoteExpired({ note, now = new Date() }: { note: { expirationDate: Date }; now?: Date }) { return isBefore(note.expirationDate, now) || isEqual(note.expirationDate, now); diff --git a/packages/app-server/src/modules/notes/notes.repository.test.ts b/packages/app-server/src/modules/notes/notes.repository.test.ts index 0e65de59..c2925aa7 100644 --- a/packages/app-server/src/modules/notes/notes.repository.test.ts +++ b/packages/app-server/src/modules/notes/notes.repository.test.ts @@ -1,7 +1,7 @@ import { describe, expect, test } from 'vitest'; import { createMemoryStorage } from '../storage/factories/memory.storage'; -import { createNoteRepository } from './notes.repository'; import { createNoteNotFoundError } from './notes.errors'; +import { createNoteRepository } from './notes.repository'; describe('notes repository', () => { describe('getNoteById', () => { diff --git a/packages/app-server/src/modules/notes/notes.repository.ts b/packages/app-server/src/modules/notes/notes.repository.ts index f4b3362a..c22ce196 100644 --- a/packages/app-server/src/modules/notes/notes.repository.ts +++ b/packages/app-server/src/modules/notes/notes.repository.ts @@ -1,9 +1,9 @@ -import { injectArguments } from '@corentinth/chisels'; import type { Storage } from '../storage/storage.types'; +import type { StoredNote } from './notes.types'; +import { injectArguments } from '@corentinth/chisels'; import { generateId } from '../shared/utils/random'; import { createNoteNotFoundError } from './notes.errors'; import { getNoteExpirationDate } from './notes.models'; -import type { StoredNote } from './notes.types'; export { createNoteRepository }; diff --git a/packages/app-server/src/modules/notes/notes.routes.ts b/packages/app-server/src/modules/notes/notes.routes.ts index b22222c7..6936c644 100644 --- a/packages/app-server/src/modules/notes/notes.routes.ts +++ b/packages/app-server/src/modules/notes/notes.routes.ts @@ -1,12 +1,12 @@ -import { z } from 'zod'; -import { encryptionAlgorithms, serializationFormats } from '@enclosed/lib'; import type { ServerInstance } from '../app/server.types'; +import { encryptionAlgorithms, serializationFormats } from '@enclosed/lib'; +import { z } from 'zod'; import { validateJsonBody } from '../shared/validation/validation'; -import { createNoteRepository } from './notes.repository'; import { ONE_MONTH_IN_SECONDS, TEN_MINUTES_IN_SECONDS } from './notes.constants'; -import { getRefreshedNote } from './notes.usecases'; import { createNotePayloadTooLargeError } from './notes.errors'; import { formatNoteForApi } from './notes.models'; +import { createNoteRepository } from './notes.repository'; +import { getRefreshedNote } from './notes.usecases'; export { registerNotesRoutes }; diff --git a/packages/app-server/src/modules/notes/notes.usecases.test.ts b/packages/app-server/src/modules/notes/notes.usecases.test.ts index 35a37d77..75eebb29 100644 --- a/packages/app-server/src/modules/notes/notes.usecases.test.ts +++ b/packages/app-server/src/modules/notes/notes.usecases.test.ts @@ -1,8 +1,8 @@ import { describe, expect, test } from 'vitest'; import { createMemoryStorage } from '../storage/factories/memory.storage'; -import { getRefreshedNote } from './notes.usecases'; -import { createNoteRepository } from './notes.repository'; import { createNoteNotFoundError } from './notes.errors'; +import { createNoteRepository } from './notes.repository'; +import { getRefreshedNote } from './notes.usecases'; describe('notes usecases', () => { describe('getRefreshedNote', () => { diff --git a/packages/app-server/src/modules/notes/notes.usecases.ts b/packages/app-server/src/modules/notes/notes.usecases.ts index 0ea095f8..e81de2eb 100644 --- a/packages/app-server/src/modules/notes/notes.usecases.ts +++ b/packages/app-server/src/modules/notes/notes.usecases.ts @@ -1,6 +1,6 @@ +import type { NotesRepository } from './notes.types'; import { createNoteNotFoundError } from './notes.errors'; import { isNoteExpired } from './notes.models'; -import type { NotesRepository } from './notes.types'; export { getRefreshedNote }; diff --git a/packages/app-server/src/modules/notes/tasks/delete-expired-notes.tasks.test.ts b/packages/app-server/src/modules/notes/tasks/delete-expired-notes.tasks.test.ts index 02aa3a99..977fe3d8 100644 --- a/packages/app-server/src/modules/notes/tasks/delete-expired-notes.tasks.test.ts +++ b/packages/app-server/src/modules/notes/tasks/delete-expired-notes.tasks.test.ts @@ -1,8 +1,8 @@ -import { describe, expect, test } from 'vitest'; import type { Config } from '../../app/config/config.types'; +import { describe, expect, test } from 'vitest'; import { createTestLogger } from '../../shared/logger/logger.test-utils'; -import { createNoteNotFoundError } from '../notes.errors'; import { createMemoryStorage } from '../../storage/factories/memory.storage'; +import { createNoteNotFoundError } from '../notes.errors'; import { deleteExpiredNotesTask } from './delete-expired-notes.tasks'; describe('delete-expired-notes tasks', () => { diff --git a/packages/app-server/src/modules/shared/validation/validation.ts b/packages/app-server/src/modules/shared/validation/validation.ts index 3a19367a..8c005a0e 100644 --- a/packages/app-server/src/modules/shared/validation/validation.ts +++ b/packages/app-server/src/modules/shared/validation/validation.ts @@ -1,6 +1,6 @@ import type { ValidationTargets } from 'hono'; -import { validator } from 'hono/validator'; import type z from 'zod'; +import { validator } from 'hono/validator'; function formatValidationError({ error }: { error: z.ZodError }) { const details = (error.errors ?? []).map((e) => { diff --git a/packages/app-server/src/modules/storage/factories/cloudflare-kv.storage.ts b/packages/app-server/src/modules/storage/factories/cloudflare-kv.storage.ts index c9248c04..abfe179f 100644 --- a/packages/app-server/src/modules/storage/factories/cloudflare-kv.storage.ts +++ b/packages/app-server/src/modules/storage/factories/cloudflare-kv.storage.ts @@ -1,8 +1,8 @@ import type { Driver } from 'unstorage'; import { createStorage } from 'unstorage'; import cloudflareKVBindingDriver from 'unstorage/drivers/cloudflare-kv-binding'; -import { defineBindableStorageFactory } from '../storage.models'; import { createError } from '../../shared/errors/errors'; +import { defineBindableStorageFactory } from '../storage.models'; export const createCloudflareKVStorageFactory = defineBindableStorageFactory(() => { return { diff --git a/packages/app-server/src/modules/storage/factories/fs-lite.storage.ts b/packages/app-server/src/modules/storage/factories/fs-lite.storage.ts index 11f740b1..0a13ff78 100644 --- a/packages/app-server/src/modules/storage/factories/fs-lite.storage.ts +++ b/packages/app-server/src/modules/storage/factories/fs-lite.storage.ts @@ -1,6 +1,6 @@ -import fsLiteDriver from 'unstorage/drivers/fs-lite'; -import { createStorage } from 'unstorage'; import type { Config } from '../../app/config/config.types'; +import { createStorage } from 'unstorage'; +import fsLiteDriver from 'unstorage/drivers/fs-lite'; import { defineStorage } from '../storage.models'; export const createFsLiteStorage = defineStorage(({ config }: { config: Config }) => { diff --git a/packages/app-server/src/modules/storage/storage.models.ts b/packages/app-server/src/modules/storage/storage.models.ts index 20294e96..5cca3784 100644 --- a/packages/app-server/src/modules/storage/storage.models.ts +++ b/packages/app-server/src/modules/storage/storage.models.ts @@ -1,6 +1,6 @@ import type { BindableStorageFactory, Storage } from './storage.types'; -export { defineStorage, defineBindableStorageFactory }; +export { defineBindableStorageFactory, defineStorage }; function defineStorage(fn: (args: InitialsArgs) => { storage: Storage }) { return fn; diff --git a/packages/app-server/src/modules/tasks/task-scheduler.ts b/packages/app-server/src/modules/tasks/task-scheduler.ts index d6feda1b..36b9ea7b 100644 --- a/packages/app-server/src/modules/tasks/task-scheduler.ts +++ b/packages/app-server/src/modules/tasks/task-scheduler.ts @@ -1,8 +1,8 @@ -import cron from 'node-cron'; -import type { Storage } from '../storage/storage.types'; import type { Config } from '../app/config/config.types'; -import { createLogger } from '../shared/logger/logger'; +import type { Storage } from '../storage/storage.types'; import type { TaskDefinition } from './tasks.types'; +import cron from 'node-cron'; +import { createLogger } from '../shared/logger/logger'; export { createTaskScheduler }; diff --git a/packages/app-server/src/modules/tasks/tasks.models.ts b/packages/app-server/src/modules/tasks/tasks.models.ts index 7ba46366..7094fd41 100644 --- a/packages/app-server/src/modules/tasks/tasks.models.ts +++ b/packages/app-server/src/modules/tasks/tasks.models.ts @@ -1,8 +1,8 @@ -import { isFunction } from 'lodash-es'; -import type { Storage } from '../storage/storage.types'; import type { Config } from '../app/config/config.types'; -import { createLogger } from '../shared/logger/logger'; import type { Logger } from '../shared/logger/logger.types'; +import type { Storage } from '../storage/storage.types'; +import { isFunction } from 'lodash-es'; +import { createLogger } from '../shared/logger/logger'; export { defineTask }; diff --git a/packages/app-server/src/scripts/clear-outdated-cloudflare-kv-keys.script.ts b/packages/app-server/src/scripts/clear-outdated-cloudflare-kv-keys.script.ts index 303e2676..b24b2159 100644 --- a/packages/app-server/src/scripts/clear-outdated-cloudflare-kv-keys.script.ts +++ b/packages/app-server/src/scripts/clear-outdated-cloudflare-kv-keys.script.ts @@ -1,7 +1,7 @@ /* eslint-disable no-console */ import process from 'node:process'; -import { $, minimist } from 'zx'; import { isNil, map } from 'lodash-es'; +import { $, minimist } from 'zx'; import { isNoteExpired } from '../modules/notes/notes.models'; const { namespaceId } = minimist(process.argv.slice(2), { diff --git a/packages/app-server/src/scripts/generate-config-table.script.ts b/packages/app-server/src/scripts/generate-config-table.script.ts index c03850cb..f3e286ac 100644 --- a/packages/app-server/src/scripts/generate-config-table.script.ts +++ b/packages/app-server/src/scripts/generate-config-table.script.ts @@ -1,6 +1,6 @@ /* eslint-disable no-console */ -import { isArray, isEmpty, isNil } from 'lodash-es'; import type { ConfigDefinition, ConfigDefinitionElement } from 'figue'; +import { isArray, isEmpty, isNil } from 'lodash-es'; import { fs } from 'zx'; import { configDefinition } from '../modules/app/config/config'; diff --git a/packages/cli/package.json b/packages/cli/package.json index 5149cc08..5c087800 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -44,11 +44,11 @@ "zod": "^3.23.8" }, "devDependencies": { - "@antfu/eslint-config": "^2.27.0", + "@antfu/eslint-config": "^3.0.0", "@types/lodash-es": "^4.17.12", "@vitest/coverage-v8": "^2.0.5", "dotenv": "^16.4.5", - "eslint": "^9.9.0", + "eslint": "^9.10.0", "typescript": "^5.5.4", "unbuild": "^2.0.0", "vitest": "^2.0.5" diff --git a/packages/cli/src/cli.ts b/packages/cli/src/cli.ts index a8208698..5845d180 100644 --- a/packages/cli/src/cli.ts +++ b/packages/cli/src/cli.ts @@ -1,6 +1,6 @@ import { defineCommand, runMain } from 'citty'; -import { createNoteCommand } from './create-note/create-note.command'; import { configCommand } from './config/config.command'; +import { createNoteCommand } from './create-note/create-note.command'; import { viewNoteCommand } from './view-note/view-note.command'; const main = defineCommand({ diff --git a/packages/cli/src/config/config.models.ts b/packages/cli/src/config/config.models.ts index 7e2d9465..d52860fe 100644 --- a/packages/cli/src/config/config.models.ts +++ b/packages/cli/src/config/config.models.ts @@ -2,7 +2,7 @@ import Conf from 'conf'; import picocolors from 'picocolors'; import { configDefinition } from './config.constants'; -export { createConfigBindings, setConfig, getConfig, deleteConfig, resetConfig }; +export { createConfigBindings, deleteConfig, getConfig, resetConfig, setConfig }; type ConfigKey = keyof typeof configDefinition | (string & {}); const config = new Conf>({ projectName: 'enclosed' }); diff --git a/packages/cli/src/create-note/create-note.command.ts b/packages/cli/src/create-note/create-note.command.ts index bd4ad8a5..1474d6bc 100644 --- a/packages/cli/src/create-note/create-note.command.ts +++ b/packages/cli/src/create-note/create-note.command.ts @@ -1,10 +1,10 @@ -import { defineCommand, showUsage } from 'citty'; import { createNote } from '@enclosed/lib'; +import { defineCommand, showUsage } from 'citty'; import ora from 'ora'; import pc from 'picocolors'; -import { looksLikeRateLimitError } from '../shared/http.models'; -import { readFromStdin } from '../shared/cli.models'; import { getInstanceUrl } from '../config/config.usecases'; +import { readFromStdin } from '../shared/cli.models'; +import { looksLikeRateLimitError } from '../shared/http.models'; const ONE_HOUR_IN_SECONDS = 60 * 60; diff --git a/packages/cli/src/view-note/view-note.command.ts b/packages/cli/src/view-note/view-note.command.ts index 0dfe1cd1..aac2c632 100644 --- a/packages/cli/src/view-note/view-note.command.ts +++ b/packages/cli/src/view-note/view-note.command.ts @@ -1,5 +1,5 @@ -import { defineCommand } from 'citty'; import { decryptNote, fetchNote, isApiClientErrorWithStatusCode, parseNoteUrl } from '@enclosed/lib'; +import { defineCommand } from 'citty'; import picocolors from 'picocolors'; import { getInstanceUrl } from '../config/config.usecases'; import { promptForPassword } from './view-note.models'; diff --git a/packages/lib/package.json b/packages/lib/package.json index 8937519d..9a1c9e69 100644 --- a/packages/lib/package.json +++ b/packages/lib/package.json @@ -83,12 +83,12 @@ "ofetch": "^1.3.4" }, "devDependencies": { - "@antfu/eslint-config": "^2.27.0", + "@antfu/eslint-config": "^3.0.0", "@types/lodash-es": "^4.17.12", "@types/node": "^22.5.4", "@vitest/coverage-v8": "^2.0.5", "dotenv": "^16.4.5", - "eslint": "^9.9.0", + "eslint": "^9.10.0", "tsx": "^4.17.0", "typescript": "^5.5.4", "unbuild": "^2.0.0", diff --git a/packages/lib/src/api/api.models.ts b/packages/lib/src/api/api.models.ts index ed788f17..aa41c142 100644 --- a/packages/lib/src/api/api.models.ts +++ b/packages/lib/src/api/api.models.ts @@ -1,6 +1,6 @@ import { get, isError } from 'lodash-es'; -export { isApiClientErrorWithStatusCode, isApiClientErrorWithCode }; +export { isApiClientErrorWithCode, isApiClientErrorWithStatusCode }; function isApiClientErrorWithStatusCode({ error, statusCode }: { error: unknown; statusCode: number }): boolean { if (!isError(error)) { diff --git a/packages/lib/src/crypto/crypto.usecases.ts b/packages/lib/src/crypto/crypto.usecases.ts index c8e935b3..4a4d3dd9 100644 --- a/packages/lib/src/crypto/crypto.usecases.ts +++ b/packages/lib/src/crypto/crypto.usecases.ts @@ -1,10 +1,10 @@ import type { NoteAsset } from '../notes/notes.types'; import type { EncryptionAlgorithm } from './crypto.types'; -import { getParsingMethod, getSerializationMethod } from './serialization/serialization.registry'; import type { SerializationFormat } from './serialization/serialization.types'; +import { getParsingMethod, getSerializationMethod } from './serialization/serialization.registry'; import { base64UrlToBuffer, bufferToBase64Url } from './web/crypto.web.models'; -export { createEncryptUsecase, createDecryptUsecase }; +export { createDecryptUsecase, createEncryptUsecase }; function createEncryptUsecase({ generateBaseKey, diff --git a/packages/lib/src/crypto/encryption-algorithms/encryption-algorithms.registry.ts b/packages/lib/src/crypto/encryption-algorithms/encryption-algorithms.registry.ts index ea02516c..288bcb92 100644 --- a/packages/lib/src/crypto/encryption-algorithms/encryption-algorithms.registry.ts +++ b/packages/lib/src/crypto/encryption-algorithms/encryption-algorithms.registry.ts @@ -1,5 +1,5 @@ -import { keyBy } from 'lodash-es'; import type { EncryptionMethodsDefinition } from './encryption-algorithms.types'; +import { keyBy } from 'lodash-es'; export { createEncryptionAlgorithmsRegistry }; diff --git a/packages/lib/src/crypto/node/crypto.node.models.ts b/packages/lib/src/crypto/node/crypto.node.models.ts index 79bcc1f7..d26b1f6c 100644 --- a/packages/lib/src/crypto/node/crypto.node.models.ts +++ b/packages/lib/src/crypto/node/crypto.node.models.ts @@ -1,6 +1,6 @@ import { Buffer } from 'node:buffer'; -export { bufferToBase64Url, base64UrlToBuffer }; +export { base64UrlToBuffer, bufferToBase64Url }; function bufferToBase64Url({ buffer }: { buffer: Uint8Array }): string { const base64Url = Buffer.from(buffer).toString('base64url'); diff --git a/packages/lib/src/crypto/node/crypto.node.usecases.ts b/packages/lib/src/crypto/node/crypto.node.usecases.ts index 5ef02e1c..c1e0b38d 100644 --- a/packages/lib/src/crypto/node/crypto.node.usecases.ts +++ b/packages/lib/src/crypto/node/crypto.node.usecases.ts @@ -1,9 +1,9 @@ import { pbkdf2, randomBytes } from 'node:crypto'; -import { TextEncoder, promisify } from 'node:util'; +import { promisify, TextEncoder } from 'node:util'; -export { getEncryptionMethod, getDecryptionMethod } from './encryption-algorithms/encryption-algorithms.registry'; +export { getDecryptionMethod, getEncryptionMethod } from './encryption-algorithms/encryption-algorithms.registry'; -export { generateBaseKey, deriveMasterKey, createRandomBuffer }; +export { createRandomBuffer, deriveMasterKey, generateBaseKey }; const deriveWithPbkdf2 = promisify(pbkdf2); diff --git a/packages/lib/src/crypto/serialization/cbor-array/cbor-array.serialization.ts b/packages/lib/src/crypto/serialization/cbor-array/cbor-array.serialization.ts index a0aa8779..26598756 100644 --- a/packages/lib/src/crypto/serialization/cbor-array/cbor-array.serialization.ts +++ b/packages/lib/src/crypto/serialization/cbor-array/cbor-array.serialization.ts @@ -1,5 +1,5 @@ -import { decode, encode } from 'cbor-x'; import type { Note } from '../../../notes/notes.types'; +import { decode, encode } from 'cbor-x'; import { defineSerializationMethods } from '../serialization.models'; export const cborArraySerializationDefinition = defineSerializationMethods({ diff --git a/packages/lib/src/crypto/serialization/serialization.registry.ts b/packages/lib/src/crypto/serialization/serialization.registry.ts index 4d05c2ec..da3374ec 100644 --- a/packages/lib/src/crypto/serialization/serialization.registry.ts +++ b/packages/lib/src/crypto/serialization/serialization.registry.ts @@ -1,8 +1,8 @@ +import type { SerializationFormat, SerializationMethodsDefinition } from './serialization.types'; import { keyBy, map } from 'lodash-es'; import { cborArraySerializationDefinition } from './cbor-array/cbor-array.serialization'; -import type { SerializationFormat, SerializationMethodsDefinition } from './serialization.types'; -export { getSerializationMethod, getParsingMethod }; +export { getParsingMethod, getSerializationMethod }; export const serializationMethodDefinitions = [ cborArraySerializationDefinition, diff --git a/packages/lib/src/crypto/serialization/serialization.test-utils.ts b/packages/lib/src/crypto/serialization/serialization.test-utils.ts index 2891f7ca..066e3f9b 100644 --- a/packages/lib/src/crypto/serialization/serialization.test-utils.ts +++ b/packages/lib/src/crypto/serialization/serialization.test-utils.ts @@ -1,5 +1,5 @@ -import { describe, expect, test } from 'vitest'; import type { Note } from '../../notes/notes.types'; +import { describe, expect, test } from 'vitest'; export { runCommonSerializationTests }; diff --git a/packages/lib/src/crypto/web/crypto.web.models.ts b/packages/lib/src/crypto/web/crypto.web.models.ts index 4ce1753b..8b565b3e 100644 --- a/packages/lib/src/crypto/web/crypto.web.models.ts +++ b/packages/lib/src/crypto/web/crypto.web.models.ts @@ -1,4 +1,4 @@ -export { bufferToBase64Url, base64UrlToBuffer }; +export { base64UrlToBuffer, bufferToBase64Url }; function bufferToBase64Url({ buffer }: { buffer: Uint8Array }): string { let binaryString = ''; diff --git a/packages/lib/src/crypto/web/crypto.web.usecases.ts b/packages/lib/src/crypto/web/crypto.web.usecases.ts index 97e0cf93..a6635d18 100644 --- a/packages/lib/src/crypto/web/crypto.web.usecases.ts +++ b/packages/lib/src/crypto/web/crypto.web.usecases.ts @@ -1,6 +1,6 @@ -export { generateBaseKey, deriveMasterKey, createRandomBuffer }; +export { createRandomBuffer, deriveMasterKey, generateBaseKey }; -export { getEncryptionMethod, getDecryptionMethod } from './encryption-algorithms/encryption-algorithms.registry'; +export { getDecryptionMethod, getEncryptionMethod } from './encryption-algorithms/encryption-algorithms.registry'; function createRandomBuffer({ length = 16 }: { length?: number } = {}): Uint8Array { const randomValues = new Uint8Array(length); diff --git a/packages/lib/src/files/files.models.ts b/packages/lib/src/files/files.models.ts index 90f5521b..1c61045a 100644 --- a/packages/lib/src/files/files.models.ts +++ b/packages/lib/src/files/files.models.ts @@ -1,7 +1,7 @@ -import { get } from 'lodash-es'; import type { NoteAsset } from '../notes/notes.types'; +import { get } from 'lodash-es'; -export { fileToNoteAsset, filesToNoteAssets, noteAssetToFile, noteAssetsToFiles }; +export { filesToNoteAssets, fileToNoteAsset, noteAssetsToFiles, noteAssetToFile }; async function fileToNoteAsset({ file }: { file: File }): Promise { const content = new Uint8Array(await file.arrayBuffer()); diff --git a/packages/lib/src/index.node.ts b/packages/lib/src/index.node.ts index a86844dd..c9f2c233 100644 --- a/packages/lib/src/index.node.ts +++ b/packages/lib/src/index.node.ts @@ -1,12 +1,12 @@ -import { createEnclosedLib } from './notes/notes.usecases'; -import { deriveMasterKey, generateBaseKey } from './crypto/node/crypto.node.usecases'; -import { fetchNote, storeNote } from './notes/notes.services'; -import { createDecryptUsecase, createEncryptUsecase } from './crypto/crypto.usecases'; import { isApiClientErrorWithCode, isApiClientErrorWithStatusCode } from './api/api.models'; -import { fileToNoteAsset, filesToNoteAssets, noteAssetToFile, noteAssetsToFiles } from './files/files.models'; +import { createDecryptUsecase, createEncryptUsecase } from './crypto/crypto.usecases'; +import { deriveMasterKey, generateBaseKey } from './crypto/node/crypto.node.usecases'; import { encryptionAlgorithms, getDecryptionMethod, getEncryptionMethod } from './crypto/node/encryption-algorithms/encryption-algorithms.registry'; import { serializationFormats } from './crypto/serialization/serialization.registry'; +import { filesToNoteAssets, fileToNoteAsset, noteAssetsToFiles, noteAssetToFile } from './files/files.models'; import { createNoteUrlHashFragment, parseNoteUrlHashFragment } from './notes/notes.models'; +import { fetchNote, storeNote } from './notes/notes.services'; +import { createEnclosedLib } from './notes/notes.usecases'; const { encryptNote } = createEncryptUsecase({ generateBaseKey, deriveMasterKey, getEncryptionMethod }); const { decryptNote } = createDecryptUsecase({ deriveMasterKey, getDecryptionMethod }); @@ -14,21 +14,21 @@ const { decryptNote } = createDecryptUsecase({ deriveMasterKey, getDecryptionMet const { createNote, createNoteUrl, parseNoteUrl } = createEnclosedLib({ encryptNote, storeNote }); export { + createNote, + createNoteUrl, + createNoteUrlHashFragment, + decryptNote, + encryptionAlgorithms, + encryptNote, fetchNote, - storeNote, - isApiClientErrorWithStatusCode, - isApiClientErrorWithCode, - fileToNoteAsset, filesToNoteAssets, - noteAssetToFile, + fileToNoteAsset, + isApiClientErrorWithCode, + isApiClientErrorWithStatusCode, noteAssetsToFiles, - encryptNote, - decryptNote, - createNote, - createNoteUrl, + noteAssetToFile, parseNoteUrl, - serializationFormats, - encryptionAlgorithms, parseNoteUrlHashFragment, - createNoteUrlHashFragment, + serializationFormats, + storeNote, }; diff --git a/packages/lib/src/index.web.ts b/packages/lib/src/index.web.ts index 4812cab1..d8d286b2 100644 --- a/packages/lib/src/index.web.ts +++ b/packages/lib/src/index.web.ts @@ -1,12 +1,12 @@ -import { createEnclosedLib } from './notes/notes.usecases'; -import { deriveMasterKey, generateBaseKey } from './crypto/web/crypto.web.usecases'; -import { fetchNote, storeNote } from './notes/notes.services'; -import { createDecryptUsecase, createEncryptUsecase } from './crypto/crypto.usecases'; import { isApiClientErrorWithCode, isApiClientErrorWithStatusCode } from './api/api.models'; -import { fileToNoteAsset, filesToNoteAssets, noteAssetToFile, noteAssetsToFiles } from './files/files.models'; -import { encryptionAlgorithms, getDecryptionMethod, getEncryptionMethod } from './crypto/web/encryption-algorithms/encryption-algorithms.registry'; +import { createDecryptUsecase, createEncryptUsecase } from './crypto/crypto.usecases'; import { serializationFormats } from './crypto/serialization/serialization.registry'; +import { deriveMasterKey, generateBaseKey } from './crypto/web/crypto.web.usecases'; +import { encryptionAlgorithms, getDecryptionMethod, getEncryptionMethod } from './crypto/web/encryption-algorithms/encryption-algorithms.registry'; +import { filesToNoteAssets, fileToNoteAsset, noteAssetsToFiles, noteAssetToFile } from './files/files.models'; import { createNoteUrlHashFragment, parseNoteUrlHashFragment } from './notes/notes.models'; +import { fetchNote, storeNote } from './notes/notes.services'; +import { createEnclosedLib } from './notes/notes.usecases'; const { encryptNote } = createEncryptUsecase({ generateBaseKey, deriveMasterKey, getEncryptionMethod }); const { decryptNote } = createDecryptUsecase({ deriveMasterKey, getDecryptionMethod }); @@ -14,21 +14,21 @@ const { decryptNote } = createDecryptUsecase({ deriveMasterKey, getDecryptionMet const { createNote, createNoteUrl, parseNoteUrl } = createEnclosedLib({ encryptNote, storeNote }); export { + createNote, + createNoteUrl, + createNoteUrlHashFragment, + decryptNote, + encryptionAlgorithms, + encryptNote, fetchNote, - storeNote, - isApiClientErrorWithStatusCode, - isApiClientErrorWithCode, - fileToNoteAsset, filesToNoteAssets, - noteAssetToFile, + fileToNoteAsset, + isApiClientErrorWithCode, + isApiClientErrorWithStatusCode, noteAssetsToFiles, - encryptNote, - decryptNote, - createNote, - createNoteUrl, + noteAssetToFile, parseNoteUrl, - serializationFormats, - encryptionAlgorithms, parseNoteUrlHashFragment, - createNoteUrlHashFragment, + serializationFormats, + storeNote, }; diff --git a/packages/lib/src/notes/notes.models.ts b/packages/lib/src/notes/notes.models.ts index 40aaedd6..f3ac5088 100644 --- a/packages/lib/src/notes/notes.models.ts +++ b/packages/lib/src/notes/notes.models.ts @@ -1,6 +1,6 @@ import { isEmpty } from 'lodash-es'; -export { createNoteUrl, parseNoteUrl, createNoteUrlHashFragment, parseNoteUrlHashFragment }; +export { createNoteUrl, createNoteUrlHashFragment, parseNoteUrl, parseNoteUrlHashFragment }; function createNoteUrlHashFragment({ encryptionKey, isPasswordProtected }: { encryptionKey: string; isPasswordProtected?: boolean }) { const hashFragment = [ diff --git a/packages/lib/src/notes/notes.services.ts b/packages/lib/src/notes/notes.services.ts index d986eb82..d85d555c 100644 --- a/packages/lib/src/notes/notes.services.ts +++ b/packages/lib/src/notes/notes.services.ts @@ -1,6 +1,6 @@ import { apiClient } from '../api/api.client'; -export { storeNote, fetchNote }; +export { fetchNote, storeNote }; async function storeNote({ payload, diff --git a/packages/lib/src/notes/notes.usecases.ts b/packages/lib/src/notes/notes.usecases.ts index c224ab0a..6d39c50b 100644 --- a/packages/lib/src/notes/notes.usecases.ts +++ b/packages/lib/src/notes/notes.usecases.ts @@ -1,7 +1,7 @@ import type { EncryptionAlgorithm } from '../crypto/crypto.types'; import type { SerializationFormat } from '../crypto/serialization/serialization.types'; -import { createNoteUrl as createNoteUrlImpl, parseNoteUrl } from './notes.models'; import type { NoteAsset } from './notes.types'; +import { createNoteUrl as createNoteUrlImpl, parseNoteUrl } from './notes.models'; export { createEnclosedLib }; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6f02817d..45daaa37 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -52,8 +52,8 @@ importers: version: 1.1.0(@unocss/preset-wind@0.62.3)(unocss@0.62.3(postcss@8.4.45)(rollup@4.21.3)(vite@5.4.4(@types/node@22.5.4)(terser@5.32.0))) devDependencies: '@antfu/eslint-config': - specifier: ^2.27.0 - version: 2.27.3(@typescript-eslint/utils@8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2))(@vue/compiler-sfc@3.5.4)(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2)(vitest@2.1.0(@types/node@22.5.4)(jsdom@25.0.0)(terser@5.32.0)) + specifier: ^3.0.0 + version: 3.6.0(@typescript-eslint/utils@8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2))(@vue/compiler-sfc@3.5.4)(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2)(vitest@2.1.0(@types/node@22.5.4)(jsdom@25.0.0)(terser@5.32.0)) '@iconify-json/tabler': specifier: ^1.1.120 version: 1.2.2 @@ -61,7 +61,7 @@ importers: specifier: ^4.17.12 version: 4.17.12 eslint: - specifier: ^9.9.0 + specifier: ^9.10.0 version: 9.10.0(jiti@1.21.6) jsdom: specifier: ^25.0.0 @@ -122,8 +122,8 @@ importers: version: 3.23.8 devDependencies: '@antfu/eslint-config': - specifier: ^2.27.0 - version: 2.27.3(@typescript-eslint/utils@8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2))(@vue/compiler-sfc@3.5.4)(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2)(vitest@2.1.0(@types/node@22.5.4)(jsdom@25.0.0)(terser@5.32.0)) + specifier: ^3.0.0 + version: 3.6.0(@typescript-eslint/utils@8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2))(@vue/compiler-sfc@3.5.4)(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2)(vitest@2.1.0(@types/node@22.5.4)(jsdom@25.0.0)(terser@5.32.0)) '@cloudflare/workers-types': specifier: ^4.20240821.1 version: 4.20240909.0 @@ -146,7 +146,7 @@ importers: specifier: ^0.23.1 version: 0.23.1 eslint: - specifier: ^9.9.0 + specifier: ^9.10.0 version: 9.10.0(jiti@1.21.6) pino-pretty: specifier: ^11.2.2 @@ -198,8 +198,8 @@ importers: version: 3.23.8 devDependencies: '@antfu/eslint-config': - specifier: ^2.27.0 - version: 2.27.3(@typescript-eslint/utils@8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2))(@vue/compiler-sfc@3.5.4)(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2)(vitest@2.1.0(@types/node@22.5.4)(jsdom@25.0.0)(terser@5.32.0)) + specifier: ^3.0.0 + version: 3.6.0(@typescript-eslint/utils@8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2))(@vue/compiler-sfc@3.5.4)(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2)(vitest@2.1.0(@types/node@22.5.4)(jsdom@25.0.0)(terser@5.32.0)) '@types/lodash-es': specifier: ^4.17.12 version: 4.17.12 @@ -210,7 +210,7 @@ importers: specifier: ^16.4.5 version: 16.4.5 eslint: - specifier: ^9.9.0 + specifier: ^9.10.0 version: 9.10.0(jiti@1.21.6) typescript: specifier: ^5.5.4 @@ -246,8 +246,8 @@ importers: version: 1.3.4 devDependencies: '@antfu/eslint-config': - specifier: ^2.27.0 - version: 2.27.3(@typescript-eslint/utils@8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2))(@vue/compiler-sfc@3.5.4)(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2)(vitest@2.1.0(@types/node@22.5.4)(jsdom@25.0.0)(terser@5.32.0)) + specifier: ^3.0.0 + version: 3.6.0(@typescript-eslint/utils@8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2))(@vue/compiler-sfc@3.5.4)(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2)(vitest@2.1.0(@types/node@22.5.4)(jsdom@25.0.0)(terser@5.32.0)) '@types/lodash-es': specifier: ^4.17.12 version: 4.17.12 @@ -261,7 +261,7 @@ importers: specifier: ^16.4.5 version: 16.4.5 eslint: - specifier: ^9.9.0 + specifier: ^9.10.0 version: 9.10.0(jiti@1.21.6) tsx: specifier: ^4.17.0 @@ -367,20 +367,20 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} - '@antfu/eslint-config@2.27.3': - resolution: {integrity: sha512-Y2Vh/LvPAaYoyLwCiZHJ7p76LEIGg6debeUA4Qs+KOrlGuXLQWRmdZlC6SB33UDNzXqkFeaXAlEcYUqvYoiMKA==} + '@antfu/eslint-config@3.6.0': + resolution: {integrity: sha512-37gp57en8gaLllXmpyOMOpAjC75DoOH+8iX7WZqkeOW4oVgI3qtw9Ay1lvbzliRR3a6doBiWMWFXHyX8LTa9Tg==} hasBin: true peerDependencies: '@eslint-react/eslint-plugin': ^1.5.8 '@prettier/plugin-xml': ^3.4.1 '@unocss/eslint-plugin': '>=0.50.0' astro-eslint-parser: ^1.0.2 - eslint: '>=8.40.0' + eslint: ^9.10.0 eslint-plugin-astro: ^1.2.0 eslint-plugin-format: '>=0.1.0' eslint-plugin-react-hooks: ^4.6.0 eslint-plugin-react-refresh: ^0.4.4 - eslint-plugin-solid: ^0.13.2 + eslint-plugin-solid: ^0.14.3 eslint-plugin-svelte: '>=2.35.1' prettier-plugin-astro: ^0.13.0 prettier-plugin-slidev: ^1.0.5 @@ -686,10 +686,6 @@ packages: search-insights: optional: true - '@es-joy/jsdoccomment@0.43.1': - resolution: {integrity: sha512-I238eDtOolvCuvtxrnqtlBaw0BwdQuYqK7eA6XIonicMdOOOb75mqdIzkGDUbS04+1Di007rgm9snFRNeVrOog==} - engines: {node: '>=16'} - '@es-joy/jsdoccomment@0.48.0': resolution: {integrity: sha512-G6QUWIcC+KvSwXNsJyDTHvqUdNoAVJPPgkc3+Uk4WBKqZvoXhlvazOgm9aL0HwihJLQf0l+tOE2UFzXBqCqgDw==} engines: {node: '>=16'} @@ -1272,6 +1268,10 @@ packages: resolution: {integrity: sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + '@eslint/compat@1.1.1': + resolution: {integrity: sha512-lpHyRyplhGPL5mGEh6M9O5nnKk0Gz4bFI+Zu6tKlPpDUN7XshWvH9C/px4UVm87IAANE0W81CEsNGbS1KlzXpA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/config-array@0.18.0': resolution: {integrity: sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -1284,6 +1284,12 @@ packages: resolution: {integrity: sha512-fuXtbiP5GWIn8Fz+LWoOMVf/Jxm+aajZYkhi6CuEm4SxymFM+eUWzbO9qXT+L0iCkL5+KGYMCSGxo686H19S1g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/markdown@6.1.0': + resolution: {integrity: sha512-cX1tyD+aIbhzKrCKe/9M5s2jZhldWGOR+cy7cIVpxG9RkoaN4XU+gG3dy6oEKtBFXjDx06GtP0OGO7jgbqa2DA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: '>=9' + '@eslint/object-schema@2.1.4': resolution: {integrity: sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -1774,31 +1780,8 @@ packages: peerDependencies: solid-js: ^1.8.6 - '@stylistic/eslint-plugin-js@2.6.4': - resolution: {integrity: sha512-kx1hS3xTvzxZLdr/DCU/dLBE++vcP97sHeEFX2QXhk1Ipa4K1rzPOLw1HCbf4mU3s+7kHP5eYpDe+QteEOFLug==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: '>=8.40.0' - - '@stylistic/eslint-plugin-jsx@2.6.4': - resolution: {integrity: sha512-bIvVhdtjmyu3S10V7QRIuawtCZSq9gRmzAX23ucjCOdSFzEwlq+di0IM0riBAvvQerrJL4SM6G3xgyPs8BSXIA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: '>=8.40.0' - - '@stylistic/eslint-plugin-plus@2.6.4': - resolution: {integrity: sha512-EuRvtxhf7Hv8OoMIePulP/6rBJIgPTu1l5GAm1780WcF1Cl8bOZXIn84Pdac5pNv6lVlzCOFm8MD3VE+2YROuA==} - peerDependencies: - eslint: '*' - - '@stylistic/eslint-plugin-ts@2.6.4': - resolution: {integrity: sha512-yxL8Hj6WkObw1jfiLpBzKy5yfxY6vwlwO4miq34ySErUjUecPV5jxfVbOe4q1QDPKemQGPq93v7sAQS5PzM8lA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: '>=8.40.0' - - '@stylistic/eslint-plugin@2.6.4': - resolution: {integrity: sha512-euUGnjzH8EOqEYTGk9dB2OBINp0FX1nuO7/k4fO82zNRBIKZgJoDwTLM4Ce+Om6W1Qmh1PrZjCr4jh4tMEXGPQ==} + '@stylistic/eslint-plugin@2.8.0': + resolution: {integrity: sha512-Ufvk7hP+bf+pD35R/QfunF793XlSRIC7USr3/EdgduK9j13i2JjmsM0LUz3/foS+jDYp2fzyWZA9N44CPur0Ow==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: '>=8.40.0' @@ -1825,11 +1808,8 @@ packages: '@types/babel__traverse@7.20.6': resolution: {integrity: sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==} - '@types/eslint@8.56.12': - resolution: {integrity: sha512-03ruubjWyOHlmljCVoxSuNDdmfZDzsrrz0P2LeJsOXr+ZwFQ+0yQIwNCwt/GYhV7Z31fgtXJTAEs+FYlEL851g==} - - '@types/eslint@9.6.1': - resolution: {integrity: sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==} + '@types/debug@4.1.12': + resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} '@types/estree@1.0.5': resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} @@ -1840,9 +1820,6 @@ packages: '@types/hast@3.0.4': resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} - '@types/json-schema@7.0.15': - resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} - '@types/jsonfile@6.1.4': resolution: {integrity: sha512-D5qGUYwjvnNNextdU59/+fI+spnwtTFmyQP0h+PfIOSkNfpU6AOICUOkm4i0OnSk+NyjdPJrxCDro0sJsWlRpQ==} @@ -1858,12 +1835,15 @@ packages: '@types/markdown-it@14.1.2': resolution: {integrity: sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==} - '@types/mdast@3.0.15': - resolution: {integrity: sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==} + '@types/mdast@4.0.4': + resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} '@types/mdurl@2.0.0': resolution: {integrity: sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==} + '@types/ms@0.7.34': + resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==} + '@types/mute-stream@0.0.4': resolution: {integrity: sha512-CPM9nzrCPPJHQNA9keH9CVkVI+WR5kMa+7XEs5jcGQ0VoAGnLv242w8lIVgwAEfmE4oufJRaTc9PNLQl0ioAow==} @@ -1885,14 +1865,17 @@ packages: '@types/unist@2.0.11': resolution: {integrity: sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==} + '@types/unist@3.0.3': + resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} + '@types/web-bluetooth@0.0.20': resolution: {integrity: sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==} '@types/wrap-ansi@3.0.0': resolution: {integrity: sha512-ltIpx+kM7g/MLRZfkbL7EsCEjfzCcScLpkg37eXEtx5kmrAKBkTJwd1GIAjDSL8wTpM6Hzn5YO4pSb91BEwu1g==} - '@typescript-eslint/eslint-plugin@8.3.0': - resolution: {integrity: sha512-FLAIn63G5KH+adZosDYiutqkOkYEx0nvcwNNfJAf+c7Ae/H35qWwTYvPZUKFj5AS+WfHG/WJJfWnDnyNUlp8UA==} + '@typescript-eslint/eslint-plugin@8.5.0': + resolution: {integrity: sha512-lHS5hvz33iUFQKuPFGheAB84LwcJ60G8vKnEhnfcK1l8kGVLro2SFYW6K0/tj8FUhRJ0VHyg1oAfg50QGbPPHw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 @@ -1902,8 +1885,8 @@ packages: typescript: optional: true - '@typescript-eslint/parser@8.3.0': - resolution: {integrity: sha512-h53RhVyLu6AtpUzVCYLPhZGL5jzTD9fZL+SYf/+hYOx2bDkyQXztXSc4tbvKYHzfMXExMLiL9CWqJmVz6+78IQ==} + '@typescript-eslint/parser@8.5.0': + resolution: {integrity: sha512-gF77eNv0Xz2UJg/NbpWJ0kqAm35UMsvZf1GHj8D9MRFTj/V3tAciIWXfmPLsAAF/vUlpWPvUDyH1jjsr0cMVWw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -1912,16 +1895,12 @@ packages: typescript: optional: true - '@typescript-eslint/scope-manager@8.3.0': - resolution: {integrity: sha512-mz2X8WcN2nVu5Hodku+IR8GgCOl4C0G/Z1ruaWN4dgec64kDBabuXyPAr+/RgJtumv8EEkqIzf3X2U5DUKB2eg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/scope-manager@8.5.0': resolution: {integrity: sha512-06JOQ9Qgj33yvBEx6tpC8ecP9o860rsR22hWMEd12WcTRrfaFgHr2RB/CA/B+7BMhHkXT4chg2MyboGdFGawYg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/type-utils@8.3.0': - resolution: {integrity: sha512-wrV6qh//nLbfXZQoj32EXKmwHf4b7L+xXLrP3FZ0GOUU72gSvLjeWUl5J5Ue5IwRxIV1TfF73j/eaBapxx99Lg==} + '@typescript-eslint/type-utils@8.5.0': + resolution: {integrity: sha512-N1K8Ix+lUM+cIDhL2uekVn/ZD7TZW+9/rwz8DclQpcQ9rk4sIL5CAlBC0CugWKREmDjBzI/kQqU4wkg46jWLYA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '*' @@ -1929,27 +1908,10 @@ packages: typescript: optional: true - '@typescript-eslint/types@7.18.0': - resolution: {integrity: sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==} - engines: {node: ^18.18.0 || >=20.0.0} - - '@typescript-eslint/types@8.3.0': - resolution: {integrity: sha512-y6sSEeK+facMaAyixM36dQ5NVXTnKWunfD1Ft4xraYqxP0lC0POJmIaL/mw72CUMqjY9qfyVfXafMeaUj0noWw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/types@8.5.0': resolution: {integrity: sha512-qjkormnQS5wF9pjSi6q60bKUHH44j2APxfh9TQRXK8wbYVeDYYdYJGIROL87LGZZ2gz3Rbmjc736qyL8deVtdw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.3.0': - resolution: {integrity: sha512-Mq7FTHl0R36EmWlCJWojIC1qn/ZWo2YiWYc1XVtasJ7FIgjo0MVv9rZWXEE7IK2CGrtwe1dVOxWwqXUdNgfRCA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - '@typescript-eslint/typescript-estree@8.5.0': resolution: {integrity: sha512-vEG2Sf9P8BPQ+d0pxdfndw3xIXaoSjliG0/Ejk7UggByZPKXmJmw3GW5jV2gHNQNawBUyfahoSiCFVov0Ruf7Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -1959,22 +1921,12 @@ packages: typescript: optional: true - '@typescript-eslint/utils@8.3.0': - resolution: {integrity: sha512-F77WwqxIi/qGkIGOGXNBLV7nykwfjLsdauRB/DOFPdv6LTF3BHHkBpq81/b5iMPSF055oO2BiivDJV4ChvNtXA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - '@typescript-eslint/utils@8.5.0': resolution: {integrity: sha512-6yyGYVL0e+VzGYp60wvkBHiqDWOpT63pdMV2CVG4LVDd5uR6q1qQN/7LafBZtAtNIn/mqXjsSeS5ggv/P0iECw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 - '@typescript-eslint/visitor-keys@8.3.0': - resolution: {integrity: sha512-RmZwrTbQ9QveF15m/Cl28n0LXD6ea2CjkhH5rQ55ewz3H24w+AMCJHPVYaZ8/0HoG8Z3cLLFFycRXxeO2tz9FA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/visitor-keys@8.5.0': resolution: {integrity: sha512-yTPqMnbAZJNy2Xq2XU8AdtOW9tJIr+UQb64aXB9f3B1498Zx9JorVgFJcZpEc9UBuCCrdzKID2RGAMkYcDtZOw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -2081,8 +2033,8 @@ packages: '@vitest/browser': optional: true - '@vitest/eslint-plugin@1.0.5': - resolution: {integrity: sha512-F4zlKv5S/aG3kiFyJHbkbInKfGuIs3muDnpNfr62g8tV0ALbP/MYjLKWN92olLCtWUb2cKl0pew0gKkkoHEUqw==} + '@vitest/eslint-plugin@1.1.1': + resolution: {integrity: sha512-NhiTZRs4cgEEkOCu1EyYipmODdn1pOOxxioGA3HzFXsl30veaIYVt1aFxxZj8XCmvuHdPG1LS1b0CnGcgGPvxw==} peerDependencies: '@typescript-eslint/utils': '>= 8.0' eslint: '>= 8.57.0' @@ -2427,6 +2379,9 @@ packages: cbor-x@1.6.0: resolution: {integrity: sha512-0kareyRwHSkL6ws5VXHEf8uY1liitysCVJjlmhaLG+IXLqhSaOO+t63coaso7yjwEzWZzLy8fJo06gZDVQM9Qg==} + ccount@2.0.1: + resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} + chai@5.1.1: resolution: {integrity: sha512-pT1ZgP8rPNqUgieVaEY+ryQr6Q4HXNg8Ei9UnLUrjN4IA7dvQC5JB+/kxVcPNDHyBcc/26CXPkbNzq3qwrOEKA==} engines: {node: '>=12'} @@ -2443,14 +2398,8 @@ packages: resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} - character-entities-legacy@1.1.4: - resolution: {integrity: sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==} - - character-entities@1.2.4: - resolution: {integrity: sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==} - - character-reference-invalid@1.1.4: - resolution: {integrity: sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==} + character-entities@2.0.2: + resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} chardet@0.7.0: resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} @@ -2547,7 +2496,7 @@ packages: resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} concat-map@0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=} conf@13.0.1: resolution: {integrity: sha512-l9Uwc9eOnz39oADzGO2cSBDi7siv8lwO+31ocQ2nOJijnDiW3pxqm9VV10DPYUO28wW83DjABoUqY1nfHRR2hQ==} @@ -2684,6 +2633,9 @@ packages: decimal.js@10.4.3: resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} + decode-named-character-reference@1.0.2: + resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==} + deep-eql@5.0.2: resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} engines: {node: '>=6'} @@ -2702,6 +2654,10 @@ packages: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} + dequal@2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} + destr@2.0.3: resolution: {integrity: sha512-2N3BOUU4gYMpTP24s5rF5iP7BDr7uNTCs4ozw3kf/eKfvWSIu93GEBi5m427YoyJoeOzQ5smuu4nNAPGb8idSQ==} @@ -2714,6 +2670,9 @@ packages: resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==} engines: {node: '>=8'} + devlop@1.1.0: + resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} + dir-glob@3.0.1: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} @@ -2814,17 +2773,23 @@ packages: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} + escape-string-regexp@5.0.0: + resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} + engines: {node: '>=12'} + eslint-compat-utils@0.5.1: resolution: {integrity: sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q==} engines: {node: '>=12'} peerDependencies: eslint: '>=6.0.0' - eslint-config-flat-gitignore@0.1.8: - resolution: {integrity: sha512-OEUbS2wzzYtUfshjOqzFo4Bl4lHykXUdM08TCnYNl7ki+niW4Q1R0j0FDFDr0vjVsI5ZFOz5LvluxOP+Ew+dYw==} + eslint-config-flat-gitignore@0.3.0: + resolution: {integrity: sha512-0Ndxo4qGhcewjTzw52TK06Mc00aDtHNTdeeW2JfONgDcLkRO/n/BteMRzNVpLQYxdCC/dFEilfM9fjjpGIJ9Og==} + peerDependencies: + eslint: ^9.5.0 - eslint-flat-config-utils@0.3.1: - resolution: {integrity: sha512-eFT3EaoJN1hlN97xw4FIEX//h0TiFUobgl2l5uLkIwhVN9ahGq95Pbs+i1/B5UACA78LO3rco3JzuvxLdTUOPA==} + eslint-flat-config-utils@0.4.0: + resolution: {integrity: sha512-kfd5kQZC+BMO0YwTol6zxjKX1zAsk8JfSAopbKjKqmENTJcew+yBejuvccAg37cvOrN0Mh+DVbeyznuNWEjt4A==} eslint-import-resolver-node@0.3.9: resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} @@ -2834,13 +2799,13 @@ packages: peerDependencies: eslint: '*' - eslint-plugin-antfu@2.3.6: - resolution: {integrity: sha512-31VwbU1Yd4BFNUUPQEazKyP79f3c+ohJtq5iZIuw38JjkRQdQAcF/31Kjr0DOKZXVDkeeNPrttKidrr3xhnhOA==} + eslint-plugin-antfu@2.6.0: + resolution: {integrity: sha512-4dz0VgWGpZ6jUSEUPSI6OGFqBc+P8c7zFFXht5t+YwzIvBsruqVX7Hjl3I8KNNEyJmA4fL3+GIc+EWU1woTp1A==} peerDependencies: eslint: '*' - eslint-plugin-command@0.2.3: - resolution: {integrity: sha512-1bBYNfjZg60N2ZpLV5ATYSYyueIJ+zl5yKrTs0UFDdnyu07dNSZ7Xplnc+Wb6SXTdc1sIaoIrnuyhvztcltX6A==} + eslint-plugin-command@0.2.4: + resolution: {integrity: sha512-IbZnQY21pOanbcCh/bAWWl+1BynV2HuDE75URMmk/28Tdn+PM7CoKeibXtPGrL7KQdIEHMgUEnRwwI8qmggVMA==} peerDependencies: eslint: '*' @@ -2850,8 +2815,8 @@ packages: peerDependencies: eslint: '>=8' - eslint-plugin-import-x@4.1.0: - resolution: {integrity: sha512-1BYJU0C5NBJLY4qukmwDbFrf2w8fLGEU9zZV3viWa7gNnbn4o4meQy5O4LVXn56eFh9Y4fQxu3udhIqQuVITvw==} + eslint-plugin-import-x@4.2.1: + resolution: {integrity: sha512-WWi2GedccIJa0zXxx3WDnTgouGQTtdYK1nhXMwywbqqAgB0Ov+p1pYBsWh3VaB0bvBOwLse6OfVII7jZD9xo5Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -2868,12 +2833,6 @@ packages: peerDependencies: eslint: '>=6.0.0' - eslint-plugin-markdown@5.1.0: - resolution: {integrity: sha512-SJeyKko1K6GwI0AN6xeCDToXDkfKZfXcexA6B+O2Wr2btUS9GrC+YgwSyVli5DJnctUHjFXcQ2cqTaAmVoLi2A==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: '>=8' - eslint-plugin-n@17.10.2: resolution: {integrity: sha512-e+s4eAf5NtJaxPhTNu3qMO0Iz40WANS93w9LQgYcvuljgvDmWi/a3rh+OrNyMHeng6aOWGJO0rCg5lH4zi8yTw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -2884,8 +2843,8 @@ packages: resolution: {integrity: sha512-brcKcxGnISN2CcVhXJ/kEQlNa0MEfGRtwKtWA16SkqXHKitaKIMrfemJKLKX1YqDU5C/5JY3PvZXd5jEW04e0Q==} engines: {node: '>=5.0.0'} - eslint-plugin-perfectionist@3.3.0: - resolution: {integrity: sha512-sGgShkEqDBqIZ3WlenGHwLe1cl3vHKTfeh9b1XXAamaxSC7AY4Os0jdNCXnGJW4l0TlpismT5t2r7CXY7sfKlw==} + eslint-plugin-perfectionist@3.5.0: + resolution: {integrity: sha512-vwDNuxlAlbZJ3DjHo6GnfZrmMlJBLFrkOLBV/rYvVnLFD+x54u9VyJcGOfJ2DK9d1cd3a/C/vtBrbBNgAC6Mrg==} engines: {node: ^18.0.0 || >=20.0.0} peerDependencies: astro-eslint-parser: ^1.0.2 @@ -2930,8 +2889,8 @@ packages: '@typescript-eslint/eslint-plugin': optional: true - eslint-plugin-vue@9.27.0: - resolution: {integrity: sha512-5Dw3yxEyuBSXTzT5/Ge1X5kIkRTQ3nvBn/VwPwInNiZBSJOO/timWMUaflONnFBzU6NhB68lxnCda7ULV5N7LA==} + eslint-plugin-vue@9.28.0: + resolution: {integrity: sha512-ShrihdjIhOTxs+MfWun6oJWuk+g/LAhN+CiuOl/jjkG3l0F2AuK5NMTaWqyvBgkFtpYmyks6P4603mLmhNJW8g==} engines: {node: ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.2.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 @@ -3150,9 +3109,6 @@ packages: resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} engines: {node: '>=16'} - get-tsconfig@4.7.6: - resolution: {integrity: sha512-ZAqrLlu18NbDdRaHq+AKXzAmqIUPswPWKUchfytdAjiRFnCe5ojG2bstg6mRiZabkKfCoL/e98pbBELIV/YCeA==} - get-tsconfig@4.8.1: resolution: {integrity: sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==} @@ -3307,12 +3263,6 @@ packages: iron-webcrypto@1.2.1: resolution: {integrity: sha512-feOM6FaSr6rEABp/eDfVseKyTMDt+KGpeB35SkVn9Tyn0CqvVsY3EwI0v5i8nMHyJnzCIQf7nsy3p41TPkJZhg==} - is-alphabetical@1.0.4: - resolution: {integrity: sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==} - - is-alphanumerical@1.0.4: - resolution: {integrity: sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==} - is-arrayish@0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} @@ -3328,9 +3278,6 @@ packages: resolution: {integrity: sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==} engines: {node: '>= 0.4'} - is-decimal@1.0.4: - resolution: {integrity: sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==} - is-docker@3.0.0: resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -3348,9 +3295,6 @@ packages: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} - is-hexadecimal@1.0.4: - resolution: {integrity: sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==} - is-inside-container@1.0.0: resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} engines: {node: '>=14.16'} @@ -3445,10 +3389,6 @@ packages: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true - jsdoc-type-pratt-parser@4.0.0: - resolution: {integrity: sha512-YtOli5Cmzy3q4dP26GraSOeAhqecewG04hoO8DY56CH4KJ9Fvv5qKWUCCo3HZob7esJQHCv6/+bnTy72xZZaVQ==} - engines: {node: '>=12.0.0'} - jsdoc-type-pratt-parser@4.1.0: resolution: {integrity: sha512-Hicd6JK5Njt2QB6XYFS7ok9e37O8AYk3jTcppG4YVQnYjOemymvTcmc7OWsmq/Qqj5TdRFO5/x/tIPmBeRtGHg==} engines: {node: '>=12.0.0'} @@ -3572,6 +3512,9 @@ packages: resolution: {integrity: sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==} engines: {node: '>=18'} + longest-streak@3.1.0: + resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} + loupe@3.1.1: resolution: {integrity: sha512-edNu/8D5MKVfGVFRhFf8aAxiTM6Wumfz5XsaatSxlD3w4R1d/WEKUTydCdPGbl9K7QG/Ca3GnDV2sIKIpXRQcw==} @@ -3597,11 +3540,41 @@ packages: mark.js@8.11.1: resolution: {integrity: sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ==} - mdast-util-from-markdown@0.8.5: - resolution: {integrity: sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ==} + markdown-table@3.0.3: + resolution: {integrity: sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==} + + mdast-util-find-and-replace@3.0.1: + resolution: {integrity: sha512-SG21kZHGC3XRTSUhtofZkBzZTJNM5ecCi0SK2IMKmSXR8vO3peL+kb1O0z7Zl83jKtutG4k5Wv/W7V3/YHvzPA==} + + mdast-util-from-markdown@2.0.1: + resolution: {integrity: sha512-aJEUyzZ6TzlsX2s5B4Of7lN7EQtAxvtradMMglCQDyaTFgse6CmtmdJ15ElnVRlCg1vpNyVtbem0PWzlNieZsA==} + + mdast-util-gfm-autolink-literal@2.0.1: + resolution: {integrity: sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==} - mdast-util-to-string@2.0.0: - resolution: {integrity: sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==} + mdast-util-gfm-footnote@2.0.0: + resolution: {integrity: sha512-5jOT2boTSVkMnQ7LTrd6n/18kqwjmuYqo7JUPe+tRCY6O7dAuTFMtTPauYYrMPpox9hlN0uOx/FL8XvEfG9/mQ==} + + mdast-util-gfm-strikethrough@2.0.0: + resolution: {integrity: sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==} + + mdast-util-gfm-table@2.0.0: + resolution: {integrity: sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==} + + mdast-util-gfm-task-list-item@2.0.0: + resolution: {integrity: sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==} + + mdast-util-gfm@3.0.0: + resolution: {integrity: sha512-dgQEX5Amaq+DuUqf26jJqSK9qgixgd6rYDHAv4aTBuA92cTknZlKpPfa86Z/s8Dj8xsAQpFfBmPUHWJBWqS4Bw==} + + mdast-util-phrasing@4.1.0: + resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==} + + mdast-util-to-markdown@2.1.0: + resolution: {integrity: sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ==} + + mdast-util-to-string@4.0.0: + resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} mdn-data@2.0.28: resolution: {integrity: sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==} @@ -3620,8 +3593,89 @@ packages: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} - micromark@2.11.4: - resolution: {integrity: sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==} + micromark-core-commonmark@2.0.1: + resolution: {integrity: sha512-CUQyKr1e///ZODyD1U3xit6zXwy1a8q2a1S1HKtIlmgvurrEpaw/Y9y6KSIbF8P59cn/NjzHyO+Q2fAyYLQrAA==} + + micromark-extension-gfm-autolink-literal@2.1.0: + resolution: {integrity: sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==} + + micromark-extension-gfm-footnote@2.1.0: + resolution: {integrity: sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==} + + micromark-extension-gfm-strikethrough@2.1.0: + resolution: {integrity: sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==} + + micromark-extension-gfm-table@2.1.0: + resolution: {integrity: sha512-Ub2ncQv+fwD70/l4ou27b4YzfNaCJOvyX4HxXU15m7mpYY+rjuWzsLIPZHJL253Z643RpbcP1oeIJlQ/SKW67g==} + + micromark-extension-gfm-tagfilter@2.0.0: + resolution: {integrity: sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==} + + micromark-extension-gfm-task-list-item@2.1.0: + resolution: {integrity: sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==} + + micromark-extension-gfm@3.0.0: + resolution: {integrity: sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==} + + micromark-factory-destination@2.0.0: + resolution: {integrity: sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==} + + micromark-factory-label@2.0.0: + resolution: {integrity: sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==} + + micromark-factory-space@2.0.0: + resolution: {integrity: sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==} + + micromark-factory-title@2.0.0: + resolution: {integrity: sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==} + + micromark-factory-whitespace@2.0.0: + resolution: {integrity: sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==} + + micromark-util-character@2.1.0: + resolution: {integrity: sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==} + + micromark-util-chunked@2.0.0: + resolution: {integrity: sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==} + + micromark-util-classify-character@2.0.0: + resolution: {integrity: sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==} + + micromark-util-combine-extensions@2.0.0: + resolution: {integrity: sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==} + + micromark-util-decode-numeric-character-reference@2.0.1: + resolution: {integrity: sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==} + + micromark-util-decode-string@2.0.0: + resolution: {integrity: sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==} + + micromark-util-encode@2.0.0: + resolution: {integrity: sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==} + + micromark-util-html-tag-name@2.0.0: + resolution: {integrity: sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==} + + micromark-util-normalize-identifier@2.0.0: + resolution: {integrity: sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==} + + micromark-util-resolve-all@2.0.0: + resolution: {integrity: sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==} + + micromark-util-sanitize-uri@2.0.0: + resolution: {integrity: sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==} + + micromark-util-subtokenize@2.0.1: + resolution: {integrity: sha512-jZNtiFl/1aY73yS3UGQkutD0UbhTt68qnRpw2Pifmz5wV9h8gOVsN70v+Lq/f1rKaU/W8pxRe8y8Q9FX1AOe1Q==} + + micromark-util-symbol@2.0.0: + resolution: {integrity: sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==} + + micromark-util-types@2.0.0: + resolution: {integrity: sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==} + + micromark@4.0.0: + resolution: {integrity: sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==} micromatch@4.0.8: resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} @@ -3657,10 +3711,6 @@ packages: engines: {node: '>=16.13'} hasBin: true - minimatch@10.0.1: - resolution: {integrity: sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==} - engines: {node: 20 || >=22} - minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} @@ -3874,9 +3924,6 @@ packages: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} - parse-entities@2.0.0: - resolution: {integrity: sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==} - parse-gitignore@2.0.0: resolution: {integrity: sha512-RmVuCHWsfu0QPNW+mraxh/xjQVw/lhUCUru8Zni3Ctq3AoMhpDTq0OVdKS6iesd6Kqb7viCV3isAL43dciOSog==} engines: {node: '>=14'} @@ -3928,9 +3975,6 @@ packages: perfect-debounce@1.0.0: resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==} - picocolors@1.0.1: - resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==} - picocolors@1.1.0: resolution: {integrity: sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==} @@ -4732,8 +4776,17 @@ packages: unenv@1.10.0: resolution: {integrity: sha512-wY5bskBQFL9n3Eca5XnhH6KbUo/tfvkwm9OpcdCvLaeA7piBNbavbOKJySEwQ1V0RH6HvNlSAFRTpvTqgKRQXQ==} - unist-util-stringify-position@2.0.3: - resolution: {integrity: sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==} + unist-util-is@6.0.0: + resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} + + unist-util-stringify-position@4.0.0: + resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} + + unist-util-visit-parents@6.0.1: + resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==} + + unist-util-visit@5.0.0: + resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} universalify@0.2.0: resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} @@ -5087,6 +5140,9 @@ packages: zod@3.23.8: resolution: {integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==} + zwitch@2.0.4: + resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} + zx@8.1.6: resolution: {integrity: sha512-SYAriWG+i2CFqMOJcF8QayI8wprlMYQsrmP6tFD7rSPnDLcImNSW7n/8crOYvNVrB2EFgz8LAQk23U1+Y7WrKA==} engines: {node: '>= 12.17.0'} @@ -5224,40 +5280,40 @@ snapshots: '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 - '@antfu/eslint-config@2.27.3(@typescript-eslint/utils@8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2))(@vue/compiler-sfc@3.5.4)(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2)(vitest@2.1.0(@types/node@22.5.4)(jsdom@25.0.0)(terser@5.32.0))': + '@antfu/eslint-config@3.6.0(@typescript-eslint/utils@8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2))(@vue/compiler-sfc@3.5.4)(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2)(vitest@2.1.0(@types/node@22.5.4)(jsdom@25.0.0)(terser@5.32.0))': dependencies: '@antfu/install-pkg': 0.4.1 '@clack/prompts': 0.7.0 '@eslint-community/eslint-plugin-eslint-comments': 4.4.0(eslint@9.10.0(jiti@1.21.6)) - '@stylistic/eslint-plugin': 2.6.4(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) - '@typescript-eslint/eslint-plugin': 8.3.0(@typescript-eslint/parser@8.3.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2))(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) - '@typescript-eslint/parser': 8.3.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) - '@vitest/eslint-plugin': 1.0.5(@typescript-eslint/utils@8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2))(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2)(vitest@2.1.0(@types/node@22.5.4)(jsdom@25.0.0)(terser@5.32.0)) + '@eslint/markdown': 6.1.0(eslint@9.10.0(jiti@1.21.6)) + '@stylistic/eslint-plugin': 2.8.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) + '@typescript-eslint/eslint-plugin': 8.5.0(@typescript-eslint/parser@8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2))(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) + '@typescript-eslint/parser': 8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) + '@vitest/eslint-plugin': 1.1.1(@typescript-eslint/utils@8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2))(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2)(vitest@2.1.0(@types/node@22.5.4)(jsdom@25.0.0)(terser@5.32.0)) eslint: 9.10.0(jiti@1.21.6) - eslint-config-flat-gitignore: 0.1.8 - eslint-flat-config-utils: 0.3.1 + eslint-config-flat-gitignore: 0.3.0(eslint@9.10.0(jiti@1.21.6)) + eslint-flat-config-utils: 0.4.0 eslint-merge-processors: 0.1.0(eslint@9.10.0(jiti@1.21.6)) - eslint-plugin-antfu: 2.3.6(eslint@9.10.0(jiti@1.21.6)) - eslint-plugin-command: 0.2.3(eslint@9.10.0(jiti@1.21.6)) - eslint-plugin-import-x: 4.1.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) + eslint-plugin-antfu: 2.6.0(eslint@9.10.0(jiti@1.21.6)) + eslint-plugin-command: 0.2.4(eslint@9.10.0(jiti@1.21.6)) + eslint-plugin-import-x: 4.2.1(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) eslint-plugin-jsdoc: 50.2.2(eslint@9.10.0(jiti@1.21.6)) eslint-plugin-jsonc: 2.16.0(eslint@9.10.0(jiti@1.21.6)) - eslint-plugin-markdown: 5.1.0(eslint@9.10.0(jiti@1.21.6)) eslint-plugin-n: 17.10.2(eslint@9.10.0(jiti@1.21.6)) eslint-plugin-no-only-tests: 3.3.0 - eslint-plugin-perfectionist: 3.3.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2)(vue-eslint-parser@9.4.3(eslint@9.10.0(jiti@1.21.6))) + eslint-plugin-perfectionist: 3.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2)(vue-eslint-parser@9.4.3(eslint@9.10.0(jiti@1.21.6))) eslint-plugin-regexp: 2.6.0(eslint@9.10.0(jiti@1.21.6)) eslint-plugin-toml: 0.11.1(eslint@9.10.0(jiti@1.21.6)) eslint-plugin-unicorn: 55.0.0(eslint@9.10.0(jiti@1.21.6)) - eslint-plugin-unused-imports: 4.1.3(@typescript-eslint/eslint-plugin@8.3.0(@typescript-eslint/parser@8.3.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2))(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2))(eslint@9.10.0(jiti@1.21.6)) - eslint-plugin-vue: 9.27.0(eslint@9.10.0(jiti@1.21.6)) + eslint-plugin-unused-imports: 4.1.3(@typescript-eslint/eslint-plugin@8.5.0(@typescript-eslint/parser@8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2))(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2))(eslint@9.10.0(jiti@1.21.6)) + eslint-plugin-vue: 9.28.0(eslint@9.10.0(jiti@1.21.6)) eslint-plugin-yml: 1.14.0(eslint@9.10.0(jiti@1.21.6)) eslint-processor-vue-blocks: 0.1.2(@vue/compiler-sfc@3.5.4)(eslint@9.10.0(jiti@1.21.6)) globals: 15.9.0 jsonc-eslint-parser: 2.4.0 local-pkg: 0.5.0 parse-gitignore: 2.0.0 - picocolors: 1.0.1 + picocolors: 1.1.0 toml-eslint-parser: 0.10.0 vue-eslint-parser: 9.4.3(eslint@9.10.0(jiti@1.21.6)) yaml-eslint-parser: 1.2.3 @@ -5514,13 +5570,13 @@ snapshots: '@clack/core@0.3.4': dependencies: - picocolors: 1.0.1 + picocolors: 1.1.0 sisteransi: 1.0.5 '@clack/prompts@0.7.0': dependencies: '@clack/core': 0.3.4 - picocolors: 1.0.1 + picocolors: 1.1.0 sisteransi: 1.0.5 '@cloudflare/kv-asset-handler@0.3.4': @@ -5586,15 +5642,6 @@ snapshots: transitivePeerDependencies: - '@algolia/client-search' - '@es-joy/jsdoccomment@0.43.1': - dependencies: - '@types/eslint': 8.56.12 - '@types/estree': 1.0.5 - '@typescript-eslint/types': 7.18.0 - comment-parser: 1.4.1 - esquery: 1.6.0 - jsdoc-type-pratt-parser: 4.0.0 - '@es-joy/jsdoccomment@0.48.0': dependencies: comment-parser: 1.4.1 @@ -5900,6 +5947,8 @@ snapshots: '@eslint-community/regexpp@4.11.0': {} + '@eslint/compat@1.1.1': {} + '@eslint/config-array@0.18.0': dependencies: '@eslint/object-schema': 2.1.4 @@ -5924,6 +5973,15 @@ snapshots: '@eslint/js@9.10.0': {} + '@eslint/markdown@6.1.0(eslint@9.10.0(jiti@1.21.6))': + dependencies: + eslint: 9.10.0(jiti@1.21.6) + mdast-util-from-markdown: 2.0.1 + mdast-util-gfm: 3.0.0 + micromark-extension-gfm: 3.0.0 + transitivePeerDependencies: + - supports-color + '@eslint/object-schema@2.1.4': {} '@eslint/plugin-kit@0.1.0': @@ -6420,47 +6478,14 @@ snapshots: dependencies: solid-js: 1.8.22 - '@stylistic/eslint-plugin-js@2.6.4(eslint@9.10.0(jiti@1.21.6))': - dependencies: - '@types/eslint': 9.6.1 - acorn: 8.12.1 - eslint: 9.10.0(jiti@1.21.6) - eslint-visitor-keys: 4.0.0 - espree: 10.1.0 - - '@stylistic/eslint-plugin-jsx@2.6.4(eslint@9.10.0(jiti@1.21.6))': + '@stylistic/eslint-plugin@2.8.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2)': dependencies: - '@stylistic/eslint-plugin-js': 2.6.4(eslint@9.10.0(jiti@1.21.6)) - '@types/eslint': 9.6.1 + '@typescript-eslint/utils': 8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) eslint: 9.10.0(jiti@1.21.6) eslint-visitor-keys: 4.0.0 espree: 10.1.0 estraverse: 5.3.0 picomatch: 4.0.2 - - '@stylistic/eslint-plugin-plus@2.6.4(eslint@9.10.0(jiti@1.21.6))': - dependencies: - '@types/eslint': 9.6.1 - eslint: 9.10.0(jiti@1.21.6) - - '@stylistic/eslint-plugin-ts@2.6.4(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2)': - dependencies: - '@stylistic/eslint-plugin-js': 2.6.4(eslint@9.10.0(jiti@1.21.6)) - '@types/eslint': 9.6.1 - '@typescript-eslint/utils': 8.3.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) - eslint: 9.10.0(jiti@1.21.6) - transitivePeerDependencies: - - supports-color - - typescript - - '@stylistic/eslint-plugin@2.6.4(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2)': - dependencies: - '@stylistic/eslint-plugin-js': 2.6.4(eslint@9.10.0(jiti@1.21.6)) - '@stylistic/eslint-plugin-jsx': 2.6.4(eslint@9.10.0(jiti@1.21.6)) - '@stylistic/eslint-plugin-plus': 2.6.4(eslint@9.10.0(jiti@1.21.6)) - '@stylistic/eslint-plugin-ts': 2.6.4(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) - '@types/eslint': 9.6.1 - eslint: 9.10.0(jiti@1.21.6) transitivePeerDependencies: - supports-color - typescript @@ -6494,15 +6519,9 @@ snapshots: dependencies: '@babel/types': 7.25.4 - '@types/eslint@8.56.12': + '@types/debug@4.1.12': dependencies: - '@types/estree': 1.0.5 - '@types/json-schema': 7.0.15 - - '@types/eslint@9.6.1': - dependencies: - '@types/estree': 1.0.5 - '@types/json-schema': 7.0.15 + '@types/ms': 0.7.34 '@types/estree@1.0.5': {} @@ -6516,8 +6535,6 @@ snapshots: dependencies: '@types/unist': 2.0.11 - '@types/json-schema@7.0.15': {} - '@types/jsonfile@6.1.4': dependencies: '@types/node': 22.5.4 @@ -6536,12 +6553,14 @@ snapshots: '@types/linkify-it': 5.0.0 '@types/mdurl': 2.0.0 - '@types/mdast@3.0.15': + '@types/mdast@4.0.4': dependencies: - '@types/unist': 2.0.11 + '@types/unist': 3.0.3 '@types/mdurl@2.0.0': {} + '@types/ms@0.7.34': {} + '@types/mute-stream@0.0.4': dependencies: '@types/node': 22.5.4 @@ -6562,18 +6581,20 @@ snapshots: '@types/unist@2.0.11': {} + '@types/unist@3.0.3': {} + '@types/web-bluetooth@0.0.20': {} '@types/wrap-ansi@3.0.0': {} - '@typescript-eslint/eslint-plugin@8.3.0(@typescript-eslint/parser@8.3.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2))(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2)': + '@typescript-eslint/eslint-plugin@8.5.0(@typescript-eslint/parser@8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2))(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2)': dependencies: '@eslint-community/regexpp': 4.11.0 - '@typescript-eslint/parser': 8.3.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) - '@typescript-eslint/scope-manager': 8.3.0 - '@typescript-eslint/type-utils': 8.3.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) - '@typescript-eslint/utils': 8.3.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) - '@typescript-eslint/visitor-keys': 8.3.0 + '@typescript-eslint/parser': 8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) + '@typescript-eslint/scope-manager': 8.5.0 + '@typescript-eslint/type-utils': 8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) + '@typescript-eslint/utils': 8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) + '@typescript-eslint/visitor-keys': 8.5.0 eslint: 9.10.0(jiti@1.21.6) graphemer: 1.4.0 ignore: 5.3.2 @@ -6584,12 +6605,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.3.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2)': + '@typescript-eslint/parser@8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2)': dependencies: - '@typescript-eslint/scope-manager': 8.3.0 - '@typescript-eslint/types': 8.3.0 - '@typescript-eslint/typescript-estree': 8.3.0(typescript@5.6.2) - '@typescript-eslint/visitor-keys': 8.3.0 + '@typescript-eslint/scope-manager': 8.5.0 + '@typescript-eslint/types': 8.5.0 + '@typescript-eslint/typescript-estree': 8.5.0(typescript@5.6.2) + '@typescript-eslint/visitor-keys': 8.5.0 debug: 4.3.7 eslint: 9.10.0(jiti@1.21.6) optionalDependencies: @@ -6597,21 +6618,15 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.3.0': - dependencies: - '@typescript-eslint/types': 8.3.0 - '@typescript-eslint/visitor-keys': 8.3.0 - '@typescript-eslint/scope-manager@8.5.0': dependencies: '@typescript-eslint/types': 8.5.0 '@typescript-eslint/visitor-keys': 8.5.0 - optional: true - '@typescript-eslint/type-utils@8.3.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2)': + '@typescript-eslint/type-utils@8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2)': dependencies: - '@typescript-eslint/typescript-estree': 8.3.0(typescript@5.6.2) - '@typescript-eslint/utils': 8.3.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) + '@typescript-eslint/typescript-estree': 8.5.0(typescript@5.6.2) + '@typescript-eslint/utils': 8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) debug: 4.3.7 ts-api-utils: 1.3.0(typescript@5.6.2) optionalDependencies: @@ -6620,27 +6635,7 @@ snapshots: - eslint - supports-color - '@typescript-eslint/types@7.18.0': {} - - '@typescript-eslint/types@8.3.0': {} - - '@typescript-eslint/types@8.5.0': - optional: true - - '@typescript-eslint/typescript-estree@8.3.0(typescript@5.6.2)': - dependencies: - '@typescript-eslint/types': 8.3.0 - '@typescript-eslint/visitor-keys': 8.3.0 - debug: 4.3.7 - fast-glob: 3.3.2 - is-glob: 4.0.3 - minimatch: 9.0.5 - semver: 7.6.3 - ts-api-utils: 1.3.0(typescript@5.6.2) - optionalDependencies: - typescript: 5.6.2 - transitivePeerDependencies: - - supports-color + '@typescript-eslint/types@8.5.0': {} '@typescript-eslint/typescript-estree@8.5.0(typescript@5.6.2)': dependencies: @@ -6656,18 +6651,6 @@ snapshots: typescript: 5.6.2 transitivePeerDependencies: - supports-color - optional: true - - '@typescript-eslint/utils@8.3.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2)': - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.10.0(jiti@1.21.6)) - '@typescript-eslint/scope-manager': 8.3.0 - '@typescript-eslint/types': 8.3.0 - '@typescript-eslint/typescript-estree': 8.3.0(typescript@5.6.2) - eslint: 9.10.0(jiti@1.21.6) - transitivePeerDependencies: - - supports-color - - typescript '@typescript-eslint/utils@8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2)': dependencies: @@ -6679,18 +6662,11 @@ snapshots: transitivePeerDependencies: - supports-color - typescript - optional: true - - '@typescript-eslint/visitor-keys@8.3.0': - dependencies: - '@typescript-eslint/types': 8.3.0 - eslint-visitor-keys: 3.4.3 '@typescript-eslint/visitor-keys@8.5.0': dependencies: '@typescript-eslint/types': 8.5.0 eslint-visitor-keys: 3.4.3 - optional: true '@unocss/astro@0.62.3(rollup@4.21.3)(vite@5.4.4(@types/node@22.5.4)(terser@5.32.0))': dependencies: @@ -6875,7 +6851,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@vitest/eslint-plugin@1.0.5(@typescript-eslint/utils@8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2))(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2)(vitest@2.1.0(@types/node@22.5.4)(jsdom@25.0.0)(terser@5.32.0))': + '@vitest/eslint-plugin@1.1.1(@typescript-eslint/utils@8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2))(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2)(vitest@2.1.0(@types/node@22.5.4)(jsdom@25.0.0)(terser@5.32.0))': dependencies: eslint: 9.10.0(jiti@1.21.6) optionalDependencies: @@ -7295,6 +7271,8 @@ snapshots: optionalDependencies: cbor-extract: 2.2.0 + ccount@2.0.1: {} + chai@5.1.1: dependencies: assertion-error: 2.0.1 @@ -7316,11 +7294,7 @@ snapshots: chalk@5.3.0: {} - character-entities-legacy@1.1.4: {} - - character-entities@1.2.4: {} - - character-reference-invalid@1.1.4: {} + character-entities@2.0.2: {} chardet@0.7.0: {} @@ -7554,6 +7528,10 @@ snapshots: decimal.js@10.4.3: {} + decode-named-character-reference@1.0.2: + dependencies: + character-entities: 2.0.2 + deep-eql@5.0.2: {} deep-is@0.1.4: {} @@ -7564,6 +7542,8 @@ snapshots: delayed-stream@1.0.0: {} + dequal@2.0.3: {} + destr@2.0.3: {} detect-libc@1.0.3: {} @@ -7571,6 +7551,10 @@ snapshots: detect-libc@2.0.3: optional: true + devlop@1.1.0: + dependencies: + dequal: 2.0.3 + dir-glob@3.0.1: dependencies: path-type: 4.0.0 @@ -7744,19 +7728,21 @@ snapshots: escape-string-regexp@4.0.0: {} + escape-string-regexp@5.0.0: {} + eslint-compat-utils@0.5.1(eslint@9.10.0(jiti@1.21.6)): dependencies: eslint: 9.10.0(jiti@1.21.6) semver: 7.6.3 - eslint-config-flat-gitignore@0.1.8: + eslint-config-flat-gitignore@0.3.0(eslint@9.10.0(jiti@1.21.6)): dependencies: + '@eslint/compat': 1.1.1 + eslint: 9.10.0(jiti@1.21.6) find-up-simple: 1.0.0 - parse-gitignore: 2.0.0 - eslint-flat-config-utils@0.3.1: + eslint-flat-config-utils@0.4.0: dependencies: - '@types/eslint': 9.6.1 pathe: 1.1.2 eslint-import-resolver-node@0.3.9: @@ -7771,14 +7757,14 @@ snapshots: dependencies: eslint: 9.10.0(jiti@1.21.6) - eslint-plugin-antfu@2.3.6(eslint@9.10.0(jiti@1.21.6)): + eslint-plugin-antfu@2.6.0(eslint@9.10.0(jiti@1.21.6)): dependencies: '@antfu/utils': 0.7.10 eslint: 9.10.0(jiti@1.21.6) - eslint-plugin-command@0.2.3(eslint@9.10.0(jiti@1.21.6)): + eslint-plugin-command@0.2.4(eslint@9.10.0(jiti@1.21.6)): dependencies: - '@es-joy/jsdoccomment': 0.43.1 + '@es-joy/jsdoccomment': 0.48.0 eslint: 9.10.0(jiti@1.21.6) eslint-plugin-es-x@7.8.0(eslint@9.10.0(jiti@1.21.6)): @@ -7788,15 +7774,14 @@ snapshots: eslint: 9.10.0(jiti@1.21.6) eslint-compat-utils: 0.5.1(eslint@9.10.0(jiti@1.21.6)) - eslint-plugin-import-x@4.1.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2): + eslint-plugin-import-x@4.2.1(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2): dependencies: - '@typescript-eslint/typescript-estree': 8.3.0(typescript@5.6.2) - '@typescript-eslint/utils': 8.3.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) + '@typescript-eslint/utils': 8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) debug: 4.3.7 doctrine: 3.0.0 eslint: 9.10.0(jiti@1.21.6) eslint-import-resolver-node: 0.3.9 - get-tsconfig: 4.7.6 + get-tsconfig: 4.8.1 is-glob: 4.0.3 minimatch: 9.0.5 semver: 7.6.3 @@ -7834,20 +7819,13 @@ snapshots: natural-compare: 1.4.0 synckit: 0.6.2 - eslint-plugin-markdown@5.1.0(eslint@9.10.0(jiti@1.21.6)): - dependencies: - eslint: 9.10.0(jiti@1.21.6) - mdast-util-from-markdown: 0.8.5 - transitivePeerDependencies: - - supports-color - eslint-plugin-n@17.10.2(eslint@9.10.0(jiti@1.21.6)): dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@9.10.0(jiti@1.21.6)) enhanced-resolve: 5.17.1 eslint: 9.10.0(jiti@1.21.6) eslint-plugin-es-x: 7.8.0(eslint@9.10.0(jiti@1.21.6)) - get-tsconfig: 4.7.6 + get-tsconfig: 4.8.1 globals: 15.9.0 ignore: 5.3.2 minimatch: 9.0.5 @@ -7855,12 +7833,12 @@ snapshots: eslint-plugin-no-only-tests@3.3.0: {} - eslint-plugin-perfectionist@3.3.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2)(vue-eslint-parser@9.4.3(eslint@9.10.0(jiti@1.21.6))): + eslint-plugin-perfectionist@3.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2)(vue-eslint-parser@9.4.3(eslint@9.10.0(jiti@1.21.6))): dependencies: - '@typescript-eslint/types': 8.3.0 - '@typescript-eslint/utils': 8.3.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) + '@typescript-eslint/types': 8.5.0 + '@typescript-eslint/utils': 8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) eslint: 9.10.0(jiti@1.21.6) - minimatch: 10.0.1 + minimatch: 9.0.5 natural-compare-lite: 1.4.0 optionalDependencies: vue-eslint-parser: 9.4.3(eslint@9.10.0(jiti@1.21.6)) @@ -7909,13 +7887,13 @@ snapshots: semver: 7.6.3 strip-indent: 3.0.0 - eslint-plugin-unused-imports@4.1.3(@typescript-eslint/eslint-plugin@8.3.0(@typescript-eslint/parser@8.3.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2))(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2))(eslint@9.10.0(jiti@1.21.6)): + eslint-plugin-unused-imports@4.1.3(@typescript-eslint/eslint-plugin@8.5.0(@typescript-eslint/parser@8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2))(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2))(eslint@9.10.0(jiti@1.21.6)): dependencies: eslint: 9.10.0(jiti@1.21.6) optionalDependencies: - '@typescript-eslint/eslint-plugin': 8.3.0(@typescript-eslint/parser@8.3.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2))(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) + '@typescript-eslint/eslint-plugin': 8.5.0(@typescript-eslint/parser@8.5.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2))(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2) - eslint-plugin-vue@9.27.0(eslint@9.10.0(jiti@1.21.6)): + eslint-plugin-vue@9.28.0(eslint@9.10.0(jiti@1.21.6)): dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@9.10.0(jiti@1.21.6)) eslint: 9.10.0(jiti@1.21.6) @@ -8162,10 +8140,6 @@ snapshots: get-stream@8.0.1: {} - get-tsconfig@4.7.6: - dependencies: - resolve-pkg-maps: 1.0.0 - get-tsconfig@4.8.1: dependencies: resolve-pkg-maps: 1.0.0 @@ -8336,13 +8310,6 @@ snapshots: iron-webcrypto@1.2.1: {} - is-alphabetical@1.0.4: {} - - is-alphanumerical@1.0.4: - dependencies: - is-alphabetical: 1.0.4 - is-decimal: 1.0.4 - is-arrayish@0.2.1: {} is-binary-path@2.1.0: @@ -8357,8 +8324,6 @@ snapshots: dependencies: hasown: 2.0.2 - is-decimal@1.0.4: {} - is-docker@3.0.0: {} is-extglob@2.1.1: {} @@ -8369,8 +8334,6 @@ snapshots: dependencies: is-extglob: 2.1.1 - is-hexadecimal@1.0.4: {} - is-inside-container@1.0.0: dependencies: is-docker: 3.0.0 @@ -8448,8 +8411,6 @@ snapshots: dependencies: argparse: 2.0.1 - jsdoc-type-pratt-parser@4.0.0: {} - jsdoc-type-pratt-parser@4.1.0: {} jsdom@25.0.0: @@ -8590,6 +8551,8 @@ snapshots: chalk: 5.3.0 is-unicode-supported: 1.3.0 + longest-streak@3.1.0: {} + loupe@3.1.1: dependencies: get-func-name: 2.0.2 @@ -8620,17 +8583,108 @@ snapshots: mark.js@8.11.1: {} - mdast-util-from-markdown@0.8.5: + markdown-table@3.0.3: {} + + mdast-util-find-and-replace@3.0.1: + dependencies: + '@types/mdast': 4.0.4 + escape-string-regexp: 5.0.0 + unist-util-is: 6.0.0 + unist-util-visit-parents: 6.0.1 + + mdast-util-from-markdown@2.0.1: + dependencies: + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + decode-named-character-reference: 1.0.2 + devlop: 1.1.0 + mdast-util-to-string: 4.0.0 + micromark: 4.0.0 + micromark-util-decode-numeric-character-reference: 2.0.1 + micromark-util-decode-string: 2.0.0 + micromark-util-normalize-identifier: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + unist-util-stringify-position: 4.0.0 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm-autolink-literal@2.0.1: + dependencies: + '@types/mdast': 4.0.4 + ccount: 2.0.1 + devlop: 1.1.0 + mdast-util-find-and-replace: 3.0.1 + micromark-util-character: 2.1.0 + + mdast-util-gfm-footnote@2.0.0: + dependencies: + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.1 + mdast-util-to-markdown: 2.1.0 + micromark-util-normalize-identifier: 2.0.0 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm-strikethrough@2.0.0: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-from-markdown: 2.0.1 + mdast-util-to-markdown: 2.1.0 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm-table@2.0.0: + dependencies: + '@types/mdast': 4.0.4 + devlop: 1.1.0 + markdown-table: 3.0.3 + mdast-util-from-markdown: 2.0.1 + mdast-util-to-markdown: 2.1.0 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm-task-list-item@2.0.0: + dependencies: + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.1 + mdast-util-to-markdown: 2.1.0 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm@3.0.0: dependencies: - '@types/mdast': 3.0.15 - mdast-util-to-string: 2.0.0 - micromark: 2.11.4 - parse-entities: 2.0.0 - unist-util-stringify-position: 2.0.3 + mdast-util-from-markdown: 2.0.1 + mdast-util-gfm-autolink-literal: 2.0.1 + mdast-util-gfm-footnote: 2.0.0 + mdast-util-gfm-strikethrough: 2.0.0 + mdast-util-gfm-table: 2.0.0 + mdast-util-gfm-task-list-item: 2.0.0 + mdast-util-to-markdown: 2.1.0 transitivePeerDependencies: - supports-color - mdast-util-to-string@2.0.0: {} + mdast-util-phrasing@4.1.0: + dependencies: + '@types/mdast': 4.0.4 + unist-util-is: 6.0.0 + + mdast-util-to-markdown@2.1.0: + dependencies: + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + longest-streak: 3.1.0 + mdast-util-phrasing: 4.1.0 + mdast-util-to-string: 4.0.0 + micromark-util-decode-string: 2.0.0 + unist-util-visit: 5.0.0 + zwitch: 2.0.4 + + mdast-util-to-string@4.0.0: + dependencies: + '@types/mdast': 4.0.4 mdn-data@2.0.28: {} @@ -8644,10 +8698,194 @@ snapshots: merge2@1.4.1: {} - micromark@2.11.4: + micromark-core-commonmark@2.0.1: + dependencies: + decode-named-character-reference: 1.0.2 + devlop: 1.1.0 + micromark-factory-destination: 2.0.0 + micromark-factory-label: 2.0.0 + micromark-factory-space: 2.0.0 + micromark-factory-title: 2.0.0 + micromark-factory-whitespace: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-chunked: 2.0.0 + micromark-util-classify-character: 2.0.0 + micromark-util-html-tag-name: 2.0.0 + micromark-util-normalize-identifier: 2.0.0 + micromark-util-resolve-all: 2.0.0 + micromark-util-subtokenize: 2.0.1 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-extension-gfm-autolink-literal@2.1.0: + dependencies: + micromark-util-character: 2.1.0 + micromark-util-sanitize-uri: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-extension-gfm-footnote@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-core-commonmark: 2.0.1 + micromark-factory-space: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-normalize-identifier: 2.0.0 + micromark-util-sanitize-uri: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-extension-gfm-strikethrough@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-util-chunked: 2.0.0 + micromark-util-classify-character: 2.0.0 + micromark-util-resolve-all: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-extension-gfm-table@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-factory-space: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-extension-gfm-tagfilter@2.0.0: + dependencies: + micromark-util-types: 2.0.0 + + micromark-extension-gfm-task-list-item@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-factory-space: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-extension-gfm@3.0.0: + dependencies: + micromark-extension-gfm-autolink-literal: 2.1.0 + micromark-extension-gfm-footnote: 2.1.0 + micromark-extension-gfm-strikethrough: 2.1.0 + micromark-extension-gfm-table: 2.1.0 + micromark-extension-gfm-tagfilter: 2.0.0 + micromark-extension-gfm-task-list-item: 2.1.0 + micromark-util-combine-extensions: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-factory-destination@2.0.0: + dependencies: + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-factory-label@2.0.0: + dependencies: + devlop: 1.1.0 + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-factory-space@2.0.0: dependencies: + micromark-util-character: 2.1.0 + micromark-util-types: 2.0.0 + + micromark-factory-title@2.0.0: + dependencies: + micromark-factory-space: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-factory-whitespace@2.0.0: + dependencies: + micromark-factory-space: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-util-character@2.1.0: + dependencies: + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-util-chunked@2.0.0: + dependencies: + micromark-util-symbol: 2.0.0 + + micromark-util-classify-character@2.0.0: + dependencies: + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-util-combine-extensions@2.0.0: + dependencies: + micromark-util-chunked: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-util-decode-numeric-character-reference@2.0.1: + dependencies: + micromark-util-symbol: 2.0.0 + + micromark-util-decode-string@2.0.0: + dependencies: + decode-named-character-reference: 1.0.2 + micromark-util-character: 2.1.0 + micromark-util-decode-numeric-character-reference: 2.0.1 + micromark-util-symbol: 2.0.0 + + micromark-util-encode@2.0.0: {} + + micromark-util-html-tag-name@2.0.0: {} + + micromark-util-normalize-identifier@2.0.0: + dependencies: + micromark-util-symbol: 2.0.0 + + micromark-util-resolve-all@2.0.0: + dependencies: + micromark-util-types: 2.0.0 + + micromark-util-sanitize-uri@2.0.0: + dependencies: + micromark-util-character: 2.1.0 + micromark-util-encode: 2.0.0 + micromark-util-symbol: 2.0.0 + + micromark-util-subtokenize@2.0.1: + dependencies: + devlop: 1.1.0 + micromark-util-chunked: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-util-symbol@2.0.0: {} + + micromark-util-types@2.0.0: {} + + micromark@4.0.0: + dependencies: + '@types/debug': 4.1.12 debug: 4.3.7 - parse-entities: 2.0.0 + decode-named-character-reference: 1.0.2 + devlop: 1.1.0 + micromark-core-commonmark: 2.0.1 + micromark-factory-space: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-chunked: 2.0.0 + micromark-util-combine-extensions: 2.0.0 + micromark-util-decode-numeric-character-reference: 2.0.1 + micromark-util-encode: 2.0.0 + micromark-util-normalize-identifier: 2.0.0 + micromark-util-resolve-all: 2.0.0 + micromark-util-sanitize-uri: 2.0.0 + micromark-util-subtokenize: 2.0.1 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 transitivePeerDependencies: - supports-color @@ -8689,10 +8927,6 @@ snapshots: - supports-color - utf-8-validate - minimatch@10.0.1: - dependencies: - brace-expansion: 2.0.1 - minimatch@3.1.2: dependencies: brace-expansion: 1.1.11 @@ -8908,15 +9142,6 @@ snapshots: dependencies: callsites: 3.1.0 - parse-entities@2.0.0: - dependencies: - character-entities: 1.2.4 - character-entities-legacy: 1.1.4 - character-reference-invalid: 1.1.4 - is-alphanumerical: 1.0.4 - is-decimal: 1.0.4 - is-hexadecimal: 1.0.4 - parse-gitignore@2.0.0: {} parse-imports@2.1.1: @@ -8958,8 +9183,6 @@ snapshots: perfect-debounce@1.0.0: {} - picocolors@1.0.1: {} - picocolors@1.1.0: {} picomatch@2.3.1: {} @@ -9776,9 +9999,24 @@ snapshots: node-fetch-native: 1.6.4 pathe: 1.1.2 - unist-util-stringify-position@2.0.3: + unist-util-is@6.0.0: dependencies: - '@types/unist': 2.0.11 + '@types/unist': 3.0.3 + + unist-util-stringify-position@4.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-visit-parents@6.0.1: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.0 + + unist-util-visit@5.0.0: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.0 + unist-util-visit-parents: 6.0.1 universalify@0.2.0: {} @@ -10165,6 +10403,8 @@ snapshots: zod@3.23.8: {} + zwitch@2.0.4: {} + zx@8.1.6: optionalDependencies: '@types/fs-extra': 11.0.4