diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 0756ed8e6..2b73ebeef 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -21,6 +21,7 @@ cd tutorialkit 4. Run `pnpm run dev` to build sources in watch mode - Development environment starts in http://localhost:4321/ + - You can use `TUTORIALKIT_VITE_INSPECT` environment variable to enable [`vite-plugin-inspect`](https://github.com/antfu-collective/vite-plugin-inspect) during deveplopment. 5. Run `pnpm run test` to run core tests diff --git a/docs/tutorialkit.dev/src/components/Buttons/Button/Button.tsx b/docs/tutorialkit.dev/src/components/Buttons/Button/Button.tsx index 82d58ed07..8d34203de 100644 --- a/docs/tutorialkit.dev/src/components/Buttons/Button/Button.tsx +++ b/docs/tutorialkit.dev/src/components/Buttons/Button/Button.tsx @@ -1,7 +1,6 @@ -import type { FC, ReactNode } from 'react'; import type { ButtonTheme } from '@components/Buttons/Button/ButtonTheme'; - import cn from 'classnames'; +import type { FC, ReactNode } from 'react'; import styles from './Button.module.scss'; interface Props { diff --git a/docs/tutorialkit.dev/src/components/react-examples/ExampleFileTree.tsx b/docs/tutorialkit.dev/src/components/react-examples/ExampleFileTree.tsx index 740851760..f95b8cecb 100644 --- a/docs/tutorialkit.dev/src/components/react-examples/ExampleFileTree.tsx +++ b/docs/tutorialkit.dev/src/components/react-examples/ExampleFileTree.tsx @@ -1,5 +1,5 @@ -import { useState, type ComponentProps } from 'react'; import FileTree from '@tutorialkit/react/core/FileTree'; +import { useState, type ComponentProps } from 'react'; export default function ExampleFileTree() { const [files, setFiles] = useState(INITIAL_FILES); diff --git a/docs/tutorialkit.dev/src/components/react-examples/ExampleTerminal.tsx b/docs/tutorialkit.dev/src/components/react-examples/ExampleTerminal.tsx index c731156ed..b33032d17 100644 --- a/docs/tutorialkit.dev/src/components/react-examples/ExampleTerminal.tsx +++ b/docs/tutorialkit.dev/src/components/react-examples/ExampleTerminal.tsx @@ -1,6 +1,6 @@ +import type { Terminal as XTerm } from '@xterm/xterm'; import { Suspense, lazy, useEffect, useState } from 'react'; import { useTheme } from './hooks/useTheme'; -import type { Terminal as XTerm } from '@xterm/xterm'; import { useWebContainer } from './hooks/useWebcontainer'; const Terminal = lazy(() => import('@tutorialkit/react/core/Terminal')); diff --git a/docs/tutorialkit.dev/src/content/config.ts b/docs/tutorialkit.dev/src/content/config.ts index 31b747625..cbe396b19 100644 --- a/docs/tutorialkit.dev/src/content/config.ts +++ b/docs/tutorialkit.dev/src/content/config.ts @@ -1,5 +1,5 @@ -import { defineCollection } from 'astro:content'; import { docsSchema } from '@astrojs/starlight/schema'; +import { defineCollection } from 'astro:content'; export const collections = { docs: defineCollection({ schema: docsSchema() }), diff --git a/extensions/vscode/scripts/build.mjs b/extensions/vscode/scripts/build.mjs index 3ad580a57..b388365ad 100644 --- a/extensions/vscode/scripts/build.mjs +++ b/extensions/vscode/scripts/build.mjs @@ -1,11 +1,11 @@ -import { watch } from 'chokidar'; -import * as esbuild from 'esbuild'; -import { execa } from 'execa'; import fs from 'node:fs'; import { createRequire } from 'node:module'; -import { join, dirname } from 'path'; -import { Worker } from 'node:worker_threads'; +import { join, dirname } from 'node:path'; import { fileURLToPath } from 'node:url'; +import { Worker } from 'node:worker_threads'; +import { watch } from 'chokidar'; +import * as esbuild from 'esbuild'; +import { execa } from 'execa'; const __dirname = dirname(fileURLToPath(import.meta.url)); const require = createRequire(import.meta.url); diff --git a/extensions/vscode/scripts/load-schema-worker.mjs b/extensions/vscode/scripts/load-schema-worker.mjs index 35036568d..fe549a737 100644 --- a/extensions/vscode/scripts/load-schema-worker.mjs +++ b/extensions/vscode/scripts/load-schema-worker.mjs @@ -1,5 +1,5 @@ import { parentPort } from 'node:worker_threads'; -import { zodToJsonSchema } from 'zod-to-json-schema'; import { contentSchema } from '@tutorialkit/types'; +import { zodToJsonSchema } from 'zod-to-json-schema'; parentPort.postMessage(zodToJsonSchema(contentSchema)); diff --git a/extensions/vscode/src/commands/tutorialkit.add.ts b/extensions/vscode/src/commands/tutorialkit.add.ts index 08b57a755..824b95384 100644 --- a/extensions/vscode/src/commands/tutorialkit.add.ts +++ b/extensions/vscode/src/commands/tutorialkit.add.ts @@ -1,8 +1,8 @@ -import { cmd } from '.'; -import { Node, NodeType } from '../models/Node'; import * as vscode from 'vscode'; +import { Node, NodeType } from '../models/Node'; import { FILES_FOLDER, SOLUTION_FOLDER } from '../models/tree/constants'; import { updateNodeMetadataInVFS } from '../models/tree/update'; +import { cmd } from '.'; let kebabCase: (string: string) => string; let capitalize: (string: string) => string; diff --git a/extensions/vscode/src/commands/tutorialkit.delete.ts b/extensions/vscode/src/commands/tutorialkit.delete.ts index 6d1830e02..7e0004a42 100644 --- a/extensions/vscode/src/commands/tutorialkit.delete.ts +++ b/extensions/vscode/src/commands/tutorialkit.delete.ts @@ -1,8 +1,8 @@ -import { cmd } from '.'; import * as vscode from 'vscode'; -import { Node } from '../models/Node'; import { getLessonsTreeView } from '../global-state'; +import { Node } from '../models/Node'; import { updateNodeMetadataInVFS } from '../models/tree/update'; +import { cmd } from '.'; export async function deleteNode(selectedNode: Node | undefined, selectedNodes: Node[] | undefined) { let nodes: readonly Node[] = (selectedNodes ? selectedNodes : [selectedNode]).filter((node) => node !== undefined); diff --git a/extensions/vscode/src/commands/tutorialkit.initialize.ts b/extensions/vscode/src/commands/tutorialkit.initialize.ts index b14f16e31..a5f5785c8 100644 --- a/extensions/vscode/src/commands/tutorialkit.initialize.ts +++ b/extensions/vscode/src/commands/tutorialkit.initialize.ts @@ -1,6 +1,6 @@ import * as vscode from 'vscode'; -import { cmd } from '.'; import isTutorialKitWorkspace from '../utils/isTutorialKit'; +import { cmd } from '.'; export async function initialize(toastIfEmpty = false) { const tutorialWorkpaces = (vscode.workspace.workspaceFolders || []).filter(isTutorialKitWorkspace); diff --git a/extensions/vscode/src/commands/tutorialkit.load-tutorial.ts b/extensions/vscode/src/commands/tutorialkit.load-tutorial.ts index da1121b9b..03218a888 100644 --- a/extensions/vscode/src/commands/tutorialkit.load-tutorial.ts +++ b/extensions/vscode/src/commands/tutorialkit.load-tutorial.ts @@ -1,7 +1,7 @@ import * as vscode from 'vscode'; import { extContext } from '../extension'; -import { LessonsTreeDataProvider } from '../views/lessonsTree'; import { setLessonsTreeDataProvider, setLessonsTreeView } from '../global-state'; +import { LessonsTreeDataProvider } from '../views/lessonsTree'; export async function loadTutorial(uri: vscode.Uri) { const treeDataProvider = new LessonsTreeDataProvider(uri, extContext); diff --git a/extensions/vscode/src/commands/tutorialkit.select-tutorial.ts b/extensions/vscode/src/commands/tutorialkit.select-tutorial.ts index 1504e35d1..860b9db46 100644 --- a/extensions/vscode/src/commands/tutorialkit.select-tutorial.ts +++ b/extensions/vscode/src/commands/tutorialkit.select-tutorial.ts @@ -1,6 +1,6 @@ import * as vscode from 'vscode'; -import { cmd } from '.'; import isTutorialKitWorkspace from '../utils/isTutorialKit'; +import { cmd } from '.'; export async function selectTutorial() { const tutorialWorkpaces = (vscode.workspace.workspaceFolders || []).filter(isTutorialKitWorkspace); diff --git a/extensions/vscode/src/extension.ts b/extensions/vscode/src/extension.ts index 2a12a2065..152efa04b 100644 --- a/extensions/vscode/src/extension.ts +++ b/extensions/vscode/src/extension.ts @@ -1,9 +1,9 @@ import * as serverProtocol from '@volar/language-server/protocol'; import { createLabsInfo } from '@volar/vscode'; import * as vscode from 'vscode'; +import * as lsp from 'vscode-languageclient/node'; import { useCommands } from './commands'; import { useLessonTree } from './views/lessonsTree'; -import * as lsp from 'vscode-languageclient/node'; export let extContext: vscode.ExtensionContext; diff --git a/extensions/vscode/src/global-state.ts b/extensions/vscode/src/global-state.ts index 16f846aaa..a87277293 100644 --- a/extensions/vscode/src/global-state.ts +++ b/extensions/vscode/src/global-state.ts @@ -1,6 +1,6 @@ import type { TreeView } from 'vscode'; -import type { LessonsTreeDataProvider } from './views/lessonsTree'; import type { Node } from './models/Node'; +import type { LessonsTreeDataProvider } from './views/lessonsTree'; let lessonsTreeDataProvider: LessonsTreeDataProvider; let lessonsTreeView: TreeView; diff --git a/extensions/vscode/src/models/Node.ts b/extensions/vscode/src/models/Node.ts index fdcbdbd78..4d9cee2c5 100644 --- a/extensions/vscode/src/models/Node.ts +++ b/extensions/vscode/src/models/Node.ts @@ -1,5 +1,5 @@ -import * as vscode from 'vscode'; import type { TutorialSchema, PartSchema, ChapterSchema, LessonSchema } from '@tutorialkit/types'; +import * as vscode from 'vscode'; export class Node { /** diff --git a/extensions/vscode/src/models/tree/load.ts b/extensions/vscode/src/models/tree/load.ts index 7153d4bb6..9a0615707 100644 --- a/extensions/vscode/src/models/tree/load.ts +++ b/extensions/vscode/src/models/tree/load.ts @@ -1,8 +1,8 @@ -import * as vscode from 'vscode'; import grayMatter from 'gray-matter'; +import * as vscode from 'vscode'; +import { Utils } from 'vscode-uri'; import { Metadata, Node } from '../Node'; import { METADATA_FILES, FILES_FOLDER, SOLUTION_FOLDER } from './constants'; -import { Utils } from 'vscode-uri'; export async function loadTutorialTree(tutorialFolderPath: vscode.Uri, tutorialName: string): Promise { const metaFilePath = vscode.Uri.joinPath(tutorialFolderPath, 'meta.md'); diff --git a/extensions/vscode/src/models/tree/update.ts b/extensions/vscode/src/models/tree/update.ts index 0d3dd9308..250bb6ffe 100644 --- a/extensions/vscode/src/models/tree/update.ts +++ b/extensions/vscode/src/models/tree/update.ts @@ -1,5 +1,5 @@ -import * as vscode from 'vscode'; import grayMatter from 'gray-matter'; +import * as vscode from 'vscode'; import { Node } from '../Node'; export async function updateNodeMetadataInVFS(node: Node) { diff --git a/extensions/vscode/src/utils/isTutorialKit.ts b/extensions/vscode/src/utils/isTutorialKit.ts index 3218c97ea..9ca82edd0 100644 --- a/extensions/vscode/src/utils/isTutorialKit.ts +++ b/extensions/vscode/src/utils/isTutorialKit.ts @@ -1,5 +1,5 @@ -import * as fs from 'fs'; -import * as path from 'path'; +import * as fs from 'node:fs'; +import * as path from 'node:path'; import * as vscode from 'vscode'; /** diff --git a/extensions/vscode/src/views/lessonsTree.ts b/extensions/vscode/src/views/lessonsTree.ts index c4ad555e8..fc92c1df1 100644 --- a/extensions/vscode/src/views/lessonsTree.ts +++ b/extensions/vscode/src/views/lessonsTree.ts @@ -1,10 +1,10 @@ +import path from 'node:path'; import * as vscode from 'vscode'; -import path from 'path'; import { cmd } from '../commands'; import { Node } from '../models/Node'; -import { getIcon } from '../utils/getIcon'; -import { loadChildrenForNode, loadTutorialTree } from '../models/tree/load'; import { METADATA_FILES } from '../models/tree/constants'; +import { loadChildrenForNode, loadTutorialTree } from '../models/tree/load'; +import { getIcon } from '../utils/getIcon'; export const tutorialMimeType = 'application/tutorialkit.unit'; diff --git a/integration/cli/create-tutorial.test.ts b/integration/cli/create-tutorial.test.ts index e0e9b0d0f..c032af957 100644 --- a/integration/cli/create-tutorial.test.ts +++ b/integration/cli/create-tutorial.test.ts @@ -1,8 +1,8 @@ -import path from 'node:path'; import fs from 'node:fs/promises'; -import { describe, beforeEach, afterAll, expect, it } from 'vitest'; +import path from 'node:path'; import { execa } from 'execa'; import { temporaryDirectory } from 'tempy'; +import { describe, beforeEach, afterAll, expect, it } from 'vitest'; const baseDir = path.resolve(__dirname, '../..'); diff --git a/integration/package.json b/integration/package.json index 16409ebde..600ccb522 100644 --- a/integration/package.json +++ b/integration/package.json @@ -8,6 +8,6 @@ "dependencies": { "execa": "^9.2.0", "tempy": "^3.1.0", - "vitest": "^1.6.0" + "vitest": "^2.1.1" } } diff --git a/package.json b/package.json index fe8e6a9be..f63d0eac9 100644 --- a/package.json +++ b/package.json @@ -22,16 +22,16 @@ "license": "MIT", "packageManager": "pnpm@8.15.6", "devDependencies": { - "@blitz/eslint-plugin": "0.1.0", + "@blitz/eslint-plugin": "0.1.2", "@commitlint/config-conventional": "^19.2.2", "add-stream": "^1.0.0", "chalk": "^5.3.0", "commitlint": "^19.3.0", "conventional-changelog": "^6.0.0", - "eslint-plugin-astro": "^1.2.3", + "eslint-plugin-astro": "^1.2.4", "husky": "^9.0.11", "is-ci": "^3.0.1", - "prettier": "^3.3.2", + "prettier": "^3.3.3", "prettier-plugin-astro": "^0.14.1", "tempfile": "^5.0.0" }, diff --git a/packages/astro/package.json b/packages/astro/package.json index 08bd48b54..8d497b57d 100644 --- a/packages/astro/package.json +++ b/packages/astro/package.json @@ -70,7 +70,7 @@ "execa": "^9.2.0", "typescript": "^5.4.5", "vite-plugin-inspect": "0.8.4", - "vitest": "^1.6.0" + "vitest": "^2.1.1" }, "peerDependencies": { "astro": "^4.15.0" diff --git a/packages/astro/scripts/build.js b/packages/astro/scripts/build.js index 1a12af6d5..9e9bf5774 100644 --- a/packages/astro/scripts/build.js +++ b/packages/astro/scripts/build.js @@ -1,11 +1,11 @@ import assert from 'node:assert'; -import path from 'node:path'; import { existsSync, rmSync, copyFileSync } from 'node:fs'; import { cp, rm } from 'node:fs/promises'; -import { execa } from 'execa'; +import path from 'node:path'; import chokidar from 'chokidar'; import esbuild from 'esbuild'; import { nodeExternalsPlugin } from 'esbuild-node-externals'; +import { execa } from 'execa'; const isWatch = process.argv.includes('--watch'); @@ -46,6 +46,7 @@ async function buildJS() { outdir: 'dist', define: { 'process.env.TUTORIALKIT_DEV': JSON.stringify(process.env.TUTORIALKIT_DEV ?? null), + 'process.env.TUTORIALKIT_VITE_INSPECT': JSON.stringify(process.env.TUTORIALKIT_VITE_INSPECT ?? null), }, plugins: [nodeExternalsPlugin()], }); diff --git a/packages/astro/src/default/components/WorkspacePanelWrapper.tsx b/packages/astro/src/default/components/WorkspacePanelWrapper.tsx index ba02dc1f8..d33cfd84b 100644 --- a/packages/astro/src/default/components/WorkspacePanelWrapper.tsx +++ b/packages/astro/src/default/components/WorkspacePanelWrapper.tsx @@ -1,7 +1,7 @@ -import { useEffect } from 'react'; import { useStore } from '@nanostores/react'; import { WorkspacePanel } from '@tutorialkit/react'; import type { Lesson } from '@tutorialkit/types'; +import { useEffect } from 'react'; import { themeStore } from '../stores/theme-store.js'; import { tutorialStore } from './webcontainer.js'; diff --git a/packages/astro/src/default/components/webcontainer.ts b/packages/astro/src/default/components/webcontainer.ts index 431d77acf..c9b482bd7 100644 --- a/packages/astro/src/default/components/webcontainer.ts +++ b/packages/astro/src/default/components/webcontainer.ts @@ -1,4 +1,4 @@ -// must be imported first +// eslint-disable-next-line -- must be imported first import { useAuth } from './setup.js'; import { safeBoot, TutorialStore } from '@tutorialkit/runtime'; diff --git a/packages/astro/src/default/utils/content.ts b/packages/astro/src/default/utils/content.ts index 68d2cb55e..4f879bd60 100644 --- a/packages/astro/src/default/utils/content.ts +++ b/packages/astro/src/default/utils/content.ts @@ -1,12 +1,12 @@ +import path from 'node:path'; import type { ChapterSchema, Lesson, LessonSchema, PartSchema, Tutorial, TutorialSchema } from '@tutorialkit/types'; import { interpolateString } from '@tutorialkit/types'; import { getCollection } from 'astro:content'; -import path from 'node:path'; import { DEFAULT_LOCALIZATION } from './content/default-localization'; +import { getFilesRefList } from './content/files-ref'; import { squash } from './content/squash.js'; import { logger } from './logger'; import { joinPaths } from './url'; -import { getFilesRefList } from './content/files-ref'; export async function getTutorial(): Promise { const collection = sortCollection(await getCollection('tutorial')); diff --git a/packages/astro/src/default/utils/content/files-ref.ts b/packages/astro/src/default/utils/content/files-ref.ts index 553c3a127..360adffcb 100644 --- a/packages/astro/src/default/utils/content/files-ref.ts +++ b/packages/astro/src/default/utils/content/files-ref.ts @@ -1,7 +1,7 @@ +import path from 'node:path'; import type { FilesRefList } from '@tutorialkit/types'; import { folderPathToFilesRef } from '@tutorialkit/types'; import glob from 'fast-glob'; -import path from 'node:path'; import { IGNORED_FILES } from '../constants'; const CONTENT_DIR = path.join(process.cwd(), 'src/content/tutorial'); diff --git a/packages/astro/src/default/utils/content/squash.spec.ts b/packages/astro/src/default/utils/content/squash.spec.ts index e93d8716a..c6cbf9d1c 100644 --- a/packages/astro/src/default/utils/content/squash.spec.ts +++ b/packages/astro/src/default/utils/content/squash.spec.ts @@ -1,5 +1,5 @@ -import { describe, it, test, expect } from 'vitest'; import type { Lesson } from '@tutorialkit/types'; +import { describe, it, test, expect } from 'vitest'; import { squash } from './squash.js'; type Metadata = Partial; diff --git a/packages/astro/src/index.ts b/packages/astro/src/index.ts index d14764d25..4d2e3b7a0 100644 --- a/packages/astro/src/index.ts +++ b/packages/astro/src/index.ts @@ -1,11 +1,11 @@ -import type { AstroConfig, AstroIntegration } from 'astro'; import { fileURLToPath } from 'node:url'; +import type { AstroConfig, AstroIntegration } from 'astro'; import { extraIntegrations } from './integrations.js'; import { updateMarkdownConfig } from './remark/index.js'; import { tutorialkitCore } from './vite-plugins/core.js'; import { userlandCSS, watchUserlandCSS } from './vite-plugins/css.js'; -import { tutorialkitStore } from './vite-plugins/store.js'; import { overrideComponents, type OverrideComponentsOptions } from './vite-plugins/override-components.js'; +import { tutorialkitStore } from './vite-plugins/store.js'; import { WebContainerFiles } from './webcontainer-files/index.js'; export interface Options { @@ -101,7 +101,7 @@ export default function createPlugin({ tutorialkitStore, tutorialkitCore, overrideComponents({ components, defaultRoutes: !!defaultRoutes }), - process.env.TUTORIALKIT_DEV ? (await import('vite-plugin-inspect')).default() : null, + process.env.TUTORIALKIT_VITE_INSPECT ? (await import('vite-plugin-inspect')).default() : null, ], }, }); diff --git a/packages/astro/src/integrations.ts b/packages/astro/src/integrations.ts index a0a888fb1..d99424a24 100644 --- a/packages/astro/src/integrations.ts +++ b/packages/astro/src/integrations.ts @@ -3,9 +3,9 @@ import mdx from '@astrojs/mdx'; import react from '@astrojs/react'; import { pluginCollapsibleSections } from '@expressive-code/plugin-collapsible-sections'; import { pluginLineNumbers } from '@expressive-code/plugin-line-numbers'; +import { getInlineContentForPackage } from '@tutorialkit/theme'; import expressiveCode from 'astro-expressive-code'; import UnoCSS from 'unocss/astro'; -import { getInlineContentForPackage } from '@tutorialkit/theme'; export function extraIntegrations({ root }: { root: string }) { return [ diff --git a/packages/astro/src/remark/import-file.ts b/packages/astro/src/remark/import-file.ts index 8447b7468..6b3acba22 100644 --- a/packages/astro/src/remark/import-file.ts +++ b/packages/astro/src/remark/import-file.ts @@ -1,9 +1,9 @@ +import fs from 'node:fs'; +import path from 'node:path'; import type { BaseSchema, ChapterSchema, LessonSchema, PartSchema, TutorialSchema } from '@tutorialkit/types'; import frontMatter from 'front-matter'; import * as kleur from 'kleur/colors'; import type { Root } from 'mdast'; -import fs from 'node:fs'; -import path from 'node:path'; import type { Transformer } from 'unified'; import { visit } from 'unist-util-visit'; diff --git a/packages/astro/src/vite-plugins/css.ts b/packages/astro/src/vite-plugins/css.ts index 449b965b2..9389fda5d 100644 --- a/packages/astro/src/vite-plugins/css.ts +++ b/packages/astro/src/vite-plugins/css.ts @@ -6,11 +6,11 @@ * the correct location to make sure the CSS customization are added after the * default values. */ +import fs from 'node:fs/promises'; +import path from 'node:path'; +import type { AstroIntegrationLogger } from 'astro'; import { watch } from 'chokidar'; -import fs from 'fs/promises'; -import path from 'path'; import type { ViteDevServer, VitePlugin } from '../types.js'; -import type { AstroIntegrationLogger } from 'astro'; const CUSTOM_PATHS = ['theme.css', 'theme/index.css']; diff --git a/packages/astro/src/webcontainer-files/cache.ts b/packages/astro/src/webcontainer-files/cache.ts index 7dc0c0a30..fa5e9b1e9 100644 --- a/packages/astro/src/webcontainer-files/cache.ts +++ b/packages/astro/src/webcontainer-files/cache.ts @@ -1,6 +1,6 @@ +import path from 'node:path'; import type { AstroIntegrationLogger } from 'astro'; import { dim } from 'kleur/colors'; -import path from 'node:path'; import type { ViteDevServer } from '../types.js'; import { withResolvers } from '../utils.js'; import { FILES_FOLDER_NAME, SOLUTION_FOLDER_NAME } from './constants.js'; diff --git a/packages/astro/src/webcontainer-files/filesmap.ts b/packages/astro/src/webcontainer-files/filesmap.ts index 66dbd6556..00b3bd48f 100644 --- a/packages/astro/src/webcontainer-files/filesmap.ts +++ b/packages/astro/src/webcontainer-files/filesmap.ts @@ -1,7 +1,7 @@ -import type { AstroIntegrationLogger } from 'astro'; -import glob from 'fast-glob'; import fs from 'node:fs'; import path from 'node:path'; +import type { AstroIntegrationLogger } from 'astro'; +import glob from 'fast-glob'; import { z } from 'zod'; import type { Files } from '../types'; import { EXTEND_CONFIG_FILEPATH, IGNORED_FILES } from './constants'; diff --git a/packages/astro/src/webcontainer-files/index.ts b/packages/astro/src/webcontainer-files/index.ts index e07c8390f..9f821397a 100644 --- a/packages/astro/src/webcontainer-files/index.ts +++ b/packages/astro/src/webcontainer-files/index.ts @@ -1,8 +1,8 @@ -import { FSWatcher, watch } from 'chokidar'; -import { dim } from 'kleur/colors'; import fs from 'node:fs'; import path from 'node:path'; import { fileURLToPath } from 'node:url'; +import { FSWatcher, watch } from 'chokidar'; +import { dim } from 'kleur/colors'; import type { AstroBuildDoneOptions, AstroServerSetupOptions } from '../types.js'; import { FilesMapCache } from './cache.js'; import { FILES_FOLDER_NAME, IGNORED_FILES, SOLUTION_FOLDER_NAME } from './constants.js'; diff --git a/packages/cli/package.json b/packages/cli/package.json index bbe1ab778..2cbd800ac 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -53,7 +53,7 @@ "esbuild-node-externals": "^1.13.1", "fs-extra": "^11.2.0", "tempy": "^3.1.0", - "vitest": "^1.6.0" + "vitest": "^2.1.1" }, "engines": { "node": ">=18.18.0" diff --git a/packages/cli/scripts/build-release.js b/packages/cli/scripts/build-release.js index 9a3fd22e5..1e3cd7529 100644 --- a/packages/cli/scripts/build-release.js +++ b/packages/cli/scripts/build-release.js @@ -1,9 +1,9 @@ -import fsExtra from 'fs-extra'; -import ignore from 'ignore'; import fs from 'node:fs'; import path from 'node:path'; import { fileURLToPath } from 'node:url'; import { execa } from 'execa'; +import fsExtra from 'fs-extra'; +import ignore from 'ignore'; import { temporaryDirectoryTask } from 'tempy'; import { distFolder, overwritesFolder, templateDest, templatePath } from './_constants.js'; import { success } from './logger.js'; diff --git a/packages/cli/scripts/build.js b/packages/cli/scripts/build.js index 23cd8507b..9e5729b03 100644 --- a/packages/cli/scripts/build.js +++ b/packages/cli/scripts/build.js @@ -1,6 +1,6 @@ +import fs from 'node:fs'; import esbuild from 'esbuild'; import { nodeExternalsPlugin } from 'esbuild-node-externals'; -import fs from 'node:fs'; import { distFolder, outDir } from './_constants.js'; const isWatch = process.argv.includes('--watch'); diff --git a/packages/cli/src/commands/create/git.ts b/packages/cli/src/commands/create/git.ts index 6e648e15c..3fd211e30 100644 --- a/packages/cli/src/commands/create/git.ts +++ b/packages/cli/src/commands/create/git.ts @@ -1,7 +1,7 @@ -import * as prompts from '@clack/prompts'; -import chalk from 'chalk'; import fs from 'node:fs'; import path from 'node:path'; +import * as prompts from '@clack/prompts'; +import chalk from 'chalk'; import { pkg } from '../../pkg.js'; import { warnLabel } from '../../utils/messages.js'; import { runShellCommand } from '../../utils/shell.js'; diff --git a/packages/cli/src/commands/create/index.ts b/packages/cli/src/commands/create/index.ts index 2da4c1b84..0ac059090 100644 --- a/packages/cli/src/commands/create/index.ts +++ b/packages/cli/src/commands/create/index.ts @@ -1,8 +1,8 @@ +import fs from 'node:fs'; +import path from 'node:path'; import * as prompts from '@clack/prompts'; import chalk from 'chalk'; import { execa } from 'execa'; -import fs from 'node:fs'; -import path from 'node:path'; import yargs from 'yargs-parser'; import { pkg } from '../../pkg.js'; import { errorLabel, primaryLabel, printHelp, warnLabel } from '../../utils/messages.js'; diff --git a/packages/cli/src/commands/create/template.ts b/packages/cli/src/commands/create/template.ts index 8c634f0bb..1390b314e 100644 --- a/packages/cli/src/commands/create/template.ts +++ b/packages/cli/src/commands/create/template.ts @@ -1,8 +1,8 @@ -import * as prompts from '@clack/prompts'; -import ignore from 'ignore'; import fs from 'node:fs'; import fsPromises from 'node:fs/promises'; import path from 'node:path'; +import * as prompts from '@clack/prompts'; +import ignore from 'ignore'; import { warnLabel } from '../../utils/messages.js'; import { templatePath, type CreateOptions } from './options.js'; diff --git a/packages/cli/src/commands/eject/index.ts b/packages/cli/src/commands/eject/index.ts index b8d842f34..146251fab 100644 --- a/packages/cli/src/commands/eject/index.ts +++ b/packages/cli/src/commands/eject/index.ts @@ -1,9 +1,9 @@ +import fs from 'node:fs'; +import path from 'node:path'; import * as prompts from '@clack/prompts'; import chalk from 'chalk'; import detectIndent from 'detect-indent'; import { execa } from 'execa'; -import fs from 'node:fs'; -import path from 'node:path'; import whichpm from 'which-pm'; import type { Arguments } from 'yargs-parser'; import { pkg } from '../../pkg.js'; diff --git a/packages/cli/tests/create-tutorial.test.ts b/packages/cli/tests/create-tutorial.test.ts index 553223f21..4545a66b4 100644 --- a/packages/cli/tests/create-tutorial.test.ts +++ b/packages/cli/tests/create-tutorial.test.ts @@ -1,8 +1,8 @@ -import { execa } from 'execa'; -import fs from 'node:fs/promises'; import { readFileSync } from 'node:fs'; +import fs from 'node:fs/promises'; import { tmpdir } from 'node:os'; import path from 'node:path'; +import { execa } from 'execa'; import { afterAll, beforeAll, expect, test } from 'vitest'; // on CI on windows we want to make sure to use the same drive, so we use a custom logic diff --git a/packages/react/package.json b/packages/react/package.json index 03d744586..80825087e 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -95,6 +95,6 @@ "chokidar": "3.6.0", "execa": "^9.2.0", "typescript": "^5.4.5", - "vitest": "^1.6.0" + "vitest": "^2.1.1" } } diff --git a/packages/react/scripts/build.js b/packages/react/scripts/build.js index 8695282f0..24577ef63 100644 --- a/packages/react/scripts/build.js +++ b/packages/react/scripts/build.js @@ -1,8 +1,8 @@ -import { execa } from 'execa'; -import { cp } from 'fs/promises'; -import path, { extname } from 'path'; +import { copyFileSync, rmSync } from 'node:fs'; +import { cp } from 'node:fs/promises'; +import path, { extname } from 'node:path'; import chokidar from 'chokidar'; -import { copyFileSync, rmSync } from 'fs'; +import { execa } from 'execa'; const isWatch = process.argv.includes('--watch'); diff --git a/packages/react/src/BootScreen.tsx b/packages/react/src/BootScreen.tsx index 17aeb590a..7c68a7c24 100644 --- a/packages/react/src/BootScreen.tsx +++ b/packages/react/src/BootScreen.tsx @@ -1,6 +1,6 @@ -import { useEffect, useState } from 'react'; import { useStore } from '@nanostores/react'; import type { Step, TutorialStore } from '@tutorialkit/runtime'; +import { useEffect, useState } from 'react'; import { classNames } from './utils/classnames.js'; interface Props { diff --git a/packages/react/src/Nav.tsx b/packages/react/src/Nav.tsx index 208f19dda..7145e4b98 100644 --- a/packages/react/src/Nav.tsx +++ b/packages/react/src/Nav.tsx @@ -1,10 +1,10 @@ -import { interpolateString, type Lesson, type NavItem, type NavList } from '@tutorialkit/types'; import * as Accordion from '@radix-ui/react-accordion'; -import navStyles from './styles/nav.module.css'; -import { classNames } from './utils/classnames.js'; +import { interpolateString, type Lesson, type NavItem, type NavList } from '@tutorialkit/types'; import { AnimatePresence, cubicBezier, motion } from 'framer-motion'; import { useCallback, useRef, useState } from 'react'; import { useOutsideClick } from './hooks/useOutsideClick.js'; +import navStyles from './styles/nav.module.css'; +import { classNames } from './utils/classnames.js'; const dropdownEasing = cubicBezier(0.4, 0, 0.2, 1); diff --git a/packages/react/src/core/CodeMirrorEditor/cm-theme.ts b/packages/react/src/core/CodeMirrorEditor/cm-theme.ts index 9c5366b9d..d73b8f0d7 100644 --- a/packages/react/src/core/CodeMirrorEditor/cm-theme.ts +++ b/packages/react/src/core/CodeMirrorEditor/cm-theme.ts @@ -4,8 +4,8 @@ import { EditorView } from '@codemirror/view'; import { transitionTheme } from '@tutorialkit/theme/transition-theme'; import '../../styles/cm.css'; import type { Theme } from '../types.js'; -import type { EditorSettings } from './index.js'; import { vscodeDarkTheme } from './themes/vscode-dark.js'; +import type { EditorSettings } from './index.js'; export const darkTheme = EditorView.theme({}, { dark: true }); export const themeSelection = new Compartment(); diff --git a/packages/react/src/core/ContextMenu.tsx b/packages/react/src/core/ContextMenu.tsx index ddb3dfa84..c556dd8fe 100644 --- a/packages/react/src/core/ContextMenu.tsx +++ b/packages/react/src/core/ContextMenu.tsx @@ -1,6 +1,6 @@ -import { useRef, useState, type ComponentProps } from 'react'; import { Root, Portal, Content, Item, Trigger } from '@radix-ui/react-context-menu'; import type { FileDescriptor, I18n } from '@tutorialkit/types'; +import { useRef, useState, type ComponentProps } from 'react'; interface FileChangeEvent { type: FileDescriptor['type']; diff --git a/packages/react/src/core/FileTree.spec.ts b/packages/react/src/core/FileTree.spec.ts index 41246728d..d9b0ea577 100644 --- a/packages/react/src/core/FileTree.spec.ts +++ b/packages/react/src/core/FileTree.spec.ts @@ -1,5 +1,5 @@ -import { expect, test } from 'vitest'; import type { FileDescriptor } from '@tutorialkit/types'; +import { expect, test } from 'vitest'; import { sortFiles } from './FileTree.js'; expect.addSnapshotSerializer({ diff --git a/packages/react/src/core/FileTree.tsx b/packages/react/src/core/FileTree.tsx index 87bd91225..c010202f6 100644 --- a/packages/react/src/core/FileTree.tsx +++ b/packages/react/src/core/FileTree.tsx @@ -1,7 +1,7 @@ -import { useEffect, useMemo, useState, type ComponentProps, type ReactNode } from 'react'; import type { FileDescriptor } from '@tutorialkit/types'; -import { ContextMenu } from './ContextMenu.js'; +import { useEffect, useMemo, useState, type ComponentProps, type ReactNode } from 'react'; import { classNames } from '../utils/classnames.js'; +import { ContextMenu } from './ContextMenu.js'; const NODE_PADDING_LEFT = 12; const DEFAULT_HIDDEN_FILES = [/\/node_modules\//]; diff --git a/packages/runtime/package.json b/packages/runtime/package.json index 1ee559d14..d9abc789b 100644 --- a/packages/runtime/package.json +++ b/packages/runtime/package.json @@ -41,6 +41,6 @@ "typescript": "^5.4.5", "vite": "^5.3.1", "vite-tsconfig-paths": "^4.3.2", - "vitest": "^1.6.0" + "vitest": "^2.1.1" } } diff --git a/packages/runtime/src/store/editor.spec.ts b/packages/runtime/src/store/editor.spec.ts index 166515346..999205c1c 100644 --- a/packages/runtime/src/store/editor.spec.ts +++ b/packages/runtime/src/store/editor.spec.ts @@ -1,7 +1,7 @@ +import type { FileDescriptor } from '@tutorialkit/types'; import { expect, test } from 'vitest'; import { EditorStore } from './editor.js'; -import type { FileDescriptor } from '@tutorialkit/types'; test('empty directories are removed when new content is added', () => { const store = new EditorStore(); diff --git a/packages/runtime/src/store/index.ts b/packages/runtime/src/store/index.ts index 0db454e24..a88e95ed6 100644 --- a/packages/runtime/src/store/index.ts +++ b/packages/runtime/src/store/index.ts @@ -5,10 +5,10 @@ import { LessonFilesFetcher } from '../lesson-files.js'; import { newTask, type Task } from '../tasks.js'; import { TutorialRunner } from '../tutorial-runner.js'; import type { ITerminal } from '../utils/terminal.js'; +import type { EditorConfig } from '../webcontainer/editor-config.js'; import { bootStatus, unblockBoot, type BootStatus } from '../webcontainer/on-demand-boot.js'; import type { PreviewInfo } from '../webcontainer/preview-info.js'; import { StepsController } from '../webcontainer/steps.js'; -import type { EditorConfig } from '../webcontainer/editor-config.js'; import type { TerminalConfig } from '../webcontainer/terminal-config.js'; import { EditorStore, type EditorDocument, type EditorDocuments, type ScrollPosition } from './editor.js'; import { PreviewsStore } from './previews.js'; diff --git a/packages/runtime/src/store/previews.spec.ts b/packages/runtime/src/store/previews.spec.ts index 8540fa632..f3398d9a9 100644 --- a/packages/runtime/src/store/previews.spec.ts +++ b/packages/runtime/src/store/previews.spec.ts @@ -1,6 +1,6 @@ +import type { PortListener, WebContainer } from '@webcontainer/api'; import { assert, expect, test } from 'vitest'; import { PreviewsStore } from './previews.js'; -import type { PortListener, WebContainer } from '@webcontainer/api'; test("preview is set ready on webcontainer's event", async () => { const { store, emit } = await getStore(); diff --git a/packages/runtime/src/store/previews.ts b/packages/runtime/src/store/previews.ts index 6f7175cd5..216c57091 100644 --- a/packages/runtime/src/store/previews.ts +++ b/packages/runtime/src/store/previews.ts @@ -1,8 +1,8 @@ import type { PreviewSchema } from '@tutorialkit/types'; import type { WebContainer } from '@webcontainer/api'; import { atom } from 'nanostores'; -import { PreviewInfo } from '../webcontainer/preview-info.js'; import { PortInfo } from '../webcontainer/port-info.js'; +import { PreviewInfo } from '../webcontainer/preview-info.js'; export class PreviewsStore { private _availablePreviews = new Map(); @@ -55,7 +55,7 @@ export class PreviewsStore { } // if the schema is `true`, we just use the default empty array - const previews = config === true ? [] : config ?? []; + const previews = config === true ? [] : (config ?? []); const previewInfos = previews.map((previewConfig) => { const preview = PreviewInfo.parse(previewConfig); diff --git a/packages/runtime/src/tutorial-runner.spec.ts b/packages/runtime/src/tutorial-runner.spec.ts index ae69208ae..cc313bf6e 100644 --- a/packages/runtime/src/tutorial-runner.spec.ts +++ b/packages/runtime/src/tutorial-runner.spec.ts @@ -1,8 +1,8 @@ // must be imported first import { resetProcessFactory, setProcessFactory } from '@tutorialkit/test-utils'; -import { WebContainer } from '@webcontainer/api'; import type { MockedWebContainer } from '@tutorialkit/test-utils'; +import { WebContainer } from '@webcontainer/api'; import { beforeEach, describe, expect, test, vi } from 'vitest'; import { TerminalStore } from './store/terminal.js'; import { TutorialRunner } from './tutorial-runner.js'; diff --git a/packages/runtime/src/webcontainer/preview-info.spec.ts b/packages/runtime/src/webcontainer/preview-info.spec.ts index 0b008fbc6..c0338c803 100644 --- a/packages/runtime/src/webcontainer/preview-info.spec.ts +++ b/packages/runtime/src/webcontainer/preview-info.spec.ts @@ -1,6 +1,6 @@ import { describe, it, expect } from 'vitest'; -import { PreviewInfo } from './preview-info.js'; import { PortInfo } from './port-info.js'; +import { PreviewInfo } from './preview-info.js'; describe('PreviewInfo', () => { it('should accept a number for port', () => { diff --git a/packages/runtime/src/webcontainer/steps.spec.ts b/packages/runtime/src/webcontainer/steps.spec.ts index e7efb39cd..1e52f43b2 100644 --- a/packages/runtime/src/webcontainer/steps.spec.ts +++ b/packages/runtime/src/webcontainer/steps.spec.ts @@ -1,6 +1,6 @@ import { describe, test, expect } from 'vitest'; -import { StepsController } from './steps.js'; import { Command } from './command.js'; +import { StepsController } from './steps.js'; describe('StepsController', () => { test('setFromCommands should set steps from commands', () => { diff --git a/packages/runtime/vitest.config.ts b/packages/runtime/vitest.config.ts index aa6f7b949..75e3781ee 100644 --- a/packages/runtime/vitest.config.ts +++ b/packages/runtime/vitest.config.ts @@ -1,5 +1,5 @@ -import { defineConfig } from 'vitest/config'; import tsconfigPaths from 'vite-tsconfig-paths'; +import { defineConfig } from 'vitest/config'; export default defineConfig({ plugins: [tsconfigPaths({ projects: ['../../tsconfig.json'] })], diff --git a/packages/template/src/templates/default/src/index.js b/packages/template/src/templates/default/src/index.js index 1c72cdefe..73a6cdc82 100644 --- a/packages/template/src/templates/default/src/index.js +++ b/packages/template/src/templates/default/src/index.js @@ -1,5 +1,5 @@ +const { createServer } = require('node:http'); const servor = require('servor'); -const { createServer } = require('http'); createServer((_req, res) => { res.writeHead(200, { 'Content-Type': 'text/html' }); diff --git a/packages/test-utils/package.json b/packages/test-utils/package.json index febb68ec8..8057b322b 100644 --- a/packages/test-utils/package.json +++ b/packages/test-utils/package.json @@ -7,6 +7,6 @@ "devDependencies": { "@webcontainer/api": "1.2.4", "typescript": "^5.4.5", - "vitest": "^1.6.0" + "vitest": "^2.1.1" } } diff --git a/packages/test-utils/src/index.ts b/packages/test-utils/src/index.ts index 06833aad8..7d5bebab2 100644 --- a/packages/test-utils/src/index.ts +++ b/packages/test-utils/src/index.ts @@ -1,5 +1,5 @@ -import type { DirectoryNode, FileNode, FileSystemTree, SpawnOptions, WebContainer } from '@webcontainer/api'; import path from 'node:path'; +import type { DirectoryNode, FileNode, FileSystemTree, SpawnOptions, WebContainer } from '@webcontainer/api'; import { vi, type Mocked } from 'vitest'; interface FakeProcess { diff --git a/packages/theme/src/index.ts b/packages/theme/src/index.ts index 19d06cd96..34ff2f92a 100644 --- a/packages/theme/src/index.ts +++ b/packages/theme/src/index.ts @@ -1,12 +1,12 @@ import fs from 'node:fs/promises'; -import { basename, dirname, resolve } from 'node:path'; import { createRequire } from 'node:module'; +import { basename, dirname, resolve } from 'node:path'; import * as fastGlob from 'fast-glob'; import { mergeConfigs, presetIcons, presetUno, transformerDirectives, type UserConfig } from 'unocss'; -import { toCSSRules } from './utils.js'; import { theme } from './theme.js'; import { transitionTheme } from './transition-theme.js'; +import { toCSSRules } from './utils.js'; const { globSync, convertPathToPattern } = fastGlob.default; const require = createRequire(import.meta.url); diff --git a/packages/types/package.json b/packages/types/package.json index bc6861a38..7c0870fee 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -29,6 +29,6 @@ }, "devDependencies": { "typescript": "^5.4.5", - "vitest": "^1.6.0" + "vitest": "^2.1.1" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index dad86428c..bc14d1cc0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -12,8 +12,8 @@ importers: .: devDependencies: '@blitz/eslint-plugin': - specifier: 0.1.0 - version: 0.1.0(prettier@3.3.2)(typescript@5.5.3) + specifier: 0.1.2 + version: 0.1.2(prettier@3.3.3)(typescript@5.5.3) '@commitlint/config-conventional': specifier: ^19.2.2 version: 19.2.2 @@ -30,8 +30,8 @@ importers: specifier: ^6.0.0 version: 6.0.0 eslint-plugin-astro: - specifier: ^1.2.3 - version: 1.2.3(eslint@9.5.0)(typescript@5.5.3) + specifier: ^1.2.4 + version: 1.2.4(eslint@9.5.0)(typescript@5.5.3) husky: specifier: ^9.0.11 version: 9.0.11 @@ -39,8 +39,8 @@ importers: specifier: ^3.0.1 version: 3.0.1 prettier: - specifier: ^3.3.2 - version: 3.3.2 + specifier: ^3.3.3 + version: 3.3.3 prettier-plugin-astro: specifier: ^0.14.1 version: 0.14.1 @@ -62,7 +62,7 @@ importers: devDependencies: '@astrojs/check': specifier: ^0.7.0 - version: 0.7.0(prettier-plugin-astro@0.14.1)(prettier@3.3.2)(typescript@5.5.3) + version: 0.7.0(prettier-plugin-astro@0.14.1)(prettier@3.3.3)(typescript@5.5.3) '@astrojs/react': specifier: ^3.6.0 version: 3.6.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(vite@5.4.2) @@ -105,7 +105,7 @@ importers: devDependencies: '@astrojs/check': specifier: ^0.7.0 - version: 0.7.0(prettier-plugin-astro@0.14.1)(prettier@3.3.2)(typescript@5.5.3) + version: 0.7.0(prettier-plugin-astro@0.14.1)(prettier@3.3.3)(typescript@5.5.3) '@astrojs/react': specifier: ^3.6.0 version: 3.6.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(vite@5.4.2) @@ -273,8 +273,8 @@ importers: specifier: ^3.1.0 version: 3.1.0 vitest: - specifier: ^1.6.0 - version: 1.6.0(@types/node@22.4.2) + specifier: ^2.1.1 + version: 2.1.1(@types/node@22.4.2) packages/astro: dependencies: @@ -388,8 +388,8 @@ importers: specifier: 0.8.4 version: 0.8.4(vite@5.4.2) vitest: - specifier: ^1.6.0 - version: 1.6.0(@types/node@22.4.2) + specifier: ^2.1.1 + version: 2.1.1(@types/node@22.4.2) packages/cli: dependencies: @@ -458,8 +458,8 @@ importers: specifier: ^3.1.0 version: 3.1.0 vitest: - specifier: ^1.6.0 - version: 1.6.0(@types/node@20.14.11) + specifier: ^2.1.1 + version: 2.1.1(@types/node@20.14.11) packages/create-tutorial: dependencies: @@ -595,8 +595,8 @@ importers: specifier: ^5.4.5 version: 5.5.3 vitest: - specifier: ^1.6.0 - version: 1.6.0(@types/node@22.4.2) + specifier: ^2.1.1 + version: 2.1.1(@types/node@22.4.2) packages/runtime: dependencies: @@ -620,8 +620,8 @@ importers: specifier: ^4.3.2 version: 4.3.2(typescript@5.5.3)(vite@5.3.4) vitest: - specifier: ^1.6.0 - version: 1.6.0(@types/node@22.4.2) + specifier: ^2.1.1 + version: 2.1.1(@types/node@22.4.2) packages/template: dependencies: @@ -637,7 +637,7 @@ importers: devDependencies: '@astrojs/check': specifier: ^0.7.0 - version: 0.7.0(prettier-plugin-astro@0.14.1)(prettier@3.3.2)(typescript@5.5.3) + version: 0.7.0(prettier-plugin-astro@0.14.1)(prettier@3.3.3)(typescript@5.5.3) '@astrojs/react': specifier: ^3.6.0 version: 3.6.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(vite@5.4.2) @@ -675,8 +675,8 @@ importers: specifier: ^5.4.5 version: 5.5.3 vitest: - specifier: ^1.6.0 - version: 1.6.0(@types/node@22.4.2) + specifier: ^2.1.1 + version: 2.1.1(@types/node@22.4.2) packages/theme: dependencies: @@ -710,8 +710,8 @@ importers: specifier: ^5.4.5 version: 5.5.3 vitest: - specifier: ^1.6.0 - version: 1.6.0(@types/node@22.4.2) + specifier: ^2.1.1 + version: 2.1.1(@types/node@22.4.2) packages: @@ -731,13 +731,13 @@ packages: /@antfu/utils@0.7.8: resolution: {integrity: sha512-rWQkqXRESdjXtc+7NRfK9lASQjpXJu1ayp7qi1d23zZorY+wBHVLHHoVcMsEnkqEBWTFqbztO7/QdJFzyEcLTg==} - /@astrojs/check@0.7.0(prettier-plugin-astro@0.14.1)(prettier@3.3.2)(typescript@5.5.3): + /@astrojs/check@0.7.0(prettier-plugin-astro@0.14.1)(prettier@3.3.3)(typescript@5.5.3): resolution: {integrity: sha512-UTqwOeKNu9IYZmJXEeWnQuTdSd/pX58Hl4TUARsMlT97SVDL//kLBE4T/ctxRz6J573N87oE5ddtW/uOOnQTug==} hasBin: true peerDependencies: typescript: ^5.0.0 dependencies: - '@astrojs/language-server': 2.12.0(prettier-plugin-astro@0.14.1)(prettier@3.3.2)(typescript@5.5.3) + '@astrojs/language-server': 2.12.0(prettier-plugin-astro@0.14.1)(prettier@3.3.3)(typescript@5.5.3) chokidar: 3.6.0 fast-glob: 3.3.2 kleur: 4.1.5 @@ -758,7 +758,7 @@ packages: /@astrojs/internal-helpers@0.4.1: resolution: {integrity: sha512-bMf9jFihO8YP940uD70SI/RDzIhUHJAolWVcO1v5PUivxGKvfLZTLTVVxEYzGYyPsA3ivdLNqMnL5VgmQySa+g==} - /@astrojs/language-server@2.12.0(prettier-plugin-astro@0.14.1)(prettier@3.3.2)(typescript@5.5.3): + /@astrojs/language-server@2.12.0(prettier-plugin-astro@0.14.1)(prettier@3.3.3)(typescript@5.5.3): resolution: {integrity: sha512-qdEDyWVX95c0pN+nw25dn16VaYuRV0uCqtlOaXGRHZFvvULpJwpyirhXKQb/r9r36zWajrzFkTHPkq/TlQqgNQ==} hasBin: true peerDependencies: @@ -779,12 +779,12 @@ packages: '@volar/typescript': 2.4.0-alpha.16 fast-glob: 3.3.2 muggle-string: 0.4.1 - prettier: 3.3.2 + prettier: 3.3.3 prettier-plugin-astro: 0.14.1 volar-service-css: 0.0.59(@volar/language-service@2.4.0-alpha.16) volar-service-emmet: 0.0.59(@volar/language-service@2.4.0-alpha.16) volar-service-html: 0.0.59(@volar/language-service@2.4.0-alpha.16) - volar-service-prettier: 0.0.59(@volar/language-service@2.4.0-alpha.16)(prettier@3.3.2) + volar-service-prettier: 0.0.59(@volar/language-service@2.4.0-alpha.16)(prettier@3.3.3) volar-service-typescript: 0.0.59(@volar/language-service@2.4.0-alpha.16) volar-service-typescript-twoslash-queries: 0.0.59(@volar/language-service@2.4.0-alpha.16) vscode-html-languageservice: 5.3.0 @@ -1447,8 +1447,8 @@ packages: '@babel/helper-validator-identifier': 7.24.7 to-fast-properties: 2.0.0 - /@blitz/eslint-plugin@0.1.0(prettier@3.3.2)(typescript@5.5.3): - resolution: {integrity: sha512-mGEAFWCI5AQ4nrePhjp2WzvRen+UWR+SF4MvH70icIBClR08Gm3dT9MRa2jszOpfY00NyIYfm7/1CFZ37GvW4g==} + /@blitz/eslint-plugin@0.1.2(prettier@3.3.3)(typescript@5.5.3): + resolution: {integrity: sha512-bHpdiHQRfUe/Pfic4AWhhOMCv+kobg8+hW8ymrCW+God5NcFYNQFyUSOcShiU09QIlitMAxFET5cpZPpA4BxqA==} engines: {node: ^18.0.0 || ^20.0.0} dependencies: '@stylistic/eslint-plugin-ts': 2.2.2(eslint@9.5.0)(typescript@5.5.3) @@ -1458,8 +1458,10 @@ packages: common-tags: 1.8.2 eslint: 9.5.0 eslint-config-prettier: 9.1.0(eslint@9.5.0) + eslint-plugin-import-x: 3.1.0(eslint@9.5.0)(typescript@5.5.3) eslint-plugin-jsonc: 2.16.0(eslint@9.5.0) - eslint-plugin-prettier: 5.1.3(eslint-config-prettier@9.1.0)(eslint@9.5.0)(prettier@3.3.2) + eslint-plugin-prettier: 5.1.3(eslint-config-prettier@9.1.0)(eslint@9.5.0)(prettier@3.3.3) + eslint-plugin-unicorn: 55.0.0(eslint@9.5.0) globals: 15.6.0 typescript-eslint: 8.0.0-alpha.30(eslint@9.5.0)(typescript@5.5.3) transitivePeerDependencies: @@ -2273,7 +2275,7 @@ packages: engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} dependencies: '@eslint/object-schema': 2.1.4 - debug: 4.3.5 + debug: 4.3.6 minimatch: 3.1.2 transitivePeerDependencies: - supports-color @@ -2284,7 +2286,7 @@ packages: engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} dependencies: ajv: 6.12.6 - debug: 4.3.5 + debug: 4.3.6 espree: 10.1.0 globals: 14.0.0 ignore: 5.3.1 @@ -2585,12 +2587,6 @@ packages: requiresBuild: true optional: true - /@jest/schemas@29.6.3: - resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@sinclair/typebox': 0.27.8 - /@jridgewell/gen-mapping@0.3.5: resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} engines: {node: '>=6.0.0'} @@ -3331,6 +3327,7 @@ packages: cpu: [arm] os: [android] requiresBuild: true + dev: true optional: true /@rollup/rollup-android-arm-eabi@4.21.1: @@ -3345,6 +3342,7 @@ packages: cpu: [arm64] os: [android] requiresBuild: true + dev: true optional: true /@rollup/rollup-android-arm64@4.21.1: @@ -3359,6 +3357,7 @@ packages: cpu: [arm64] os: [darwin] requiresBuild: true + dev: true optional: true /@rollup/rollup-darwin-arm64@4.21.1: @@ -3373,6 +3372,7 @@ packages: cpu: [x64] os: [darwin] requiresBuild: true + dev: true optional: true /@rollup/rollup-darwin-x64@4.21.1: @@ -3387,6 +3387,7 @@ packages: cpu: [arm] os: [linux] requiresBuild: true + dev: true optional: true /@rollup/rollup-linux-arm-gnueabihf@4.21.1: @@ -3401,6 +3402,7 @@ packages: cpu: [arm] os: [linux] requiresBuild: true + dev: true optional: true /@rollup/rollup-linux-arm-musleabihf@4.21.1: @@ -3415,6 +3417,7 @@ packages: cpu: [arm64] os: [linux] requiresBuild: true + dev: true optional: true /@rollup/rollup-linux-arm64-gnu@4.21.1: @@ -3429,6 +3432,7 @@ packages: cpu: [arm64] os: [linux] requiresBuild: true + dev: true optional: true /@rollup/rollup-linux-arm64-musl@4.21.1: @@ -3443,6 +3447,7 @@ packages: cpu: [ppc64] os: [linux] requiresBuild: true + dev: true optional: true /@rollup/rollup-linux-powerpc64le-gnu@4.21.1: @@ -3457,6 +3462,7 @@ packages: cpu: [riscv64] os: [linux] requiresBuild: true + dev: true optional: true /@rollup/rollup-linux-riscv64-gnu@4.21.1: @@ -3471,6 +3477,7 @@ packages: cpu: [s390x] os: [linux] requiresBuild: true + dev: true optional: true /@rollup/rollup-linux-s390x-gnu@4.21.1: @@ -3485,6 +3492,7 @@ packages: cpu: [x64] os: [linux] requiresBuild: true + dev: true optional: true /@rollup/rollup-linux-x64-gnu@4.21.1: @@ -3499,6 +3507,7 @@ packages: cpu: [x64] os: [linux] requiresBuild: true + dev: true optional: true /@rollup/rollup-linux-x64-musl@4.21.1: @@ -3513,6 +3522,7 @@ packages: cpu: [arm64] os: [win32] requiresBuild: true + dev: true optional: true /@rollup/rollup-win32-arm64-msvc@4.21.1: @@ -3527,6 +3537,7 @@ packages: cpu: [ia32] os: [win32] requiresBuild: true + dev: true optional: true /@rollup/rollup-win32-ia32-msvc@4.21.1: @@ -3541,6 +3552,7 @@ packages: cpu: [x64] os: [win32] requiresBuild: true + dev: true optional: true /@rollup/rollup-win32-x64-msvc@4.21.1: @@ -3561,9 +3573,6 @@ packages: /@shikijs/core@1.7.0: resolution: {integrity: sha512-O6j27b7dGmJbR3mjwh/aHH8Ld+GQvA0OQsNO43wKWnqbAae3AYXrhFyScHGX8hXZD6vX2ngjzDFkZY5srtIJbQ==} - /@sinclair/typebox@0.27.8: - resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} - /@sindresorhus/merge-streams@4.0.0: resolution: {integrity: sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==} engines: {node: '>=18'} @@ -3579,7 +3588,7 @@ packages: eslint: '>=8.40.0' dependencies: '@types/eslint': 8.56.10 - acorn: 8.12.0 + acorn: 8.12.1 eslint: 9.5.0 eslint-visitor-keys: 4.0.0 espree: 10.1.0 @@ -3600,27 +3609,6 @@ packages: - typescript dev: true - /@tutorialkit/cli@0.2.2: - resolution: {integrity: sha512-ZsBFHdjO/XbbXme+tkQu9UU7G9qiHVLKUQp2abt9prxennZdPkIBR3Y3gdYnYdezaWQ+8k19xrx6152pnPruIQ==} - engines: {node: '>=18.18.0'} - hasBin: true - dependencies: - '@babel/generator': 7.24.5 - '@babel/parser': 7.24.5 - '@babel/traverse': 7.24.5 - '@babel/types': 7.24.5 - '@clack/prompts': 0.7.0 - chalk: 5.3.0 - detect-indent: 7.0.1 - execa: 9.2.0 - ignore: 5.3.1 - lookpath: 1.2.2 - which-pm: 2.2.0 - yargs-parser: 21.1.1 - transitivePeerDependencies: - - supports-color - dev: false - /@types/acorn@4.0.6: resolution: {integrity: sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==} dependencies: @@ -3825,7 +3813,7 @@ packages: '@typescript-eslint/types': 8.0.0-alpha.30 '@typescript-eslint/typescript-estree': 8.0.0-alpha.30(typescript@5.5.3) '@typescript-eslint/visitor-keys': 8.0.0-alpha.30 - debug: 4.3.5 + debug: 4.3.6 eslint: 9.5.0 typescript: 5.5.3 transitivePeerDependencies: @@ -3859,7 +3847,7 @@ packages: dependencies: '@typescript-eslint/typescript-estree': 8.0.0-alpha.30(typescript@5.5.3) '@typescript-eslint/utils': 8.0.0-alpha.30(eslint@9.5.0)(typescript@5.5.3) - debug: 4.3.5 + debug: 4.3.6 ts-api-utils: 1.3.0(typescript@5.5.3) typescript: 5.5.3 transitivePeerDependencies: @@ -3888,11 +3876,11 @@ packages: dependencies: '@typescript-eslint/types': 7.16.1 '@typescript-eslint/visitor-keys': 7.16.1 - debug: 4.3.5 + debug: 4.3.6 globby: 11.1.0 is-glob: 4.0.3 minimatch: 9.0.4 - semver: 7.6.2 + semver: 7.6.3 ts-api-utils: 1.3.0(typescript@5.5.3) typescript: 5.5.3 transitivePeerDependencies: @@ -3910,11 +3898,11 @@ packages: dependencies: '@typescript-eslint/types': 8.0.0-alpha.30 '@typescript-eslint/visitor-keys': 8.0.0-alpha.30 - debug: 4.3.5 + debug: 4.3.6 globby: 11.1.0 is-glob: 4.0.3 minimatch: 9.0.4 - semver: 7.6.2 + semver: 7.6.3 ts-api-utils: 1.3.0(typescript@5.5.3) typescript: 5.5.3 transitivePeerDependencies: @@ -3967,7 +3955,7 @@ packages: '@unocss/core': 0.59.4 '@unocss/reset': 0.59.4 '@unocss/vite': 0.59.4(vite@5.4.2) - vite: 5.4.2(@types/node@22.4.2)(sass@1.77.6) + vite: 5.4.2(@types/node@22.4.2) transitivePeerDependencies: - rollup @@ -4166,7 +4154,7 @@ packages: chokidar: 3.6.0 fast-glob: 3.3.2 magic-string: 0.30.11 - vite: 5.4.2(@types/node@22.4.2)(sass@1.77.6) + vite: 5.4.2(@types/node@22.4.2) transitivePeerDependencies: - rollup @@ -4185,39 +4173,60 @@ packages: transitivePeerDependencies: - supports-color - /@vitest/expect@1.6.0: - resolution: {integrity: sha512-ixEvFVQjycy/oNgHjqsL6AZCDduC+tflRluaHIzKIsdbzkLn2U/iBnVeJwB6HsIjQBdfMR8Z0tRxKUsvFJEeWQ==} + /@vitest/expect@2.1.1: + resolution: {integrity: sha512-YeueunS0HiHiQxk+KEOnq/QMzlUuOzbU1Go+PgAsHvvv3tUkJPm9xWt+6ITNTlzsMXUjmgm5T+U7KBPK2qQV6w==} + dependencies: + '@vitest/spy': 2.1.1 + '@vitest/utils': 2.1.1 + chai: 5.1.1 + tinyrainbow: 1.2.0 + + /@vitest/mocker@2.1.1(@vitest/spy@2.1.1)(vite@5.4.2): + resolution: {integrity: sha512-LNN5VwOEdJqCmJ/2XJBywB11DLlkbY0ooDJW3uRX5cZyYCrc4PI/ePX0iQhE3BiEGiQmK4GE7Q/PqCkkaiPnrA==} + peerDependencies: + '@vitest/spy': 2.1.1 + msw: ^2.3.5 + vite: ^5.0.0 + peerDependenciesMeta: + msw: + optional: true + vite: + optional: true + dependencies: + '@vitest/spy': 2.1.1 + estree-walker: 3.0.3 + magic-string: 0.30.11 + vite: 5.4.2(@types/node@22.4.2) + + /@vitest/pretty-format@2.1.1: + resolution: {integrity: sha512-SjxPFOtuINDUW8/UkElJYQSFtnWX7tMksSGW0vfjxMneFqxVr8YJ979QpMbDW7g+BIiq88RAGDjf7en6rvLPPQ==} dependencies: - '@vitest/spy': 1.6.0 - '@vitest/utils': 1.6.0 - chai: 4.4.1 + tinyrainbow: 1.2.0 - /@vitest/runner@1.6.0: - resolution: {integrity: sha512-P4xgwPjwesuBiHisAVz/LSSZtDjOTPYZVmNAnpHHSR6ONrf8eCJOFRvUwdHn30F5M1fxhqtl7QZQUk2dprIXAg==} + /@vitest/runner@2.1.1: + resolution: {integrity: sha512-uTPuY6PWOYitIkLPidaY5L3t0JJITdGTSwBtwMjKzo5O6RCOEncz9PUN+0pDidX8kTHYjO0EwUIvhlGpnGpxmA==} dependencies: - '@vitest/utils': 1.6.0 - p-limit: 5.0.0 + '@vitest/utils': 2.1.1 pathe: 1.1.2 - /@vitest/snapshot@1.6.0: - resolution: {integrity: sha512-+Hx43f8Chus+DCmygqqfetcAZrDJwvTj0ymqjQq4CvmpKFSTVteEOBzCusu1x2tt4OJcvBflyHUE0DZSLgEMtQ==} + /@vitest/snapshot@2.1.1: + resolution: {integrity: sha512-BnSku1WFy7r4mm96ha2FzN99AZJgpZOWrAhtQfoxjUU5YMRpq1zmHRq7a5K9/NjqonebO7iVDla+VvZS8BOWMw==} dependencies: - magic-string: 0.30.10 + '@vitest/pretty-format': 2.1.1 + magic-string: 0.30.11 pathe: 1.1.2 - pretty-format: 29.7.0 - /@vitest/spy@1.6.0: - resolution: {integrity: sha512-leUTap6B/cqi/bQkXUu6bQV5TZPx7pmMBKBQiI0rJA8c3pB56ZsaTbREnF7CJfmvAS4V2cXIBAh/3rVwrrCYgw==} + /@vitest/spy@2.1.1: + resolution: {integrity: sha512-ZM39BnZ9t/xZ/nF4UwRH5il0Sw93QnZXd9NAZGRpIgj0yvVwPpLd702s/Cx955rGaMlyBQkZJ2Ir7qyY48VZ+g==} dependencies: - tinyspy: 2.2.1 + tinyspy: 3.0.2 - /@vitest/utils@1.6.0: - resolution: {integrity: sha512-21cPiuGMoMZwiOHa2i4LXkMkMkCGzA+MVFV70jRwHo95dL4x/ts5GZhML1QWuy7yfp3WzK3lRvZi3JnXTYqrBw==} + /@vitest/utils@2.1.1: + resolution: {integrity: sha512-Y6Q9TsI+qJ2CC0ZKj6VBb+T8UPz593N113nnUykqwANqhgf3QkZeHFlusgKLTqrnVHbj/XDKZcDHol+dxVT+rQ==} dependencies: - diff-sequences: 29.6.3 - estree-walker: 3.0.3 - loupe: 2.3.7 - pretty-format: 29.7.0 + '@vitest/pretty-format': 2.1.1 + loupe: 3.1.1 + tinyrainbow: 1.2.0 /@volar/kit@2.4.0-alpha.16(typescript@5.5.3): resolution: {integrity: sha512-jRPfMrxl8N53UkFINMoY777FBqG49RUqWkJt4yOlNEW8CmUS8fmUw4cz/jMv08KnQUyD3IeZWFtt3XZcQqe4Zw==} @@ -4391,11 +4400,13 @@ packages: dependencies: acorn: 8.12.0 - /acorn-walk@8.3.3: - resolution: {integrity: sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw==} - engines: {node: '>=0.4.0'} + /acorn-jsx@5.3.2(acorn@8.12.1): + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - acorn: 8.12.0 + acorn: 8.12.1 + dev: true /acorn@8.12.0: resolution: {integrity: sha512-RTvkC4w+KNXrM39/lWCUaG0IbRkWdCv7W/IOW9oU6SawyxulvkQy5HQPVTKxEjczcUvapcrw3cFx/60VN/NRNw==} @@ -4454,10 +4465,6 @@ packages: color-convert: 2.0.1 dev: true - /ansi-styles@5.2.0: - resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} - engines: {node: '>=10'} - /ansi-styles@6.2.1: resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} engines: {node: '>=12'} @@ -4505,8 +4512,9 @@ packages: engines: {node: '>=8'} dev: true - /assertion-error@1.1.0: - resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} + /assertion-error@2.0.1: + resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} + engines: {node: '>=12'} /astring@1.8.6: resolution: {integrity: sha512-ISvCdHdlTDlH5IpxQJIex7BWBywFWgjJSVdwst+/iQCoEYnyOaQ95+X1JGshuBjGp6nxKUy1jMgE3zPqN7fQdg==} @@ -4516,19 +4524,19 @@ packages: resolution: {integrity: sha512-8hJaCuqxObShWl2wEsnASqh/DbQ2O+S66m0Q3ctJlzBPEQ4pfGwwama3FCjZO3GDLQsjvn1T0v93Vxyu/+5fGw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} dependencies: - '@astrojs/compiler': 2.9.1 + '@astrojs/compiler': 2.10.3 '@typescript-eslint/scope-manager': 7.16.1 '@typescript-eslint/types': 7.16.1 '@typescript-eslint/typescript-estree': 7.16.1(typescript@5.5.3) - astrojs-compiler-sync: 1.0.0(@astrojs/compiler@2.9.1) - debug: 4.3.5 + astrojs-compiler-sync: 1.0.0(@astrojs/compiler@2.10.3) + debug: 4.3.6 entities: 4.5.0 eslint-scope: 8.0.1 eslint-visitor-keys: 4.0.0 espree: 10.1.0 globby: 11.1.0 is-glob: 4.0.3 - semver: 7.6.2 + semver: 7.6.3 transitivePeerDependencies: - supports-color - typescript @@ -4799,13 +4807,13 @@ packages: - terser - typescript - /astrojs-compiler-sync@1.0.0(@astrojs/compiler@2.9.1): + /astrojs-compiler-sync@1.0.0(@astrojs/compiler@2.10.3): resolution: {integrity: sha512-IM6FxpMoBxkGGdKppkFHNQIC9Wge7jspG2MIJff8DOhG41USNJLxJfxRm7wnkTKWlYK5Y1YFFNYr2vUUKkI8sw==} engines: {node: ^18.18.0 || >=20.9.0} peerDependencies: '@astrojs/compiler': '>=0.27.0' dependencies: - '@astrojs/compiler': 2.9.1 + '@astrojs/compiler': 2.10.3 synckit: 0.9.1 dev: true @@ -4935,6 +4943,17 @@ packages: node-releases: 2.0.14 update-browserslist-db: 1.0.16(browserslist@4.23.1) + /browserslist@4.23.3: + resolution: {integrity: sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + dependencies: + caniuse-lite: 1.0.30001660 + electron-to-chromium: 1.5.23 + node-releases: 2.0.18 + update-browserslist-db: 1.1.0(browserslist@4.23.3) + dev: true + /buffer@5.7.1: resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} dependencies: @@ -4942,6 +4961,11 @@ packages: ieee754: 1.2.1 dev: true + /builtin-modules@3.3.0: + resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} + engines: {node: '>=6'} + dev: true + /bundle-name@4.1.0: resolution: {integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==} engines: {node: '>=18'} @@ -4965,6 +4989,10 @@ packages: /caniuse-lite@1.0.30001636: resolution: {integrity: sha512-bMg2vmr8XBsbL6Lr0UHXy/21m84FTxDLWn2FSqMd5PrlbMxwJlQnC2YWYxVgp66PZE+BBNF2jYQUBKCo1FDeZg==} + /caniuse-lite@1.0.30001660: + resolution: {integrity: sha512-GacvNTTuATm26qC74pt+ad1fW15mlQ/zuTzzY1ZoIzECTP8HURDfF43kNxPgf7H1jmelCBQTTbBNxdSXOA7Bqg==} + dev: true + /case-anything@3.1.0: resolution: {integrity: sha512-rRYnn5Elur8RuNHKoJ2b0tgn+pjYxL7BzWom+JZ7NKKn1lt/yGV/tUNwOovxYa9l9VL5hnXQdMc+mENbhJzosQ==} engines: {node: '>=18'} @@ -4973,17 +5001,15 @@ packages: /ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} - /chai@4.4.1: - resolution: {integrity: sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==} - engines: {node: '>=4'} + /chai@5.1.1: + resolution: {integrity: sha512-pT1ZgP8rPNqUgieVaEY+ryQr6Q4HXNg8Ei9UnLUrjN4IA7dvQC5JB+/kxVcPNDHyBcc/26CXPkbNzq3qwrOEKA==} + engines: {node: '>=12'} dependencies: - assertion-error: 1.1.0 - check-error: 1.0.3 - deep-eql: 4.1.4 - get-func-name: 2.0.2 - loupe: 2.3.7 - pathval: 1.1.1 - type-detect: 4.0.8 + assertion-error: 2.0.1 + check-error: 2.1.1 + deep-eql: 5.0.2 + loupe: 3.1.1 + pathval: 2.0.0 /chalk@2.4.2: resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} @@ -5017,10 +5043,9 @@ packages: /character-reference-invalid@2.0.1: resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} - /check-error@1.0.3: - resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} - dependencies: - get-func-name: 2.0.2 + /check-error@2.1.1: + resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} + engines: {node: '>= 16'} /chokidar@3.6.0: resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} @@ -5053,6 +5078,13 @@ packages: resolution: {integrity: sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==} dev: false + /clean-regexp@1.0.0: + resolution: {integrity: sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==} + engines: {node: '>=4'} + dependencies: + escape-string-regexp: 1.0.5 + dev: true + /cli-boxes@3.0.0: resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==} engines: {node: '>=10'} @@ -5324,6 +5356,12 @@ packages: resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==} engines: {node: '>= 0.6'} + /core-js-compat@3.38.1: + resolution: {integrity: sha512-JRH6gfXxGmrzF3tZ57lFx97YARxCXPaMzPo6jELZhv88pBH5VXpQ+y0znKGlFnzuaihqhLbefxSJxWJMPtfDzw==} + dependencies: + browserslist: 4.23.3 + dev: true + /cosmiconfig-typescript-loader@5.0.0(@types/node@22.4.2)(cosmiconfig@9.0.0)(typescript@5.5.3): resolution: {integrity: sha512-+8cK7jRAReYkMwMiG+bxhcNKiHJDM6bR9FD/nGBXOWdMLuYawjF5cGrtLilJ+LGd3ZjCXnJjR5DkfWPoIVlqJA==} engines: {node: '>=v16'} @@ -5394,6 +5432,17 @@ packages: engines: {node: '>=12'} dev: true + /debug@3.2.7: + resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + dev: true + /debug@4.3.5: resolution: {integrity: sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==} engines: {node: '>=6.0'} @@ -5428,11 +5477,9 @@ packages: mimic-response: 3.1.0 dev: true - /deep-eql@4.1.4: - resolution: {integrity: sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==} + /deep-eql@5.0.2: + resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} engines: {node: '>=6'} - dependencies: - type-detect: 4.0.8 /deep-extend@0.6.0: resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} @@ -5499,10 +5546,6 @@ packages: dependencies: dequal: 2.0.3 - /diff-sequences@29.6.3: - resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - /diff@5.2.0: resolution: {integrity: sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==} engines: {node: '>=0.3.1'} @@ -5521,6 +5564,13 @@ packages: /dlv@1.1.3: resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} + /doctrine@3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} + dependencies: + esutils: 2.0.3 + dev: true + /dot-prop@5.3.0: resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} engines: {node: '>=8'} @@ -5541,6 +5591,10 @@ packages: /electron-to-chromium@1.4.807: resolution: {integrity: sha512-kSmJl2ZwhNf/bcIuCH/imtNOKlpkLDn2jqT5FJ+/0CXjhnFaOa9cOe9gHKKy71eM49izwuQjZhKk+lWQ1JxB7A==} + /electron-to-chromium@1.5.23: + resolution: {integrity: sha512-mBhODedOXg4v5QWwl21DjM5amzjmI1zw9EPrPK/5Wx7C8jt33bpZNrC7OhHUG3pxRtbLpr3W2dXT+Ph1SsfRZA==} + dev: true + /emmet@2.4.7: resolution: {integrity: sha512-O5O5QNqtdlnQM2bmKHtJgyChcrFMgQuulI+WdiOw2NArzprUqqxUW6bgYtKvzKgrsYpuLWalOkdhNP+1jluhCA==} dependencies: @@ -5684,7 +5738,7 @@ packages: eslint: '>=6.0.0' dependencies: eslint: 9.5.0 - semver: 7.6.2 + semver: 7.6.3 dev: true /eslint-config-prettier@9.1.0(eslint@9.5.0): @@ -5696,26 +5750,58 @@ packages: eslint: 9.5.0 dev: true - /eslint-plugin-astro@1.2.3(eslint@9.5.0)(typescript@5.5.3): - resolution: {integrity: sha512-asHT0VUs68oppVnTHfp/WgLqs0yCx9kG9AC/PKLmp+87imeh3nGHMdFm0qP46vHxTM0NLDEhvmjFdAVAqw+QPQ==} + /eslint-import-resolver-node@0.3.9: + resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} + dependencies: + debug: 3.2.7 + is-core-module: 2.13.1 + resolve: 1.22.8 + transitivePeerDependencies: + - supports-color + dev: true + + /eslint-plugin-astro@1.2.4(eslint@9.5.0)(typescript@5.5.3): + resolution: {integrity: sha512-45uXKW6lxmYEa8Gkh5lCfwAnOyQD90AaMS2Bu9ans88f+pFkliqjGeexiKv73oiTcY3I0vlzTUk5GlqvYlkjyA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: '>=8.57.0' dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@9.5.0) - '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/sourcemap-codec': 1.5.0 '@typescript-eslint/types': 7.16.1 astro-eslint-parser: 1.0.2(typescript@5.5.3) eslint: 9.5.0 eslint-compat-utils: 0.5.1(eslint@9.5.0) - globals: 15.6.0 - postcss: 8.4.39 + globals: 15.9.0 + postcss: 8.4.41 postcss-selector-parser: 6.1.0 transitivePeerDependencies: - supports-color - typescript dev: true + /eslint-plugin-import-x@3.1.0(eslint@9.5.0)(typescript@5.5.3): + resolution: {integrity: sha512-/UbPA+bYY7nIxcjL3kpcDY3UNdoLHFhyBFzHox2M0ypcUoueTn6woZUUmzzi5et/dXChksasYYFeKE2wshOrhg==} + engines: {node: '>=16'} + peerDependencies: + eslint: ^8.56.0 || ^9.0.0-0 + dependencies: + '@typescript-eslint/utils': 8.0.0-alpha.30(eslint@9.5.0)(typescript@5.5.3) + debug: 4.3.6 + doctrine: 3.0.0 + eslint: 9.5.0 + eslint-import-resolver-node: 0.3.9 + get-tsconfig: 4.8.1 + is-glob: 4.0.3 + minimatch: 9.0.4 + semver: 7.6.3 + stable-hash: 0.0.4 + tslib: 2.6.3 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + /eslint-plugin-jsonc@2.16.0(eslint@9.5.0): resolution: {integrity: sha512-Af/ZL5mgfb8FFNleH6KlO4/VdmDuTqmM+SPnWcdoWywTetv7kq+vQe99UyQb9XO3b0OWLVuTH7H0d/PXYCMdSg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -5732,7 +5818,7 @@ packages: synckit: 0.6.2 dev: true - /eslint-plugin-prettier@5.1.3(eslint-config-prettier@9.1.0)(eslint@9.5.0)(prettier@3.3.2): + /eslint-plugin-prettier@5.1.3(eslint-config-prettier@9.1.0)(eslint@9.5.0)(prettier@3.3.3): resolution: {integrity: sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -5748,11 +5834,36 @@ packages: dependencies: eslint: 9.5.0 eslint-config-prettier: 9.1.0(eslint@9.5.0) - prettier: 3.3.2 + prettier: 3.3.3 prettier-linter-helpers: 1.0.0 synckit: 0.8.8 dev: true + /eslint-plugin-unicorn@55.0.0(eslint@9.5.0): + resolution: {integrity: sha512-n3AKiVpY2/uDcGrS3+QsYDkjPfaOrNrsfQxU9nt5nitd9KuvVXrfAvgCO9DYPSfap+Gqjw9EOrXIsBp5tlHZjA==} + engines: {node: '>=18.18'} + peerDependencies: + eslint: '>=8.56.0' + dependencies: + '@babel/helper-validator-identifier': 7.24.7 + '@eslint-community/eslint-utils': 4.4.0(eslint@9.5.0) + ci-info: 4.0.0 + clean-regexp: 1.0.0 + core-js-compat: 3.38.1 + eslint: 9.5.0 + esquery: 1.6.0 + globals: 15.9.0 + indent-string: 4.0.0 + is-builtin-module: 3.2.1 + jsesc: 3.0.2 + pluralize: 8.0.0 + read-pkg-up: 7.0.1 + regexp-tree: 0.1.27 + regjsparser: 0.10.0 + semver: 7.6.3 + strip-indent: 3.0.0 + dev: true + /eslint-scope@8.0.1: resolution: {integrity: sha512-pL8XjgP4ZOmmwfFE8mEhSxA7ZY4C+LWyqjQ3o4yWkkmD0qcMT9kkW3zWHOczhWcjTSgqycYAgwSlXvZltv65og==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -5787,7 +5898,7 @@ packages: ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 - debug: 4.3.5 + debug: 4.3.6 escape-string-regexp: 4.0.0 eslint-scope: 8.0.1 eslint-visitor-keys: 4.0.0 @@ -5827,8 +5938,8 @@ packages: resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - acorn: 8.12.0 - acorn-jsx: 5.3.2(acorn@8.12.0) + acorn: 8.12.1 + acorn-jsx: 5.3.2(acorn@8.12.1) eslint-visitor-keys: 3.4.3 dev: true @@ -5928,6 +6039,7 @@ packages: onetime: 6.0.0 signal-exit: 4.1.0 strip-final-newline: 3.0.0 + dev: true /execa@9.2.0: resolution: {integrity: sha512-vpOyYg7UAVKLAWWtRS2gAdgkT7oJbCn0me3gmUmxZih4kd3MF/oo8kNTBTIbkO3yuuF5uB4ZCZfn8BOolITYhg==} @@ -6155,6 +6267,7 @@ packages: /get-stream@8.0.1: resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} engines: {node: '>=16'} + dev: true /get-stream@9.0.1: resolution: {integrity: sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==} @@ -6163,6 +6276,12 @@ packages: '@sec-ant/readable-stream': 0.4.1 is-stream: 4.0.1 + /get-tsconfig@4.8.1: + resolution: {integrity: sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==} + dependencies: + resolve-pkg-maps: 1.0.0 + dev: true + /git-raw-commits@4.0.0: resolution: {integrity: sha512-ICsMM1Wk8xSGMowkOmPrzo2Fgmfo4bMHLNX6ytHjajRJUqvHOw/TFapQ+QG75c3X/tTDDhOSRPGC52dDbNM8FQ==} engines: {node: '>=16'} @@ -6238,6 +6357,11 @@ packages: engines: {node: '>=18'} dev: true + /globals@15.9.0: + resolution: {integrity: sha512-SmSKyLLKFbSr6rptvP8izbyxJL4ILwqO9Jg23UA0sDlGlu58V59D1//I3vlc0KJphVdUR7vMjHIplYnzBxorQA==} + engines: {node: '>=18'} + dev: true + /globby@11.1.0: resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} engines: {node: '>=10'} @@ -6508,6 +6632,10 @@ packages: property-information: 6.5.0 space-separated-tokens: 2.0.2 + /hosted-git-info@2.8.9: + resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} + dev: true + /hosted-git-info@7.0.2: resolution: {integrity: sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==} engines: {node: ^16.14.0 || >=18.0.0} @@ -6535,6 +6663,7 @@ packages: /human-signals@5.0.0: resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} engines: {node: '>=16.17.0'} + dev: true /human-signals@7.0.0: resolution: {integrity: sha512-74kytxOUSvNbjrT9KisAbaTZ/eJwD/LrbM/kh5j0IhPuJzwuA19dWvniFGwBzN9rVjg+O/e+F310PjObDXS+9Q==} @@ -6556,6 +6685,7 @@ packages: /immutable@4.3.6: resolution: {integrity: sha512-Ju0+lEMyzMVZarkTn/gqRpdqd5dOPaz1mCZ0SH3JV6iFw81PldE/PEB1hWVEA288HPt4WXW8O7AWxB10M+03QQ==} + dev: true /import-fresh@3.3.0: resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} @@ -6573,6 +6703,11 @@ packages: engines: {node: '>=0.8.19'} dev: true + /indent-string@4.0.0: + resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} + engines: {node: '>=8'} + dev: true + /index-to-position@0.1.2: resolution: {integrity: sha512-MWDKS3AS1bGCHLBA2VLImJz42f7bJh8wQsTGCzI3j519/CASStoDONUBVz2I/VID0MpiX3SGSnbOD2xUalbE5g==} engines: {node: '>=18'} @@ -6635,6 +6770,13 @@ packages: resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==} engines: {node: '>=4'} + /is-builtin-module@3.2.1: + resolution: {integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==} + engines: {node: '>=6'} + dependencies: + builtin-modules: 3.3.0 + dev: true + /is-ci@3.0.1: resolution: {integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==} hasBin: true @@ -6754,9 +6896,6 @@ packages: /js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - /js-tokens@9.0.0: - resolution: {integrity: sha512-WriZw1luRMlmV3LGJaR6QOJjWwgLUTf89OwT2lUOyjX2dJGBwgmIkbcz+7WFZjrZM635JOIR517++e/67CP9dQ==} - /js-yaml@3.14.1: resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} hasBin: true @@ -6770,11 +6909,22 @@ packages: dependencies: argparse: 2.0.1 + /jsesc@0.5.0: + resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==} + hasBin: true + dev: true + /jsesc@2.5.2: resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} engines: {node: '>=4'} hasBin: true + /jsesc@3.0.2: + resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==} + engines: {node: '>=6'} + hasBin: true + dev: true + /json-buffer@3.0.1: resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} dev: true @@ -6803,10 +6953,10 @@ packages: resolution: {integrity: sha512-WYDyuc/uFcGp6YtM2H0uKmUwieOuzeE/5YocFJLnLfclZ4inf3mRn8ZVy1s7Hxji7Jxm6Ss8gqpexD/GlKoGgg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - acorn: 8.12.0 + acorn: 8.12.1 eslint-visitor-keys: 3.4.3 espree: 9.6.1 - semver: 7.6.2 + semver: 7.6.3 dev: true /jsonc-parser@2.3.1: @@ -6960,8 +7110,8 @@ packages: dependencies: js-tokens: 4.0.0 - /loupe@2.3.7: - resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} + /loupe@3.1.1: + resolution: {integrity: sha512-edNu/8D5MKVfGVFRhFf8aAxiTM6Wumfz5XsaatSxlD3w4R1d/WEKUTydCdPGbl9K7QG/Ca3GnDV2sIKIpXRQcw==} dependencies: get-func-name: 2.0.2 @@ -7550,6 +7700,7 @@ packages: /mimic-fn@4.0.0: resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} engines: {node: '>=12'} + dev: true /mimic-function@5.0.1: resolution: {integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==} @@ -7560,6 +7711,11 @@ packages: engines: {node: '>=10'} dev: true + /min-indent@1.0.1: + resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} + engines: {node: '>=4'} + dev: true + /minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} dependencies: @@ -7661,6 +7817,19 @@ packages: /node-releases@2.0.14: resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} + /node-releases@2.0.18: + resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==} + dev: true + + /normalize-package-data@2.5.0: + resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} + dependencies: + hosted-git-info: 2.8.9 + resolve: 1.22.8 + semver: 5.7.2 + validate-npm-package-license: 3.0.4 + dev: true + /normalize-package-data@6.0.1: resolution: {integrity: sha512-6rvCfeRW+OEZagAB4lMLSNuTNYZWLVtKccK79VSTf//yTY5VOCgcpH80O+bZK8Neps7pUnd5G+QlMg1yV/2iZQ==} engines: {node: ^16.14.0 || >=18.0.0} @@ -7719,6 +7888,7 @@ packages: engines: {node: '>=12'} dependencies: mimic-fn: 4.0.0 + dev: true /onetime@7.0.0: resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==} @@ -7781,12 +7951,6 @@ packages: yocto-queue: 1.0.0 dev: true - /p-limit@5.0.0: - resolution: {integrity: sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==} - engines: {node: '>=18'} - dependencies: - yocto-queue: 1.0.0 - /p-limit@6.1.0: resolution: {integrity: sha512-H0jc0q1vOzlEk0TqAKXKZxdl7kX3OFUzCnNVUnq5Pc3DGo0kpeaMuPqxQn235HibwBEb0/pm9dgKTjXy66fBkg==} engines: {node: '>=18'} @@ -7922,6 +8086,10 @@ packages: resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} engines: {node: '>=12'} + /path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + dev: true + /path-to-regexp@6.2.2: resolution: {integrity: sha512-GQX3SSMokngb36+whdpRXE+3f9V8UzyAorlYvOGx87ufGHehNTn5lCxrKtLyZ4Yl/wEKnNnr98ZzOwwDZV5ogw==} @@ -7933,8 +8101,9 @@ packages: /pathe@1.1.2: resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} - /pathval@1.1.1: - resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} + /pathval@2.0.0: + resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==} + engines: {node: '>= 14.16'} /perfect-debounce@1.0.0: resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==} @@ -7991,6 +8160,11 @@ packages: fsevents: 2.3.2 dev: true + /pluralize@8.0.0: + resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} + engines: {node: '>=4'} + dev: true + /postcss-nested@6.0.1(postcss@8.4.39): resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} engines: {node: '>=12.0'} @@ -8066,8 +8240,8 @@ packages: resolution: {integrity: sha512-RiBETaaP9veVstE4vUwSIcdATj6dKmXljouXc/DDNwBSPTp8FRkLGDSGFClKsAFeeg+13SB0Z1JZvbD76bigJw==} engines: {node: ^14.15.0 || >=16.0.0} dependencies: - '@astrojs/compiler': 2.9.1 - prettier: 3.3.2 + '@astrojs/compiler': 2.10.3 + prettier: 3.3.3 sass-formatter: 0.7.9 dev: true @@ -8079,20 +8253,12 @@ packages: dev: false optional: true - /prettier@3.3.2: - resolution: {integrity: sha512-rAVeHYMcv8ATV5d508CFdn+8/pHPpXeIid1DdrPwXnaAdH7cqjVbpJaT5eq4yRAFU/lsbwYwSF/n5iNrdJHPQA==} + /prettier@3.3.3: + resolution: {integrity: sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==} engines: {node: '>=14'} hasBin: true dev: true - /pretty-format@29.7.0: - resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/schemas': 29.6.3 - ansi-styles: 5.2.0 - react-is: 18.3.1 - /pretty-ms@9.0.0: resolution: {integrity: sha512-E9e9HJ9R9NasGOgPaPE8VMeiPKAyWR5jcFpNnwIejslIhWqdqOrb2wShBsncMPUb+BcCd2OPYfh7p2W6oemTng==} engines: {node: '>=18'} @@ -8150,9 +8316,6 @@ packages: react: 18.3.1 scheduler: 0.23.2 - /react-is@18.3.1: - resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} - /react-refresh@0.14.2: resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==} engines: {node: '>=0.10.0'} @@ -8234,6 +8397,25 @@ packages: type-fest: 4.20.1 dev: true + /read-pkg-up@7.0.1: + resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} + engines: {node: '>=8'} + dependencies: + find-up: 4.1.0 + read-pkg: 5.2.0 + type-fest: 0.8.1 + dev: true + + /read-pkg@5.2.0: + resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} + engines: {node: '>=8'} + dependencies: + '@types/normalize-package-data': 2.4.4 + normalize-package-data: 2.5.0 + parse-json: 5.2.0 + type-fest: 0.6.0 + dev: true + /read-pkg@9.0.1: resolution: {integrity: sha512-9viLL4/n1BJUCT1NXVTdS1jtm80yDEgR5T4yCelII49Mbj0v1rZdKqj7zCiYdbB0CuCgdrvHcNogAKTFPBocFA==} engines: {node: '>=18'} @@ -8260,6 +8442,18 @@ packages: dependencies: picomatch: 2.3.1 + /regexp-tree@0.1.27: + resolution: {integrity: sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==} + hasBin: true + dev: true + + /regjsparser@0.10.0: + resolution: {integrity: sha512-qx+xQGZVsy55CH0a1hiVwHmqjLryfh7wQyF5HO07XJ9f7dQMY/gPQHhlyDkIzJKC+x2fUCpCcUODUUUFrm7SHA==} + hasBin: true + dependencies: + jsesc: 0.5.0 + dev: true + /rehype-expressive-code@0.35.3: resolution: {integrity: sha512-kj43Rg+WzYUs8RRr6XyBr60pnrIZEgbmn9yJoV6qka1UDpcx7r8icn6Q2uSAgaLtlEUy+HCPgQJraOZrA53LOQ==} dependencies: @@ -8425,6 +8619,19 @@ packages: engines: {node: '>=8'} dev: true + /resolve-pkg-maps@1.0.0: + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + dev: true + + /resolve@1.22.8: + resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} + hasBin: true + dependencies: + is-core-module: 2.13.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + dev: true + /restore-cursor@5.1.0: resolution: {integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==} engines: {node: '>=18'} @@ -8520,6 +8727,7 @@ packages: '@rollup/rollup-win32-ia32-msvc': 4.18.1 '@rollup/rollup-win32-x64-msvc': 4.18.1 fsevents: 2.3.3 + dev: true /rollup@4.21.1: resolution: {integrity: sha512-ZnYyKvscThhgd3M5+Qt3pmhO4jIRR5RGzaSovB6Q7rGNrK5cUncrtLmcTTJVSdcKXyZjW8X8MB0JMSuH9bcAJg==} @@ -8578,6 +8786,7 @@ packages: chokidar: 3.6.0 immutable: 4.3.6 source-map-js: 1.2.0 + dev: true /sax@1.4.1: resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==} @@ -8595,6 +8804,11 @@ packages: extend-shallow: 2.0.1 kind-of: 6.0.3 + /semver@5.7.2: + resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} + hasBin: true + dev: true + /semver@6.3.1: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true @@ -8776,6 +8990,10 @@ packages: /sprintf-js@1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + /stable-hash@0.0.4: + resolution: {integrity: sha512-LjdcbuBeLcdETCrPn9i8AYAZ1eCtu4ECAWtP7UleOiZ9LzVxRzzUZEoZ8zB24nhkQnDWyET0I+3sWokSDS3E7g==} + dev: true + /stackback@0.0.2: resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} @@ -8882,11 +9100,19 @@ packages: /strip-final-newline@3.0.0: resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} engines: {node: '>=12'} + dev: true /strip-final-newline@4.0.0: resolution: {integrity: sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==} engines: {node: '>=18'} + /strip-indent@3.0.0: + resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} + engines: {node: '>=8'} + dependencies: + min-indent: 1.0.1 + dev: true + /strip-json-comments@2.0.1: resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} engines: {node: '>=0.10.0'} @@ -8897,11 +9123,6 @@ packages: engines: {node: '>=8'} dev: true - /strip-literal@2.1.0: - resolution: {integrity: sha512-Op+UycaUt/8FbN/Z2TWPBLge3jWrP3xj10f3fnYxf052bKuS3EKs1ZQcVGjnEMdsNVAM+plXRdmjrZ/KgG3Skw==} - dependencies: - js-tokens: 9.0.0 - /style-mod@4.1.2: resolution: {integrity: sha512-wnD1HyVqpJUI2+eKZ+eo1UwghftP6yuFheBqqe+bWCotBjC2K1YnteJILRMs3SM4V/0dLEW1SC27MWP5y+mwmw==} @@ -8934,6 +9155,11 @@ packages: has-flag: 4.0.0 dev: true + /supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + dev: true + /synckit@0.6.2: resolution: {integrity: sha512-Vhf+bUa//YSTYKseDiiEuQmhGCoIF3CVBhunm3r/DQnYiGT4JssmnKQc44BIyOZRK2pKjXXAgbhfmbeoC9CJpA==} engines: {node: '>=12.20'} @@ -9034,18 +9260,22 @@ packages: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} dev: true - /tinybench@2.8.0: - resolution: {integrity: sha512-1/eK7zUnIklz4JUUlL+658n58XO2hHLQfSk1Zf2LKieUjxidN16eKFEoDEfjHc3ohofSSqK3X5yO6VGb6iW8Lw==} + /tinybench@2.9.0: + resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} /tinyexec@0.3.0: resolution: {integrity: sha512-tVGE0mVJPGb0chKhqmsoosjsS+qUnJVGJpZgsHYQcGoPlG3B51R3PouqTgEGH2Dc9jjFyOqOpix6ZHNMXp1FZg==} - /tinypool@0.8.4: - resolution: {integrity: sha512-i11VH5gS6IFeLY3gMBQ00/MmLncVP7JLXOw1vlgkytLmJK7QnEr7NXf0LBdxfmNPAeyetukOk0bOYrJrFGjYJQ==} + /tinypool@1.0.1: + resolution: {integrity: sha512-URZYihUbRPcGv95En+sz6MfghfIc2OJ1sv/RmhWZLouPY0/8Vo80viwPvg3dlaS9fuq7fQMEfgRRK7BBZThBEA==} + engines: {node: ^18.0.0 || >=20.0.0} + + /tinyrainbow@1.2.0: + resolution: {integrity: sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==} engines: {node: '>=14.0.0'} - /tinyspy@2.2.1: - resolution: {integrity: sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==} + /tinyspy@3.0.2: + resolution: {integrity: sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==} engines: {node: '>=14.0.0'} /to-fast-properties@2.0.0: @@ -9118,9 +9348,15 @@ packages: prelude-ls: 1.2.1 dev: true - /type-detect@4.0.8: - resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} - engines: {node: '>=4'} + /type-fest@0.6.0: + resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} + engines: {node: '>=8'} + dev: true + + /type-fest@0.8.1: + resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} + engines: {node: '>=8'} + dev: true /type-fest@1.4.0: resolution: {integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==} @@ -9359,7 +9595,7 @@ packages: '@unocss/transformer-directives': 0.59.4 '@unocss/transformer-variant-group': 0.59.4 '@unocss/vite': 0.59.4(vite@5.4.2) - vite: 5.4.2(@types/node@22.4.2)(sass@1.77.6) + vite: 5.4.2(@types/node@22.4.2) transitivePeerDependencies: - postcss - rollup @@ -9375,6 +9611,17 @@ packages: escalade: 3.1.2 picocolors: 1.0.1 + /update-browserslist-db@1.1.0(browserslist@4.23.3): + resolution: {integrity: sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + dependencies: + browserslist: 4.23.3 + escalade: 3.1.2 + picocolors: 1.0.1 + dev: true + /uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: @@ -9460,42 +9707,42 @@ packages: '@types/unist': 3.0.2 vfile-message: 4.0.2 - /vite-node@1.6.0(@types/node@20.14.11): - resolution: {integrity: sha512-de6HJgzC+TFzOu0NTC4RAIsyf/DY/ibWDYQUcuEA84EMHhcefTUGkjFHKKEJhQN4A+6I0u++kr3l36ZF2d7XRw==} + /vite-node@2.1.1(@types/node@20.14.11): + resolution: {integrity: sha512-N/mGckI1suG/5wQI35XeR9rsMsPqKXzq1CdUndzVstBj/HvyxxGctwnK6WX43NGt5L3Z5tcRf83g4TITKJhPrA==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true dependencies: cac: 6.7.14 - debug: 4.3.5 + debug: 4.3.6 pathe: 1.1.2 - picocolors: 1.0.1 - vite: 5.3.4(@types/node@20.14.11) + vite: 5.4.2(@types/node@20.14.11) transitivePeerDependencies: - '@types/node' - less - lightningcss - sass + - sass-embedded - stylus - sugarss - supports-color - terser dev: true - /vite-node@1.6.0(@types/node@22.4.2): - resolution: {integrity: sha512-de6HJgzC+TFzOu0NTC4RAIsyf/DY/ibWDYQUcuEA84EMHhcefTUGkjFHKKEJhQN4A+6I0u++kr3l36ZF2d7XRw==} + /vite-node@2.1.1(@types/node@22.4.2): + resolution: {integrity: sha512-N/mGckI1suG/5wQI35XeR9rsMsPqKXzq1CdUndzVstBj/HvyxxGctwnK6WX43NGt5L3Z5tcRf83g4TITKJhPrA==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true dependencies: cac: 6.7.14 - debug: 4.3.5 + debug: 4.3.6 pathe: 1.1.2 - picocolors: 1.0.1 - vite: 5.3.4(@types/node@22.4.2) + vite: 5.4.2(@types/node@22.4.2) transitivePeerDependencies: - '@types/node' - less - lightningcss - sass + - sass-embedded - stylus - sugarss - supports-color @@ -9543,42 +9790,6 @@ packages: - typescript dev: true - /vite@5.3.4(@types/node@20.14.11): - resolution: {integrity: sha512-Cw+7zL3ZG9/NZBB8C+8QbQZmR54GwqIz+WMI4b3JgdYJvX+ny9AjJXqkGQlDXSXRP9rP0B4tbciRMOVEKulVOA==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - peerDependencies: - '@types/node': ^18.0.0 || >=20.0.0 - less: '*' - lightningcss: ^1.21.0 - sass: '*' - stylus: '*' - sugarss: '*' - terser: ^5.4.0 - peerDependenciesMeta: - '@types/node': - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - dependencies: - '@types/node': 20.14.11 - esbuild: 0.21.5 - postcss: 8.4.39 - rollup: 4.18.1 - optionalDependencies: - fsevents: 2.3.3 - dev: true - /vite@5.3.4(@types/node@22.4.2): resolution: {integrity: sha512-Cw+7zL3ZG9/NZBB8C+8QbQZmR54GwqIz+WMI4b3JgdYJvX+ny9AjJXqkGQlDXSXRP9rP0B4tbciRMOVEKulVOA==} engines: {node: ^18.0.0 || >=20.0.0} @@ -9613,6 +9824,7 @@ packages: rollup: 4.18.1 optionalDependencies: fsevents: 2.3.3 + dev: true /vite@5.4.2(@types/node@20.14.11): resolution: {integrity: sha512-dDrQTRHp5C1fTFzcSaMxjk6vdpKvT+2/mIdE07Gw2ykehT49O0z/VHS3zZ8iV/Gh8BJJKHWOe5RjaNrW5xf/GA==} @@ -9729,6 +9941,7 @@ packages: sass: 1.77.6 optionalDependencies: fsevents: 2.3.3 + dev: true /vitefu@0.2.5(vite@5.4.2): resolution: {integrity: sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==} @@ -9740,15 +9953,15 @@ packages: dependencies: vite: 5.4.2(@types/node@22.4.2) - /vitest@1.6.0(@types/node@20.14.11): - resolution: {integrity: sha512-H5r/dN06swuFnzNFhq/dnz37bPXnq8xB2xB5JOVk8K09rUtoeNN+LHWkoQ0A/i3hvbUKKcCei9KpbxqHMLhLLA==} + /vitest@2.1.1(@types/node@20.14.11): + resolution: {integrity: sha512-97We7/VC0e9X5zBVkvt7SGQMGrRtn3KtySFQG5fpaMlS+l62eeXRQO633AYhSTC3z7IMebnPPNjGXVGNRFlxBA==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' '@types/node': ^18.0.0 || >=20.0.0 - '@vitest/browser': 1.6.0 - '@vitest/ui': 1.6.0 + '@vitest/browser': 2.1.1 + '@vitest/ui': 2.1.1 happy-dom: '*' jsdom: '*' peerDependenciesMeta: @@ -9766,45 +9979,46 @@ packages: optional: true dependencies: '@types/node': 20.14.11 - '@vitest/expect': 1.6.0 - '@vitest/runner': 1.6.0 - '@vitest/snapshot': 1.6.0 - '@vitest/spy': 1.6.0 - '@vitest/utils': 1.6.0 - acorn-walk: 8.3.3 - chai: 4.4.1 - debug: 4.3.5 - execa: 8.0.1 - local-pkg: 0.5.0 - magic-string: 0.30.10 + '@vitest/expect': 2.1.1 + '@vitest/mocker': 2.1.1(@vitest/spy@2.1.1)(vite@5.4.2) + '@vitest/pretty-format': 2.1.1 + '@vitest/runner': 2.1.1 + '@vitest/snapshot': 2.1.1 + '@vitest/spy': 2.1.1 + '@vitest/utils': 2.1.1 + chai: 5.1.1 + debug: 4.3.6 + magic-string: 0.30.11 pathe: 1.1.2 - picocolors: 1.0.1 std-env: 3.7.0 - strip-literal: 2.1.0 - tinybench: 2.8.0 - tinypool: 0.8.4 - vite: 5.3.4(@types/node@20.14.11) - vite-node: 1.6.0(@types/node@20.14.11) - why-is-node-running: 2.2.2 + tinybench: 2.9.0 + tinyexec: 0.3.0 + tinypool: 1.0.1 + tinyrainbow: 1.2.0 + vite: 5.4.2(@types/node@20.14.11) + vite-node: 2.1.1(@types/node@20.14.11) + why-is-node-running: 2.3.0 transitivePeerDependencies: - less - lightningcss + - msw - sass + - sass-embedded - stylus - sugarss - supports-color - terser dev: true - /vitest@1.6.0(@types/node@22.4.2): - resolution: {integrity: sha512-H5r/dN06swuFnzNFhq/dnz37bPXnq8xB2xB5JOVk8K09rUtoeNN+LHWkoQ0A/i3hvbUKKcCei9KpbxqHMLhLLA==} + /vitest@2.1.1(@types/node@22.4.2): + resolution: {integrity: sha512-97We7/VC0e9X5zBVkvt7SGQMGrRtn3KtySFQG5fpaMlS+l62eeXRQO633AYhSTC3z7IMebnPPNjGXVGNRFlxBA==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' '@types/node': ^18.0.0 || >=20.0.0 - '@vitest/browser': 1.6.0 - '@vitest/ui': 1.6.0 + '@vitest/browser': 2.1.1 + '@vitest/ui': 2.1.1 happy-dom: '*' jsdom: '*' peerDependenciesMeta: @@ -9822,30 +10036,31 @@ packages: optional: true dependencies: '@types/node': 22.4.2 - '@vitest/expect': 1.6.0 - '@vitest/runner': 1.6.0 - '@vitest/snapshot': 1.6.0 - '@vitest/spy': 1.6.0 - '@vitest/utils': 1.6.0 - acorn-walk: 8.3.3 - chai: 4.4.1 - debug: 4.3.5 - execa: 8.0.1 - local-pkg: 0.5.0 - magic-string: 0.30.10 + '@vitest/expect': 2.1.1 + '@vitest/mocker': 2.1.1(@vitest/spy@2.1.1)(vite@5.4.2) + '@vitest/pretty-format': 2.1.1 + '@vitest/runner': 2.1.1 + '@vitest/snapshot': 2.1.1 + '@vitest/spy': 2.1.1 + '@vitest/utils': 2.1.1 + chai: 5.1.1 + debug: 4.3.6 + magic-string: 0.30.11 pathe: 1.1.2 - picocolors: 1.0.1 std-env: 3.7.0 - strip-literal: 2.1.0 - tinybench: 2.8.0 - tinypool: 0.8.4 - vite: 5.3.4(@types/node@22.4.2) - vite-node: 1.6.0(@types/node@22.4.2) - why-is-node-running: 2.2.2 + tinybench: 2.9.0 + tinyexec: 0.3.0 + tinypool: 1.0.1 + tinyrainbow: 1.2.0 + vite: 5.4.2(@types/node@22.4.2) + vite-node: 2.1.1(@types/node@22.4.2) + why-is-node-running: 2.3.0 transitivePeerDependencies: - less - lightningcss + - msw - sass + - sass-embedded - stylus - sugarss - supports-color @@ -9894,7 +10109,7 @@ packages: vscode-uri: 3.0.8 dev: true - /volar-service-prettier@0.0.59(@volar/language-service@2.4.0-alpha.16)(prettier@3.3.2): + /volar-service-prettier@0.0.59(@volar/language-service@2.4.0-alpha.16)(prettier@3.3.3): resolution: {integrity: sha512-FmBR4lsgFRGR3V0LnxZZal0WqdOJjuLL6mQSj4p57M15APtQwuocG/FiF+ONGFnwRXMOIBDBTCARdth+TKgL3A==} peerDependencies: '@volar/language-service': ~2.4.0-alpha.12 @@ -9906,7 +10121,7 @@ packages: optional: true dependencies: '@volar/language-service': 2.4.0-alpha.16 - prettier: 3.3.2 + prettier: 3.3.3 vscode-uri: 3.0.8 dev: true @@ -10076,8 +10291,8 @@ packages: dependencies: isexe: 2.0.0 - /why-is-node-running@2.2.2: - resolution: {integrity: sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==} + /why-is-node-running@2.3.0: + resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} engines: {node: '>=8'} hasBin: true dependencies: @@ -10178,6 +10393,7 @@ packages: /yocto-queue@1.0.0: resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} engines: {node: '>=12.20'} + dev: true /yocto-queue@1.1.1: resolution: {integrity: sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==}