From 1b88a6e77da2c09dc3155f01765eea249ef8e610 Mon Sep 17 00:00:00 2001 From: StarHeart Date: Sat, 1 Aug 2026 16:57:44 +0800 Subject: [PATCH] =?UTF-8?q?:memo:=20Docs:=20=E6=9B=B4=E6=96=B0=E5=88=B0=20?= =?UTF-8?q?nonepress=203.8.0=20(#4126)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .devcontainer/devcontainer.json | 13 +- .eslintignore | 6 - .eslintrc.js | 403 ---- .github/workflows/release-drafter.yml | 2 +- .github/workflows/release.yml | 2 +- .oxfmtrc.json | 36 + .prettierignore | 3 - .prettierrc | 21 - .stylelintignore | 7 + .stylelintrc.js | 19 +- eslint.config.ts | 73 + eslint.rules.ts | 392 ++++ nonebot/config.py | 2 +- nonebot/drivers/aiohttp.py | 2 +- nonebot/drivers/fastapi.py | 2 +- nonebot/drivers/httpx.py | 2 +- nonebot/drivers/none.py | 2 +- nonebot/drivers/quart.py | 2 +- nonebot/drivers/websockets.py | 2 +- nonebot/rule.py | 10 +- package.json | 37 +- pnpm-lock.yaml | 1784 ++++++++++------- scripts/build-api-docs.sh | 2 +- tsconfig.json | 2 +- website/docs/advanced/dependency.mdx | 20 +- website/docs/advanced/driver.md | 12 +- website/docs/advanced/matcher.md | 4 +- website/docs/appendices/api-calling.mdx | 4 +- website/docs/appendices/config.mdx | 12 +- website/docs/appendices/overload.md | 6 +- website/docs/appendices/session-control.mdx | 8 +- website/docs/best-practice/alconna/command.md | 2 +- .../docs/best-practice/alconna/matcher.mdx | 2 +- .../best-practice/alconna/uniseg/message.mdx | 2 +- .../best-practice/alconna/uniseg/utils.mdx | 4 +- website/docs/best-practice/data-storing.md | 4 +- .../database/developer/README.md | 4 +- website/docs/best-practice/database/user.md | 4 +- website/docs/best-practice/error-tracking.md | 2 +- website/docs/best-practice/htmlkit-render.md | 2 +- website/docs/best-practice/multi-adapter.mdx | 2 +- website/docs/best-practice/scheduler.md | 2 +- website/docs/best-practice/testing/README.mdx | 2 +- .../docs/best-practice/testing/behavior.mdx | 2 +- website/docs/developer/adapter-writing.md | 4 +- website/docs/developer/plugin-publishing.mdx | 18 +- website/docs/editor-support.md | 2 +- website/docs/quick-start.mdx | 2 +- website/docs/tutorial/application.mdx | 4 +- website/docs/tutorial/create-plugin.md | 14 +- website/docs/tutorial/event-data.mdx | 4 +- website/docs/tutorial/handler.mdx | 2 +- website/docs/tutorial/matcher.md | 4 +- website/docs/tutorial/message.md | 8 +- website/docs/tutorial/store.mdx | 2 +- website/docusaurus.config.ts | 5 +- website/package.json | 10 +- website/sidebars.ts | 2 +- website/src/components/Asciinema/index.tsx | 1 - website/src/components/Form/Adapter.tsx | 2 +- website/src/components/Form/Bot.tsx | 2 +- .../src/components/Form/Items/Tag/index.tsx | 4 +- .../src/components/Form/Items/Tag/styles.css | 1 + website/src/components/Form/Plugin.tsx | 2 +- website/src/components/Form/index.tsx | 6 +- website/src/components/Messenger/index.tsx | 4 +- website/src/components/Paginate/index.tsx | 6 +- .../src/components/Resource/Avatar/index.tsx | 4 +- .../src/components/Resource/Card/index.tsx | 2 +- .../components/Resource/DetailCard/index.tsx | 2 +- .../src/components/Store/Content/Adapter.tsx | 4 +- website/src/components/Store/Content/Bot.tsx | 4 +- .../src/components/Store/Content/Driver.tsx | 4 +- .../src/components/Store/Content/Plugin.tsx | 8 +- website/src/components/Store/Layout.tsx | 2 +- website/src/components/Store/Toolbar.tsx | 4 +- website/src/libs/color.ts | 2 +- website/src/libs/filter.ts | 30 +- website/src/libs/search.ts | 8 +- website/src/libs/store.ts | 8 +- website/src/libs/toolbar.ts | 4 +- website/tailwind.config.ts | 2 +- .../version-2.4.3/advanced/dependency.mdx | 20 +- .../version-2.4.3/advanced/driver.md | 12 +- .../version-2.4.3/advanced/matcher.md | 4 +- .../version-2.4.3/api/config.md | 2 +- .../version-2.4.3/api/drivers/aiohttp.md | 2 +- .../version-2.4.3/api/drivers/fastapi.md | 2 +- .../version-2.4.3/api/drivers/httpx.md | 2 +- .../version-2.4.3/api/drivers/none.md | 2 +- .../version-2.4.3/api/drivers/quart.md | 2 +- .../version-2.4.3/api/drivers/websockets.md | 2 +- .../versioned_docs/version-2.4.3/api/rule.md | 10 +- .../version-2.4.3/appendices/api-calling.mdx | 4 +- .../version-2.4.3/appendices/config.mdx | 10 +- .../version-2.4.3/appendices/overload.md | 6 +- .../appendices/session-control.mdx | 8 +- .../best-practice/alconna/command.md | 2 +- .../best-practice/alconna/matcher.mdx | 2 +- .../best-practice/alconna/uniseg/message.mdx | 2 +- .../best-practice/alconna/uniseg/utils.mdx | 4 +- .../best-practice/data-storing.md | 4 +- .../database/developer/README.md | 4 +- .../best-practice/database/user.md | 4 +- .../best-practice/error-tracking.md | 2 +- .../best-practice/htmlkit-render.md | 2 +- .../best-practice/multi-adapter.mdx | 2 +- .../version-2.4.3/best-practice/scheduler.md | 2 +- .../best-practice/testing/README.mdx | 2 +- .../best-practice/testing/behavior.mdx | 2 +- .../developer/adapter-writing.md | 4 +- .../developer/plugin-publishing.mdx | 18 +- .../version-2.4.3/quick-start.mdx | 2 +- .../version-2.4.3/tutorial/application.md | 4 +- .../version-2.4.3/tutorial/create-plugin.md | 14 +- .../version-2.4.3/tutorial/event-data.mdx | 4 +- .../version-2.4.3/tutorial/handler.mdx | 2 +- .../version-2.4.3/tutorial/matcher.md | 4 +- .../version-2.4.3/tutorial/message.md | 8 +- .../version-2.4.3/tutorial/store.mdx | 2 +- .../version-2.4.4/advanced/dependency.mdx | 20 +- .../version-2.4.4/advanced/driver.md | 12 +- .../version-2.4.4/advanced/matcher.md | 4 +- .../version-2.4.4/api/config.md | 2 +- .../version-2.4.4/api/drivers/aiohttp.md | 2 +- .../version-2.4.4/api/drivers/fastapi.md | 2 +- .../version-2.4.4/api/drivers/httpx.md | 2 +- .../version-2.4.4/api/drivers/none.md | 2 +- .../version-2.4.4/api/drivers/quart.md | 2 +- .../version-2.4.4/api/drivers/websockets.md | 2 +- .../versioned_docs/version-2.4.4/api/rule.md | 10 +- .../version-2.4.4/appendices/api-calling.mdx | 4 +- .../version-2.4.4/appendices/config.mdx | 12 +- .../version-2.4.4/appendices/overload.md | 6 +- .../appendices/session-control.mdx | 8 +- .../best-practice/alconna/command.md | 2 +- .../best-practice/alconna/matcher.mdx | 2 +- .../best-practice/alconna/uniseg/message.mdx | 2 +- .../best-practice/alconna/uniseg/utils.mdx | 4 +- .../best-practice/data-storing.md | 4 +- .../database/developer/README.md | 4 +- .../best-practice/database/user.md | 4 +- .../best-practice/error-tracking.md | 2 +- .../best-practice/htmlkit-render.md | 2 +- .../best-practice/multi-adapter.mdx | 2 +- .../version-2.4.4/best-practice/scheduler.md | 2 +- .../best-practice/testing/README.mdx | 2 +- .../best-practice/testing/behavior.mdx | 2 +- .../developer/adapter-writing.md | 4 +- .../developer/plugin-publishing.mdx | 18 +- .../version-2.4.4/editor-support.md | 2 +- .../version-2.4.4/quick-start.mdx | 2 +- .../version-2.4.4/tutorial/application.mdx | 4 +- .../version-2.4.4/tutorial/create-plugin.md | 14 +- .../version-2.4.4/tutorial/event-data.mdx | 4 +- .../version-2.4.4/tutorial/handler.mdx | 2 +- .../version-2.4.4/tutorial/matcher.md | 4 +- .../version-2.4.4/tutorial/message.md | 8 +- .../version-2.4.4/tutorial/store.mdx | 2 +- .../version-2.5.0/advanced/dependency.mdx | 20 +- .../version-2.5.0/advanced/driver.md | 12 +- .../version-2.5.0/advanced/matcher.md | 4 +- .../version-2.5.0/api/config.md | 2 +- .../version-2.5.0/api/drivers/aiohttp.md | 2 +- .../version-2.5.0/api/drivers/fastapi.md | 2 +- .../version-2.5.0/api/drivers/httpx.md | 2 +- .../version-2.5.0/api/drivers/none.md | 2 +- .../version-2.5.0/api/drivers/quart.md | 2 +- .../version-2.5.0/api/drivers/websockets.md | 2 +- .../versioned_docs/version-2.5.0/api/rule.md | 10 +- .../version-2.5.0/appendices/api-calling.mdx | 4 +- .../version-2.5.0/appendices/config.mdx | 12 +- .../version-2.5.0/appendices/overload.md | 6 +- .../appendices/session-control.mdx | 8 +- .../best-practice/alconna/command.md | 2 +- .../best-practice/alconna/matcher.mdx | 2 +- .../best-practice/alconna/uniseg/message.mdx | 2 +- .../best-practice/alconna/uniseg/utils.mdx | 4 +- .../best-practice/data-storing.md | 4 +- .../database/developer/README.md | 4 +- .../best-practice/database/user.md | 4 +- .../best-practice/error-tracking.md | 2 +- .../best-practice/htmlkit-render.md | 2 +- .../best-practice/multi-adapter.mdx | 2 +- .../version-2.5.0/best-practice/scheduler.md | 2 +- .../best-practice/testing/README.mdx | 2 +- .../best-practice/testing/behavior.mdx | 2 +- .../developer/adapter-writing.md | 4 +- .../developer/plugin-publishing.mdx | 18 +- .../version-2.5.0/editor-support.md | 2 +- .../version-2.5.0/quick-start.mdx | 2 +- .../version-2.5.0/tutorial/application.mdx | 4 +- .../version-2.5.0/tutorial/create-plugin.md | 14 +- .../version-2.5.0/tutorial/event-data.mdx | 4 +- .../version-2.5.0/tutorial/handler.mdx | 2 +- .../version-2.5.0/tutorial/matcher.md | 4 +- .../version-2.5.0/tutorial/message.md | 8 +- .../version-2.5.0/tutorial/store.mdx | 2 +- 198 files changed, 2042 insertions(+), 1641 deletions(-) delete mode 100644 .eslintignore delete mode 100644 .eslintrc.js create mode 100644 .oxfmtrc.json delete mode 100644 .prettierignore delete mode 100644 .prettierrc create mode 100644 .stylelintignore create mode 100644 eslint.config.ts create mode 100644 eslint.rules.ts diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index d1a5c0a9..ac4d6c26 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -18,20 +18,21 @@ "source.organizeImports": "explicit" } }, + "oxc.fmt.configPath": ".oxfmtrc.json", "[javascript]": { - "editor.defaultFormatter": "esbenp.prettier-vscode" + "editor.defaultFormatter": "oxc.oxc-vscode" }, "[html]": { - "editor.defaultFormatter": "esbenp.prettier-vscode" + "editor.defaultFormatter": "oxc.oxc-vscode" }, "[typescript]": { - "editor.defaultFormatter": "esbenp.prettier-vscode" + "editor.defaultFormatter": "oxc.oxc-vscode" }, "[javascriptreact]": { - "editor.defaultFormatter": "esbenp.prettier-vscode" + "editor.defaultFormatter": "oxc.oxc-vscode" }, "[typescriptreact]": { - "editor.defaultFormatter": "esbenp.prettier-vscode" + "editor.defaultFormatter": "oxc.oxc-vscode" }, "files.exclude": { "**/__pycache__": true @@ -46,7 +47,7 @@ "ms-python.vscode-pylance", "charliermarsh.ruff", "EditorConfig.EditorConfig", - "esbenp.prettier-vscode", + "oxc.oxc-vscode", "bradlc.vscode-tailwindcss" ] } diff --git a/.eslintignore b/.eslintignore deleted file mode 100644 index 76a04f73..00000000 --- a/.eslintignore +++ /dev/null @@ -1,6 +0,0 @@ -dist -node_modules -.yarn -.history -build -lib diff --git a/.eslintrc.js b/.eslintrc.js deleted file mode 100644 index 74614599..00000000 --- a/.eslintrc.js +++ /dev/null @@ -1,403 +0,0 @@ -const OFF = 0; -const WARNING = 1; -const ERROR = 2; - -// Prevent importing lodash, usually for browser bundle size reasons -const LodashImportPatterns = ["lodash", "lodash.**", "lodash/**"]; - -module.exports = { - root: true, - env: { - browser: true, - commonjs: true, - node: true, - }, - parser: "@typescript-eslint/parser", - parserOptions: {}, - globals: { - JSX: true, - }, - extends: [ - "eslint:recommended", - "plugin:react-hooks/recommended", - "airbnb", - "plugin:@typescript-eslint/recommended", - // 'plugin:@typescript-eslint/recommended-requiring-type-checking', - // 'plugin:@typescript-eslint/strict', - "plugin:regexp/recommended", - "prettier", - "plugin:@docusaurus/all", - ], - settings: { - "import/resolver": { - node: { - extensions: [".js", ".jsx", ".ts", ".tsx"], - }, - }, - }, - reportUnusedDisableDirectives: true, - plugins: ["react-hooks", "@typescript-eslint", "regexp", "@docusaurus"], - rules: { - "react/jsx-uses-react": OFF, // JSX runtime: automatic - "react/react-in-jsx-scope": OFF, // JSX runtime: automatic - "array-callback-return": WARNING, - camelcase: WARNING, - "class-methods-use-this": OFF, // It's a way of allowing private variables. - curly: [WARNING, "all"], - "global-require": WARNING, - "lines-between-class-members": OFF, - "max-classes-per-file": OFF, - "max-len": [ - WARNING, - { - code: Infinity, // Code width is already enforced by Prettier - tabWidth: 2, - comments: 80, - ignoreUrls: true, - ignorePattern: "(eslint-disable|@)", - }, - ], - "arrow-body-style": OFF, - "no-await-in-loop": OFF, - "no-case-declarations": WARNING, - "no-console": OFF, - "no-constant-binary-expression": ERROR, - "no-continue": OFF, - "no-control-regex": WARNING, - "no-else-return": OFF, - "no-empty": [WARNING, { allowEmptyCatch: true }], - "no-lonely-if": WARNING, - "no-nested-ternary": WARNING, - "no-param-reassign": [WARNING, { props: false }], - "no-prototype-builtins": WARNING, - "no-restricted-exports": OFF, - "no-restricted-properties": [ - ERROR, - .../** @type {[string, string][]} */ ([ - // TODO: TS doesn't make Boolean a narrowing function yet, - // so filter(Boolean) is problematic type-wise - // ['compact', 'Array#filter(Boolean)'], - ["concat", "Array#concat"], - ["drop", "Array#slice(n)"], - ["dropRight", "Array#slice(0, -n)"], - ["fill", "Array#fill"], - ["filter", "Array#filter"], - ["find", "Array#find"], - ["findIndex", "Array#findIndex"], - ["first", "foo[0]"], - ["flatten", "Array#flat"], - ["flattenDeep", "Array#flat(Infinity)"], - ["flatMap", "Array#flatMap"], - ["fromPairs", "Object.fromEntries"], - ["head", "foo[0]"], - ["indexOf", "Array#indexOf"], - ["initial", "Array#slice(0, -1)"], - ["join", "Array#join"], - // Unfortunately there's no great alternative to _.last yet - // Candidates: foo.slice(-1)[0]; foo[foo.length - 1] - // Array#at is ES2022; could replace _.nth as well - // ['last'], - ["map", "Array#map"], - ["reduce", "Array#reduce"], - ["reverse", "Array#reverse"], - ["slice", "Array#slice"], - ["take", "Array#slice(0, n)"], - ["takeRight", "Array#slice(-n)"], - ["tail", "Array#slice(1)"], - ]).map(([property, alternative]) => ({ - object: "_", - property, - message: `Use ${alternative} instead.`, - })), - ...[ - "readdirSync", - "readFileSync", - "statSync", - "lstatSync", - "existsSync", - "pathExistsSync", - "realpathSync", - "mkdirSync", - "mkdirpSync", - "mkdirsSync", - "writeFileSync", - "writeJsonSync", - "outputFileSync", - "outputJsonSync", - "moveSync", - "copySync", - "copyFileSync", - "ensureFileSync", - "ensureDirSync", - "ensureLinkSync", - "ensureSymlinkSync", - "unlinkSync", - "removeSync", - "emptyDirSync", - ].map((property) => ({ - object: "fs", - property, - message: "Do not use sync fs methods.", - })), - ], - "no-restricted-syntax": [ - WARNING, - // Copied from airbnb, removed for...of statement, added export all - { - selector: "ForInStatement", - message: - "for..in loops iterate over the entire prototype chain, which is virtually never what you want. Use Object.{keys,values,entries}, and iterate over the resulting array.", - }, - { - selector: "LabeledStatement", - message: - "Labels are a form of GOTO; using them makes code confusing and hard to maintain and understand.", - }, - { - selector: "WithStatement", - message: - "`with` is disallowed in strict mode because it makes code impossible to predict and optimize.", - }, - { - selector: "ExportAllDeclaration", - message: - "Export all does't work well if imported in ESM due to how they are transpiled, and they can also lead to unexpected exposure of internal methods.", - }, - // TODO make an internal plugin to ensure this - // { - // selector: - // @ 'ExportDefaultDeclaration > Identifier, ExportNamedDeclaration[source=null] > ExportSpecifier', - // message: 'Export in one statement' - // }, - ...["path", "fs-extra", "webpack", "lodash"].map((m) => ({ - selector: `ImportDeclaration[importKind=value]:has(Literal[value=${m}]) > ImportSpecifier[importKind=value]`, - message: - "Default-import this, both for readability and interoperability with ESM", - })), - ], - "no-template-curly-in-string": WARNING, - "no-unused-expressions": [ - WARNING, - { allowTaggedTemplates: true, allowShortCircuit: true }, - ], - "no-useless-escape": WARNING, - "no-void": [ERROR, { allowAsStatement: true }], - "prefer-destructuring": WARNING, - "prefer-named-capture-group": WARNING, - "prefer-template": WARNING, - yoda: WARNING, - - "import/extensions": OFF, - // This rule doesn't yet support resolving .js imports when the actual file - // is .ts. Plus it's not all that useful when our code is fully TS-covered. - "import/no-unresolved": [ - OFF, - { - // Ignore certain webpack aliases because they can't be resolved - ignore: [ - "^@theme", - "^@docusaurus", - "^@generated", - "^@site", - "^@testing-utils", - ], - }, - ], - "import/order": [ - WARNING, - { - groups: [ - "builtin", - "external", - "internal", - ["parent", "sibling", "index"], - "type", - ], - "newlines-between": "always", - pathGroups: [ - // always put css import to the last, ref: - // https://github.com/import-js/eslint-plugin-import/issues/1239 - { - pattern: "*.+(css|sass|less|scss|pcss|styl)", - group: "unknown", - patternOptions: { matchBase: true }, - position: "after", - }, - { pattern: "react", group: "builtin", position: "before" }, - { pattern: "react-dom", group: "builtin", position: "before" }, - { pattern: "react-dom/**", group: "builtin", position: "before" }, - { pattern: "stream", group: "builtin", position: "before" }, - { pattern: "fs-extra", group: "builtin" }, - { pattern: "lodash", group: "external", position: "before" }, - { pattern: "clsx", group: "external", position: "before" }, - // 'Bit weird to not use the `import/internal-regex` option, but this - // way, we can make `import type { Props } from "@theme/*"` appear - // before `import styles from "styles.module.css"`, which is what we - // always did. This should be removable once we stop using ambient - // module declarations for theme aliases. - { pattern: "@theme/**", group: "internal" }, - { pattern: "@site/**", group: "internal" }, - { pattern: "@theme-init/**", group: "internal" }, - { pattern: "@theme-original/**", group: "internal" }, - { pattern: "@/components/**", group: "internal" }, - { pattern: "@/libs/**", group: "internal" }, - { pattern: "@/types/**", group: "type" }, - ], - pathGroupsExcludedImportTypes: [], - // example: let `import './nprogress.css';` after importing others - // in `packages/docusaurus-theme-classic/src/nprogress.ts` - // see more: https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/order.md#warnonunassignedimports-truefalse - warnOnUnassignedImports: true, - }, - ], - "import/prefer-default-export": OFF, - - "jsx-a11y/click-events-have-key-events": WARNING, - "jsx-a11y/no-noninteractive-element-interactions": WARNING, - "jsx-a11y/html-has-lang": OFF, - - "react-hooks/rules-of-hooks": ERROR, - "react-hooks/exhaustive-deps": ERROR, - - // Sometimes we do need the props as a whole, e.g. when spreading - "react/destructuring-assignment": OFF, - "react/function-component-definition": [ - WARNING, - { - namedComponents: "function-declaration", - unnamedComponents: "arrow-function", - }, - ], - "react/jsx-filename-extension": OFF, - "react/jsx-key": [ERROR, { checkFragmentShorthand: true }], - "react/jsx-no-useless-fragment": [ERROR, { allowExpressions: true }], - "react/jsx-props-no-spreading": OFF, - "react/no-array-index-key": OFF, // We build a static site, and nearly all components don't change. - "react/no-unstable-nested-components": [WARNING, { allowAsProps: true }], - "react/prefer-stateless-function": WARNING, - "react/prop-types": OFF, - "react/require-default-props": [ - ERROR, - { ignoreFunctionalComponents: true }, - ], - - "@typescript-eslint/consistent-type-definitions": OFF, - "@typescript-eslint/require-await": OFF, - - "@typescript-eslint/ban-ts-comment": [ - ERROR, - { "ts-expect-error": "allow-with-description" }, - ], - "@typescript-eslint/consistent-indexed-object-style": OFF, - "@typescript-eslint/consistent-type-imports": [ - WARNING, - { disallowTypeAnnotations: false }, - ], - "@typescript-eslint/explicit-module-boundary-types": WARNING, - "@typescript-eslint/method-signature-style": ERROR, - "@typescript-eslint/no-empty-function": OFF, - "@typescript-eslint/no-empty-interface": [ - ERROR, - { - allowSingleExtends: true, - }, - ], - "@typescript-eslint/no-inferrable-types": OFF, - "@typescript-eslint/no-namespace": [WARNING, { allowDeclarations: true }], - "no-use-before-define": OFF, - "@typescript-eslint/no-use-before-define": [ - ERROR, - { functions: false, classes: false, variables: true }, - ], - "@typescript-eslint/no-non-null-assertion": OFF, - "no-redeclare": OFF, - "@typescript-eslint/no-redeclare": ERROR, - "no-shadow": OFF, - "@typescript-eslint/no-shadow": ERROR, - "no-unused-vars": OFF, - // We don't provide any escape hatches for this rule. Rest siblings and - // function placeholder params are always ignored, and any other unused - // locals must be justified with a disable comment. - "@typescript-eslint/no-unused-vars": [ERROR, { ignoreRestSiblings: true }], - "@typescript-eslint/prefer-optional-chain": ERROR, - "@docusaurus/no-html-links": ERROR, - "@docusaurus/prefer-docusaurus-heading": ERROR, - "@docusaurus/no-untranslated-text": [ - WARNING, - { - ignoredStrings: [ - "·", - "-", - "—", - "×", - "​", // zwj: ​ - "@", - "WebContainers", - "Twitter", - "GitHub", - "Dev.to", - "1.x", - ], - }, - ], - }, - overrides: [ - { - files: ["packages/*/src/theme/**/*.{js,ts,tsx}"], - excludedFiles: "*.test.{js,ts,tsx}", - rules: { - "no-restricted-imports": [ - "error", - { - patterns: LodashImportPatterns.concat( - // Prevents relative imports between React theme components - [ - "../**", - "./**", - // Allows relative styles module import with consistent filename - "!./styles.module.css", - // Allows relative tailwind css import with consistent filename - "!./styles.css", - ] - ), - }, - ], - }, - }, - { - files: ["packages/*/src/theme/**/*.{js,ts,tsx}"], - rules: { - "import/no-named-export": ERROR, - }, - }, - { - files: ["*.d.ts"], - rules: { - "import/no-duplicates": OFF, - }, - }, - { - files: ["*.{ts,tsx}"], - rules: { - "no-undef": OFF, - "import/no-import-module-exports": OFF, - }, - }, - { - files: ["*.{js,mjs,cjs}"], - rules: { - // Make JS code directly runnable in Node. - "@typescript-eslint/no-var-requires": OFF, - "@typescript-eslint/explicit-module-boundary-types": OFF, - }, - }, - { - // Internal files where extraneous deps don't matter much at long as - // they run - files: ["website/**"], - rules: { - "import/no-extraneous-dependencies": OFF, - }, - }, - ], -}; diff --git a/.github/workflows/release-drafter.yml b/.github/workflows/release-drafter.yml index 38a5b778..24a71d73 100644 --- a/.github/workflows/release-drafter.yml +++ b/.github/workflows/release-drafter.yml @@ -46,7 +46,7 @@ jobs: - name: Commit and Push run: | - pnpm prettier + pnpm format git config user.name noneflow[bot] git config user.email 129742071+noneflow[bot]@users.noreply.github.com git add . diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 66593f23..12e332b5 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -40,7 +40,7 @@ jobs: - name: Archive Files run: | pnpm archive $(uv version --short) - pnpm prettier + pnpm format - name: Push Tag run: | diff --git a/.oxfmtrc.json b/.oxfmtrc.json new file mode 100644 index 00000000..d4c39930 --- /dev/null +++ b/.oxfmtrc.json @@ -0,0 +1,36 @@ +{ + "$schema": "./node_modules/oxfmt/configuration_schema.json", + "arrowParens": "always", + "ignorePatterns": [ + "node_modules", + ".yarn", + ".history", + "coverage", + "**/build/**", + "**/dist/**", + ".docusaurus", + "*.svg", + "pnpm-lock.yaml", + "CITATION.cff", + "/*.md", + "*.yml", + "*.yaml", + ".github/", + "assets/", + "nonebot/", + "packages/nonebot-plugin-docs/", + "scripts/", + "tests/", + "pyproject.toml", + "uv.lock", + "website/versions.json", + "website/versioned_docs/", + "website/versioned_sidebars/*.json", + "website/docs/tutorial/application.mdx" + ], + "insertFinalNewline": true, + "printWidth": 80, + "singleQuote": false, + "sortPackageJson": false, + "trailingComma": "all" +} diff --git a/.prettierignore b/.prettierignore deleted file mode 100644 index 7119ab74..00000000 --- a/.prettierignore +++ /dev/null @@ -1,3 +0,0 @@ -.github/**/*.md -website/docs/tutorial/application.mdx -website/versioned_docs/*/tutorial/application.mdx diff --git a/.prettierrc b/.prettierrc deleted file mode 100644 index eee0e47e..00000000 --- a/.prettierrc +++ /dev/null @@ -1,21 +0,0 @@ -{ - "tabWidth": 2, - "useTabs": false, - "endOfLine": "lf", - "arrowParens": "always", - "singleQuote": false, - "trailingComma": "es5", - "semi": true, - "overrides": [ - { - "files": [ - "**/devcontainer.json", - "**/tsconfig.json", - "**/tsconfig.*.json" - ], - "options": { - "parser": "json" - } - } - ] -} diff --git a/.stylelintignore b/.stylelintignore new file mode 100644 index 00000000..25c91007 --- /dev/null +++ b/.stylelintignore @@ -0,0 +1,7 @@ +# Stylelint runs on everything by default; we only lint CSS files. +* +!*/ +!*.css +build +coverage +packages/nonebot-plugin-docs/ diff --git a/.stylelintrc.js b/.stylelintrc.js index a4e1fd2f..51933f05 100644 --- a/.stylelintrc.js +++ b/.stylelintrc.js @@ -1,10 +1,26 @@ module.exports = { - extends: ["stylelint-config-standard", "stylelint-prettier/recommended"], + extends: ["stylelint-config-standard"], + rules: { + "selector-pseudo-class-no-unknown": [ + true, + { + // :global is a CSS modules feature to escape from class name hashing + ignorePseudoClasses: ["global"], + }, + ], + "custom-property-empty-line-before": null, + "selector-id-pattern": null, + "declaration-empty-line-before": null, + "comment-empty-line-before": null, + "value-keyword-case": ["lower", { camelCaseSvgKeywords: true }], + }, overrides: [ { files: ["*.css"], rules: { "function-no-unknown": [true, { ignoreFunctions: ["theme"] }], + // Tailwind's screen() function in media queries + "media-query-no-invalid": [true, { ignoreFunctions: ["screen"] }], "selector-class-pattern": [ "^([a-z][a-z0-9]*)(-[a-z0-9]+)*$", { @@ -15,6 +31,7 @@ module.exports = { ], }, }, + // Must come after "*.css" so the camelCase pattern wins for CSS modules { files: ["*.module.css"], rules: { diff --git a/eslint.config.ts b/eslint.config.ts new file mode 100644 index 00000000..9631b02f --- /dev/null +++ b/eslint.config.ts @@ -0,0 +1,73 @@ +import { defineConfig, globalIgnores } from "eslint/config"; +import tseslint from "typescript-eslint"; +import globals from "globals"; +import js from "@eslint/js"; +import react from "eslint-plugin-react"; +import reactHooks from "eslint-plugin-react-hooks"; +import importPlugin from "eslint-plugin-import"; +// @ts-expect-error: no types provided +import jsxA11y from "eslint-plugin-jsx-a11y"; +import docusaurus from "@docusaurus/eslint-plugin"; +import regexp from "eslint-plugin-regexp"; +import prettier from "eslint-config-prettier/flat"; + +import rules from "./eslint.rules"; + +const plugins = defineConfig([ + js.configs.recommended, + tseslint.configs.recommended, + react.configs.flat.recommended, + reactHooks.configs.flat.recommended, + importPlugin.flatConfigs.recommended, + jsxA11y.flatConfigs.recommended, + regexp.configs["flat/recommended"], + prettier, + + // The published @docusaurus/eslint-plugin doesn't provide a flat config yet + // This adapts its legacy "all" config to flat config + { + plugins: { + "@docusaurus": docusaurus, + }, + rules: docusaurus.configs.all.rules, + }, +]); + +const ignores = globalIgnores([ + "**/dist/**", + "**/lib/**", + "**/build/**", + "**/.docusaurus/**", + "node_modules", + ".yarn", + ".history", + "coverage", +]); + +export default defineConfig(plugins, rules, ignores, { + languageOptions: { + ecmaVersion: 2022, + sourceType: "module", + globals: { + ...globals.browser, + ...globals.node, + ...globals.commonjs, + JSX: true, + }, + }, + + settings: { + "import/resolver": { + node: { + extensions: [".js", ".jsx", ".ts", ".tsx"], + }, + }, + react: { + version: "19", + }, + }, + + linterOptions: { + reportUnusedDisableDirectives: true, + }, +}); diff --git a/eslint.rules.ts b/eslint.rules.ts new file mode 100644 index 00000000..a7602aa7 --- /dev/null +++ b/eslint.rules.ts @@ -0,0 +1,392 @@ +import { defineConfig } from "eslint/config"; + +const OFF = 0; +const WARNING = 1; +const ERROR = 2; + +// Prevent importing lodash, usually for browser bundle size reasons +const LodashImportPatterns = ["lodash", "lodash.**", "lodash/**"]; + +export default defineConfig( + { + rules: { + "array-callback-return": WARNING, + camelcase: WARNING, + "class-methods-use-this": OFF, // It's a way of allowing private variables. + curly: [WARNING, "all"], + "global-require": OFF, // Deprecated, @typescript-eslint/no-require-import is enough + "no-alert": WARNING, + "lines-between-class-members": OFF, + "max-classes-per-file": OFF, + "max-len": [ + WARNING, + { + code: Infinity, // Code width is already enforced by Prettier + tabWidth: 2, + comments: 80, + ignoreUrls: true, + ignorePattern: "(eslint-disable|@)", + }, + ], + "arrow-body-style": OFF, + "no-await-in-loop": OFF, + "no-case-declarations": WARNING, + "no-console": OFF, + "no-constant-binary-expression": ERROR, + "no-continue": OFF, + "no-control-regex": WARNING, + "no-else-return": OFF, + "no-empty": [WARNING, { allowEmptyCatch: true }], + "no-lonely-if": WARNING, + "no-nested-ternary": WARNING, + "no-param-reassign": [WARNING, { props: false }], + "no-prototype-builtins": WARNING, + "no-restricted-exports": OFF, + "no-restricted-properties": [ + ERROR, + .../** @type {[string, string][]} */ [ + // TODO: TS doesn't make Boolean a narrowing function yet, + // so filter(Boolean) is problematic type-wise + // ['compact', 'Array#filter(Boolean)'], + ["concat", "Array#concat"], + ["drop", "Array#slice(n)"], + ["dropRight", "Array#slice(0, -n)"], + ["fill", "Array#fill"], + ["filter", "Array#filter"], + ["find", "Array#find"], + ["findIndex", "Array#findIndex"], + ["first", "foo[0]"], + ["flatten", "Array#flat"], + ["flattenDeep", "Array#flat(Infinity)"], + ["flatMap", "Array#flatMap"], + ["fromPairs", "Object.fromEntries"], + ["head", "foo[0]"], + ["indexOf", "Array#indexOf"], + ["initial", "Array#slice(0, -1)"], + ["join", "Array#join"], + // Unfortunately there's no great alternative to _.last yet + // Candidates: foo.slice(-1)[0]; foo[foo.length - 1] + // Array#at is ES2022; could replace _.nth as well + // ['last'], + ["map", "Array#map"], + ["reduce", "Array#reduce"], + ["reverse", "Array#reverse"], + ["slice", "Array#slice"], + ["take", "Array#slice(0, n)"], + ["takeRight", "Array#slice(-n)"], + ["tail", "Array#slice(1)"], + ].map(([property, alternative]) => ({ + object: "_", + property, + message: `Use ${alternative} instead.`, + })), + ...[ + "readdirSync", + "readFileSync", + "statSync", + "lstatSync", + "existsSync", + "pathExistsSync", + "realpathSync", + "mkdirSync", + "mkdirpSync", + "mkdirsSync", + "writeFileSync", + "writeJsonSync", + "outputFileSync", + "outputJsonSync", + "moveSync", + "copySync", + "copyFileSync", + "ensureFileSync", + "ensureDirSync", + "ensureLinkSync", + "ensureSymlinkSync", + "unlinkSync", + "removeSync", + "emptyDirSync", + ].map((property) => ({ + object: "fs", + property, + message: "Do not use sync fs methods.", + })), + ], + "no-restricted-syntax": [ + WARNING, + // Copied from airbnb, removed for...of statement, added export all + { + selector: "ForInStatement", + message: + "for..in loops iterate over the entire prototype chain, which is virtually never what you want. Use Object.{keys,values,entries}, and iterate over the resulting array.", + }, + { + selector: "LabeledStatement", + message: + "Labels are a form of GOTO; using them makes code confusing and hard to maintain and understand.", + }, + { + selector: "WithStatement", + message: + "`with` is disallowed in strict mode because it makes code impossible to predict and optimize.", + }, + { + selector: "ExportAllDeclaration", + message: + "Export all does't work well if imported in ESM due to how they are transpiled, and they can also lead to unexpected exposure of internal methods.", + }, + ...["path", "fs-extra", "webpack", "lodash"].map((m) => ({ + selector: `ImportDeclaration[importKind=value]:has(Literal[value=${m}]) > ImportSpecifier[importKind=value]`, + message: + "Default-import this, both for readability and interoperability with ESM", + })), + ], + "no-template-curly-in-string": WARNING, + "no-unused-expressions": OFF, + "no-useless-escape": WARNING, + "no-void": [ERROR, { allowAsStatement: true }], + "prefer-destructuring": OFF, + "prefer-named-capture-group": WARNING, + "prefer-template": WARNING, + yoda: WARNING, + + "import/extensions": OFF, + // This rule doesn't yet support resolving .js imports when the actual file + // is .ts. Plus it's not all that useful when our code is fully TS-covered. + "import/no-unresolved": [ + OFF, + { + // Ignore certain webpack aliases because they can't be resolved + ignore: [ + "^@theme", + "^@docusaurus", + "^@generated", + "^@site", + "^@testing-utils", + ], + }, + ], + "import/order": [ + WARNING, + { + groups: [ + "builtin", + "external", + "internal", + ["parent", "sibling", "index"], + "type", + ], + "newlines-between": "always", + pathGroups: [ + // always put css import to the last, ref: + // https://github.com/import-js/eslint-plugin-import/issues/1239 + { + pattern: "*.+(css|sass|less|scss|pcss|styl)", + group: "unknown", + patternOptions: { matchBase: true }, + position: "after", + }, + { pattern: "react", group: "builtin", position: "before" }, + { pattern: "react-dom", group: "builtin", position: "before" }, + { pattern: "react-dom/**", group: "builtin", position: "before" }, + { pattern: "stream", group: "builtin", position: "before" }, + { pattern: "fs-extra", group: "builtin" }, + { pattern: "lodash", group: "external", position: "before" }, + { pattern: "clsx", group: "external", position: "before" }, + // 'Bit weird to not use the `import/internal-regex` option, but this + // way, we can make `import type { Props } from "@theme/*"` appear + // before `import styles from "styles.module.css"`, which is what we + // always did. This should be removable once we stop using ambient + // module declarations for theme aliases. + { pattern: "@theme/**", group: "internal" }, + { pattern: "@site/**", group: "internal" }, + { pattern: "@theme-init/**", group: "internal" }, + { pattern: "@theme-original/**", group: "internal" }, + { pattern: "@/components/**", group: "internal" }, + { pattern: "@/libs/**", group: "internal" }, + { pattern: "@/types/**", group: "type" }, + ], + pathGroupsExcludedImportTypes: [], + // example: let `import './nprogress.css';` after importing others + // in `packages/docusaurus-theme-classic/src/nprogress.ts` + // see more: https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/order.md#warnonunassignedimports-truefalse + warnOnUnassignedImports: true, + }, + ], + "import/prefer-default-export": OFF, + // `import clsx from "clsx"` triggers it since clsx v2 also provides a + // named export; renaming the imports would diverge from upstream themes + "import/no-named-as-default": OFF, + + "jsx-a11y/click-events-have-key-events": WARNING, + "jsx-a11y/no-noninteractive-element-interactions": WARNING, + "jsx-a11y/html-has-lang": OFF, + + // Sometimes we do need the props as a whole, e.g. when spreading + "react/destructuring-assignment": OFF, + "react/function-component-definition": [ + WARNING, + { + namedComponents: "function-declaration", + unnamedComponents: "arrow-function", + }, + ], + "react/jsx-filename-extension": OFF, + "react/jsx-key": [ERROR, { checkFragmentShorthand: true }], + "react/jsx-no-useless-fragment": [ERROR, { allowExpressions: true }], + "react/jsx-props-no-spreading": OFF, + "react/no-array-index-key": OFF, // We build a static site, and nearly all components don't change. + "react/no-unstable-nested-components": [WARNING, { allowAsProps: true }], + "react/prefer-stateless-function": WARNING, + "react/prop-types": OFF, + "react/require-default-props": [ + ERROR, + { ignoreFunctionalComponents: true }, + ], + "react/jsx-uses-react": OFF, // JSX runtime: automatic + "react/react-in-jsx-scope": OFF, // JSX runtime: automatic + "react-hooks/set-state-in-effect": WARNING, // TODO re-enable later? + "react-hooks/rules-of-hooks": ERROR, + "react-hooks/exhaustive-deps": ERROR, + + "@typescript-eslint/no-empty-object-type": OFF, + "@typescript-eslint/prefer-optional-chain": OFF, + "@typescript-eslint/consistent-type-definitions": OFF, + "@typescript-eslint/require-await": OFF, + "@typescript-eslint/no-explicit-any": WARNING, + "@typescript-eslint/no-unused-expressions": [ + WARNING, + { allowTaggedTemplates: true, allowShortCircuit: true }, + ], + + "@typescript-eslint/ban-ts-comment": [ + ERROR, + { "ts-expect-error": "allow-with-description" }, + ], + "@typescript-eslint/consistent-indexed-object-style": OFF, + "@typescript-eslint/consistent-type-imports": [ + WARNING, + { disallowTypeAnnotations: false }, + ], + "@typescript-eslint/explicit-module-boundary-types": WARNING, + "@typescript-eslint/method-signature-style": ERROR, + "@typescript-eslint/no-empty-function": OFF, + "@typescript-eslint/no-empty-interface": [ + ERROR, + { + allowSingleExtends: true, + }, + ], + "@typescript-eslint/no-inferrable-types": OFF, + "@typescript-eslint/no-namespace": [WARNING, { allowDeclarations: true }], + "no-use-before-define": OFF, + "@typescript-eslint/no-use-before-define": [ + ERROR, + { functions: false, classes: false, variables: true }, + ], + "@typescript-eslint/no-non-null-assertion": OFF, + "no-redeclare": OFF, + "@typescript-eslint/no-redeclare": ERROR, + "no-shadow": OFF, + "@typescript-eslint/no-shadow": ERROR, + "no-unused-vars": OFF, + // We don't provide any escape hatches for this rule. Rest siblings and + // function placeholder params are always ignored, and any other unused + // locals must be justified with a disable comment. + "@typescript-eslint/no-unused-vars": [ + ERROR, + { + ignoreRestSiblings: true, + argsIgnorePattern: "^_", + varsIgnorePattern: "^_", + }, + ], + "@docusaurus/no-html-links": ERROR, + "@docusaurus/prefer-docusaurus-heading": ERROR, + "@docusaurus/no-untranslated-text": [ + WARNING, + { + ignoredStrings: [ + "·", + "-", + "—", + "×", + "​", // zwj: ​ + "@", + "WebContainers", + "Twitter", + "X", + "GitHub", + "Dev.to", + "1.x", + ], + }, + ], + }, + }, + + { + files: ["packages/*/src/theme/**/*.{js,ts,tsx}"], + ignores: ["**/*.test.{js,ts,tsx}", "**/__tests__/**"], + rules: { + "no-restricted-imports": [ + ERROR, + { + patterns: LodashImportPatterns.concat( + // Prevents relative imports between React theme components + [ + "../**", + "./**", + // Allows relative styles module import with consistent filename + "!./styles.module.css", + // Allows relative tailwind css import with consistent filename + "!./styles.css", + ], + ), + }, + ], + }, + }, + { + files: ["packages/*/src/theme/**/*.{js,ts,tsx}"], + rules: { + "import/no-named-export": ERROR, + }, + }, + { + files: ["**/*.d.ts"], + rules: { + "import/no-duplicates": OFF, + }, + }, + { + files: ["**/*.{ts,tsx}"], + rules: { + "no-undef": OFF, + "import/no-import-module-exports": OFF, + }, + }, + { + files: ["**/*.{js,mjs,cjs}"], + rules: { + // Make JS code directly runnable in Node. + "@typescript-eslint/no-var-requires": OFF, + "@typescript-eslint/explicit-module-boundary-types": OFF, + }, + }, + { + // Internal files where extraneous deps don't matter much at long as + // they run + files: ["website/**"], + rules: { + "import/no-extraneous-dependencies": OFF, + }, + }, + + // Website-specific rules + { + files: ["website/**"], + rules: { + "@typescript-eslint/no-require-imports": OFF, + }, + }, +); diff --git a/nonebot/config.py b/nonebot/config.py index 1e45014b..550a4bb4 100644 --- a/nonebot/config.py +++ b/nonebot/config.py @@ -425,7 +425,7 @@ class Config(BaseSettings): 参考 [记录日志](https://nonebot.dev/docs/appendices/log),[loguru 日志等级](https://loguru.readthedocs.io/en/stable/api/logger.html#levels)。 - :::tip 提示 + :::tip[提示] 日志等级名称应为大写,如 `INFO`。 ::: diff --git a/nonebot/drivers/aiohttp.py b/nonebot/drivers/aiohttp.py index 6e806462..bc063cda 100644 --- a/nonebot/drivers/aiohttp.py +++ b/nonebot/drivers/aiohttp.py @@ -6,7 +6,7 @@ nb driver install aiohttp pip install nonebot2[aiohttp] ``` -:::tip 提示 +:::tip[提示] 本驱动仅支持客户端连接 ::: diff --git a/nonebot/drivers/fastapi.py b/nonebot/drivers/fastapi.py index 14e13f39..7786a925 100644 --- a/nonebot/drivers/fastapi.py +++ b/nonebot/drivers/fastapi.py @@ -6,7 +6,7 @@ nb driver install fastapi pip install nonebot2[fastapi] ``` -:::tip 提示 +:::tip[提示] 本驱动仅支持服务端连接 ::: diff --git a/nonebot/drivers/httpx.py b/nonebot/drivers/httpx.py index a8541ad0..a8217b79 100644 --- a/nonebot/drivers/httpx.py +++ b/nonebot/drivers/httpx.py @@ -6,7 +6,7 @@ nb driver install httpx pip install nonebot2[httpx] ``` -:::tip 提示 +:::tip[提示] 本驱动仅支持客户端 HTTP 连接 ::: diff --git a/nonebot/drivers/none.py b/nonebot/drivers/none.py index a5a89dfa..c1d3df37 100644 --- a/nonebot/drivers/none.py +++ b/nonebot/drivers/none.py @@ -1,6 +1,6 @@ """None 驱动适配 -:::tip 提示 +:::tip[提示] 本驱动不支持任何服务器或客户端连接 ::: diff --git a/nonebot/drivers/quart.py b/nonebot/drivers/quart.py index 64489475..48250d02 100644 --- a/nonebot/drivers/quart.py +++ b/nonebot/drivers/quart.py @@ -6,7 +6,7 @@ nb driver install quart pip install nonebot2[quart] ``` -:::tip 提示 +:::tip[提示] 本驱动仅支持服务端连接 ::: diff --git a/nonebot/drivers/websockets.py b/nonebot/drivers/websockets.py index 28ced115..0eb8a2de 100644 --- a/nonebot/drivers/websockets.py +++ b/nonebot/drivers/websockets.py @@ -6,7 +6,7 @@ nb driver install websockets pip install nonebot2[websockets] ``` -:::tip 提示 +:::tip[提示] 本驱动仅支持客户端 WebSocket 连接 ::: diff --git a/nonebot/rule.py b/nonebot/rule.py index 99f5f9ea..c460c8a3 100644 --- a/nonebot/rule.py +++ b/nonebot/rule.py @@ -412,7 +412,7 @@ def command( 命令 `("test",)` 可以匹配: `/test` 开头的消息 命令 `("test", "sub")` 可以匹配: `/test.sub` 开头的消息 - :::tip 提示 + :::tip[提示] 命令内容与后续消息间无需空格! ::: """ @@ -603,7 +603,7 @@ def shell_command( 通过 {ref}`nonebot.params.ShellCommandArgs` 获取解析后的参数字典 (例: `{"arg": "arg", "h": True}`)。 - :::caution 警告 + :::warning[警告] 如果参数解析失败,则通过 {ref}`nonebot.params.ShellCommandArgs` 获取的将是 {ref}`nonebot.exception.ParserExit` 异常。 ::: @@ -625,7 +625,7 @@ def shell_command( rule = shell_command("ls", parser=parser) ``` - :::tip 提示 + :::tip[提示] 命令内容与后续消息间无需空格! ::: """ @@ -704,11 +704,11 @@ def regex(regex: str, flags: int | re.RegexFlag = 0) -> Rule: regex: 正则表达式 flags: 正则表达式标记 - :::tip 提示 + :::tip[提示] 正则表达式匹配使用 search 而非 match,如需从头匹配请使用 `r"^xxx"` 来确保匹配开头 ::: - :::tip 提示 + :::tip[提示] 正则表达式匹配使用 `EventMessage` 的 `str` 字符串, 而非 `EventMessage` 的 `PlainText` 纯文本字符串 ::: diff --git a/package.json b/package.json index 1b964b09..d1a09ec7 100644 --- a/package.json +++ b/package.json @@ -9,30 +9,33 @@ "start": "pnpm --filter nonebot start", "serve": "pnpm --filter nonebot serve", "clear": "pnpm --filter nonebot clear", - "prettier": "prettier --config ./.prettierrc --write \"./website/\"", + "format": "oxfmt .", + "format:diff": "oxfmt --list-different .", "lint": "pnpm lint:js && pnpm lint:style", + "lint:ci": "pnpm lint:js --quiet && pnpm lint:style", "lint:js": "eslint --cache --report-unused-disable-directives \"**/*.{js,jsx,ts,tsx,mjs}\"", - "lint:js:fix": "eslint --cache --report-unused-disable-directives --fix \"**/*.{js,jsx,ts,tsx,mjs}\"", + "lint:js:fix": "pnpm lint:js --fix", "lint:style": "stylelint \"**/*.css\"", - "lint:style:fix": "stylelint --fix \"**/*.css\"", + "lint:style:fix": "pnpm lint:style --fix", "pyright": "pyright" }, "devDependencies": { - "@typescript-eslint/eslint-plugin": "^5.62.0", - "@typescript-eslint/parser": "^5.62.0", + "@docusaurus/eslint-plugin": "3.10.2", + "@eslint/js": "^10.0.1", "cross-env": "^7.0.3", - "eslint": "^8.48.0", - "eslint-config-airbnb": "^19.0.4", - "eslint-config-prettier": "^8.8.0", - "eslint-plugin-import": "^2.27.5", - "eslint-plugin-jsx-a11y": "^6.7.1", - "eslint-plugin-react": "^7.32.2", - "eslint-plugin-react-hooks": "^4.6.0", - "eslint-plugin-regexp": "^1.15.0", - "prettier": "^3.0.3", + "eslint": "^9.39.4", + "eslint-config-prettier": "^10.1.8", + "eslint-plugin-import": "^2.32.0", + "eslint-plugin-jsx-a11y": "^6.10.2", + "eslint-plugin-react": "^7.37.5", + "eslint-plugin-react-hooks": "^7.1.1", + "eslint-plugin-regexp": "^3.1.0", + "globals": "^17.6.0", + "jiti": "^2.7.0", + "oxfmt": "^0.60.0", "pyright": "1.1.393", - "stylelint": "^15.10.3", - "stylelint-config-standard": "^34.0.0", - "stylelint-prettier": "^4.0.2" + "stylelint": "^17.12.0", + "stylelint-config-standard": "^40.0.0", + "typescript-eslint": "^8.59.3" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9f1e6039..8ab8e1f8 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -8,72 +8,72 @@ importers: .: devDependencies: - '@typescript-eslint/eslint-plugin': - specifier: ^5.62.0 - version: 5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.7.3))(eslint@8.57.1)(typescript@5.7.3) - '@typescript-eslint/parser': - specifier: ^5.62.0 - version: 5.62.0(eslint@8.57.1)(typescript@5.7.3) + '@docusaurus/eslint-plugin': + specifier: 3.10.2 + version: 3.10.2(eslint@9.39.5(jiti@2.7.0))(typescript@5.7.3) + '@eslint/js': + specifier: ^10.0.1 + version: 10.0.1(eslint@9.39.5(jiti@2.7.0)) cross-env: specifier: ^7.0.3 version: 7.0.3 eslint: - specifier: ^8.48.0 - version: 8.57.1 - eslint-config-airbnb: - specifier: ^19.0.4 - version: 19.0.4(eslint-plugin-import@2.32.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.7.3))(eslint@8.57.1))(eslint-plugin-jsx-a11y@6.10.2(eslint@8.57.1))(eslint-plugin-react-hooks@4.6.2(eslint@8.57.1))(eslint-plugin-react@7.37.5(eslint@8.57.1))(eslint@8.57.1) + specifier: ^9.39.4 + version: 9.39.5(jiti@2.7.0) eslint-config-prettier: - specifier: ^8.8.0 - version: 8.10.2(eslint@8.57.1) + specifier: ^10.1.8 + version: 10.1.8(eslint@9.39.5(jiti@2.7.0)) eslint-plugin-import: - specifier: ^2.27.5 - version: 2.32.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.7.3))(eslint@8.57.1) + specifier: ^2.32.0 + version: 2.32.0(@typescript-eslint/parser@8.65.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.7.3))(eslint@9.39.5(jiti@2.7.0)) eslint-plugin-jsx-a11y: - specifier: ^6.7.1 - version: 6.10.2(eslint@8.57.1) + specifier: ^6.10.2 + version: 6.10.2(eslint@9.39.5(jiti@2.7.0)) eslint-plugin-react: - specifier: ^7.32.2 - version: 7.37.5(eslint@8.57.1) + specifier: ^7.37.5 + version: 7.37.5(eslint@9.39.5(jiti@2.7.0)) eslint-plugin-react-hooks: - specifier: ^4.6.0 - version: 4.6.2(eslint@8.57.1) + specifier: ^7.1.1 + version: 7.1.1(eslint@9.39.5(jiti@2.7.0)) eslint-plugin-regexp: - specifier: ^1.15.0 - version: 1.15.0(eslint@8.57.1) - prettier: - specifier: ^3.0.3 - version: 3.9.5 + specifier: ^3.1.0 + version: 3.1.1(eslint@9.39.5(jiti@2.7.0)) + globals: + specifier: ^17.6.0 + version: 17.7.0 + jiti: + specifier: ^2.7.0 + version: 2.7.0 + oxfmt: + specifier: ^0.60.0 + version: 0.60.0 pyright: specifier: 1.1.393 version: 1.1.393 stylelint: - specifier: ^15.10.3 - version: 15.11.0(typescript@5.7.3) + specifier: ^17.12.0 + version: 17.14.1(typescript@5.7.3) stylelint-config-standard: - specifier: ^34.0.0 - version: 34.0.0(stylelint@15.11.0(typescript@5.7.3)) - stylelint-prettier: - specifier: ^4.0.2 - version: 4.1.0(prettier@3.9.5)(stylelint@15.11.0(typescript@5.7.3)) + specifier: ^40.0.0 + version: 40.0.0(stylelint@17.14.1(typescript@5.7.3)) + typescript-eslint: + specifier: ^8.59.3 + version: 8.65.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.7.3) website: dependencies: '@docusaurus/core': specifier: 3.10.2 version: 3.10.2(@docusaurus/faster@3.10.2(@docusaurus/types@3.10.2(@swc/core@1.15.43)(postcss@8.5.19)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(postcss@8.5.19))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.12)(@swc/core@1.15.43)(postcss@8.5.19)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@5.7.3) - '@docusaurus/eslint-plugin': - specifier: 3.10.2 - version: 3.10.2(eslint@8.57.1)(typescript@5.7.3) '@mdx-js/react': specifier: ^3.0.0 version: 3.1.1(@types/react@19.2.17)(react@19.2.7) '@nullbot/docusaurus-plugin-changelog': - specifier: ^3.7.0 - version: 3.7.0(@docusaurus/faster@3.10.2(@docusaurus/types@3.10.2(@swc/core@1.15.43)(postcss@8.5.19)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(postcss@8.5.19))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.12)(@swc/core@1.15.43)(postcss@8.5.19)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@5.7.3) + specifier: ^3.8.0 + version: 3.8.0(@docusaurus/faster@3.10.2(@docusaurus/types@3.10.2(@swc/core@1.15.43)(postcss@8.5.19)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(postcss@8.5.19))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.12)(@swc/core@1.15.43)(postcss@8.5.19)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@5.7.3) '@nullbot/docusaurus-preset-nonepress': - specifier: ^3.7.0 - version: 3.7.0(@algolia/client-search@5.56.0)(@docusaurus/faster@3.10.2(@docusaurus/types@3.10.2(@swc/core@1.15.43)(postcss@8.5.19)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(postcss@8.5.19))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.12)(@swc/core@1.15.43)(@types/react@19.2.17)(postcss@8.5.19)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(search-insights@2.17.3)(typescript@5.7.3) + specifier: ^3.8.0 + version: 3.8.0(@algolia/client-search@5.56.0)(@docusaurus/faster@3.10.2(@docusaurus/types@3.10.2(@swc/core@1.15.43)(postcss@8.5.19)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(postcss@8.5.19))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.12)(@swc/core@1.15.43)(@types/react@19.2.17)(postcss@8.5.19)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(search-insights@2.17.3)(typescript@5.7.3) clsx: specifier: ^2.0.0 version: 2.1.1 @@ -103,8 +103,8 @@ importers: specifier: 3.10.2 version: 3.10.2(@swc/core@1.15.43)(postcss@8.5.19)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) '@nullbot/docusaurus-tsconfig': - specifier: ^3.7.0 - version: 3.7.0 + specifier: ^3.8.0 + version: 3.8.0 '@types/react-color': specifier: ^3.0.10 version: 3.0.13(@types/react@19.2.17) @@ -778,6 +778,12 @@ packages: resolution: {integrity: sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA==} engines: {node: '>=6.9.0'} + '@cacheable/memory@2.2.0': + resolution: {integrity: sha512-CTLKqLItRCEixEAewD3/j9DB3/o96gpTPD4eJ1v+DGOlxZRZncRQkGYqqnAGCscYd6RNeXfGeiuCphsPtqyIfQ==} + + '@cacheable/utils@2.5.0': + resolution: {integrity: sha512-buipgOVDkkPXNR5+xBpDw7Zk2n1EvU7qBJCNUcL7rhQ//kfpOXPAvQ511Os0vpLYJ1pZnvudNytkQt2hst3wqA==} + '@colors/colors@1.5.0': resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} engines: {node: '>=0.1.90'} @@ -800,6 +806,13 @@ packages: '@csstools/css-parser-algorithms': ^3.0.5 '@csstools/css-tokenizer': ^3.0.4 + '@csstools/css-calc@3.3.0': + resolution: {integrity: sha512-c5ihYsPkdG6JCkU2zTMm4+k6r7RXuGxtWYhu5DHMIiF1FHzrfmHL5so11AoFpUv/tu61xfcmT4AmKoFfMPoqdQ==} + engines: {node: '>=20.19.0'} + peerDependencies: + '@csstools/css-parser-algorithms': ^4.0.0 + '@csstools/css-tokenizer': ^4.0.0 + '@csstools/css-color-parser@3.1.0': resolution: {integrity: sha512-nbtKwh3a6xNVIp/VRuXV64yTKnb1IjTAEEh3irzS+HkKjAOYLTGNb9pmVNntZ8iVBHcWDA2Dof0QtPgFI1BaTA==} engines: {node: '>=18'} @@ -807,32 +820,33 @@ packages: '@csstools/css-parser-algorithms': ^3.0.5 '@csstools/css-tokenizer': ^3.0.4 - '@csstools/css-parser-algorithms@2.7.1': - resolution: {integrity: sha512-2SJS42gxmACHgikc1WGesXLIT8d/q2l0UFM7TaEeIzdFCE/FPMtTiizcPGGJtlPo2xuQzY09OhrLTzRxqJqwGw==} - engines: {node: ^14 || ^16 || >=18} - peerDependencies: - '@csstools/css-tokenizer': ^2.4.1 - '@csstools/css-parser-algorithms@3.0.5': resolution: {integrity: sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ==} engines: {node: '>=18'} peerDependencies: '@csstools/css-tokenizer': ^3.0.4 - '@csstools/css-tokenizer@2.4.1': - resolution: {integrity: sha512-eQ9DIktFJBhGjioABJRtUucoWR2mwllurfnM8LuNGAqX3ViZXaUchqk+1s7jjtkFiT9ySdACsFEA3etErkALUg==} - engines: {node: ^14 || ^16 || >=18} + '@csstools/css-parser-algorithms@4.0.0': + resolution: {integrity: sha512-+B87qS7fIG3L5h3qwJ/IFbjoVoOe/bpOdh9hAjXbvx0o8ImEmUsGXN0inFOnk2ChCFgqkkGFQ+TpM5rbhkKe4w==} + engines: {node: '>=20.19.0'} + peerDependencies: + '@csstools/css-tokenizer': ^4.0.0 + + '@csstools/css-syntax-patches-for-csstree@1.1.7': + resolution: {integrity: sha512-fQ+05118eQS1cofO3aJpB5efgpBZMvIzwr/sbC8kDLVA5XLG8q1kJV5yzrUAI1f7lvhPnm8fgIjzFB8/O/5Dig==} + peerDependencies: + css-tree: ^3.2.1 + peerDependenciesMeta: + css-tree: + optional: true '@csstools/css-tokenizer@3.0.4': resolution: {integrity: sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==} engines: {node: '>=18'} - '@csstools/media-query-list-parser@2.1.13': - resolution: {integrity: sha512-XaHr+16KRU9Gf8XLi3q8kDlI18d5vzKSKCY510Vrtc9iNR0NJzbY9hhTmwhzYZj/ZwGL4VmB3TA9hJW0Um2qFA==} - engines: {node: ^14 || ^16 || >=18} - peerDependencies: - '@csstools/css-parser-algorithms': ^2.7.1 - '@csstools/css-tokenizer': ^2.4.1 + '@csstools/css-tokenizer@4.0.0': + resolution: {integrity: sha512-QxULHAm7cNu72w97JUNCBFODFaXpbDg+dP8b/oWFAZ2MTRppA3U00Y2L1HqaS4J6yBqxwa/Y3nMBaxVKbB/NsA==} + engines: {node: '>=20.19.0'} '@csstools/media-query-list-parser@4.0.3': resolution: {integrity: sha512-HAYH7d3TLRHDOUQK4mZKf9k9Ph/m8Akstg66ywKR4SFAigjs3yBiUeZtFxywiTm5moZMAp/5W/ZuFnNXXYLuuQ==} @@ -841,6 +855,13 @@ packages: '@csstools/css-parser-algorithms': ^3.0.5 '@csstools/css-tokenizer': ^3.0.4 + '@csstools/media-query-list-parser@5.0.0': + resolution: {integrity: sha512-T9lXmZOfnam3eMERPsszjY5NK0jX8RmThmmm99FZ8b7z8yMaFZWKwLWGZuTwdO3ddRY5fy13GmmEYZXB4I98Eg==} + engines: {node: '>=20.19.0'} + peerDependencies: + '@csstools/css-parser-algorithms': ^4.0.0 + '@csstools/css-tokenizer': ^4.0.0 + '@csstools/postcss-alpha-function@1.0.1': resolution: {integrity: sha512-isfLLwksH3yHkFXfCI2Gcaqg7wGGHZZwunoJzEZk0yKYIokgre6hYVFibKL3SYAoR1kBXova8LB+JoO5vZzi9w==} engines: {node: '>=18'} @@ -1087,11 +1108,11 @@ packages: peerDependencies: postcss-selector-parser: ^7.0.0 - '@csstools/selector-specificity@3.1.1': - resolution: {integrity: sha512-a7cxGcJ2wIlMFLlh8z2ONm+715QkPHiyJcxwQlKOz/03GPw1COpfhcmC9wm4xlZfp//jWHNNMwzjtqHXVWU9KA==} - engines: {node: ^14 || ^16 || >=18} + '@csstools/selector-resolve-nested@4.0.1': + resolution: {integrity: sha512-j3vdQu0XwLME5qOTWxm8cnmvsf423R2YL6DbKklCHZwkDm7UdKNu6RPlw4REIJhSlKBICY3B70/7QZdicLqZgg==} + engines: {node: '>=20.19.0'} peerDependencies: - postcss-selector-parser: ^6.0.13 + postcss-selector-parser: ^7.1.1 '@csstools/selector-specificity@5.0.0': resolution: {integrity: sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw==} @@ -1099,6 +1120,12 @@ packages: peerDependencies: postcss-selector-parser: ^7.0.0 + '@csstools/selector-specificity@6.0.0': + resolution: {integrity: sha512-4sSgl78OtOXEX/2d++8A83zHNTgwCJMaR24FvsYL7Uf/VS8HZk9PTwR51elTbGqMuwH3szLvvOXEaVnqn0Z3zA==} + engines: {node: '>=20.19.0'} + peerDependencies: + postcss-selector-parser: ^7.1.1 + '@csstools/utilities@2.0.0': resolution: {integrity: sha512-5VdOr0Z71u+Yp3ozOx8T11N703wIFGVRgOWbOZMKgglPJsWA54MRIoMNVMa7shUToIhx5J8vX4sOZgD2XiihiQ==} engines: {node: '>=18'} @@ -1339,13 +1366,42 @@ packages: resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - '@eslint/eslintrc@2.1.4': - resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@eslint/config-array@0.21.2': + resolution: {integrity: sha512-nJl2KGTlrf9GjLimgIru+V/mzgSK0ABCDQRvxw5BjURL7WfH5uoWmizbH7QB6MmnMBd8cIC9uceWnezL1VZWWw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@8.57.1': - resolution: {integrity: sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@eslint/config-helpers@0.4.2': + resolution: {integrity: sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/core@0.17.0': + resolution: {integrity: sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/eslintrc@3.3.6': + resolution: {integrity: sha512-l2Ul9PrHsPCKcEY/ac7VgFj9D80C7S68sOKc618SyHDPK36s1XcFebXY0iTzUVn4Yq+YbwvSnDmCz9yxjX+QrA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/js@10.0.1': + resolution: {integrity: sha512-zeR9k5pd4gxjZ0abRoIaxdc7I3nDktoXZk2qOv9gCNWx3mVwEn32VRhyLaRsDiJjTs0xq/T8mfPtyuXu7GWBcA==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + peerDependencies: + eslint: ^10.0.0 + peerDependenciesMeta: + eslint: + optional: true + + '@eslint/js@9.39.5': + resolution: {integrity: sha512-QywQuszQh77pIXCsq998c8hbhSTI/azTty1Z6N53dmAudKHhy573j3yvRLsX2BSp8YpLtoCEG8E9DJe+8zUh4A==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/object-schema@2.1.7': + resolution: {integrity: sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/plugin-kit@0.4.1': + resolution: {integrity: sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@fortawesome/fontawesome-common-types@6.7.2': resolution: {integrity: sha512-Zs+YeHUC5fkt7Mg1l6XTniei3k4bwG/yo3iFUtZWd/pMx9g3fdvkSK9E0FOC+++phXOka78uJcYb8JaFkW52Xg==} @@ -1380,18 +1436,25 @@ packages: '@hapi/topo@5.1.0': resolution: {integrity: sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==} - '@humanwhocodes/config-array@0.13.0': - resolution: {integrity: sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==} - engines: {node: '>=10.10.0'} - deprecated: Use @eslint/config-array instead + '@humanfs/core@0.19.2': + resolution: {integrity: sha512-UhXNm+CFMWcbChXywFwkmhqjs3PRCmcSa/hfBgLIb7oQ5HNb1wS0icWsGtSAUNgefHeI+eBrA8I1fxmbHsGdvA==} + engines: {node: '>=18.18.0'} + + '@humanfs/node@0.16.8': + resolution: {integrity: sha512-gE1eQNZ3R++kTzFUpdGlpmy8kDZD/MLyHqDwqjkVQI0JMdI1D51sy1H958PNXYkM2rAac7e5/CnIKZrHtPh3BQ==} + engines: {node: '>=18.18.0'} + + '@humanfs/types@0.15.0': + resolution: {integrity: sha512-ZZ1w0aoQkwuUuC7Yf+7sdeaNfqQiiLcSRbfI08oAxqLtpXQr9AIVX7Ay7HLDuiLYAaFPu8oBYNq/QIi9URHJ3Q==} + engines: {node: '>=18.18.0'} '@humanwhocodes/module-importer@1.0.1': resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} engines: {node: '>=12.22'} - '@humanwhocodes/object-schema@2.0.3': - resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} - deprecated: Use @eslint/object-schema instead + '@humanwhocodes/retry@0.4.3': + resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} + engines: {node: '>=18.18'} '@icons/material@0.2.4': resolution: {integrity: sha512-QPcGmICAPbGLGb6F/yNf/KzKqvFx8z5qx3D1yFqVAjoFmXK35EgyW+cJ57Te3CNsmzblwtzakLGFqHPqrfb4Tw==} @@ -1545,6 +1608,15 @@ packages: peerDependencies: tslib: '2' + '@keyv/bigmap@1.3.1': + resolution: {integrity: sha512-WbzE9sdmQtKy8vrNPa9BRnwZh5UF4s1KTmSK0KUVLo3eff5BlQNNWDnFOouNpKfPKDnms9xynJjsMYjMaT/aFQ==} + engines: {node: '>= 18'} + peerDependencies: + keyv: ^5.6.0 + + '@keyv/serialize@1.1.1': + resolution: {integrity: sha512-dXn3FZhPv0US+7dtJsIi2R+c7qWYiReoEh5zUntWCf4oSpMNib8FDhSoed6m3QyZdx5hK7iLFkYk3rNxwt8vTA==} + '@leichtgewicht/ip-codec@2.0.5': resolution: {integrity: sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==} @@ -1594,31 +1666,153 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} - '@nullbot/docusaurus-plugin-changelog@3.7.0': - resolution: {integrity: sha512-tAkO6ZP4lDXxOt2+UQWXUdzNWs4o3wIiCi85+ioj3w1L6v3yQiQCFvtyO9j6HfJsK/+8Hdtn48Kc+6BBRplJ9Q==} + '@nullbot/docusaurus-plugin-changelog@3.8.0': + resolution: {integrity: sha512-p6UL5UMH7y/WhhFPwxuHGtwQZEKFSFy5EQXuLzP5SjbEuhx7HwmAQwjGNI+XfddnmJlVMTc7AStF38E8T2UOjg==} - '@nullbot/docusaurus-plugin-docsmenu@3.7.0': - resolution: {integrity: sha512-IhCSsnJHyWBFsA3gJBMrss1S6ib2rZC52uue9duK0UuzbnoyltApfdqGqA22hjvWUbpfu25SU1rjupwwodiQ+Q==} + '@nullbot/docusaurus-plugin-docsmenu@3.8.0': + resolution: {integrity: sha512-CfvAxQun75aj3WCtARgsYddpzyO8sKxDuce1PHzMVC3zfgcc2ak4HuhQOhbGkNTLKWyrRYj9dqg34grZbEmgjA==} - '@nullbot/docusaurus-plugin-getsidebar@3.7.0': - resolution: {integrity: sha512-OlbjQmqNqFO6ZQeqv+n2m3NLhkMpOQlowADRcNNkbAN0BSJp3Dt4P9PhD9j/xknSlW6Ao9tKBISJaJH7VtXD5w==} + '@nullbot/docusaurus-plugin-getsidebar@3.8.0': + resolution: {integrity: sha512-uVvc4bfd9lJ+SKuJlwU0W9PZBTc5w2wpcjMg7B+5WtvMg/bfi/ycNE8YlrvjANX9SlikySruV2E28c0KZmv3VQ==} - '@nullbot/docusaurus-preset-nonepress@3.7.0': - resolution: {integrity: sha512-JNBj89xLo1WpCA0NzjleG/4CXz/W+9zcGZ2R6FdRCA0MNCiwVNoDa3B3wt+ILNCTspnyW3AFt0L4g/sD2QqoWw==} + '@nullbot/docusaurus-preset-nonepress@3.8.0': + resolution: {integrity: sha512-JjzTfrwa/w9S6LQfm3sLYVjjJfyARK9f3ylwJ48S0nqpt65LY0DSKmlXOD1z4u6IF9M8FmFOpwPE0kEReZ34cQ==} engines: {node: '>=20.0'} peerDependencies: react: ^18.0.0 || ^19.0.0 react-dom: ^18.0.0 || ^19.0.0 - '@nullbot/docusaurus-theme-nonepress@3.7.0': - resolution: {integrity: sha512-BaL//Sf0SeEyQ6/DCUDZHy/bBMxiEtaH57vJkBP0z3d0rRS5aoQQcBEjYXM2Q7kIhyAogPgMiSxv7UgfQa698w==} + '@nullbot/docusaurus-theme-nonepress@3.8.0': + resolution: {integrity: sha512-yW7+xk3fe3SzEycufdmqbBTO86l7Kk93eg0X4OxdAYB3qRDZBw/VQhQQBhM1bD644FD35chicpyCndlxetrigg==} engines: {node: '>=20.0'} peerDependencies: react: ^18.0.0 || ^19.0.0 react-dom: ^18.0.0 || ^19.0.0 - '@nullbot/docusaurus-tsconfig@3.7.0': - resolution: {integrity: sha512-5tpj+0M8iWDlXpQnRNH6UOhJWCR8cHxraq4SR+8i/+x558iOprGqp1tsj9pWo0kFnTrVqJ3AOwpoz7SgooWljw==} + '@nullbot/docusaurus-tsconfig@3.8.0': + resolution: {integrity: sha512-5wEFeWDXrKbieZVjqUG5HcyJTQspQte2TYOccbhBoPjtiSBs4tNmsnLgyHwOWT0ikV/iN1RgRI1avOWI+N5TYA==} + + '@oxfmt/binding-android-arm-eabi@0.60.0': + resolution: {integrity: sha512-1q4q4Jc8FlOMVojEisyFAVyl8h1yawNv6phjgmhGVEDeyeOdsSnSr9x0+D4mOnEKvpO5L4mxKZ/DP9X6U3A/Mw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [android] + + '@oxfmt/binding-android-arm64@0.60.0': + resolution: {integrity: sha512-tD41I6nCt9k8SQXft0CSjjU9jg6SwG7uMu7PxodSEHXl+GDW0868oy6tTtoJkyUze8YKFgTpz/k5LuPUnFiGLw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [android] + + '@oxfmt/binding-darwin-arm64@0.60.0': + resolution: {integrity: sha512-TTpzPug96Zxdyb46KvTyIUQDdsqbumXh2TKG9C23PCT0kF7JkW56Z/quPuG9rqOFKQIi1gpRNZ7DX18LwxXPnw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [darwin] + + '@oxfmt/binding-darwin-x64@0.60.0': + resolution: {integrity: sha512-CnOoWgQ7L+JL/YQaRJ+NyATciSfcftncm7y3kqyte1cGtFEGnStaCd1TAyrinkfQ7nRBfHrTs1/vTwUJr3WF2Q==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [darwin] + + '@oxfmt/binding-freebsd-x64@0.60.0': + resolution: {integrity: sha512-ychJo7S3hZxdO6eDZ9zM6F2lM9fpJS3EKS5CAUSWyprdLYxTu4gbaUKV/VBPTcMJwQa2Bpo+643y3OJ537pihA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [freebsd] + + '@oxfmt/binding-linux-arm-gnueabihf@0.60.0': + resolution: {integrity: sha512-36IH5o55T2Fx7E0feDttt+mifxN6yk9pWv4KfhAIsP0dFnUq27331OwbpOsZdoXF9soOLWm7mQUz5+UUmyec4g==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + + '@oxfmt/binding-linux-arm-musleabihf@0.60.0': + resolution: {integrity: sha512-G1Ve7lAa6sFBolVI2LWHfEAqy0YKh4vnioH8uYO9kAEdgM7mR40IksIx9/Zk4+vbYew/sGa4J9Q4tZ3n9gXDHA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + + '@oxfmt/binding-linux-arm64-gnu@0.60.0': + resolution: {integrity: sha512-LTQdRBf6uzj/h7Xk6lKzbGD2hrF/fK4YI9LIN1c0509tPUn8wRa3mCmrFQpEWJPLYGFrLFFMTYW1Ljj6VqW2Hw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@oxfmt/binding-linux-arm64-musl@0.60.0': + resolution: {integrity: sha512-2JMo3XPxMPx3hiqddSZYyaH+fKJm6cz0u8n1naYjP/CdOQOZW34i8lKBUfmbWiuFvd6KoYXLmhAyBuvojsYS7Q==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@oxfmt/binding-linux-ppc64-gnu@0.60.0': + resolution: {integrity: sha512-L3C+nBD13lr306tr/PjM3RMll+BVqgFrIgUyoeHuai5oueJrRLgO3j+GO5/Cbhtkf5PSlHYTI1JY7iqBd1qa6A==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@oxfmt/binding-linux-riscv64-gnu@0.60.0': + resolution: {integrity: sha512-M4MsmvqlxFiPtSRGyBYQSZxchEf463AOyd+Dh4/9xDpjWBsRtDUTDMFN5EdHinjVK1/eDJQ8MLpcYjpYayaCnA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [riscv64] + os: [linux] + libc: [glibc] + + '@oxfmt/binding-linux-riscv64-musl@0.60.0': + resolution: {integrity: sha512-OH+9UskYuxRB+GxqdGkVN8f5UpwhqG8YscNo1wl8+KJ62cd7wZdGga6iGLJIf8kibF1WBwvlfDUx3cez/VXwFg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [riscv64] + os: [linux] + libc: [musl] + + '@oxfmt/binding-linux-s390x-gnu@0.60.0': + resolution: {integrity: sha512-y7AAFutt9wFWBFOAn6+BHaV39usZmcr3YYH2385f+NHgPNpIF9HpqKp0jgUxPaUOCyG3oaX5VhJduL1Nw164rw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@oxfmt/binding-linux-x64-gnu@0.60.0': + resolution: {integrity: sha512-yKZ9+CXAI+1RO5nH/4Z/9M6DAsfOzd5bw/gtWk81KB4mpalMaRRSXfouc5/tHxazDmBek55HNPepNYBgaCew0Q==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@oxfmt/binding-linux-x64-musl@0.60.0': + resolution: {integrity: sha512-bCUGaF6hJOYnQzLJdHLZbvGsOd5oSvGAyJhPAKum2uyLYUuXmP8vqg690DWi2hqcnIoYpqSqCrjzE5aiUAgwQg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [musl] + + '@oxfmt/binding-openharmony-arm64@0.60.0': + resolution: {integrity: sha512-GrUeZOvzP30ExxfCuQiyofuUGI+OmvAgFwOO5w5p9mGPlxcyuqI+6Sy9fAKFFfLQrqKYWFgc5sYA2Unj/29nPg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [openharmony] + + '@oxfmt/binding-win32-arm64-msvc@0.60.0': + resolution: {integrity: sha512-WD4Q954kUl2TDJV/6q7UnE2rlKk047kXLJsr4bJ2mXRaAqNXcmV3nwKUsGCc3mz/jYDBnXtJEaBErJEybK8iQQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [win32] + + '@oxfmt/binding-win32-ia32-msvc@0.60.0': + resolution: {integrity: sha512-HqDekjr8JXzVDUP1YthDZ1Y3CBEcuZT4WX3B+1kaxj8CvZA8Y2YhcEsXqoSop3tVsgjACxjnFQFDkBo0r/jq1Q==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ia32] + os: [win32] + + '@oxfmt/binding-win32-x64-msvc@0.60.0': + resolution: {integrity: sha512-tz78yhmGPKboTMHCHSaUqXK8JrmoSejgDcWeqAtg2s07ZGKQ3rH5Jn8NuXPGNG33CDbY2e9NoQWXIVEmKO21Rw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [win32] '@peculiar/asn1-cms@2.8.0': resolution: {integrity: sha512-NgekZOrSJFSBFLFoLfwePguAWAx7z1+f2TEsWFUMyiqqfntZ4+S/S5hzqME3q4pCA0iOsFKdwiQ35dwY24eVqA==} @@ -1763,6 +1957,10 @@ packages: resolution: {integrity: sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==} engines: {node: '>=14.16'} + '@sindresorhus/merge-streams@4.0.0': + resolution: {integrity: sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==} + engines: {node: '>=18'} + '@slorber/react-helmet-async@1.3.0': resolution: {integrity: sha512-e9/OK8VhwUSc67diWI8Rb3I0YgI9/SBQtnhe9aEuK6MhZm7ntZZimXgwXnd8W96YTmSOb9M4d8LwhRZyhWr/1A==} peerDependencies: @@ -2043,9 +2241,6 @@ packages: '@types/mime@1.3.5': resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==} - '@types/minimist@1.2.5': - resolution: {integrity: sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==} - '@types/ms@2.1.0': resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} @@ -2055,9 +2250,6 @@ packages: '@types/node@26.1.1': resolution: {integrity: sha512-nxAkRSVkN1Y0JC1W8ky/fTfkGsMmcrRsbx+3XoZE+rMOX71kLYTV7fLXpqud1GpbpP5TuffXFqfX7fH2GgZREw==} - '@types/normalize-package-data@2.4.4': - resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} - '@types/prismjs@1.26.6': resolution: {integrity: sha512-vqlvI7qlMvcCBbVe0AKAb4f97//Hy0EBTaiW8AalRnG/xAN5zOiWWyrNqNXeq8+KAuvRewjCVY1+IPxk4RdNYw==} @@ -2128,45 +2320,56 @@ packages: '@types/yargs@17.0.35': resolution: {integrity: sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==} - '@typescript-eslint/eslint-plugin@5.62.0': - resolution: {integrity: sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@typescript-eslint/eslint-plugin@8.65.0': + resolution: {integrity: sha512-IEgob78X12rHpUmtcwFsXhZdVGJtwTVP8FiCLZkR6GlYVrl2PcuB+KhCE5BlVC/eQpQnu8WXRtkHZuPar+gCRA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^5.0.0 - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + '@typescript-eslint/parser': ^8.65.0 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/parser@5.62.0': - resolution: {integrity: sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@typescript-eslint/parser@8.65.0': + resolution: {integrity: sha512-CZ4nMxWwgu1HEEFNkeaCptra9QCtkmKdgf3sWh1rl1trIhmxLilgTV4cwcbQ4wemnT4sWQN8CaKOmdYx+g2gMA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' + + '@typescript-eslint/project-service@8.65.0': + resolution: {integrity: sha512-SxnPhbTsGahizDgbu7oqFH/xVtzIqMd/s+WtnSxNxJZJpLbdT5IPdzg8EZxO3+PoKahXmwJLeNQOpKJb3/bi7Q==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.1.0' '@typescript-eslint/scope-manager@5.62.0': resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - '@typescript-eslint/type-utils@5.62.0': - resolution: {integrity: sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@typescript-eslint/scope-manager@8.65.0': + resolution: {integrity: sha512-Esbl8OSYiVxBokYgWPf7VVWg/BE798wXhimnn9ML9Pt5qoDf8bfQlgjlKXR/k98+AcNzlLKYrpCcrcuZ9DZLgg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/tsconfig-utils@8.65.0': + resolution: {integrity: sha512-j6GzGqCiRdA7Qhur2VVmKZAkBLfnHFQfx4TaJGL9RMveZqCo48jSHHO0DTgizEnGhtWnqmbtCUSrqSkdiY/0Hg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: '*' - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + typescript: '>=4.8.4 <6.1.0' + + '@typescript-eslint/type-utils@8.65.0': + resolution: {integrity: sha512-YjaZ7PRI5qY7ax2L3PbvX0rRyGtipAReCWs0mhhDBHjH/vl0g0BonaGXrKdKpMbIIsMIwDgbk/xzkBTyAltS5g==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' '@typescript-eslint/types@5.62.0': resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@typescript-eslint/types@8.65.0': + resolution: {integrity: sha512-JSSwWNy+H0E/01jJEM+hrX6N0OFDzFzeIhHFSAS01tlVaevpG8cFyYRPhS5yjGOvBUx3sqQHVMjCL1CAZZMxBg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/typescript-estree@5.62.0': resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -2176,16 +2379,33 @@ packages: typescript: optional: true + '@typescript-eslint/typescript-estree@8.65.0': + resolution: {integrity: sha512-JboAE2swaYt4tb1fHhHTABE2K+OLy09XfcTbhnk4Pw96f9dd2e9iYsJ28gBggHlo5z5x1rkyWvcPoTuNTd4oGg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.1.0' + '@typescript-eslint/utils@5.62.0': resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + '@typescript-eslint/utils@8.65.0': + resolution: {integrity: sha512-gXiwIHsYreboxeJucHKPvgwl7dXt50mF8s1/c00cP/WoVTyWKFdtfhRWwZiXYFU5H2O8vVoSLNrexFZjYS/SGA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' + '@typescript-eslint/visitor-keys@5.62.0': resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@typescript-eslint/visitor-keys@8.65.0': + resolution: {integrity: sha512-8C71BQkGjiMmXtop7pHVJu1l2NNShFdkCyD6a2ezzs5vU/L3LRtb69EtcteFwz0mYMPzIgOw0n6OV4VBUWZd7A==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@ungap/structured-clone@1.3.3': resolution: {integrity: sha512-60YRaenCQcVjYEKOcG824+DRGGIQ3VKErcBoAEDJZz5bKIs2ZG+X/H9Nk+Q6EVkwJk5QNApxbrc5QtBSwtrXAg==} @@ -2389,10 +2609,6 @@ packages: resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==} engines: {node: '>= 0.4'} - arrify@1.0.1: - resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} - engines: {node: '>=0.10.0'} - asciinema-player@3.17.0: resolution: {integrity: sha512-JbjNJmA2TLIeYNaOEja+kVSzXadKoqpIzVVmfBGNj2DmdtE/vExBCnkE8NYEcpaQcDvUYg8Ltt0urT80frACmw==} @@ -2478,8 +2694,9 @@ packages: balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - balanced-match@2.0.0: - resolution: {integrity: sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==} + balanced-match@4.0.4: + resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==} + engines: {node: 18 || 20 || >=22} bare-events@2.9.1: resolution: {integrity: sha512-Z0oHEHAFDZkffN8Qc39zNZjQlMDkPJRyyyZieU1VH7u8c5S+qHZ2S8ixdKIAxEjfHO7FJxXmJWgteOghVanIsg==} @@ -2560,6 +2777,10 @@ packages: brace-expansion@1.1.16: resolution: {integrity: sha512-IDw48K2/2kRkg9LdJxurvq3lV3aBgq0REY89duEqFRthjlPdXHKMj7EnQOXVckxzgisinf3nHfrcE2FufFLXMw==} + brace-expansion@5.0.8: + resolution: {integrity: sha512-JZyDyq3D4AUifKTPOB7DELf6XsB3WdPuNxCtob1vFXPsSXhdAiHBWJ/tJ8HAc9aH84BK+5JFZLNkJKx3G9kzQg==} + engines: {node: 20 || >=22} + braces@3.0.3: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} @@ -2599,6 +2820,9 @@ packages: resolution: {integrity: sha512-zkDT5WAF4hSSoUgyfg5tFIxz8XQK+25W/TLVojJTMKBaxevLBBtLxgqguAuVQB8PVW79FVjHcU+GJ9tVbDZ9mQ==} engines: {node: '>=14.16'} + cacheable@2.5.0: + resolution: {integrity: sha512-60cyAOytib/OzBw1JNSoSV/boK1AtHryDIjvVBk7XbN4ugfkM3+Sry7fEjNgPMGgOjuaZPAp8ruZ0Cxafwyq9g==} + call-bind-apply-helpers@1.0.2: resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} engines: {node: '>= 0.4'} @@ -2622,10 +2846,6 @@ packages: resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} engines: {node: '>= 6'} - camelcase-keys@7.0.2: - resolution: {integrity: sha512-Rjs1H+A9R+Ig+4E/9oyB66UC5Mj9Xq3N//vcLf2WzgdTi/3gUu3Z9KoqmlrEG4VuuLK8wJHofxzdQXz/knhiYg==} - engines: {node: '>=12'} - camelcase@6.3.0: resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} engines: {node: '>=10'} @@ -2784,9 +3004,6 @@ packages: resolution: {integrity: sha512-cD31W1v3GqUlQvbBCGcXmd2Nj9SvLDOP1oQ0YFuLETufzSPaKp11rYBsSOm7rCsW3OnIRAFM3OxRhceaXNYHkA==} engines: {node: '>=12'} - confusing-browser-globals@1.0.11: - resolution: {integrity: sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==} - connect-history-api-fallback@2.0.0: resolution: {integrity: sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==} engines: {node: '>=0.8'} @@ -2845,6 +3062,15 @@ packages: typescript: optional: true + cosmiconfig@9.0.2: + resolution: {integrity: sha512-gtTZxTDau1wL7Y7zifc2dd8jHSK/k6BTx/2Xp/BpdlAdnlYWFVt7qhJqgwi7637yRwRQ3qL4ZidbB4I8tA5VOg==} + engines: {node: '>=14'} + peerDependencies: + typescript: '>=4.9.5' + peerDependenciesMeta: + typescript: + optional: true + cross-env@7.0.3: resolution: {integrity: sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==} engines: {node: '>=10.14', npm: '>=6', yarn: '>=1'} @@ -2940,6 +3166,10 @@ packages: resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==} engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} + css-tree@3.2.1: + resolution: {integrity: sha512-X7sjQzceUhu1u7Y/ylrRZFU2FS6LRiFVp6rKLPg23y3x3c3DOKAwuXGDp+PAGjh6CSnCjYeAul8pcT8bAl+lSA==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} + css-what@6.2.2: resolution: {integrity: sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==} engines: {node: '>= 6'} @@ -3034,18 +3264,6 @@ packages: supports-color: optional: true - decamelize-keys@1.1.1: - resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==} - engines: {node: '>=0.10.0'} - - decamelize@1.2.0: - resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} - engines: {node: '>=0.10.0'} - - decamelize@5.0.1: - resolution: {integrity: sha512-VfxadyCECXgQlkoEAjeghAr5gY3Hf+IKjKb+X8tGVDtveCjN+USwprd2q3QXBR9T1+x2DG0XZF5/w+7HAtSaXA==} - engines: {node: '>=10'} - decode-named-character-reference@1.3.0: resolution: {integrity: sha512-GtpQYB283KrPp6nRw50q3U9/VfOutZOe103qlN7BPP6Ad27xYnOIWv4lPzo8HCAL+mMZofJ9KEy30fq6MfaK6Q==} @@ -3137,10 +3355,6 @@ packages: resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} engines: {node: '>=0.10.0'} - doctrine@3.0.0: - resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} - engines: {node: '>=6.0.0'} - dom-converter@0.2.0: resolution: {integrity: sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==} @@ -3228,6 +3442,10 @@ packages: resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==} engines: {node: '>=0.12'} + env-paths@2.2.1: + resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} + engines: {node: '>=6'} + error-ex@1.3.4: resolution: {integrity: sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==} @@ -3295,25 +3513,8 @@ packages: resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} engines: {node: '>=12'} - eslint-config-airbnb-base@15.0.0: - resolution: {integrity: sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig==} - engines: {node: ^10.12.0 || >=12.0.0} - peerDependencies: - eslint: ^7.32.0 || ^8.2.0 - eslint-plugin-import: ^2.25.2 - - eslint-config-airbnb@19.0.4: - resolution: {integrity: sha512-T75QYQVQX57jiNgpF9r1KegMICE94VYwoFQyMGhrvc+lB8YF2E/M/PYDaQe1AJcWaEgqLE+ErXV1Og/+6Vyzew==} - engines: {node: ^10.12.0 || ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^7.32.0 || ^8.2.0 - eslint-plugin-import: ^2.25.3 - eslint-plugin-jsx-a11y: ^6.5.1 - eslint-plugin-react: ^7.28.0 - eslint-plugin-react-hooks: ^4.3.0 - - eslint-config-prettier@8.10.2: - resolution: {integrity: sha512-/IGJ6+Dka158JnP5n5YFMOszjDWrXggGz1LaK/guZq9vZTmniaKlHcsscvkAhn9y4U+BU3JuUdYvtAMcv30y4A==} + eslint-config-prettier@10.1.8: + resolution: {integrity: sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==} hasBin: true peerDependencies: eslint: '>=7.0.0' @@ -3358,11 +3559,11 @@ packages: peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9 - eslint-plugin-react-hooks@4.6.2: - resolution: {integrity: sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==} - engines: {node: '>=10'} + eslint-plugin-react-hooks@7.1.1: + resolution: {integrity: sha512-f2I7Gw6JbvCexzIInuSbZpfdQ44D7iqdWX01FKLvrPgqxoE7oMj8clOfto8U6vYiz4yd5oKu39rRSVOe1zRu0g==} + engines: {node: '>=18'} peerDependencies: - eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 || ^10.0.0 eslint-plugin-react@7.37.5: resolution: {integrity: sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==} @@ -3370,33 +3571,45 @@ packages: peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 - eslint-plugin-regexp@1.15.0: - resolution: {integrity: sha512-YEtQPfdudafU7RBIFci81R/Q1yErm0mVh3BkGnXD2Dk8DLwTFdc2ITYH1wCnHKim2gnHfPFgrkh+b2ozyyU7ag==} - engines: {node: ^12 || >=14} + eslint-plugin-regexp@3.1.1: + resolution: {integrity: sha512-MxR5nqoQCtVWmJwia0D2+NlXX1xzdpkslsVOZLEYQ4PQWEaL65PCZXURxaBc3lPnkNFpNxzMIRmYVxdl8giXRA==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} peerDependencies: - eslint: '>=6.0.0' + eslint: '>=9.38.0' eslint-scope@5.1.1: resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} engines: {node: '>=8.0.0'} - eslint-scope@7.2.2: - resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + eslint-scope@8.4.0: + resolution: {integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} eslint-visitor-keys@3.4.3: resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - eslint@8.57.1: - resolution: {integrity: sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options. - hasBin: true + eslint-visitor-keys@4.2.1: + resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - espree@9.6.1: - resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + eslint-visitor-keys@5.0.1: + resolution: {integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + + eslint@9.39.5: + resolution: {integrity: sha512-DgZS62aPLXKlnxILS/AYCoRvHaZeXceIzlXPkkGGzJWSow1aEk0lbTlxUSlyjC8jcaKxAdOnTDz+o1JFSBsyjw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + hasBin: true + peerDependencies: + jiti: '*' + peerDependenciesMeta: + jiti: + optional: true + + espree@10.4.0: + resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} esquery@1.7.0: resolution: {integrity: sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==} @@ -3486,9 +3699,6 @@ packages: fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - fast-diff@1.3.0: - resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} - fast-fifo@1.3.2: resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==} @@ -3531,13 +3741,12 @@ packages: picomatch: optional: true - file-entry-cache@6.0.1: - resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} - engines: {node: ^10.12.0 || >=12.0.0} + file-entry-cache@11.1.5: + resolution: {integrity: sha512-+PFTHITI08JIGhnNpGNI8T8inUpgZfk3GNEqfT9R2zZV2iFXg3CvqzSl/uEhs7TSGujYRELEANyDvS8Fj7+S7Q==} - file-entry-cache@7.0.2: - resolution: {integrity: sha512-TfW7/1iI4Cy7Y8L6iqNdZQVvdXn0f8B4QcIXmkIbtTIe/Okm/nSlHb4IwGzRVOd3WfSieCgvf5cMzEfySAIl0g==} - engines: {node: '>=12.0.0'} + file-entry-cache@8.0.0: + resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} + engines: {node: '>=16.0.0'} file-loader@6.2.0: resolution: {integrity: sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==} @@ -3565,9 +3774,12 @@ packages: resolution: {integrity: sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - flat-cache@3.2.0: - resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} - engines: {node: ^10.12.0 || >=12.0.0} + flat-cache@4.0.1: + resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} + engines: {node: '>=16'} + + flat-cache@6.1.23: + resolution: {integrity: sha512-f++BY9pTk+983xK1FLzlLpmM0i0z+jHmx3QESGkURMXujQZz1k5wzwX6hjnQ8goaD0B+sYnDK1yZ6MTyZfUaqA==} flat@5.0.2: resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} @@ -3615,9 +3827,6 @@ packages: resolution: {integrity: sha512-w8ZNZr2mKIc7qeNaQ9AVPT1+iFaI+Avd4xudVOvdDJ8VytREi1Ft5Ih7hd9jjehod8vAM5GMsfQ/TpPf4EyoEA==} engines: {node: '>=14.14'} - fs.realpath@1.0.0: - resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - fsevents@2.3.3: resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} @@ -3641,6 +3850,10 @@ packages: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} + get-east-asian-width@1.6.0: + resolution: {integrity: sha512-QRbvDIbx6YklUe6RxeTeleMR0yv3cYH6PsPZHcnVn7xv7zO1BHN8r0XETu8n6Ye3Q+ahtSarc3WgtNWmehIBfA==} + engines: {node: '>=18'} + get-intrinsic@1.3.0: resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} engines: {node: '>= 0.4'} @@ -3680,10 +3893,6 @@ packages: peerDependencies: tslib: '2' - glob@7.2.3: - resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} - deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me - global-dirs@3.0.1: resolution: {integrity: sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==} engines: {node: '>=10'} @@ -3696,9 +3905,13 @@ packages: resolution: {integrity: sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==} engines: {node: '>=6'} - globals@13.24.0: - resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} - engines: {node: '>=8'} + globals@14.0.0: + resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} + engines: {node: '>=18'} + + globals@17.7.0: + resolution: {integrity: sha512-Czmyns5dUsq4seFBR/Kdydhmo8y9kC79hiSkPn0YcGtNnYWnrgt0vjrSjx9tspoDGWm2CMarffRuLjM4xUz8xg==} + engines: {node: '>=18'} globalthis@1.0.4: resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} @@ -3712,6 +3925,10 @@ packages: resolution: {integrity: sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + globby@16.2.2: + resolution: {integrity: sha512-NLvV9ubZ6NDsJaOpKPy3cQeJpKi9DcWiyCiFUpJPA0YihRqiE6RWaLUmgNNPr8MgPpLZjnBjSmou7uZBRJv9wA==} + engines: {node: '>=20'} + globjoin@0.1.4: resolution: {integrity: sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==} @@ -3729,12 +3946,6 @@ packages: graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - grapheme-splitter@1.0.4: - resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} - - graphemer@1.4.0: - resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} - gzip-size@6.0.0: resolution: {integrity: sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==} engines: {node: '>=10'} @@ -3742,10 +3953,6 @@ packages: handle-thing@2.0.1: resolution: {integrity: sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==} - hard-rejection@2.1.0: - resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} - engines: {node: '>=6'} - has-bigints@1.1.0: resolution: {integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==} engines: {node: '>= 0.4'} @@ -3754,6 +3961,10 @@ packages: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} + has-flag@5.0.1: + resolution: {integrity: sha512-CsNUt5x9LUdx6hnk/E2SZLsDyvfqANZSUq4+D3D8RzDJ2M+HDTIkF60ibS1vHaK55vzgiZw1bEPFG9yH7l33wA==} + engines: {node: '>=12'} + has-property-descriptors@1.0.2: resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} @@ -3773,6 +3984,10 @@ packages: resolution: {integrity: sha512-IrsVwUHhEULx3R8f/aA8AHuEzAorplsab/v8HBzEiIukwq5i/EC+xmOW+HfP1OaDP+2JkgT1yILHN2O3UFIbcA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + hashery@1.5.1: + resolution: {integrity: sha512-iZyKG96/JwPz1N55vj2Ie2vXbhu440zfUfJvSwEqEbeLluk7NnapfGqa7LH0mOsnDxTF85Mx8/dyR6HfqcbmbQ==} + engines: {node: '>=20'} + hasown@2.0.4: resolution: {integrity: sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==} engines: {node: '>= 0.4'} @@ -3805,15 +4020,23 @@ packages: resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} hasBin: true + hermes-estree@0.25.1: + resolution: {integrity: sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw==} + + hermes-parser@0.25.1: + resolution: {integrity: sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==} + history@4.10.1: resolution: {integrity: sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==} hoist-non-react-statics@3.3.2: resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} - hosted-git-info@4.1.0: - resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==} - engines: {node: '>=10'} + hookified@1.15.1: + resolution: {integrity: sha512-MvG/clsADq1GPM2KGo2nyfaWVyn9naPiXrqIe4jYjXNZQt238kWyOGrsyc/DmRAQ+Re6yeo6yX/yoNCG5KAEVg==} + + hookified@2.2.0: + resolution: {integrity: sha512-p/LgFzRN5FeoD3DLS6bkUapeye6E4SI6yJs6KetENd18S+FBthqYq2amJUWpt5z0EQwwHemidjY5OqJGEKm5uA==} hpack.js@2.1.6: resolution: {integrity: sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==} @@ -3835,6 +4058,10 @@ packages: resolution: {integrity: sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==} engines: {node: '>=8'} + html-tags@5.1.0: + resolution: {integrity: sha512-n6l5uca7/y5joxZ3LUePhzmBFUJ+U2YWzhMa8XUTecSeSlQiZdF5XAd/Q3/WUl0VsXgUwWi8I7CNIwdI5WN1SQ==} + engines: {node: '>=20.10'} + html-void-elements@3.0.0: resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} @@ -3912,6 +4139,10 @@ packages: resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} engines: {node: '>= 4'} + ignore@7.0.6: + resolution: {integrity: sha512-BAg6QkE8W+TuQLrrw0Ugr7HegXduRuuj8/ti2kSOc+jz1dmx8/WNcjr6XGnq5YpDWxFwwaavqD0+jIUOKelTsw==} + engines: {node: '>= 4'} + image-size@2.0.2: resolution: {integrity: sha512-IRqXKlaXwgSMAMtpNzZa1ZAe8m+Sa1770Dhk8VkSsP9LS+iHD62Zd8FQKs8fbPiagBE7BzoFX23cxFnwshpV6w==} engines: {node: '>=16.x'} @@ -3925,6 +4156,9 @@ packages: resolution: {integrity: sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==} engines: {node: '>=8'} + import-meta-resolve@4.2.0: + resolution: {integrity: sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg==} + imurmurhash@0.1.4: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} @@ -3933,18 +4167,10 @@ packages: resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} engines: {node: '>=8'} - indent-string@5.0.0: - resolution: {integrity: sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==} - engines: {node: '>=12'} - infima@0.2.0-alpha.43: resolution: {integrity: sha512-2uw57LvUqW0rK/SWYnd/2rRfxNA5DDNOh33jxF7fy46VWoNhGxiUQyVZHbBMjQ33mQem0cjdDVwgWVAmlRfgyQ==} engines: {node: '>=12'} - inflight@1.0.6: - resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} - deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. - inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} @@ -4114,9 +4340,9 @@ packages: resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} engines: {node: '>=8'} - is-plain-obj@1.1.0: - resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} - engines: {node: '>=0.10.0'} + is-path-inside@4.0.0: + resolution: {integrity: sha512-lJJV/5dYS+RcL8uQdBDW9c9uWFLLBNRyFhnAKXw5tVqLlKZ4RMGZKv+YQ/IA3OhD+RpbJa1LLFM1FQPGyIXvOA==} + engines: {node: '>=12'} is-plain-obj@3.0.0: resolution: {integrity: sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==} @@ -4130,10 +4356,6 @@ packages: resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} engines: {node: '>=0.10.0'} - is-plain-object@5.0.0: - resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} - engines: {node: '>=0.10.0'} - is-regex@1.2.1: resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==} engines: {node: '>= 0.4'} @@ -4229,6 +4451,10 @@ packages: resolution: {integrity: sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==} hasBin: true + jiti@2.7.0: + resolution: {integrity: sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==} + hasBin: true + joi@17.13.4: resolution: {integrity: sha512-1RuuER6kmt8K8I3nIWvPZKi5RQCb568ZPyY4Pwjlua+yo+63ZTmIwxLZH0heBmiKN4uxjvCiarDrjaeH84xicQ==} @@ -4239,10 +4465,9 @@ packages: resolution: {integrity: sha512-1td788aAnnZ5qs7V2QIRl1owjtYpbKt749Y3xauqQgwIIGF/xXWz1wMTEBx5O3LK3lXLVuqXPdPxj2BoFHaW9Q==} hasBin: true - jsdoctypeparser@9.0.0: - resolution: {integrity: sha512-jrTA2jJIL6/DAEILBEh2/w9QxCuwmvNXIry39Ay/HVfhE3o2yVV0U44blYkqdHA/OKloJEqvJy0xU+GSdE2SIw==} - engines: {node: '>=10'} - hasBin: true + jsdoc-type-pratt-parser@7.2.0: + resolution: {integrity: sha512-dh140MMgjyg3JhJZY/+iEzW+NO5xR2gpbDFKHqotCmexElVntw7GjWjt511+C/Ef02RU5TKYrJo/Xlzk+OLaTw==} + engines: {node: '>=20.0.0'} jsesc@3.1.0: resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} @@ -4283,6 +4508,9 @@ packages: keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + keyv@5.6.0: + resolution: {integrity: sha512-CYDD3SOtsHtyXeEORYRx2qBtpDJFjRTGXUtmNEMGyzYOKj1TE3tycdlho7kA1Ufx9OYWZzg52QFBGALTirzDSw==} + kind-of@6.0.3: resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} engines: {node: '>=0.10.0'} @@ -4291,9 +4519,6 @@ packages: resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} engines: {node: '>=6'} - known-css-properties@0.29.0: - resolution: {integrity: sha512-Ne7wqW7/9Cz54PDt4I3tcV+hAyat8ypyOGzYRJQfdxnnjeWsTxt1cy8pjvvKeI5kfXuyvULyeeAvwvvtAX3ayQ==} - language-subtag-registry@0.3.23: resolution: {integrity: sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==} @@ -4451,18 +4676,6 @@ packages: lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} - lru-cache@6.0.0: - resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} - engines: {node: '>=10'} - - map-obj@1.0.1: - resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} - engines: {node: '>=0.10.0'} - - map-obj@4.3.0: - resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==} - engines: {node: '>=8'} - markdown-extensions@2.0.0: resolution: {integrity: sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==} engines: {node: '>=16'} @@ -4477,8 +4690,8 @@ packages: resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} engines: {node: '>= 0.4'} - mathml-tag-names@2.1.3: - resolution: {integrity: sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==} + mathml-tag-names@4.0.0: + resolution: {integrity: sha512-aa6AU2Pcx0VP/XWnh8IGL0SYSgQHDT6Ucror2j2mXeFAlN3ahaNs8EZtG1YiticMkSLj3Gt6VPFfZogt7G5iFQ==} mdast-util-directive@3.1.0: resolution: {integrity: sha512-I3fNFt+DHmpWCYAT7quoM6lHf9wuqtI+oCOfvILnoicNIqjh5E3dEJWiXuYME2gNe8vl1iMQwyUHa7bgFmak6Q==} @@ -4540,6 +4753,9 @@ packages: mdn-data@2.0.30: resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} + mdn-data@2.27.1: + resolution: {integrity: sha512-9Yubnt3e8A0OKwxYSXyhLymGW4sCufcLG6VdiDdUGVkPhpqLxlvP5vl1983gQjJl3tqbrM731mjaZaP68AgosQ==} + media-typer@0.3.0: resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} engines: {node: '>= 0.6'} @@ -4549,9 +4765,9 @@ packages: peerDependencies: tslib: '2' - meow@10.1.5: - resolution: {integrity: sha512-/d+PQ4GKmGvM9Bee/DPa8z3mXs/pkvJE2KEThngVNOqtmljC6K7NMPxtc2JeZYTmpWb9k/TmxjeL18ez3h7vCw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + meow@14.1.0: + resolution: {integrity: sha512-EDYo6VlmtnumlcBCbh1gLJ//9jvM/ndXHfVXIFrZVr6fGcwTUyCTFNTLCKuY3ffbK8L/+3Mzqnd58RojiZqHVw==} + engines: {node: '>=20'} merge-descriptors@1.0.3: resolution: {integrity: sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==} @@ -4744,13 +4960,13 @@ packages: minimalistic-assert@1.0.1: resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} + minimatch@10.2.5: + resolution: {integrity: sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==} + engines: {node: 18 || 20 || >=22} + minimatch@3.1.5: resolution: {integrity: sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==} - minimist-options@4.1.0: - resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} - engines: {node: '>= 6'} - minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} @@ -4825,9 +5041,6 @@ packages: napi-build-utils@2.0.0: resolution: {integrity: sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==} - natural-compare-lite@1.4.0: - resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} - natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} @@ -4864,10 +5077,6 @@ packages: resolution: {integrity: sha512-wRNIrw4DmVLKQlbgOMdkMx27Wrpzes2hh5Jtbi2bjPd+4wJstWIqP5A+lscnqbm0xxmT5Bpg8Lec5ItEBwx6BQ==} engines: {node: '>=18'} - normalize-package-data@3.0.3: - resolution: {integrity: sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==} - engines: {node: '>=10'} - normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} @@ -4966,6 +5175,19 @@ packages: resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==} engines: {node: '>= 0.4'} + oxfmt@0.60.0: + resolution: {integrity: sha512-fViX6i+gJuZWY+jI/fnR6WRbRj70GZ9RlCd30MygJrHTUNc4DxvKHWw8vBjMjffv3PgU5qWDR0AzmojQByqaZA==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + peerDependencies: + svelte: ^5.0.0 + vite-plus: '*' + peerDependenciesMeta: + svelte: + optional: true + vite-plus: + optional: true + p-cancelable@3.0.0: resolution: {integrity: sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==} engines: {node: '>=12.20'} @@ -5045,10 +5267,6 @@ packages: resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - path-is-absolute@1.0.1: - resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} - engines: {node: '>=0.10.0'} - path-is-inside@1.0.2: resolution: {integrity: sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==} @@ -5485,14 +5703,11 @@ packages: peerDependencies: postcss: ^8.0.3 - postcss-resolve-nested-selector@0.1.6: - resolution: {integrity: sha512-0sglIs9Wmkzbr8lQwEyIzlDOOC9bGmfVKcJTaxv3vMmd3uo4o4DerC3En0bnmgceeql9BfC8hRkp7cg0fjdVqw==} - - postcss-safe-parser@6.0.0: - resolution: {integrity: sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==} - engines: {node: '>=12.0'} + postcss-safe-parser@7.0.1: + resolution: {integrity: sha512-0AioNCJZ2DPYz5ABT6bddIqlhgwhpHZ/l65YAYo0BCIn0xiDpsnTHz0gnoTGk0OXZW0JRs+cDwL8u/teRdz+8A==} + engines: {node: '>=18.0'} peerDependencies: - postcss: ^8.3.3 + postcss: ^8.4.31 postcss-selector-not@8.0.1: resolution: {integrity: sha512-kmVy/5PYVb2UOhy0+LqUYAhKj7DUGDpSWa5LZqlkWJaaAV+dxxsOG3+St0yNLu6vsKD7Dmqx+nWQt0iil89+WA==} @@ -5553,15 +5768,6 @@ packages: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} - prettier-linter-helpers@1.0.1: - resolution: {integrity: sha512-SxToR7P8Y2lWmv/kTzVLC1t/GDI2WGjMwNhLLE9qtH8Q13C+aEmuRlzDst4Up4s0Wc8sF2M+J57iB3cMLqftfg==} - engines: {node: '>=6.0.0'} - - prettier@3.9.5: - resolution: {integrity: sha512-/FVl766LpUfB5vXgCYOYa0MeV/441Ia99AeICQIQFTY/Nw0roZwULcXpku5i1/m5kt/baz+s4Zogspd839HSMg==} - engines: {node: '>=14'} - hasBin: true - pretty-error@4.0.0: resolution: {integrity: sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==} @@ -5621,6 +5827,10 @@ packages: engines: {node: '>=14.0.0'} hasBin: true + qified@0.10.1: + resolution: {integrity: sha512-+Owyggi9IxT1ePKGafcI87ubSmxol6smwJ+RAHDQlx9+9cPwFWDiKFFCPuWhr9ignlGpZ9vDQLw67N4dcTVFEA==} + engines: {node: '>=20'} + qs@6.15.3: resolution: {integrity: sha512-O9gl3zCl5h5blw1KGUzQKhA5oUXSl8rwUIM5o0S3nCXMliSvy5Dzx7/DJcI+SwgICv+IneSZwhBh1oSyEHA71A==} engines: {node: '>=0.6'} @@ -5717,14 +5927,6 @@ packages: read-cache@1.0.0: resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} - read-pkg-up@8.0.0: - resolution: {integrity: sha512-snVCqPczksT0HS2EC+SxUndvSzn6LRCwpfSvLrIfR5BKDQQZMaI6jPRC9dYvYFDRAuFEAnkwww8kBBNE/3VvzQ==} - engines: {node: '>=12'} - - read-pkg@6.0.0: - resolution: {integrity: sha512-X1Fu3dPuk/8ZLsMhEj5f4wFAF0DWoK7qhGJvgaijocXxBmSToKfbFtqbxMO7bVjNA1dmE5huAzjXj/ey86iw9Q==} - engines: {node: '>=12'} - readable-stream@2.3.8: resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} @@ -5750,12 +5952,8 @@ packages: recma-stringify@1.0.0: resolution: {integrity: sha512-cjwII1MdIIVloKvC9ErQ+OgAtwHBmcZ0Bg4ciz78FtbT8In39aAYbaA7zvxQ61xVMSPE8WxhLwLbhif4Js2C+g==} - redent@4.0.0: - resolution: {integrity: sha512-tYkDkVVtYkSVhuQ4zBgfvciymHaeuel+zFKXShfDnFP5SyVEP7qo70Rf1jTOTCx3vGNAbnEi/xFkcfQVMIBWag==} - engines: {node: '>=12'} - - refa@0.11.0: - resolution: {integrity: sha512-486O8/pQXwj9jV0mVvUnTsxq0uknpBnNJ0eCUhkZqJRQ8KutrT1PhzmumdCeM1hSBF2eMlFPmwECRER4IbKXlQ==} + refa@0.12.1: + resolution: {integrity: sha512-J8rn6v4DBb2nnFqkqwy6/NnTYMcgLA+sLr0iIO41qpv0n+ngb7ksag2tMRl0inb1bbO/esUwzW1vbJi7K0sI0g==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} reflect-metadata@0.2.2: @@ -5772,8 +5970,8 @@ packages: regenerate@1.4.2: resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} - regexp-ast-analysis@0.6.0: - resolution: {integrity: sha512-OLxjyjPkVH+rQlBLb1I/P/VTmamSjGkvN5PTV5BXP432k3uVz727J7H29GA5IFiY0m7e1xBN7049Wn59FY3DEQ==} + regexp-ast-analysis@0.7.1: + resolution: {integrity: sha512-sZuz1dYW/ZsfG17WSAG7eS85r5a0dDsvg+7BiiYR5o6lKCAtUrEwdmRmaGF6rwVj3LcmAeYkOWKEPlbPzN3Y3A==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} regexp.prototype.flags@1.5.4: @@ -5854,10 +6052,6 @@ packages: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} - resolve-from@5.0.0: - resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} - engines: {node: '>=8'} - resolve-pathname@3.0.0: resolution: {integrity: sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==} @@ -5883,11 +6077,6 @@ packages: resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - rimraf@3.0.2: - resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} - deprecated: Rimraf versions prior to v4 are no longer supported - hasBin: true - rtlcss@4.3.0: resolution: {integrity: sha512-FI+pHEn7Wc4NqKXMXFM+VAYKEj/mRIcW4h24YVwVtyjI+EqGrLc2Hx/Ny0lrZ21cBWU2goLy36eqMcNj3AQJig==} engines: {node: '>=12.0.0'} @@ -5939,8 +6128,9 @@ packages: resolution: {integrity: sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==} engines: {node: '>= 10.13.0'} - scslre@0.2.0: - resolution: {integrity: sha512-4hc49fUMmX3jM0XdFUAPBrs1xwEcdHa0KyjEsjFs+Zfc66mpFpq5YmRgDtl+Ffo6AtJIilfei+yKw8fUn3N88w==} + scslre@0.3.0: + resolution: {integrity: sha512-3A6sD0WYP7+QrjbfNA2FN3FsOaGGFoekCVgTyypy53gPxhbkCIjtO6YWgdrfM+n/8sI8JeXZOIxsHjMTNxQ4nQ==} + engines: {node: ^14.0.0 || >=16.0.0} search-insights@2.17.3: resolution: {integrity: sha512-RQPdCYTa8A68uM2jwxoY842xDhvx3E5LFL1LxvxCNMev4o5mLuokczhzjAgGwUZBAmOKZknArSxLKmXtIi2AxQ==} @@ -6091,6 +6281,10 @@ packages: resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} engines: {node: '>=12'} + slash@5.1.0: + resolution: {integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==} + engines: {node: '>=14.16'} + slice-ansi@4.0.0: resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} engines: {node: '>=10'} @@ -6129,18 +6323,6 @@ packages: space-separated-tokens@2.0.2: resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} - spdx-correct@3.2.0: - resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} - - spdx-exceptions@2.5.0: - resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==} - - spdx-expression-parse@3.0.1: - resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} - - spdx-license-ids@3.0.23: - resolution: {integrity: sha512-CWLcCCH7VLu13TgOH+r8p1O/Znwhqv/dbb6lqWy67G+pT1kHmeD/+V36AVb/vq8QMIQwVShJ6Ssl5FPh0fuSdw==} - spdy-transport@3.0.0: resolution: {integrity: sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==} @@ -6174,6 +6356,10 @@ packages: resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} engines: {node: '>=12'} + string-width@8.2.2: + resolution: {integrity: sha512-GaPUh5gfdrYzqeVNZvUfT23vYYxXzKYidUcnMtJg/3rxRV63EFZy3k6xfKlmfeJD0176lnUV/Usr3XcwSvFzpg==} + engines: {node: '>=20'} + string.prototype.includes@2.0.1: resolution: {integrity: sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg==} engines: {node: '>= 0.4'} @@ -6230,10 +6416,6 @@ packages: resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} engines: {node: '>=6'} - strip-indent@4.1.1: - resolution: {integrity: sha512-SlyRoSkdh1dYP0PzclLE7r0M9sgbFKKMFXpFRUMNuKhQSbC6VQIGzq3E0qsfvGJaUFJPGv6Ws1NZ/haTAjfbMA==} - engines: {node: '>=12'} - strip-json-comments@2.0.1: resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} engines: {node: '>=0.10.0'} @@ -6242,9 +6424,6 @@ packages: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} - style-search@0.1.0: - resolution: {integrity: sha512-Dj1Okke1C3uKKwQcetra4jSuk0DqbzbYtXipzFlFMZtowbF1x7BKJwB9AayVMyFARvU8EDrZdcax4At/452cAg==} - style-to-js@1.1.21: resolution: {integrity: sha512-RjQetxJrrUJLQPHbLku6U/ocGtzyjbJMP9lCNK7Ag0CNh690nSH8woqWH9u16nMjYBAok+i7JO1NP2pOy8IsPQ==} @@ -6257,28 +6436,21 @@ packages: peerDependencies: postcss: ^8.4.31 - stylelint-config-recommended@13.0.0: - resolution: {integrity: sha512-EH+yRj6h3GAe/fRiyaoO2F9l9Tgg50AOFhaszyfov9v6ayXJ1IkSHwTxd7lB48FmOeSGDPLjatjO11fJpmarkQ==} - engines: {node: ^14.13.1 || >=16.0.0} + stylelint-config-recommended@18.0.0: + resolution: {integrity: sha512-mxgT2XY6YZ3HWWe3Di8umG6aBmWmHTblTgu/f10rqFXnyWxjKWwNdjSWkgkwCtxIKnqjSJzvFmPT5yabVIRxZg==} + engines: {node: '>=20.19.0'} peerDependencies: - stylelint: ^15.10.0 + stylelint: ^17.0.0 - stylelint-config-standard@34.0.0: - resolution: {integrity: sha512-u0VSZnVyW9VSryBG2LSO+OQTjN7zF9XJaAJRX/4EwkmU0R2jYwmBSN10acqZisDitS0CLiEiGjX7+Hrq8TAhfQ==} - engines: {node: ^14.13.1 || >=16.0.0} + stylelint-config-standard@40.0.0: + resolution: {integrity: sha512-EznGJxOUhtWck2r6dJpbgAdPATIzvpLdK9+i5qPd4Lx70es66TkBPljSg4wN3Qnc6c4h2n+WbUrUynQ3fanjHw==} + engines: {node: '>=20.19.0'} peerDependencies: - stylelint: ^15.10.0 + stylelint: ^17.0.0 - stylelint-prettier@4.1.0: - resolution: {integrity: sha512-dd653q/d1IfvsSQshz1uAMe+XDm6hfM/7XiFH0htYY8Lse/s5ERTg7SURQehZPwVvm/rs7AsFhda9EQ2E9TS0g==} - engines: {node: ^14.17.0 || >=16.0.0} - peerDependencies: - prettier: '>=3.0.0' - stylelint: '>=15.8.0' - - stylelint@15.11.0: - resolution: {integrity: sha512-78O4c6IswZ9TzpcIiQJIN49K3qNoXTM8zEJzhaTE/xRTCZswaovSEVIa/uwbOltZrk16X4jAxjaOhzz/hTm1Kw==} - engines: {node: ^14.13.1 || >=16.0.0} + stylelint@17.14.1: + resolution: {integrity: sha512-xVQwyiuxALUBNB2fBe0tmNemg9KqLtdj3T64mioFDar79B2cU8LIyz+3KL6LdiHs9NkeNfwxpKSaIVOY8f112g==} + engines: {node: '>=20.19.0'} hasBin: true sucrase@3.35.1: @@ -6286,6 +6458,10 @@ packages: engines: {node: '>=16 || 14 >=14.17'} hasBin: true + supports-color@10.2.2: + resolution: {integrity: sha512-SS+jx45GF1QjgEXQx4NJZV9ImqmO2NPz5FNsIHrsDjh2YsHnawpan7SNQ1o8NuhrbHZy9AZhIoCUiCeaW/C80g==} + engines: {node: '>=18'} + supports-color@7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} @@ -6294,9 +6470,9 @@ packages: resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} engines: {node: '>=10'} - supports-hyperlinks@3.2.0: - resolution: {integrity: sha512-zFObLMyZeEwzAoKCyu1B91U79K2t7ApXuQfo8OuxwXLDgcKxuwM+YvcbIhm6QWqz7mHUH1TVytR1PwVVjEuMig==} - engines: {node: '>=14.18'} + supports-hyperlinks@4.5.0: + resolution: {integrity: sha512-ZW2OvfeCXrNTbLakPUzjQG922EeGCOteFSVoek5DKStTh898wf7zgtuFlzQN8HfZCxC3Eh02yJVrRW51hADf+w==} + engines: {node: '>=20'} supports-preserve-symlinks-flag@1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} @@ -6396,9 +6572,6 @@ packages: text-decoder@1.2.7: resolution: {integrity: sha512-vlLytXkeP4xvEq2otHeJfSQIRyWxo/oZGEbXrtEEF9Hnmrdly59sUbzZ/QgyWuLYHctCHxFF4tRQZNQ9k60ExQ==} - text-table@0.2.0: - resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} - thenify-all@1.6.0: resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} engines: {node: '>=0.8'} @@ -6432,6 +6605,10 @@ packages: resolution: {integrity: sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==} engines: {node: ^18.0.0 || >=20.0.0} + tinypool@2.1.0: + resolution: {integrity: sha512-Pugqs6M0m7Lv1I7FtxN4aoyToKg1C4tu+/381vH35y8oENM/Ai7f7C4StcoK4/+BSw9ebcS8jRiVrORFKCALLw==} + engines: {node: ^20.0.0 || >=22.0.0} + to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} @@ -6453,13 +6630,15 @@ packages: trim-lines@3.0.1: resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} - trim-newlines@4.1.1: - resolution: {integrity: sha512-jRKj0n0jXWo6kh62nA5TEh3+4igKDXLvzBJcPpiizP7oOolUrYIxmVBG9TOtHYFHoddUk6YvAkGeGoSVTXfQXQ==} - engines: {node: '>=12'} - trough@2.2.0: resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} + ts-api-utils@2.5.0: + resolution: {integrity: sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==} + engines: {node: '>=18.12'} + peerDependencies: + typescript: '>=4.8.4' + ts-interface-checker@0.1.13: resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} @@ -6489,10 +6668,6 @@ packages: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} - type-fest@0.20.2: - resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} - engines: {node: '>=10'} - type-fest@1.4.0: resolution: {integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==} engines: {node: '>=10'} @@ -6524,6 +6699,13 @@ packages: typedarray-to-buffer@3.1.5: resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} + typescript-eslint@8.65.0: + resolution: {integrity: sha512-/ggrHAwyjENDusvyxbuqxAC2dTnZg/Z8F+fgQtYIz+L6n/9HfSlEZcFGV/NsMNa6CkGk0xUjUAFwC0vHOflvIA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' + typescript@5.7.3: resolution: {integrity: sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==} engines: {node: '>=14.17'} @@ -6556,6 +6738,10 @@ packages: resolution: {integrity: sha512-hpbDzxUY9BFwX+UeBnxv3Sh1q7HFxj48DTmXchNgRa46lO8uj3/1iEn3MiNUYTg1g9ctIqXCCERn8gYZhHC5lQ==} engines: {node: '>=4'} + unicorn-magic@0.4.0: + resolution: {integrity: sha512-wH590V9VNgYH9g3lH9wWjTrUoKsjLF6sGLjhR4sH1LWpLmCOH0Zf7PukhDA8BiS7KHe4oPNkcTHqYkj7SOGUOw==} + engines: {node: '>=20'} + unified@11.0.5: resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==} @@ -6631,9 +6817,6 @@ packages: deprecated: uuid@10 and below is no longer supported. For ESM codebases, update to uuid@latest. For CommonJS codebases, use uuid@11 (but be aware this version will likely be deprecated in 2028). hasBin: true - validate-npm-package-license@3.0.4: - resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} - value-equal@1.0.1: resolution: {integrity: sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw==} @@ -6775,9 +6958,9 @@ packages: write-file-atomic@3.0.3: resolution: {integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==} - write-file-atomic@5.0.1: - resolution: {integrity: sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + write-file-atomic@7.0.1: + resolution: {integrity: sha512-OTIk8iR8/aCRWBqvxrzxR0hgxWpnYBblY1S5hDWBQfk/VFmJwzmJgQFN3WsoUKHISv2eAwe+PpbUzyL1CKTLXg==} + engines: {node: ^20.17.0 || >=22.9.0} ws@7.5.12: resolution: {integrity: sha512-1xGnbYN3zbog9CwuNDQULNRrTCLIn46/WmpR1f0w6PsCYQHkylZr5vkd6kfMZYV6pRnQkcPNRyiA8LsrNKyhpg==} @@ -6814,13 +6997,6 @@ packages: yallist@3.1.1: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} - yallist@4.0.0: - resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - - yargs-parser@20.2.9: - resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} - engines: {node: '>=10'} - yocto-queue@0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} @@ -6829,6 +7005,15 @@ packages: resolution: {integrity: sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ==} engines: {node: '>=12.20'} + zod-validation-error@4.0.2: + resolution: {integrity: sha512-Q6/nZLe6jxuU80qb/4uJ4t5v2VEZ44lzQjPDhYJNztRQ4wyWc6VF3D3Kb/fAuPetZQnhS3hnajCf9CsWesghLQ==} + engines: {node: '>=18.0.0'} + peerDependencies: + zod: ^3.25.0 || ^4.0.0 + + zod@4.4.3: + resolution: {integrity: sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==} + zwitch@2.0.4: resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} @@ -7726,6 +7911,18 @@ snapshots: '@babel/helper-string-parser': 7.29.7 '@babel/helper-validator-identifier': 7.29.7 + '@cacheable/memory@2.2.0': + dependencies: + '@cacheable/utils': 2.5.0 + '@keyv/bigmap': 1.3.1(keyv@5.6.0) + hookified: 1.15.1 + keyv: 5.6.0 + + '@cacheable/utils@2.5.0': + dependencies: + hashery: 1.5.1 + keyv: 5.6.0 + '@colors/colors@1.5.0': optional: true @@ -7741,6 +7938,11 @@ snapshots: '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) '@csstools/css-tokenizer': 3.0.4 + '@csstools/css-calc@3.3.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)': + dependencies: + '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) + '@csstools/css-tokenizer': 4.0.0 + '@csstools/css-color-parser@3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)': dependencies: '@csstools/color-helpers': 5.1.0 @@ -7748,28 +7950,32 @@ snapshots: '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) '@csstools/css-tokenizer': 3.0.4 - '@csstools/css-parser-algorithms@2.7.1(@csstools/css-tokenizer@2.4.1)': - dependencies: - '@csstools/css-tokenizer': 2.4.1 - '@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4)': dependencies: '@csstools/css-tokenizer': 3.0.4 - '@csstools/css-tokenizer@2.4.1': {} + '@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0)': + dependencies: + '@csstools/css-tokenizer': 4.0.0 + + '@csstools/css-syntax-patches-for-csstree@1.1.7(css-tree@3.2.1)': + optionalDependencies: + css-tree: 3.2.1 '@csstools/css-tokenizer@3.0.4': {} - '@csstools/media-query-list-parser@2.1.13(@csstools/css-parser-algorithms@2.7.1(@csstools/css-tokenizer@2.4.1))(@csstools/css-tokenizer@2.4.1)': - dependencies: - '@csstools/css-parser-algorithms': 2.7.1(@csstools/css-tokenizer@2.4.1) - '@csstools/css-tokenizer': 2.4.1 + '@csstools/css-tokenizer@4.0.0': {} '@csstools/media-query-list-parser@4.0.3(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)': dependencies: '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) '@csstools/css-tokenizer': 3.0.4 + '@csstools/media-query-list-parser@5.0.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)': + dependencies: + '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) + '@csstools/css-tokenizer': 4.0.0 + '@csstools/postcss-alpha-function@1.0.1(postcss@8.5.19)': dependencies: '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) @@ -8041,14 +8247,18 @@ snapshots: dependencies: postcss-selector-parser: 7.1.4 - '@csstools/selector-specificity@3.1.1(postcss-selector-parser@6.1.4)': + '@csstools/selector-resolve-nested@4.0.1(postcss-selector-parser@7.1.4)': dependencies: - postcss-selector-parser: 6.1.4 + postcss-selector-parser: 7.1.4 '@csstools/selector-specificity@5.0.0(postcss-selector-parser@7.1.4)': dependencies: postcss-selector-parser: 7.1.4 + '@csstools/selector-specificity@6.0.0(postcss-selector-parser@7.1.4)': + dependencies: + postcss-selector-parser: 7.1.4 + '@csstools/utilities@2.0.0(postcss@8.5.19)': dependencies: postcss: 8.5.19 @@ -8268,10 +8478,10 @@ snapshots: postcss-sort-media-queries: 5.2.0(postcss@8.5.19) tslib: 2.8.1 - '@docusaurus/eslint-plugin@3.10.2(eslint@8.57.1)(typescript@5.7.3)': + '@docusaurus/eslint-plugin@3.10.2(eslint@9.39.5(jiti@2.7.0))(typescript@5.7.3)': dependencies: - '@typescript-eslint/utils': 5.62.0(eslint@8.57.1)(typescript@5.7.3) - eslint: 8.57.1 + '@typescript-eslint/utils': 5.62.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.7.3) + eslint: 9.39.5(jiti@2.7.0) tslib: 2.8.1 transitivePeerDependencies: - supports-color @@ -9007,19 +9217,35 @@ snapshots: tslib: 2.8.1 optional: true - '@eslint-community/eslint-utils@4.9.1(eslint@8.57.1)': + '@eslint-community/eslint-utils@4.9.1(eslint@9.39.5(jiti@2.7.0))': dependencies: - eslint: 8.57.1 + eslint: 9.39.5(jiti@2.7.0) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.2': {} - '@eslint/eslintrc@2.1.4': + '@eslint/config-array@0.21.2': + dependencies: + '@eslint/object-schema': 2.1.7 + debug: 4.4.3 + minimatch: 3.1.5 + transitivePeerDependencies: + - supports-color + + '@eslint/config-helpers@0.4.2': + dependencies: + '@eslint/core': 0.17.0 + + '@eslint/core@0.17.0': + dependencies: + '@types/json-schema': 7.0.15 + + '@eslint/eslintrc@3.3.6': dependencies: ajv: 6.15.0 debug: 4.4.3 - espree: 9.6.1 - globals: 13.24.0 + espree: 10.4.0 + globals: 14.0.0 ignore: 5.3.2 import-fresh: 3.3.1 js-yaml: 4.3.0 @@ -9028,7 +9254,18 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/js@8.57.1': {} + '@eslint/js@10.0.1(eslint@9.39.5(jiti@2.7.0))': + optionalDependencies: + eslint: 9.39.5(jiti@2.7.0) + + '@eslint/js@9.39.5': {} + + '@eslint/object-schema@2.1.7': {} + + '@eslint/plugin-kit@0.4.1': + dependencies: + '@eslint/core': 0.17.0 + levn: 0.4.1 '@fortawesome/fontawesome-common-types@6.7.2': {} @@ -9060,17 +9297,21 @@ snapshots: dependencies: '@hapi/hoek': 9.3.0 - '@humanwhocodes/config-array@0.13.0': + '@humanfs/core@0.19.2': dependencies: - '@humanwhocodes/object-schema': 2.0.3 - debug: 4.4.3 - minimatch: 3.1.5 - transitivePeerDependencies: - - supports-color + '@humanfs/types': 0.15.0 + + '@humanfs/node@0.16.8': + dependencies: + '@humanfs/core': 0.19.2 + '@humanfs/types': 0.15.0 + '@humanwhocodes/retry': 0.4.3 + + '@humanfs/types@0.15.0': {} '@humanwhocodes/module-importer@1.0.1': {} - '@humanwhocodes/object-schema@2.0.3': {} + '@humanwhocodes/retry@0.4.3': {} '@icons/material@0.2.4(react@19.2.7)': dependencies: @@ -9241,6 +9482,14 @@ snapshots: '@jsonjoy.com/codegen': 17.67.0(tslib@2.8.1) tslib: 2.8.1 + '@keyv/bigmap@1.3.1(keyv@5.6.0)': + dependencies: + hashery: 1.5.1 + hookified: 1.15.1 + keyv: 5.6.0 + + '@keyv/serialize@1.1.1': {} + '@leichtgewicht/ip-codec@2.0.5': {} '@mdx-js/mdx@3.1.1': @@ -9325,7 +9574,7 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.20.1 - '@nullbot/docusaurus-plugin-changelog@3.7.0(@docusaurus/faster@3.10.2(@docusaurus/types@3.10.2(@swc/core@1.15.43)(postcss@8.5.19)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(postcss@8.5.19))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.12)(@swc/core@1.15.43)(postcss@8.5.19)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@5.7.3)': + '@nullbot/docusaurus-plugin-changelog@3.8.0(@docusaurus/faster@3.10.2(@docusaurus/types@3.10.2(@swc/core@1.15.43)(postcss@8.5.19)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(postcss@8.5.19))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.12)(@swc/core@1.15.43)(postcss@8.5.19)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@5.7.3)': dependencies: '@docusaurus/core': 3.10.2(@docusaurus/faster@3.10.2(@docusaurus/types@3.10.2(@swc/core@1.15.43)(postcss@8.5.19)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(postcss@8.5.19))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.12)(@swc/core@1.15.43)(postcss@8.5.19)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@5.7.3) '@docusaurus/plugin-content-docs': 3.10.2(@docusaurus/faster@3.10.2(@docusaurus/types@3.10.2(@swc/core@1.15.43)(postcss@8.5.19)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(postcss@8.5.19))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.12)(@swc/core@1.15.43)(postcss@8.5.19)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@5.7.3) @@ -9357,7 +9606,7 @@ snapshots: - utf-8-validate - webpack-cli - '@nullbot/docusaurus-plugin-docsmenu@3.7.0(@docusaurus/faster@3.10.2(@docusaurus/types@3.10.2(@swc/core@1.15.43)(postcss@8.5.19)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(postcss@8.5.19))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.12)(@swc/core@1.15.43)(postcss@8.5.19)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@5.7.3)': + '@nullbot/docusaurus-plugin-docsmenu@3.8.0(@docusaurus/faster@3.10.2(@docusaurus/types@3.10.2(@swc/core@1.15.43)(postcss@8.5.19)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(postcss@8.5.19))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.12)(@swc/core@1.15.43)(postcss@8.5.19)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@5.7.3)': dependencies: '@docusaurus/core': 3.10.2(@docusaurus/faster@3.10.2(@docusaurus/types@3.10.2(@swc/core@1.15.43)(postcss@8.5.19)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(postcss@8.5.19))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.12)(@swc/core@1.15.43)(postcss@8.5.19)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@5.7.3) '@docusaurus/plugin-content-docs': 3.10.2(@docusaurus/faster@3.10.2(@docusaurus/types@3.10.2(@swc/core@1.15.43)(postcss@8.5.19)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(postcss@8.5.19))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.12)(@swc/core@1.15.43)(postcss@8.5.19)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@5.7.3) @@ -9387,7 +9636,7 @@ snapshots: - utf-8-validate - webpack-cli - '@nullbot/docusaurus-plugin-getsidebar@3.7.0(@docusaurus/faster@3.10.2(@docusaurus/types@3.10.2(@swc/core@1.15.43)(postcss@8.5.19)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(postcss@8.5.19))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.12)(@swc/core@1.15.43)(postcss@8.5.19)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@5.7.3)': + '@nullbot/docusaurus-plugin-getsidebar@3.8.0(@docusaurus/faster@3.10.2(@docusaurus/types@3.10.2(@swc/core@1.15.43)(postcss@8.5.19)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(postcss@8.5.19))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.12)(@swc/core@1.15.43)(postcss@8.5.19)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@5.7.3)': dependencies: '@docusaurus/core': 3.10.2(@docusaurus/faster@3.10.2(@docusaurus/types@3.10.2(@swc/core@1.15.43)(postcss@8.5.19)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(postcss@8.5.19))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.12)(@swc/core@1.15.43)(postcss@8.5.19)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@5.7.3) '@docusaurus/plugin-content-docs': 3.10.2(@docusaurus/faster@3.10.2(@docusaurus/types@3.10.2(@swc/core@1.15.43)(postcss@8.5.19)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(postcss@8.5.19))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.12)(@swc/core@1.15.43)(postcss@8.5.19)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@5.7.3) @@ -9417,7 +9666,7 @@ snapshots: - utf-8-validate - webpack-cli - '@nullbot/docusaurus-preset-nonepress@3.7.0(@algolia/client-search@5.56.0)(@docusaurus/faster@3.10.2(@docusaurus/types@3.10.2(@swc/core@1.15.43)(postcss@8.5.19)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(postcss@8.5.19))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.12)(@swc/core@1.15.43)(@types/react@19.2.17)(postcss@8.5.19)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(search-insights@2.17.3)(typescript@5.7.3)': + '@nullbot/docusaurus-preset-nonepress@3.8.0(@algolia/client-search@5.56.0)(@docusaurus/faster@3.10.2(@docusaurus/types@3.10.2(@swc/core@1.15.43)(postcss@8.5.19)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(postcss@8.5.19))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.12)(@swc/core@1.15.43)(@types/react@19.2.17)(postcss@8.5.19)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(search-insights@2.17.3)(typescript@5.7.3)': dependencies: '@docusaurus/core': 3.10.2(@docusaurus/faster@3.10.2(@docusaurus/types@3.10.2(@swc/core@1.15.43)(postcss@8.5.19)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(postcss@8.5.19))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.12)(@swc/core@1.15.43)(postcss@8.5.19)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@5.7.3) '@docusaurus/plugin-content-docs': 3.10.2(@docusaurus/faster@3.10.2(@docusaurus/types@3.10.2(@swc/core@1.15.43)(postcss@8.5.19)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(postcss@8.5.19))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.12)(@swc/core@1.15.43)(postcss@8.5.19)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@5.7.3) @@ -9431,7 +9680,7 @@ snapshots: '@docusaurus/theme-common': 3.10.2(@docusaurus/plugin-content-docs@3.10.2(@docusaurus/faster@3.10.2(@docusaurus/types@3.10.2(@swc/core@1.15.43)(postcss@8.5.19)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(postcss@8.5.19))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.12)(@swc/core@1.15.43)(postcss@8.5.19)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@5.7.3))(@swc/core@1.15.43)(postcss@8.5.19)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) '@docusaurus/theme-search-algolia': 3.10.2(@algolia/client-search@5.56.0)(@docusaurus/faster@3.10.2(@docusaurus/types@3.10.2(@swc/core@1.15.43)(postcss@8.5.19)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(postcss@8.5.19))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.12)(@swc/core@1.15.43)(@types/react@19.2.17)(postcss@8.5.19)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(search-insights@2.17.3)(typescript@5.7.3) '@docusaurus/types': 3.10.2(@swc/core@1.15.43)(postcss@8.5.19)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@nullbot/docusaurus-theme-nonepress': 3.7.0(@algolia/client-search@5.56.0)(@docusaurus/faster@3.10.2(@docusaurus/types@3.10.2(@swc/core@1.15.43)(postcss@8.5.19)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(postcss@8.5.19))(@rspack/core@1.7.12)(@swc/core@1.15.43)(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(search-insights@2.17.3)(typescript@5.7.3) + '@nullbot/docusaurus-theme-nonepress': 3.8.0(@algolia/client-search@5.56.0)(@docusaurus/faster@3.10.2(@docusaurus/types@3.10.2(@swc/core@1.15.43)(postcss@8.5.19)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(postcss@8.5.19))(@rspack/core@1.7.12)(@swc/core@1.15.43)(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(search-insights@2.17.3)(typescript@5.7.3) react: 19.2.7 react-dom: 19.2.7(react@19.2.7) transitivePeerDependencies: @@ -9467,7 +9716,7 @@ snapshots: - webpack-cli - yaml - '@nullbot/docusaurus-theme-nonepress@3.7.0(@algolia/client-search@5.56.0)(@docusaurus/faster@3.10.2(@docusaurus/types@3.10.2(@swc/core@1.15.43)(postcss@8.5.19)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(postcss@8.5.19))(@rspack/core@1.7.12)(@swc/core@1.15.43)(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(search-insights@2.17.3)(typescript@5.7.3)': + '@nullbot/docusaurus-theme-nonepress@3.8.0(@algolia/client-search@5.56.0)(@docusaurus/faster@3.10.2(@docusaurus/types@3.10.2(@swc/core@1.15.43)(postcss@8.5.19)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(postcss@8.5.19))(@rspack/core@1.7.12)(@swc/core@1.15.43)(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(search-insights@2.17.3)(typescript@5.7.3)': dependencies: '@docsearch/react': 4.6.3(@algolia/client-search@5.56.0)(@types/react@19.2.17)(algoliasearch@5.56.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(search-insights@2.17.3) '@docusaurus/core': 3.10.2(@docusaurus/faster@3.10.2(@docusaurus/types@3.10.2(@swc/core@1.15.43)(postcss@8.5.19)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(postcss@8.5.19))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.12)(@swc/core@1.15.43)(postcss@8.5.19)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@5.7.3) @@ -9487,13 +9736,14 @@ snapshots: '@fortawesome/free-solid-svg-icons': 6.7.2 '@fortawesome/react-fontawesome': 0.2.6(@fortawesome/fontawesome-svg-core@6.7.2)(react@19.2.7) '@mdx-js/react': 3.1.1(@types/react@19.2.17)(react@19.2.7) - '@nullbot/docusaurus-plugin-docsmenu': 3.7.0(@docusaurus/faster@3.10.2(@docusaurus/types@3.10.2(@swc/core@1.15.43)(postcss@8.5.19)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(postcss@8.5.19))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.12)(@swc/core@1.15.43)(postcss@8.5.19)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@5.7.3) - '@nullbot/docusaurus-plugin-getsidebar': 3.7.0(@docusaurus/faster@3.10.2(@docusaurus/types@3.10.2(@swc/core@1.15.43)(postcss@8.5.19)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(postcss@8.5.19))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.12)(@swc/core@1.15.43)(postcss@8.5.19)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@5.7.3) + '@nullbot/docusaurus-plugin-docsmenu': 3.8.0(@docusaurus/faster@3.10.2(@docusaurus/types@3.10.2(@swc/core@1.15.43)(postcss@8.5.19)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(postcss@8.5.19))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.12)(@swc/core@1.15.43)(postcss@8.5.19)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@5.7.3) + '@nullbot/docusaurus-plugin-getsidebar': 3.8.0(@docusaurus/faster@3.10.2(@docusaurus/types@3.10.2(@swc/core@1.15.43)(postcss@8.5.19)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(postcss@8.5.19))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.12)(@swc/core@1.15.43)(postcss@8.5.19)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@5.7.3) '@tailwindcss/typography': 0.5.20(tailwindcss@3.4.19) algoliasearch: 5.56.0 algoliasearch-helper: 3.29.2(algoliasearch@5.56.0) autoprefixer: 10.5.4(postcss@8.5.19) clsx: 2.1.1 + copy-text-to-clipboard: 3.2.2 daisyui: 4.12.24(postcss@8.5.19) infima: 0.2.0-alpha.43 lodash: 4.18.1 @@ -9536,7 +9786,64 @@ snapshots: - webpack-cli - yaml - '@nullbot/docusaurus-tsconfig@3.7.0': {} + '@nullbot/docusaurus-tsconfig@3.8.0': {} + + '@oxfmt/binding-android-arm-eabi@0.60.0': + optional: true + + '@oxfmt/binding-android-arm64@0.60.0': + optional: true + + '@oxfmt/binding-darwin-arm64@0.60.0': + optional: true + + '@oxfmt/binding-darwin-x64@0.60.0': + optional: true + + '@oxfmt/binding-freebsd-x64@0.60.0': + optional: true + + '@oxfmt/binding-linux-arm-gnueabihf@0.60.0': + optional: true + + '@oxfmt/binding-linux-arm-musleabihf@0.60.0': + optional: true + + '@oxfmt/binding-linux-arm64-gnu@0.60.0': + optional: true + + '@oxfmt/binding-linux-arm64-musl@0.60.0': + optional: true + + '@oxfmt/binding-linux-ppc64-gnu@0.60.0': + optional: true + + '@oxfmt/binding-linux-riscv64-gnu@0.60.0': + optional: true + + '@oxfmt/binding-linux-riscv64-musl@0.60.0': + optional: true + + '@oxfmt/binding-linux-s390x-gnu@0.60.0': + optional: true + + '@oxfmt/binding-linux-x64-gnu@0.60.0': + optional: true + + '@oxfmt/binding-linux-x64-musl@0.60.0': + optional: true + + '@oxfmt/binding-openharmony-arm64@0.60.0': + optional: true + + '@oxfmt/binding-win32-arm64-msvc@0.60.0': + optional: true + + '@oxfmt/binding-win32-ia32-msvc@0.60.0': + optional: true + + '@oxfmt/binding-win32-x64-msvc@0.60.0': + optional: true '@peculiar/asn1-cms@2.8.0': dependencies: @@ -9715,6 +10022,8 @@ snapshots: '@sindresorhus/is@5.6.0': {} + '@sindresorhus/merge-streams@4.0.0': {} + '@slorber/react-helmet-async@1.3.0(react-dom@19.2.7(react@19.2.7))(react@19.2.7)': dependencies: '@babel/runtime': 7.29.7 @@ -9951,8 +10260,6 @@ snapshots: '@types/mime@1.3.5': {} - '@types/minimist@1.2.5': {} - '@types/ms@2.1.0': {} '@types/node@17.0.45': {} @@ -9961,8 +10268,6 @@ snapshots: dependencies: undici-types: 8.3.0 - '@types/normalize-package-data@2.4.4': {} - '@types/prismjs@1.26.6': {} '@types/qs@6.15.1': {} @@ -10003,7 +10308,7 @@ snapshots: '@types/sax@1.2.7': dependencies: - '@types/node': 17.0.45 + '@types/node': 26.1.1 '@types/semver@7.7.1': {} @@ -10044,33 +10349,39 @@ snapshots: dependencies: '@types/yargs-parser': 21.0.3 - '@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.7.3))(eslint@8.57.1)(typescript@5.7.3)': + '@typescript-eslint/eslint-plugin@8.65.0(@typescript-eslint/parser@8.65.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.7.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.7.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 5.62.0(eslint@8.57.1)(typescript@5.7.3) - '@typescript-eslint/scope-manager': 5.62.0 - '@typescript-eslint/type-utils': 5.62.0(eslint@8.57.1)(typescript@5.7.3) - '@typescript-eslint/utils': 5.62.0(eslint@8.57.1)(typescript@5.7.3) - debug: 4.4.3 - eslint: 8.57.1 - graphemer: 1.4.0 - ignore: 5.3.2 - natural-compare-lite: 1.4.0 - semver: 7.8.5 - tsutils: 3.21.0(typescript@5.7.3) - optionalDependencies: + '@typescript-eslint/parser': 8.65.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.7.3) + '@typescript-eslint/scope-manager': 8.65.0 + '@typescript-eslint/type-utils': 8.65.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.7.3) + '@typescript-eslint/utils': 8.65.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.7.3) + '@typescript-eslint/visitor-keys': 8.65.0 + eslint: 9.39.5(jiti@2.7.0) + ignore: 7.0.6 + natural-compare: 1.4.0 + ts-api-utils: 2.5.0(typescript@5.7.3) typescript: 5.7.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.7.3)': + '@typescript-eslint/parser@8.65.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.7.3)': dependencies: - '@typescript-eslint/scope-manager': 5.62.0 - '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.7.3) + '@typescript-eslint/scope-manager': 8.65.0 + '@typescript-eslint/types': 8.65.0 + '@typescript-eslint/typescript-estree': 8.65.0(typescript@5.7.3) + '@typescript-eslint/visitor-keys': 8.65.0 + debug: 4.4.3 + eslint: 9.39.5(jiti@2.7.0) + typescript: 5.7.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/project-service@8.65.0(typescript@5.7.3)': + dependencies: + '@typescript-eslint/tsconfig-utils': 8.65.0(typescript@5.7.3) + '@typescript-eslint/types': 8.65.0 debug: 4.4.3 - eslint: 8.57.1 - optionalDependencies: typescript: 5.7.3 transitivePeerDependencies: - supports-color @@ -10080,20 +10391,31 @@ snapshots: '@typescript-eslint/types': 5.62.0 '@typescript-eslint/visitor-keys': 5.62.0 - '@typescript-eslint/type-utils@5.62.0(eslint@8.57.1)(typescript@5.7.3)': + '@typescript-eslint/scope-manager@8.65.0': dependencies: - '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.7.3) - '@typescript-eslint/utils': 5.62.0(eslint@8.57.1)(typescript@5.7.3) + '@typescript-eslint/types': 8.65.0 + '@typescript-eslint/visitor-keys': 8.65.0 + + '@typescript-eslint/tsconfig-utils@8.65.0(typescript@5.7.3)': + dependencies: + typescript: 5.7.3 + + '@typescript-eslint/type-utils@8.65.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.7.3)': + dependencies: + '@typescript-eslint/types': 8.65.0 + '@typescript-eslint/typescript-estree': 8.65.0(typescript@5.7.3) + '@typescript-eslint/utils': 8.65.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.7.3) debug: 4.4.3 - eslint: 8.57.1 - tsutils: 3.21.0(typescript@5.7.3) - optionalDependencies: + eslint: 9.39.5(jiti@2.7.0) + ts-api-utils: 2.5.0(typescript@5.7.3) typescript: 5.7.3 transitivePeerDependencies: - supports-color '@typescript-eslint/types@5.62.0': {} + '@typescript-eslint/types@8.65.0': {} + '@typescript-eslint/typescript-estree@5.62.0(typescript@5.7.3)': dependencies: '@typescript-eslint/types': 5.62.0 @@ -10108,26 +10430,57 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@5.62.0(eslint@8.57.1)(typescript@5.7.3)': + '@typescript-eslint/typescript-estree@8.65.0(typescript@5.7.3)': dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@8.57.1) + '@typescript-eslint/project-service': 8.65.0(typescript@5.7.3) + '@typescript-eslint/tsconfig-utils': 8.65.0(typescript@5.7.3) + '@typescript-eslint/types': 8.65.0 + '@typescript-eslint/visitor-keys': 8.65.0 + debug: 4.4.3 + minimatch: 10.2.5 + semver: 7.8.5 + tinyglobby: 0.2.17 + ts-api-utils: 2.5.0(typescript@5.7.3) + typescript: 5.7.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@5.62.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.7.3)': + dependencies: + '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.5(jiti@2.7.0)) '@types/json-schema': 7.0.15 '@types/semver': 7.7.1 '@typescript-eslint/scope-manager': 5.62.0 '@typescript-eslint/types': 5.62.0 '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.7.3) - eslint: 8.57.1 + eslint: 9.39.5(jiti@2.7.0) eslint-scope: 5.1.1 semver: 7.8.5 transitivePeerDependencies: - supports-color - typescript + '@typescript-eslint/utils@8.65.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.7.3)': + dependencies: + '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.5(jiti@2.7.0)) + '@typescript-eslint/scope-manager': 8.65.0 + '@typescript-eslint/types': 8.65.0 + '@typescript-eslint/typescript-estree': 8.65.0(typescript@5.7.3) + eslint: 9.39.5(jiti@2.7.0) + typescript: 5.7.3 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/visitor-keys@5.62.0': dependencies: '@typescript-eslint/types': 5.62.0 eslint-visitor-keys: 3.4.3 + '@typescript-eslint/visitor-keys@8.65.0': + dependencies: + '@typescript-eslint/types': 8.65.0 + eslint-visitor-keys: 5.0.1 + '@ungap/structured-clone@1.3.3': {} '@webassemblyjs/ast@1.14.1': @@ -10387,8 +10740,6 @@ snapshots: get-intrinsic: 1.3.0 is-array-buffer: 3.0.5 - arrify@1.0.1: {} - asciinema-player@3.17.0: dependencies: '@babel/runtime': 7.29.7 @@ -10475,7 +10826,7 @@ snapshots: balanced-match@1.0.2: {} - balanced-match@2.0.0: {} + balanced-match@4.0.4: {} bare-events@2.9.1: {} @@ -10573,6 +10924,10 @@ snapshots: balanced-match: 1.0.2 concat-map: 0.0.1 + brace-expansion@5.0.8: + dependencies: + balanced-match: 4.0.4 + braces@3.0.3: dependencies: fill-range: 7.1.1 @@ -10614,6 +10969,14 @@ snapshots: normalize-url: 8.1.1 responselike: 3.0.0 + cacheable@2.5.0: + dependencies: + '@cacheable/memory': 2.2.0 + '@cacheable/utils': 2.5.0 + hookified: 1.15.1 + keyv: 5.6.0 + qified: 0.10.1 + call-bind-apply-helpers@1.0.2: dependencies: es-errors: 1.3.0 @@ -10640,13 +11003,6 @@ snapshots: camelcase-css@2.0.1: {} - camelcase-keys@7.0.2: - dependencies: - camelcase: 6.3.0 - map-obj: 4.3.0 - quick-lru: 5.1.1 - type-fest: 1.4.0 - camelcase@6.3.0: {} camelcase@7.0.1: {} @@ -10792,8 +11148,6 @@ snapshots: write-file-atomic: 3.0.3 xdg-basedir: 5.1.0 - confusing-browser-globals@1.0.11: {} - connect-history-api-fallback@2.0.0: {} consola@3.4.2: {} @@ -10841,6 +11195,15 @@ snapshots: optionalDependencies: typescript: 5.7.3 + cosmiconfig@9.0.2(typescript@5.7.3): + dependencies: + env-paths: 2.2.1 + import-fresh: 3.3.1 + js-yaml: 4.3.0 + parse-json: 5.2.0 + optionalDependencies: + typescript: 5.7.3 + cross-env@7.0.3: dependencies: cross-spawn: 7.0.6 @@ -10934,6 +11297,11 @@ snapshots: mdn-data: 2.0.30 source-map-js: 1.2.1 + css-tree@3.2.1: + dependencies: + mdn-data: 2.27.1 + source-map-js: 1.2.1 + css-what@6.2.2: {} cssdb@8.9.0: {} @@ -11046,15 +11414,6 @@ snapshots: dependencies: ms: 2.1.3 - decamelize-keys@1.1.1: - dependencies: - decamelize: 1.2.0 - map-obj: 1.0.1 - - decamelize@1.2.0: {} - - decamelize@5.0.1: {} - decode-named-character-reference@1.3.0: dependencies: character-entities: 2.0.2 @@ -11128,10 +11487,6 @@ snapshots: dependencies: esutils: 2.0.3 - doctrine@3.0.0: - dependencies: - esutils: 2.0.3 - dom-converter@0.2.0: dependencies: utila: 0.4.0 @@ -11220,6 +11575,8 @@ snapshots: entities@6.0.1: {} + env-paths@2.2.1: {} + error-ex@1.3.4: dependencies: is-arrayish: 0.2.1 @@ -11361,29 +11718,9 @@ snapshots: escape-string-regexp@5.0.0: {} - eslint-config-airbnb-base@15.0.0(eslint-plugin-import@2.32.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.7.3))(eslint@8.57.1))(eslint@8.57.1): + eslint-config-prettier@10.1.8(eslint@9.39.5(jiti@2.7.0)): dependencies: - confusing-browser-globals: 1.0.11 - eslint: 8.57.1 - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.7.3))(eslint@8.57.1) - object.assign: 4.1.7 - object.entries: 1.1.9 - semver: 6.3.1 - - eslint-config-airbnb@19.0.4(eslint-plugin-import@2.32.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.7.3))(eslint@8.57.1))(eslint-plugin-jsx-a11y@6.10.2(eslint@8.57.1))(eslint-plugin-react-hooks@4.6.2(eslint@8.57.1))(eslint-plugin-react@7.37.5(eslint@8.57.1))(eslint@8.57.1): - dependencies: - eslint: 8.57.1 - eslint-config-airbnb-base: 15.0.0(eslint-plugin-import@2.32.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.7.3))(eslint@8.57.1))(eslint@8.57.1) - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.7.3))(eslint@8.57.1) - eslint-plugin-jsx-a11y: 6.10.2(eslint@8.57.1) - eslint-plugin-react: 7.37.5(eslint@8.57.1) - eslint-plugin-react-hooks: 4.6.2(eslint@8.57.1) - object.assign: 4.1.7 - object.entries: 1.1.9 - - eslint-config-prettier@8.10.2(eslint@8.57.1): - dependencies: - eslint: 8.57.1 + eslint: 9.39.5(jiti@2.7.0) eslint-import-resolver-node@0.3.10: dependencies: @@ -11393,17 +11730,17 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.14.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.7.3))(eslint-import-resolver-node@0.3.10)(eslint@8.57.1): + eslint-module-utils@2.14.0(@typescript-eslint/parser@8.65.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.7.3))(eslint-import-resolver-node@0.3.10)(eslint@9.39.5(jiti@2.7.0)): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 5.62.0(eslint@8.57.1)(typescript@5.7.3) - eslint: 8.57.1 + '@typescript-eslint/parser': 8.65.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.7.3) + eslint: 9.39.5(jiti@2.7.0) eslint-import-resolver-node: 0.3.10 transitivePeerDependencies: - supports-color - eslint-plugin-import@2.32.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.7.3))(eslint@8.57.1): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.65.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.7.3))(eslint@9.39.5(jiti@2.7.0)): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -11412,9 +11749,9 @@ snapshots: array.prototype.flatmap: 1.3.3 debug: 3.2.7 doctrine: 2.1.0 - eslint: 8.57.1 + eslint: 9.39.5(jiti@2.7.0) eslint-import-resolver-node: 0.3.10 - eslint-module-utils: 2.14.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.7.3))(eslint-import-resolver-node@0.3.10)(eslint@8.57.1) + eslint-module-utils: 2.14.0(@typescript-eslint/parser@8.65.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.7.3))(eslint-import-resolver-node@0.3.10)(eslint@9.39.5(jiti@2.7.0)) hasown: 2.0.4 is-core-module: 2.16.2 is-glob: 4.0.3 @@ -11426,13 +11763,13 @@ snapshots: string.prototype.trimend: 1.0.10 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 5.62.0(eslint@8.57.1)(typescript@5.7.3) + '@typescript-eslint/parser': 8.65.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.7.3) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color - eslint-plugin-jsx-a11y@6.10.2(eslint@8.57.1): + eslint-plugin-jsx-a11y@6.10.2(eslint@9.39.5(jiti@2.7.0)): dependencies: aria-query: 5.3.2 array-includes: 3.1.9 @@ -11442,7 +11779,7 @@ snapshots: axobject-query: 4.1.0 damerau-levenshtein: 1.0.8 emoji-regex: 9.2.2 - eslint: 8.57.1 + eslint: 9.39.5(jiti@2.7.0) hasown: 2.0.4 jsx-ast-utils: 3.3.5 language-tags: 1.0.9 @@ -11451,11 +11788,18 @@ snapshots: safe-regex-test: 1.1.0 string.prototype.includes: 2.0.1 - eslint-plugin-react-hooks@4.6.2(eslint@8.57.1): + eslint-plugin-react-hooks@7.1.1(eslint@9.39.5(jiti@2.7.0)): dependencies: - eslint: 8.57.1 + '@babel/core': 7.29.7 + '@babel/parser': 7.29.7 + eslint: 9.39.5(jiti@2.7.0) + hermes-parser: 0.25.1 + zod: 4.4.3 + zod-validation-error: 4.0.2(zod@4.4.3) + transitivePeerDependencies: + - supports-color - eslint-plugin-react@7.37.5(eslint@8.57.1): + eslint-plugin-react@7.37.5(eslint@9.39.5(jiti@2.7.0)): dependencies: array-includes: 3.1.9 array.prototype.findlast: 1.2.5 @@ -11463,7 +11807,7 @@ snapshots: array.prototype.tosorted: 1.1.4 doctrine: 2.1.0 es-iterator-helpers: 1.4.0 - eslint: 8.57.1 + eslint: 9.39.5(jiti@2.7.0) estraverse: 5.3.0 hasown: 2.0.4 jsx-ast-utils: 3.3.5 @@ -11477,78 +11821,79 @@ snapshots: string.prototype.matchall: 4.0.12 string.prototype.repeat: 1.0.0 - eslint-plugin-regexp@1.15.0(eslint@8.57.1): + eslint-plugin-regexp@3.1.1(eslint@9.39.5(jiti@2.7.0)): dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@8.57.1) + '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.5(jiti@2.7.0)) '@eslint-community/regexpp': 4.12.2 comment-parser: 1.4.7 - eslint: 8.57.1 - grapheme-splitter: 1.0.4 - jsdoctypeparser: 9.0.0 - refa: 0.11.0 - regexp-ast-analysis: 0.6.0 - scslre: 0.2.0 + eslint: 9.39.5(jiti@2.7.0) + jsdoc-type-pratt-parser: 7.2.0 + refa: 0.12.1 + regexp-ast-analysis: 0.7.1 + scslre: 0.3.0 eslint-scope@5.1.1: dependencies: esrecurse: 4.3.0 estraverse: 4.3.0 - eslint-scope@7.2.2: + eslint-scope@8.4.0: dependencies: esrecurse: 4.3.0 estraverse: 5.3.0 eslint-visitor-keys@3.4.3: {} - eslint@8.57.1: + eslint-visitor-keys@4.2.1: {} + + eslint-visitor-keys@5.0.1: {} + + eslint@9.39.5(jiti@2.7.0): dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@8.57.1) + '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.5(jiti@2.7.0)) '@eslint-community/regexpp': 4.12.2 - '@eslint/eslintrc': 2.1.4 - '@eslint/js': 8.57.1 - '@humanwhocodes/config-array': 0.13.0 + '@eslint/config-array': 0.21.2 + '@eslint/config-helpers': 0.4.2 + '@eslint/core': 0.17.0 + '@eslint/eslintrc': 3.3.6 + '@eslint/js': 9.39.5 + '@eslint/plugin-kit': 0.4.1 + '@humanfs/node': 0.16.8 '@humanwhocodes/module-importer': 1.0.1 - '@nodelib/fs.walk': 1.2.8 - '@ungap/structured-clone': 1.3.3 + '@humanwhocodes/retry': 0.4.3 + '@types/estree': 1.0.9 ajv: 6.15.0 chalk: 4.1.2 cross-spawn: 7.0.6 debug: 4.4.3 - doctrine: 3.0.0 escape-string-regexp: 4.0.0 - eslint-scope: 7.2.2 - eslint-visitor-keys: 3.4.3 - espree: 9.6.1 + eslint-scope: 8.4.0 + eslint-visitor-keys: 4.2.1 + espree: 10.4.0 esquery: 1.7.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 - file-entry-cache: 6.0.1 + file-entry-cache: 8.0.0 find-up: 5.0.0 glob-parent: 6.0.2 - globals: 13.24.0 - graphemer: 1.4.0 ignore: 5.3.2 imurmurhash: 0.1.4 is-glob: 4.0.3 - is-path-inside: 3.0.3 - js-yaml: 4.3.0 json-stable-stringify-without-jsonify: 1.0.1 - levn: 0.4.1 lodash.merge: 4.6.2 minimatch: 3.1.5 natural-compare: 1.4.0 optionator: 0.9.4 - strip-ansi: 6.0.1 - text-table: 0.2.0 + optionalDependencies: + jiti: 2.7.0 transitivePeerDependencies: - supports-color - espree@9.6.1: + espree@10.4.0: dependencies: acorn: 8.17.0 acorn-jsx: 5.3.2(acorn@8.17.0) - eslint-visitor-keys: 3.4.3 + eslint-visitor-keys: 4.2.1 esquery@1.7.0: dependencies: @@ -11678,8 +12023,6 @@ snapshots: fast-deep-equal@3.1.3: {} - fast-diff@1.3.0: {} - fast-fifo@1.3.2: {} fast-glob@3.3.3: @@ -11716,13 +12059,13 @@ snapshots: optionalDependencies: picomatch: 4.0.5 - file-entry-cache@6.0.1: + file-entry-cache@11.1.5: dependencies: - flat-cache: 3.2.0 + flat-cache: 6.1.23 - file-entry-cache@7.0.2: + file-entry-cache@8.0.0: dependencies: - flat-cache: 3.2.0 + flat-cache: 4.0.1 file-loader@6.2.0(webpack@5.108.4(@swc/core@1.15.43)(postcss@8.5.19)): dependencies: @@ -11761,11 +12104,16 @@ snapshots: locate-path: 7.2.0 path-exists: 5.0.0 - flat-cache@3.2.0: + flat-cache@4.0.1: dependencies: flatted: 3.4.2 keyv: 4.5.4 - rimraf: 3.0.2 + + flat-cache@6.1.23: + dependencies: + cacheable: 2.5.0 + flatted: 3.4.2 + hookified: 1.15.1 flat@5.0.2: {} @@ -11795,8 +12143,6 @@ snapshots: jsonfile: 6.2.1 universalify: 2.0.1 - fs.realpath@1.0.0: {} - fsevents@2.3.3: optional: true @@ -11820,6 +12166,8 @@ snapshots: gensync@1.0.0-beta.2: {} + get-east-asian-width@1.6.0: {} + get-intrinsic@1.3.0: dependencies: call-bind-apply-helpers: 1.0.2 @@ -11864,15 +12212,6 @@ snapshots: dependencies: tslib: 2.8.1 - glob@7.2.3: - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.1.5 - once: 1.4.0 - path-is-absolute: 1.0.1 - global-dirs@3.0.1: dependencies: ini: 2.0.0 @@ -11887,9 +12226,9 @@ snapshots: kind-of: 6.0.3 which: 1.3.1 - globals@13.24.0: - dependencies: - type-fest: 0.20.2 + globals@14.0.0: {} + + globals@17.7.0: {} globalthis@1.0.4: dependencies: @@ -11913,6 +12252,15 @@ snapshots: merge2: 1.4.1 slash: 4.0.0 + globby@16.2.2: + dependencies: + '@sindresorhus/merge-streams': 4.0.0 + fast-glob: 3.3.3 + ignore: 7.0.6 + is-path-inside: 4.0.0 + slash: 5.1.0 + unicorn-magic: 0.4.0 + globjoin@0.1.4: {} gopd@1.2.0: {} @@ -11935,22 +12283,18 @@ snapshots: graceful-fs@4.2.11: {} - grapheme-splitter@1.0.4: {} - - graphemer@1.4.0: {} - gzip-size@6.0.0: dependencies: duplexer: 0.1.2 handle-thing@2.0.1: {} - hard-rejection@2.1.0: {} - has-bigints@1.1.0: {} has-flag@4.0.0: {} + has-flag@5.0.1: {} + has-property-descriptors@1.0.2: dependencies: es-define-property: 1.0.1 @@ -11967,6 +12311,10 @@ snapshots: has-yarn@3.0.0: {} + hashery@1.5.1: + dependencies: + hookified: 1.15.1 + hasown@2.0.4: dependencies: function-bind: 1.1.2 @@ -12067,6 +12415,12 @@ snapshots: he@1.2.0: {} + hermes-estree@0.25.1: {} + + hermes-parser@0.25.1: + dependencies: + hermes-estree: 0.25.1 + history@4.10.1: dependencies: '@babel/runtime': 7.29.7 @@ -12080,9 +12434,9 @@ snapshots: dependencies: react-is: 16.13.1 - hosted-git-info@4.1.0: - dependencies: - lru-cache: 6.0.0 + hookified@1.15.1: {} + + hookified@2.2.0: {} hpack.js@2.1.6: dependencies: @@ -12115,6 +12469,8 @@ snapshots: html-tags@3.3.1: {} + html-tags@5.1.0: {} + html-void-elements@3.0.0: {} html-webpack-plugin@5.6.7(@rspack/core@1.7.12)(webpack@5.108.4(@swc/core@1.15.43)(postcss@8.5.19)): @@ -12198,6 +12554,8 @@ snapshots: ignore@5.3.2: {} + ignore@7.0.6: {} + image-size@2.0.2: {} import-fresh@3.3.1: @@ -12207,19 +12565,14 @@ snapshots: import-lazy@4.0.0: {} + import-meta-resolve@4.2.0: {} + imurmurhash@0.1.4: {} indent-string@4.0.0: {} - indent-string@5.0.0: {} - infima@0.2.0-alpha.43: {} - inflight@1.0.6: - dependencies: - once: 1.4.0 - wrappy: 1.0.2 - inherits@2.0.4: {} ini@1.3.8: {} @@ -12365,7 +12718,7 @@ snapshots: is-path-inside@3.0.3: {} - is-plain-obj@1.1.0: {} + is-path-inside@4.0.0: {} is-plain-obj@3.0.0: {} @@ -12375,8 +12728,6 @@ snapshots: dependencies: isobject: 3.0.1 - is-plain-object@5.0.0: {} - is-regex@1.2.1: dependencies: call-bound: 1.0.4 @@ -12475,6 +12826,8 @@ snapshots: jiti@1.21.7: {} + jiti@2.7.0: {} + joi@17.13.4: dependencies: '@hapi/hoek': 9.3.0 @@ -12489,7 +12842,7 @@ snapshots: dependencies: argparse: 2.0.1 - jsdoctypeparser@9.0.0: {} + jsdoc-type-pratt-parser@7.2.0: {} jsesc@3.1.0: {} @@ -12526,12 +12879,14 @@ snapshots: dependencies: json-buffer: 3.0.1 + keyv@5.6.0: + dependencies: + '@keyv/serialize': 1.1.1 + kind-of@6.0.3: {} kleur@3.0.3: {} - known-css-properties@0.29.0: {} - language-subtag-registry@0.3.23: {} language-tags@1.0.9: @@ -12653,14 +13008,6 @@ snapshots: dependencies: yallist: 3.1.1 - lru-cache@6.0.0: - dependencies: - yallist: 4.0.0 - - map-obj@1.0.1: {} - - map-obj@4.3.0: {} - markdown-extensions@2.0.0: {} markdown-table@3.0.4: {} @@ -12669,7 +13016,7 @@ snapshots: math-intrinsics@1.1.0: {} - mathml-tag-names@2.1.3: {} + mathml-tag-names@4.0.0: {} mdast-util-directive@3.1.0: dependencies: @@ -12863,6 +13210,8 @@ snapshots: mdn-data@2.0.30: {} + mdn-data@2.27.1: {} + media-typer@0.3.0: {} memfs@4.64.0(tslib@2.8.1): @@ -12882,20 +13231,7 @@ snapshots: tree-dump: 1.1.0(tslib@2.8.1) tslib: 2.8.1 - meow@10.1.5: - dependencies: - '@types/minimist': 1.2.5 - camelcase-keys: 7.0.2 - decamelize: 5.0.1 - decamelize-keys: 1.1.1 - hard-rejection: 2.1.0 - minimist-options: 4.1.0 - normalize-package-data: 3.0.3 - read-pkg-up: 8.0.0 - redent: 4.0.0 - trim-newlines: 4.1.1 - type-fest: 1.4.0 - yargs-parser: 20.2.9 + meow@14.1.0: {} merge-descriptors@1.0.3: {} @@ -13239,16 +13575,14 @@ snapshots: minimalistic-assert@1.0.1: {} + minimatch@10.2.5: + dependencies: + brace-expansion: 5.0.8 + minimatch@3.1.5: dependencies: brace-expansion: 1.1.16 - minimist-options@4.1.0: - dependencies: - arrify: 1.0.1 - is-plain-obj: 1.1.0 - kind-of: 6.0.3 - minimist@1.2.8: {} minimizer-webpack-plugin@5.6.1(@swc/core@1.15.43)(@swc/html@1.15.43)(lightningcss@1.32.0)(postcss@8.5.19)(webpack@5.108.4(@swc/core@1.15.43)(postcss@8.5.19)): @@ -13312,8 +13646,6 @@ snapshots: napi-build-utils@2.0.0: {} - natural-compare-lite@1.4.0: {} - natural-compare@1.4.0: {} negotiator@0.6.3: {} @@ -13349,13 +13681,6 @@ snapshots: node-releases@2.0.51: {} - normalize-package-data@3.0.3: - dependencies: - hosted-git-info: 4.1.0 - is-core-module: 2.16.2 - semver: 7.8.5 - validate-npm-package-license: 3.0.4 - normalize-path@3.0.0: {} normalize-url@8.1.1: {} @@ -13466,6 +13791,30 @@ snapshots: object-keys: 1.1.1 safe-push-apply: 1.0.0 + oxfmt@0.60.0: + dependencies: + tinypool: 2.1.0 + optionalDependencies: + '@oxfmt/binding-android-arm-eabi': 0.60.0 + '@oxfmt/binding-android-arm64': 0.60.0 + '@oxfmt/binding-darwin-arm64': 0.60.0 + '@oxfmt/binding-darwin-x64': 0.60.0 + '@oxfmt/binding-freebsd-x64': 0.60.0 + '@oxfmt/binding-linux-arm-gnueabihf': 0.60.0 + '@oxfmt/binding-linux-arm-musleabihf': 0.60.0 + '@oxfmt/binding-linux-arm64-gnu': 0.60.0 + '@oxfmt/binding-linux-arm64-musl': 0.60.0 + '@oxfmt/binding-linux-ppc64-gnu': 0.60.0 + '@oxfmt/binding-linux-riscv64-gnu': 0.60.0 + '@oxfmt/binding-linux-riscv64-musl': 0.60.0 + '@oxfmt/binding-linux-s390x-gnu': 0.60.0 + '@oxfmt/binding-linux-x64-gnu': 0.60.0 + '@oxfmt/binding-linux-x64-musl': 0.60.0 + '@oxfmt/binding-openharmony-arm64': 0.60.0 + '@oxfmt/binding-win32-arm64-msvc': 0.60.0 + '@oxfmt/binding-win32-ia32-msvc': 0.60.0 + '@oxfmt/binding-win32-x64-msvc': 0.60.0 + p-cancelable@3.0.0: {} p-finally@1.0.0: {} @@ -13555,8 +13904,6 @@ snapshots: path-exists@5.0.0: {} - path-is-absolute@1.0.1: {} - path-is-inside@1.0.2: {} path-key@3.1.1: {} @@ -14020,9 +14367,7 @@ snapshots: dependencies: postcss: 8.5.19 - postcss-resolve-nested-selector@0.1.6: {} - - postcss-safe-parser@6.0.0(postcss@8.5.19): + postcss-safe-parser@7.0.1(postcss@8.5.19): dependencies: postcss: 8.5.19 @@ -14091,12 +14436,6 @@ snapshots: prelude-ls@1.2.1: {} - prettier-linter-helpers@1.0.1: - dependencies: - fast-diff: 1.3.0 - - prettier@3.9.5: {} - pretty-error@4.0.0: dependencies: lodash: 4.18.1 @@ -14155,6 +14494,10 @@ snapshots: optionalDependencies: fsevents: 2.3.3 + qified@0.10.1: + dependencies: + hookified: 2.2.0 + qs@6.15.3: dependencies: es-define-property: 1.0.1 @@ -14263,19 +14606,6 @@ snapshots: dependencies: pify: 2.3.0 - read-pkg-up@8.0.0: - dependencies: - find-up: 5.0.0 - read-pkg: 6.0.0 - type-fest: 1.4.0 - - read-pkg@6.0.0: - dependencies: - '@types/normalize-package-data': 2.4.4 - normalize-package-data: 3.0.3 - parse-json: 5.2.0 - type-fest: 1.4.0 - readable-stream@2.3.8: dependencies: core-util-is: 1.0.3 @@ -14325,12 +14655,7 @@ snapshots: unified: 11.0.5 vfile: 6.0.3 - redent@4.0.0: - dependencies: - indent-string: 5.0.0 - strip-indent: 4.1.1 - - refa@0.11.0: + refa@0.12.1: dependencies: '@eslint-community/regexpp': 4.12.2 @@ -14353,10 +14678,10 @@ snapshots: regenerate@1.4.2: {} - regexp-ast-analysis@0.6.0: + regexp-ast-analysis@0.7.1: dependencies: '@eslint-community/regexpp': 4.12.2 - refa: 0.11.0 + refa: 0.12.1 regexp.prototype.flags@1.5.4: dependencies: @@ -14491,8 +14816,6 @@ snapshots: resolve-from@4.0.0: {} - resolve-from@5.0.0: {} - resolve-pathname@3.0.0: {} resolve@1.22.12: @@ -14519,10 +14842,6 @@ snapshots: reusify@1.1.0: {} - rimraf@3.0.2: - dependencies: - glob: 7.2.3 - rtlcss@4.3.0: dependencies: escalade: 3.2.0 @@ -14580,11 +14899,11 @@ snapshots: ajv-formats: 2.1.1(ajv@8.20.0) ajv-keywords: 5.1.0(ajv@8.20.0) - scslre@0.2.0: + scslre@0.3.0: dependencies: '@eslint-community/regexpp': 4.12.2 - refa: 0.11.0 - regexp-ast-analysis: 0.6.0 + refa: 0.12.1 + regexp-ast-analysis: 0.7.1 search-insights@2.17.3: {} @@ -14787,6 +15106,8 @@ snapshots: slash@4.0.0: {} + slash@5.1.0: {} + slice-ansi@4.0.0: dependencies: ansi-styles: 4.3.0 @@ -14826,20 +15147,6 @@ snapshots: space-separated-tokens@2.0.2: {} - spdx-correct@3.2.0: - dependencies: - spdx-expression-parse: 3.0.1 - spdx-license-ids: 3.0.23 - - spdx-exceptions@2.5.0: {} - - spdx-expression-parse@3.0.1: - dependencies: - spdx-exceptions: 2.5.0 - spdx-license-ids: 3.0.23 - - spdx-license-ids@3.0.23: {} - spdy-transport@3.0.0: dependencies: debug: 4.4.3 @@ -14893,6 +15200,11 @@ snapshots: emoji-regex: 9.2.2 strip-ansi: 7.2.0 + string-width@8.2.2: + dependencies: + get-east-asian-width: 1.6.0 + strip-ansi: 7.2.0 + string.prototype.includes@2.0.1: dependencies: call-bind: 1.0.9 @@ -14977,14 +15289,10 @@ snapshots: strip-final-newline@2.0.0: {} - strip-indent@4.1.1: {} - strip-json-comments@2.0.1: {} strip-json-comments@3.1.1: {} - style-search@0.1.0: {} - style-to-js@1.1.21: dependencies: style-to-object: 1.0.14 @@ -14999,63 +15307,52 @@ snapshots: postcss: 8.5.19 postcss-selector-parser: 6.1.4 - stylelint-config-recommended@13.0.0(stylelint@15.11.0(typescript@5.7.3)): + stylelint-config-recommended@18.0.0(stylelint@17.14.1(typescript@5.7.3)): dependencies: - stylelint: 15.11.0(typescript@5.7.3) + stylelint: 17.14.1(typescript@5.7.3) - stylelint-config-standard@34.0.0(stylelint@15.11.0(typescript@5.7.3)): + stylelint-config-standard@40.0.0(stylelint@17.14.1(typescript@5.7.3)): dependencies: - stylelint: 15.11.0(typescript@5.7.3) - stylelint-config-recommended: 13.0.0(stylelint@15.11.0(typescript@5.7.3)) + stylelint: 17.14.1(typescript@5.7.3) + stylelint-config-recommended: 18.0.0(stylelint@17.14.1(typescript@5.7.3)) - stylelint-prettier@4.1.0(prettier@3.9.5)(stylelint@15.11.0(typescript@5.7.3)): + stylelint@17.14.1(typescript@5.7.3): dependencies: - prettier: 3.9.5 - prettier-linter-helpers: 1.0.1 - stylelint: 15.11.0(typescript@5.7.3) - - stylelint@15.11.0(typescript@5.7.3): - dependencies: - '@csstools/css-parser-algorithms': 2.7.1(@csstools/css-tokenizer@2.4.1) - '@csstools/css-tokenizer': 2.4.1 - '@csstools/media-query-list-parser': 2.1.13(@csstools/css-parser-algorithms@2.7.1(@csstools/css-tokenizer@2.4.1))(@csstools/css-tokenizer@2.4.1) - '@csstools/selector-specificity': 3.1.1(postcss-selector-parser@6.1.4) - balanced-match: 2.0.0 + '@csstools/css-calc': 3.3.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) + '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) + '@csstools/css-syntax-patches-for-csstree': 1.1.7(css-tree@3.2.1) + '@csstools/css-tokenizer': 4.0.0 + '@csstools/media-query-list-parser': 5.0.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) + '@csstools/selector-resolve-nested': 4.0.1(postcss-selector-parser@7.1.4) + '@csstools/selector-specificity': 6.0.0(postcss-selector-parser@7.1.4) colord: 2.9.3 - cosmiconfig: 8.3.6(typescript@5.7.3) + cosmiconfig: 9.0.2(typescript@5.7.3) css-functions-list: 3.3.3 - css-tree: 2.3.1 + css-tree: 3.2.1 debug: 4.4.3 fast-glob: 3.3.3 fastest-levenshtein: 1.0.16 - file-entry-cache: 7.0.2 + file-entry-cache: 11.1.5 global-modules: 2.0.0 - globby: 11.1.0 + globby: 16.2.2 globjoin: 0.1.4 - html-tags: 3.3.1 - ignore: 5.3.2 - import-lazy: 4.0.0 - imurmurhash: 0.1.4 - is-plain-object: 5.0.0 - known-css-properties: 0.29.0 - mathml-tag-names: 2.1.3 - meow: 10.1.5 + html-tags: 5.1.0 + ignore: 7.0.6 + import-meta-resolve: 4.2.0 + mathml-tag-names: 4.0.0 + meow: 14.1.0 micromatch: 4.0.8 normalize-path: 3.0.0 picocolors: 1.1.1 postcss: 8.5.19 - postcss-resolve-nested-selector: 0.1.6 - postcss-safe-parser: 6.0.0(postcss@8.5.19) - postcss-selector-parser: 6.1.4 + postcss-safe-parser: 7.0.1(postcss@8.5.19) + postcss-selector-parser: 7.1.4 postcss-value-parser: 4.2.0 - resolve-from: 5.0.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - style-search: 0.1.0 - supports-hyperlinks: 3.2.0 + string-width: 8.2.2 + supports-hyperlinks: 4.5.0 svg-tags: 1.0.0 table: 6.9.0 - write-file-atomic: 5.0.1 + write-file-atomic: 7.0.1 transitivePeerDependencies: - supports-color - typescript @@ -15070,6 +15367,8 @@ snapshots: tinyglobby: 0.2.17 ts-interface-checker: 0.1.13 + supports-color@10.2.2: {} + supports-color@7.2.0: dependencies: has-flag: 4.0.0 @@ -15078,10 +15377,10 @@ snapshots: dependencies: has-flag: 4.0.0 - supports-hyperlinks@3.2.0: + supports-hyperlinks@4.5.0: dependencies: - has-flag: 4.0.0 - supports-color: 7.2.0 + has-flag: 5.0.1 + supports-color: 10.2.2 supports-preserve-symlinks-flag@1.0.0: {} @@ -15213,8 +15512,6 @@ snapshots: transitivePeerDependencies: - react-native-b4a - text-table@0.2.0: {} - thenify-all@1.6.0: dependencies: thenify: 3.3.1 @@ -15242,6 +15539,8 @@ snapshots: tinypool@1.1.1: {} + tinypool@2.1.0: {} + to-regex-range@5.0.1: dependencies: is-number: 7.0.0 @@ -15256,10 +15555,12 @@ snapshots: trim-lines@3.0.1: {} - trim-newlines@4.1.1: {} - trough@2.2.0: {} + ts-api-utils@2.5.0(typescript@5.7.3): + dependencies: + typescript: 5.7.3 + ts-interface-checker@0.1.13: {} tsconfig-paths@3.15.0: @@ -15290,8 +15591,6 @@ snapshots: dependencies: prelude-ls: 1.2.1 - type-fest@0.20.2: {} - type-fest@1.4.0: {} type-fest@2.19.0: {} @@ -15338,6 +15637,17 @@ snapshots: dependencies: is-typedarray: 1.0.0 + typescript-eslint@8.65.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.7.3): + dependencies: + '@typescript-eslint/eslint-plugin': 8.65.0(@typescript-eslint/parser@8.65.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.7.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.7.3) + '@typescript-eslint/parser': 8.65.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.7.3) + '@typescript-eslint/typescript-estree': 8.65.0(typescript@5.7.3) + '@typescript-eslint/utils': 8.65.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.7.3) + eslint: 9.39.5(jiti@2.7.0) + typescript: 5.7.3 + transitivePeerDependencies: + - supports-color + typescript@5.7.3: {} unbox-primitive@1.1.0: @@ -15362,6 +15672,8 @@ snapshots: unicode-property-aliases-ecmascript@2.2.0: {} + unicorn-magic@0.4.0: {} + unified@11.0.5: dependencies: '@types/unist': 3.0.3 @@ -15453,11 +15765,6 @@ snapshots: uuid@8.3.2: {} - validate-npm-package-license@3.0.4: - dependencies: - spdx-correct: 3.2.0 - spdx-expression-parse: 3.0.1 - value-equal@1.0.1: {} vary@1.1.2: {} @@ -15775,9 +16082,8 @@ snapshots: signal-exit: 3.0.7 typedarray-to-buffer: 3.1.5 - write-file-atomic@5.0.1: + write-file-atomic@7.0.1: dependencies: - imurmurhash: 0.1.4 signal-exit: 4.1.0 ws@7.5.12: {} @@ -15792,12 +16098,14 @@ snapshots: yallist@3.1.1: {} - yallist@4.0.0: {} - - yargs-parser@20.2.9: {} - yocto-queue@0.1.0: {} yocto-queue@1.2.2: {} + zod-validation-error@4.0.2(zod@4.4.3): + dependencies: + zod: 4.4.3 + + zod@4.4.3: {} + zwitch@2.0.4: {} diff --git a/scripts/build-api-docs.sh b/scripts/build-api-docs.sh index 7f16395d..8508f671 100755 --- a/scripts/build-api-docs.sh +++ b/scripts/build-api-docs.sh @@ -10,4 +10,4 @@ nb-autodoc nonebot \ -u nonebot.internal \ -u nonebot.internal.* cp -r ./build/nonebot/* ./website/docs/api/ -pnpm prettier +pnpm format diff --git a/tsconfig.json b/tsconfig.json index e2176982..d73ec392 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -40,6 +40,6 @@ "importHelpers": true, "noEmitHelpers": true }, - "include": ["./**/.eslintrc.js", "./**/.stylelintrc.js"], + "include": ["eslint.config.ts", "eslint.rules.ts", "./**/.stylelintrc.js"], "exclude": ["node_modules", "**/lib/**/*"] } diff --git a/website/docs/advanced/dependency.mdx b/website/docs/advanced/dependency.mdx index 43d2b466..af725720 100644 --- a/website/docs/advanced/dependency.mdx +++ b/website/docs/advanced/dependency.mdx @@ -29,11 +29,11 @@ import TabItem from "@theme/TabItem"; - 根据已经解析的 `Dependency` 依赖,执行调用。 - 将所有 `Dependency` 的返回值根据参数名传入并调用 `Dependent` 。 -:::danger 警告 +:::danger[警告] 在依赖注入中,类型注解是非常重要的,因为它不仅可以决定依赖注入的对象,还可以触发[重载机制](../appendices/overload.md#重载)。如果类型注解与实际获得数据类型不一致,将会跳过当前 `Dependent` 对象(即事件处理函数)。 ::: -:::tip 提示 +:::tip[提示] 如果对于依赖注入的解析流程有疑问,可以调整[日志等级配置项](../appendices/config.mdx#log-level)为 `TRACE`,查看依赖解析日志。 ::: @@ -349,7 +349,7 @@ async def _(x: int = Depends(random_result, use_cache=False)): -:::tip 提示 +:::tip[提示] 缓存的生命周期与当前接收到的事件相同。接收到事件后,子依赖在首次执行时缓存,在该事件处理完成后,缓存就会被清除。 ::: @@ -558,7 +558,7 @@ async def _(x: httpx.AsyncClient = Depends(get_client)): -:::caution 注意 +:::warning[注意] 生成器作为依赖时,其中只能进行一次 `yield`,否则将会触发异常。如果对此有疑问并想探究原因,可以参考 [contextmanager](https://docs.python.org/zh-cn/3/library/contextlib.html#contextlib.contextmanager) 和 [asynccontextmanager](https://docs.python.org/zh-cn/3/library/contextlib.html#contextlib.asynccontextmanager) 文档。事实上,NoneBot 内部就使用了这两个装饰器。 ::: @@ -715,7 +715,7 @@ async def _(foo: tuple[str, ...] = Command()): ... -:::tip 提示 +:::tip[提示] 命令详情只能在**触发命令型事件响应器时**获取。如果在事件处理后续流程中获取,则会获取到不同的值。 ::: @@ -745,7 +745,7 @@ async def _(foo: str = RawCommand()): ... -:::tip 提示 +:::tip[提示] 命令详情只能在**触发命令型事件响应器时**获取。如果在事件处理后续流程中获取,则会获取到不同的值。 ::: @@ -777,7 +777,7 @@ async def _(foo: Message = CommandArg()): ... -:::tip 提示 +:::tip[提示] 命令详情只能在**触发命令型事件响应器时**获取。如果在事件处理后续流程中获取,则会获取到不同的值。 ::: @@ -807,7 +807,7 @@ async def _(foo: str = CommandStart()): ... -:::tip 提示 +:::tip[提示] 命令详情只能在**触发命令型事件响应器时**获取。如果在事件处理后续流程中获取,则会获取到不同的值。 ::: @@ -837,7 +837,7 @@ async def _(foo: str = CommandWhitespace()): ... -:::tip 提示 +:::tip[提示] 命令详情只能在**触发命令型事件响应器时**获取。如果在事件处理后续流程中获取,则会获取到不同的值。 ::: @@ -921,7 +921,7 @@ async def _(foo: list[Union[str, MessageSegment]] = ShellCommandArgv()): ... 获取 shell 命令解析后的参数 Namespace,支持 MessageSegment 富文本(如:图片)。 -:::tip 提示 +:::tip[提示] 如果参数解析成功,则为 parser 返回的 Namespace;如果参数解析失败,则为 [`ParserExit`](../api/exception.md#ParserExit) 异常,并携带错误码与错误信息。在前置词法解析失败时,返回值也为 [`ParserExit`](../api/exception.md#ParserExit) 异常。通过重载机制即可处理两种不同的情况。 由于 `ArgumentParser` 在解析到 `--help` 参数时也会抛出异常,这种情况下错误码为 `0` 且错误信息即为帮助信息。 diff --git a/website/docs/advanced/driver.md b/website/docs/advanced/driver.md index 222921de..15f8f0ff 100644 --- a/website/docs/advanced/driver.md +++ b/website/docs/advanced/driver.md @@ -12,11 +12,11 @@ options: 驱动器 (Driver) 是机器人运行的基石,它是机器人初始化的第一步,主要负责数据收发。 -:::important 提示 +:::info[提示] 驱动器的选择通常与机器人所使用的协议适配器相关,如果不知道该选择哪个驱动器,可以先阅读相关协议适配器文档说明。 ::: -:::tip 提示 +:::tip[提示] 如何**安装**驱动器请参考[安装驱动器](../tutorial/store.mdx#安装驱动器)。 ::: @@ -118,7 +118,7 @@ DRIVER=~fastapi ##### `fastapi_reload` -:::caution 警告 +:::warning[警告] 不推荐开启该配置项,在 Windows 平台上开启该功能有可能会造成预料之外的影响!替代方案:使用 `nb-cli` 命令行工具以及参数 `--reload` 启动 NoneBot。 ```bash @@ -200,7 +200,7 @@ DRIVER=~quart ##### `quart_reload` -:::caution 警告 +:::warning[警告] 不推荐开启该配置项,在 Windows 平台上开启该功能有可能会造成预料之外的影响!替代方案:使用 `nb-cli` 命令行工具以及参数 `--reload` 启动 NoneBot。 ```bash @@ -252,7 +252,7 @@ nonebot.run(app="bot:app") **类型:**HTTP 客户端驱动器 -:::caution 注意 +:::warning[注意] 本驱动器仅支持 HTTP 请求,不支持 WebSocket 连接请求。 ::: @@ -266,7 +266,7 @@ DRIVER=~httpx **类型:**WebSocket 客户端驱动器 -:::caution 注意 +:::warning[注意] 本驱动器仅支持 WebSocket 连接请求,不支持 HTTP 请求。 ::: diff --git a/website/docs/advanced/matcher.md b/website/docs/advanced/matcher.md index 130b5435..279eaf24 100644 --- a/website/docs/advanced/matcher.md +++ b/website/docs/advanced/matcher.md @@ -12,7 +12,7 @@ options: 在[指南](../tutorial/matcher.md)与[深入](../appendices/rule.md)中,我们已经介绍了事件响应器的基本用法以及响应规则、权限控制等功能。在这一节中,我们将介绍事件响应器的组成,内置的响应规则,与第三方响应规则拓展。 -:::tip 提示 +:::tip[提示] 事件响应器允许继承,你可以通过直接继承 `Matcher` 类来创建一个新的事件响应器。 ::: @@ -228,7 +228,7 @@ matcher = on_shell_command("cmd", parser=parser) `regex` 响应规则用于匹配消息是否与指定正则表达式匹配。 -:::tip 提示 +:::tip[提示] 正则表达式匹配使用 search 而非 match,如需从头匹配请使用 `r"^xxx"` 模式来确保匹配开头。 ::: diff --git a/website/docs/appendices/api-calling.mdx b/website/docs/appendices/api-calling.mdx index ab6ce23d..7be4d74c 100644 --- a/website/docs/appendices/api-calling.mdx +++ b/website/docs/appendices/api-calling.mdx @@ -18,7 +18,7 @@ import Messenger from "@/components/Messenger"; 在之前的章节中,我们介绍了如何向用户发送文本消息以及[如何处理平台消息](../tutorial/message.md),现在我们来向用户发送平台特殊消息。 -:::caution 注意 +:::warning[注意] 在以下的示例中,我们将使用 `Console` 协议适配器来演示如何发送平台消息。在实际使用中,你需要确保你使用的**消息序列类型**与你所要发送的**平台类型**一致。 ::: @@ -103,7 +103,7 @@ result = await bot.get_user_info(user_id=12345678) result = await bot.call_api("get_user_info", user_id=12345678) ``` -:::caution 注意 +:::warning[注意] 实际可以使用的 API 以及参数取决于平台提供的接口以及协议适配器的实现,请参考协议适配器以及平台文档。 ::: diff --git a/website/docs/appendices/config.mdx b/website/docs/appendices/config.mdx index e423368c..073c9a13 100644 --- a/website/docs/appendices/config.mdx +++ b/website/docs/appendices/config.mdx @@ -19,7 +19,7 @@ NoneBot 使用 [`pydantic`](https://docs.pydantic.dev/) 以及 [`python-dotenv`] NoneBot 内置的配置项列表及含义可以在[内置配置项](#内置配置项)中查看。 -:::caution 注意 +:::warning[注意] NoneBot 自 2.2.0 起兼容了 Pydantic v1 与 v2 版本,以下文档中 Pydantic 相关示例均采用 v2 版本用法。 @@ -83,7 +83,7 @@ export CUSTOM_CONFIG='config in environment variables' 那最终 NoneBot 所读取的内容为环境变量中的内容,即 `config in environment variables`。 -:::caution 注意 +:::warning[注意] 如果一个环境变量既不是 NoneBot 的[**内置配置项**](#内置配置项),也不是任何插件所定义的[**插件配置**](#插件配置),那么 NoneBot 不会自发读取该环境变量,需要在 dotenv 配置文件中先行声明。 ::: @@ -162,7 +162,7 @@ COMMON_CONFIG=common config # 这个配置项在任何环境中都会被加载 这样,我们在启动 NoneBot 时就会从 `.env.dev` 文件中加载剩余配置项。 -:::tip 提示 +:::tip[提示] 在生产环境中,可以通过设置环境变量 `ENVIRONMENT=prod` 来确保 NoneBot 读取正确的环境配置。 ::: @@ -242,11 +242,11 @@ weather = on_command( 这种方式可以简洁、高效地读取配置项,同时也可以设置默认值或者在运行时对配置项进行合法性检查,防止由于配置项导致的插件出错等情况出现。 -:::tip 可配置的事件响应优先级 +:::tip[可配置的事件响应优先级] 发布插件应该为自身的事件响应器提供可配置的优先级,以便插件使用者可以自定义多个插件间的响应顺序。 ::: -:::tip 插件配置获取逻辑 +:::tip[插件配置获取逻辑] 无论是否在 dotenv 文件中声明了插件配置项,使用 `get_plugin_config` 获取插件配置模型中定义的配置项时都遵循[**配置项的加载**](#配置项的加载)一节中的优先级顺序进行读取。 ::: @@ -406,7 +406,7 @@ nonebot.init(port=8080) NoneBot 日志输出等级,可以为 `int` 类型等级或等级名称。具体等级对照表参考 [loguru 日志等级](https://loguru.readthedocs.io/en/stable/api/logger.html#levels)。 -:::tip 提示 +:::tip[提示] 日志等级名称应为大写,如 `INFO`。 ::: diff --git a/website/docs/appendices/overload.md b/website/docs/appendices/overload.md index 2ade4b5b..8b368046 100644 --- a/website/docs/appendices/overload.md +++ b/website/docs/appendices/overload.md @@ -28,7 +28,7 @@ async def got_location(event: MessageEvent, location: str = ArgPlainText()): 在上面的代码中,我们获取了 `Console` 协议适配器的消息事件提供的发送时间 `time` 属性。 -:::caution 注意 +:::warning[注意] 如果**基类**就能满足你的需求,那么就**不要修改**事件参数类型注解,这样可以使你的代码更加**通用**,可以在更多平台上运行。如何根据不同平台事件类型进行不同的处理,我们将在[重载](#重载)一节中介绍。 ::: @@ -63,12 +63,12 @@ async def handle_onebot(bot: OneBot): await bot.send_group_message(group_id=123123, message="OneBot") ``` -:::caution 注意 +:::warning[注意] 重载机制对所有的参数类型注解都有效,因此,依赖注入也可以使用这个特性来对不同的返回值进行处理。 但 Bot、Event 和 Matcher 三者的参数类型注解具有最高检查优先级,如果三者任一类型注解不匹配,那么其他依赖注入将不会执行(如:`Depends`)。 ::: -:::tip 提示 +:::tip[提示] 如何更好地编写一个跨平台的插件,我们将在[最佳实践](../best-practice/multi-adapter.mdx)中介绍。 ::: diff --git a/website/docs/appendices/session-control.mdx b/website/docs/appendices/session-control.mdx index c98bf2bf..9fa53704 100644 --- a/website/docs/appendices/session-control.mdx +++ b/website/docs/appendices/session-control.mdx @@ -35,7 +35,7 @@ async def got_location(): 在上面的代码中,我们使用 `got` 事件响应器操作来向用户发送 `prompt` 消息,并等待用户的回复。用户的回复消息将会被作为 `location` 参数存储于事件响应器状态中。 -:::tip 提示 +:::tip[提示] 事件处理函数根据定义的顺序依次执行。 ::: @@ -67,7 +67,7 @@ async def got_location(location: str = ArgPlainText()): 在上面的代码中,我们在 `got_location` 函数中定义了一个依赖注入参数 `location`,他的值将会是用户回复的消息纯文本信息。获取到用户输入的地名参数后,我们就可以进行天气查询并回复了。 -:::tip 提示 +:::tip[提示] 如果想要获取用户回复的消息对象 `Message` ,可以使用 `Arg` 依赖注入。 ::: @@ -130,7 +130,7 @@ async def got_location(location: str = ArgPlainText()): 事件响应器操作可以分为两大类:**交互操作**和**流程控制操作**。我们可以通过交互操作来与用户进行交互,而流程控制操作则可以用来控制事件处理流程的执行。 -:::tip 提示 +:::tip[提示] 事件处理流程按照事件处理函数添加顺序执行,已经结束的事件处理函数不可能被恢复执行。 ::: @@ -322,7 +322,7 @@ async def _(matcher: Matcher): matcher.stop_propagation() ``` -:::caution 注意 +:::warning[注意] `stop_propagation` 操作是实例方法,需要先通过依赖注入获取事件响应器实例再进行调用。 ::: diff --git a/website/docs/best-practice/alconna/command.md b/website/docs/best-practice/alconna/command.md index 92e6bca3..44cbbcb6 100644 --- a/website/docs/best-practice/alconna/command.md +++ b/website/docs/best-practice/alconna/command.md @@ -237,7 +237,7 @@ args = Args["foo", BasePattern("@\d+")] 传入别名后,选项与子命令会选择其中长度最长的作为其名称。若传入为 "--foo|-f",则命令名称为 "--foo" -:::tip 特别提醒!!! +:::tip[特别提醒!!!] Option 的名字或别名**没有要求**必须在前面写上 `-` diff --git a/website/docs/best-practice/alconna/matcher.mdx b/website/docs/best-practice/alconna/matcher.mdx index 3f2e0ea2..1eea9301 100644 --- a/website/docs/best-practice/alconna/matcher.mdx +++ b/website/docs/best-practice/alconna/matcher.mdx @@ -534,7 +534,7 @@ async def message_provider( 该方法可能会调用多次,即对于多个 Extension,选择优先级靠前且实现了该方法的 Extension,若调用的返回值不为 `None` 则作为结果。 -:::caution +:::warning 该方法的默认实现对结果 (UniMessage) 会进行缓存。`Extension` 的实现也应尽量实现缓存机制。 diff --git a/website/docs/best-practice/alconna/uniseg/message.mdx b/website/docs/best-practice/alconna/uniseg/message.mdx index fe7ad5c2..1beb0d85 100644 --- a/website/docs/best-practice/alconna/uniseg/message.mdx +++ b/website/docs/best-practice/alconna/uniseg/message.mdx @@ -161,7 +161,7 @@ async def on_startup(): await UniMessage("Hello!").send(target=target) ``` -:::caution +:::warning 在响应器以外的地方,除非启用了 `alconna_apply_fetch_targets` 配置项,否则 `bot` 参数必须手动传入。 diff --git a/website/docs/best-practice/alconna/uniseg/utils.mdx b/website/docs/best-practice/alconna/uniseg/utils.mdx index 4594a9d5..0920ca46 100644 --- a/website/docs/best-practice/alconna/uniseg/utils.mdx +++ b/website/docs/best-practice/alconna/uniseg/utils.mdx @@ -55,7 +55,7 @@ asycn def _(bot: Bot, event: Event): -:::caution +:::warning 该方法获取的消息事件 ID 不推荐直接用于各适配器的 API 调用中,可能会操作失败。 @@ -231,7 +231,7 @@ async def message_edit( ## 表态消息 -:::caution +:::warning 该方法属于实验性功能。其接口可能会在未来的版本中发生变化。 diff --git a/website/docs/best-practice/data-storing.md b/website/docs/best-practice/data-storing.md index d88214c0..c19b80e4 100644 --- a/website/docs/best-practice/data-storing.md +++ b/website/docs/best-practice/data-storing.md @@ -44,7 +44,7 @@ config_dir = store.get_plugin_config_dir() config_file = store.get_plugin_config_file("file_name") ``` -:::danger 警告 +:::danger[警告] 在 Windows 和 macOS 系统下,插件的数据目录和配置目录是同一个目录,因此在使用时需要注意避免文件名冲突。 ::: @@ -60,7 +60,7 @@ data_file.write_text("Hello World!") data = data_file.read_text() ``` -:::note 提示 +:::note[提示] 对于嵌套插件,子插件的存储目录将位于父插件存储目录下。 diff --git a/website/docs/best-practice/database/developer/README.md b/website/docs/best-practice/database/developer/README.md index 8b6bf658..dab62eac 100644 --- a/website/docs/best-practice/database/developer/README.md +++ b/website/docs/best-practice/database/developer/README.md @@ -178,7 +178,7 @@ op.drop_table("weather_weather") # DROP TABLE weather_weather; 对了,不要忘记还有一段注释:`commands auto generated by Alembic - please adjust!`。 它在提醒我们,这些代码是由 Alembic 自动生成的,我们应该检查它们,并且根据需要进行调整。 -:::caution 注意 +:::warning[注意] 迁移脚本冗长且繁琐,我们一般不会手写它们,而是由 Alembic 自动生成。 一般情况下,Alembic 足够智能,可以正确地生成迁移脚本。 但是,在复杂或有歧义的情况下,我们可能需要手动调整迁移脚本。 @@ -235,7 +235,7 @@ async def _(session: async_scoped_session, args: Message = CommandArg()): `async_scoped_session` 是一个有作用域限制的会话,作用域为当前事件、当前事件响应器。 会话产生的模型实例(例如此处的 `wea := await session.get(Weather, location)`)作用域与会话相同。 -:::caution 注意 +:::warning[注意] 此处提到的“会话”指的是 ORM 会话,而非 [NoneBot 会话](../../../appendices/session-control),两者的生命周期也是不同的(NoneBot 会话的生命周期中可能包含多个事件,不同的事件也会有不同的事件响应器)。 具体而言,就是不要将 ORM 会话和模型实例存储在 NoneBot 会话状态中: diff --git a/website/docs/best-practice/database/user.md b/website/docs/best-practice/database/user.md index 9bfc0ada..7eb27244 100644 --- a/website/docs/best-practice/database/user.md +++ b/website/docs/best-practice/database/user.md @@ -8,7 +8,7 @@ description: 用户指南 `nonebot-plugin-orm` 功能强大且复杂,使用上有一定难度。 不过,对于用户而言,只需要掌握部分功能即可。 -:::caution 注意 +:::warning[注意] 请注意区分插件的项目名(如:`nonebot-plugin-wordcloud`)和模块名(如:`nonebot_plugin_wordcloud`)。`nonebot-plugin-orm` 中统一使用插件模块名。参见 [插件命名规范](../../developer/plugin-publishing#插件命名规范)。 ::: @@ -152,7 +152,7 @@ SQLALCHEMY_ENGINE_OPTIONS='{ SQLALCHEMY_ECHO=true ``` -:::caution 注意 +:::warning[注意] 以上配置之间有覆盖关系,遵循特殊优先于一般的原则,具体为 [`sqlalchemy_database_url`](#sqlalchemy_database_url) > [`sqlalchemy_bind`](#sqlalchemy_bind) > [`sqlalchemy_echo`](#sqlalchemy_echo) > [`sqlalchemy_engine_options`](#sqlalchemy_engine_options)。 但覆盖顺序并非显而易见,出于清晰考虑,请只配置必要的选项。 ::: diff --git a/website/docs/best-practice/error-tracking.md b/website/docs/best-practice/error-tracking.md index a28a22d1..a43b56e8 100644 --- a/website/docs/best-practice/error-tracking.md +++ b/website/docs/best-practice/error-tracking.md @@ -27,7 +27,7 @@ nb plugin install nonebot-plugin-sentry ### 配置插件 -:::caution 注意 +:::warning[注意] 错误跟踪通常在生产环境中使用,因此开发环境中 `sentry_dsn` 留空即会停用插件。 ::: diff --git a/website/docs/best-practice/htmlkit-render.md b/website/docs/best-practice/htmlkit-render.md index 9c0b0690..0b636c99 100644 --- a/website/docs/best-practice/htmlkit-render.md +++ b/website/docs/best-practice/htmlkit-render.md @@ -30,7 +30,7 @@ nb plugin install nonebot-plugin-htmlkit - Linux x64 (非 Alpine 等 musl 系发行版) - Linux arm64 (非 Alpine 等 musl 系发行版) -:::caution 访问网络内容 +:::warning[访问网络内容] 如果需要访问网络资源(如 http(s) 网页内容),NoneBot 需要客户端型驱动器(Forward)。内置的驱动器有 `~httpx` 与 `~aiohttp`。 diff --git a/website/docs/best-practice/multi-adapter.mdx b/website/docs/best-practice/multi-adapter.mdx index 8d472b1e..41023cde 100644 --- a/website/docs/best-practice/multi-adapter.mdx +++ b/website/docs/best-practice/multi-adapter.mdx @@ -12,7 +12,7 @@ import TabItem from "@theme/TabItem"; 由于不同平台的事件与接口之间,存在着极大的差异性,NoneBot 通过[重载](../appendices/overload.md)的方式,使得插件可以在不同平台上正确响应。但为了减少跨平台的兼容性问题,我们应该尽可能的使用基类方法实现原生跨平台,而不是使用特定平台的方法。当基类方法无法满足需求时,我们可以使用依赖注入的方式,将特定平台的事件或机器人注入到事件处理函数中,实现针对特定平台的处理。 -:::tip 提示 +:::tip[提示] 如果需要在多平台上**使用**跨平台插件,首先应该根据[注册适配器](../advanced/adapter.md#注册适配器)一节,为机器人注册各平台对应的适配器。 ::: diff --git a/website/docs/best-practice/scheduler.md b/website/docs/best-practice/scheduler.md index 229b27ab..e4b287fa 100644 --- a/website/docs/best-practice/scheduler.md +++ b/website/docs/best-practice/scheduler.md @@ -58,7 +58,7 @@ scheduler.add_job( ) ``` -:::caution 注意 +:::warning[注意] 由于 APScheduler 的定时任务并不是**由事件响应器所触发的事件**,因此其任务函数无法同[事件处理函数](../tutorial/handler.mdx#事件处理函数)一样通过[依赖注入](../tutorial/event-data.mdx#认识依赖注入)获取上下文信息,也无法通过事件响应器对象的方法进行任何操作,因此我们需要使用[调用平台 API](../appendices/api-calling.mdx#调用平台-api)的方式来获取信息或收发消息。 相对于事件处理依赖而言,编写定时任务更像是编写普通的函数,需要我们自行获取信息以及发送信息,请**不要**将事件处理依赖的特殊语法用于定时任务! diff --git a/website/docs/best-practice/testing/README.mdx b/website/docs/best-practice/testing/README.mdx index 12853d96..aeadbafe 100644 --- a/website/docs/best-practice/testing/README.mdx +++ b/website/docs/best-practice/testing/README.mdx @@ -14,7 +14,7 @@ import TabItem from "@theme/TabItem"; 为了保证代码的正确运行,我们不仅需要对错误进行跟踪,还需要对代码进行正确性检验,也就是测试。NoneBot 提供了一个测试工具——NoneBug,它是一个 [pytest](https://docs.pytest.org/en/stable/) 插件,可以帮助我们便捷地进行单元测试。 -:::tip 提示 +:::tip[提示] 建议在阅读本文档前先阅读 [pytest 官方文档](https://docs.pytest.org/en/stable/)来了解 pytest 的相关术语和基本用法。 ::: diff --git a/website/docs/best-practice/testing/behavior.mdx b/website/docs/best-practice/testing/behavior.mdx index 37d55c13..7392e748 100644 --- a/website/docs/best-practice/testing/behavior.mdx +++ b/website/docs/best-practice/testing/behavior.mdx @@ -23,7 +23,7 @@ NoneBug 提供了六种定义 `Rule` 和 `Permission` 预期行为的方法: - `should_not_pass_permission` - `should_ignore_permission` -:::tip 提示 +:::tip[提示] 事件响应器类型的检查属于 `Permission` 的一部分,因此可以通过 `should_pass_permission` 和 `should_not_pass_permission` 方法来断言事件响应器类型的检查。 ::: diff --git a/website/docs/developer/adapter-writing.md b/website/docs/developer/adapter-writing.md index 133ab03b..0a4a3592 100644 --- a/website/docs/developer/adapter-writing.md +++ b/website/docs/developer/adapter-writing.md @@ -26,7 +26,7 @@ NoneBot 适配器项目通常以 `nonebot-adapter-{adapter-name}` 作为项目 └── 📜 README.md ``` -:::tip 提示 +:::tip[提示] 上述的项目结构仅作推荐,不做强制要求,保证实际可用性即可。 @@ -44,7 +44,7 @@ nb adapter create ## 组成部分 -:::tip 提示 +:::tip[提示] 本章节的代码中提到的 `Adapter`、`Bot`、`Event` 和 `Message` 等,均为下文中适配器所编写的类,而非 NoneBot 中的基类。 diff --git a/website/docs/developer/plugin-publishing.mdx b/website/docs/developer/plugin-publishing.mdx index 66f1188b..b4dc2834 100644 --- a/website/docs/developer/plugin-publishing.mdx +++ b/website/docs/developer/plugin-publishing.mdx @@ -10,13 +10,13 @@ import TabItem from "@theme/TabItem"; NoneBot 为开发者提供了分享插件的官方商店。本指南囊括**从创建项目到发布到 PyPI,最终提交商店审核**的全过程。 -:::warning 警告 +:::warning[警告] 如果你的插件只是满足自用需求,则完全可以选择**不发布插件**。发布插件**不是**使用插件的必要条件。 NoneBot 社区对于插件有一定质量要求,对于不符合要求的插件,社区成员将会要求修改,直至符合要求后才能通过审核;如果长期未更新修改,社区将会关闭当前请求,之后如需发布请重新提交发布插件请求。相应的要求会在本章节以下部分介绍。 ::: -:::tip 提示 +:::tip[提示] 本章节仅包含插件发布流程指导,插件开发请查阅前述章节。 ::: @@ -35,7 +35,7 @@ NoneBot 插件使用下述命名规范: ### 项目结构 -:::tip 提示 +:::tip[提示] 本段所述的项目结构仅作推荐,不做强制要求。 ::: @@ -58,7 +58,7 @@ NoneBot 插件使用下述命名规范: 为降低新手门槛,我们提供三条清晰、完整、可复制的发布路径。 -:::tip 提示 +:::tip[提示] 你只需选择一条与你习惯一致的路径,**完整跟随即可成功发布**。无需在不同工具间切换或猜测配置。 ::: @@ -94,7 +94,7 @@ NoneBot 生态目前有如下插件项目模板: 然后在本地克隆仓库,使用编辑器对以下内容进行**全局替换**: -:::tip 提示 +:::tip[提示] 此部分以“天气插件”为例,实际的替换内容应该根据你所创建的插件名称等相应调整。 ::: @@ -311,7 +311,7 @@ git push origin --tags 根据选用的构建系统,在项目的 `pyproject.toml` 中填入必要信息后进行构建与发布。 -:::tip 提示 +:::tip[提示] 不同构建工具的使用可能存在差别。本文仅以 [`pdm`](https://pdm-project.org/zh/latest/), [`poetry`](https://python-poetry.org/docs/), [`setuptools`](https://setuptools.pypa.io/en/latest/) 构建系统**本地构建与发布**为示例讲解,其余构建/管理工具等和自动化构建的用法请读者自行探索。 @@ -357,7 +357,7 @@ twine upload dist/* # 只发布先前的构建 -:::tip 提示 +:::tip[提示] 发布前建议自行测试构建包是否可用,避免遗漏代码文件或资源文件等问题。 ::: @@ -422,7 +422,7 @@ __plugin_meta__ = PluginMetadata( ) ``` -:::caution 注意 +:::warning[注意] `__plugin_meta__` 变量**必须**处于插件最外层(如 `__init__.py` 中),否则无法正常识别。 一般做法是在 `__init__.py` 中定义 `__plugin_meta__`。 @@ -549,7 +549,7 @@ weather_data_file: Path = store.get_plugin_data_file("resource-index.json") 插件发布 Issue 创建后,将会经过 **NoneFlow Bot** 的自动前置检查,以确保插件信息正确无误、插件能被正确加载。 -:::tip 提示 +:::tip[提示] 若插件检查未通过或信息有误,**不必**关闭当前 Issue。只需更新插件并上传到 PyPI/修改信息后勾选插件测试勾选框即可重新触发插件检查。 ::: diff --git a/website/docs/editor-support.md b/website/docs/editor-support.md index 9535aa89..4d0f6a93 100644 --- a/website/docs/editor-support.md +++ b/website/docs/editor-support.md @@ -51,7 +51,7 @@ description: 配置编辑器以获得最佳体验 如果您是高级用户,希望尝试 Pylance 的替代方案,或遇到 Pylance 在特定环境下的兼容性问题,可以考虑使用 BasedPyright。 -:::caution 提示 +:::warning[提示] 为避免 `Pylance` 和 `BasedPyright` 相互冲突导致配置混乱甚至异常,脚手架默认不允许在创建项目时同时配置这两者。 如果确实需要同时使用,请在创建项目时选择 Pylance/Pyright 并根据[相关文档](https://docs.basedpyright.com/latest/installation/ides/#vscode-vscodium)进行手动配置。 diff --git a/website/docs/quick-start.mdx b/website/docs/quick-start.mdx index 2dda48fb..0b7159bf 100644 --- a/website/docs/quick-start.mdx +++ b/website/docs/quick-start.mdx @@ -13,7 +13,7 @@ import Messenger from "@site/src/components/Messenger"; # 快速上手 -:::caution 前提条件 +:::warning[前提条件] - 请确保你的 Python 版本 >= 3.9 - **我们强烈建议使用虚拟环境进行开发**,如果没有使用虚拟环境,请确保已经卸载可能存在的 NoneBot v1!!! diff --git a/website/docs/tutorial/application.mdx b/website/docs/tutorial/application.mdx index 6cf79b90..b488f49f 100644 --- a/website/docs/tutorial/application.mdx +++ b/website/docs/tutorial/application.mdx @@ -15,7 +15,7 @@ import TabItem from "@theme/TabItem"; 在[快速上手](../quick-start.mdx)中,我们已经介绍了如何安装和使用 `nb-cli` 创建一个项目。在本章节中,我们将简要介绍如何在不使用 `nb-cli` 的方式创建一个机器人项目的**最小实例**并启动。如果你想要了解 NoneBot 的启动流程,也可以阅读本章节。 -:::caution 警告 +:::warning[警告] 我们十分不推荐直接创建机器人项目,请优先考虑使用 nb-cli 进行项目创建。 ::: @@ -102,7 +102,7 @@ COMMAND_SEP=["."] # 配置命令分割字符 入口文件( Entrypoint )顾名思义,是用来初始化并运行机器人的 Python 文件。入口文件需要完成框架的初始化、注册适配器、加载插件等工作。 -:::tip 提示 +:::tip[提示] 如果你使用 `nb-cli` 创建项目,入口文件不会被创建,该文件功能会被 `nb run` 命令代替。 ::: diff --git a/website/docs/tutorial/create-plugin.md b/website/docs/tutorial/create-plugin.md index 2f9b4fee..d5e61bb3 100644 --- a/website/docs/tutorial/create-plugin.md +++ b/website/docs/tutorial/create-plugin.md @@ -41,7 +41,7 @@ options: ## 创建插件 -:::caution 注意 +:::warning[注意] 如果在之前的[快速上手](../quick-start.mdx)章节中已经使用 `bootstrap` 模板创建了项目,那么你需要做出如下修改: 1. 在项目目录中创建一个两层文件夹 `awesome_bot/plugins` @@ -65,7 +65,7 @@ options: ::: -:::caution 注意 +:::warning[注意] 如果在之前的[创建项目](./application.mdx)章节中手动创建了相关文件,那么你需要做出如下修改: 1. 在项目目录中创建一个两层文件夹 `awesome_bot/plugins` @@ -113,7 +113,7 @@ $ nb plugin create ## 加载插件 -:::danger 警告 +:::danger[警告] 请勿在插件被加载前 `import` 插件模块,这会导致 NoneBot 无法将其转换为插件而出现意料之外的情况。 ::: @@ -148,7 +148,7 @@ nonebot.load_plugin("path.to.your.plugin") # 加载第三方插件 nonebot.load_plugin(Path("./path/to/your/plugin.py")) # 加载项目插件 ``` -:::caution 注意 +:::warning[注意] 请注意,本地插件的路径应该为相对机器人 **入口文件(通常为 bot.py)** 可导入的,例如在项目 `plugins` 目录下。 ::: @@ -160,7 +160,7 @@ nonebot.load_plugin(Path("./path/to/your/plugin.py")) # 加载项目插件 nonebot.load_plugins("src/plugins", "path/to/your/plugins") ``` -:::caution 注意 +:::warning[注意] 请注意,插件目录应该为相对机器人 **入口文件(通常为 bot.py)** 可导入的,例如在项目 `plugins` 目录下。 ::: @@ -187,7 +187,7 @@ nonebot.load_all_plugins(["path.to.your.plugin"], ["path/to/your/plugins"]) nonebot.load_from_json("plugin_config.json", encoding="utf-8") ``` -:::tip 提示 +:::tip[提示] 如果 JSON 配置文件中的字段无法满足你的需求,可以使用 [`load_all_plugins`](#load_all_plugins) 方法自行读取配置来加载插件。 ::: @@ -209,7 +209,7 @@ plugin_dirs = ["path/to/your/plugins"] nonebot.load_from_toml("plugin_config.toml", encoding="utf-8") ``` -:::tip 提示 +:::tip[提示] 如果 TOML 配置文件中的字段无法满足你的需求,可以使用 [`load_all_plugins`](#load_all_plugins) 方法自行读取配置来加载插件。 ::: diff --git a/website/docs/tutorial/event-data.mdx b/website/docs/tutorial/event-data.mdx index 5f8ccb54..3abafc8c 100644 --- a/website/docs/tutorial/event-data.mdx +++ b/website/docs/tutorial/event-data.mdx @@ -45,11 +45,11 @@ async def handle_function(args: Message = CommandArg()): 如上方示例所示,我们使用了 `args` 作为注入参数名,注入的内容为 `CommandArg()`,也就是**消息命令后跟随的内容**。在这个示例中,我们获得的参数会被检查是否有效,对无效参数则会结束事件。 -:::tip 提示 +:::tip[提示] 命令与参数之间可以不需要空格,`CommandArg()` 获取的信息为命令后跟随的内容并去除了头部空白符。例如:`/天气 上海` 消息的参数为 `上海`。 ::: -:::tip 提示 +:::tip[提示] `:=` 是 Python 3.8 引入的新语法 [Assignment Expressions](https://docs.python.org/zh-cn/3/reference/expressions.html#assignment-expressions),也称为海象表达式,可以在表达式中直接赋值。 ::: diff --git a/website/docs/tutorial/handler.mdx b/website/docs/tutorial/handler.mdx index 4f11de0d..56905740 100644 --- a/website/docs/tutorial/handler.mdx +++ b/website/docs/tutorial/handler.mdx @@ -68,7 +68,7 @@ async def handle_function(): 值得注意的是,在执行 `finish` 方法时,NoneBot 会在向机器人用户发送消息内容后抛出 `FinishedException` 异常来结束事件响应流程。也就是说,在 `finish` 被执行后,后续的程序是不会被执行的。如果你需要回复机器人用户消息但不想事件处理流程结束,可以使用注释的部分中展示的 `send` 方法。 -:::danger 警告 +:::danger[警告] 由于 `finish` 是通过抛出 `FinishedException` 异常来结束事件的,因此异常可能会被未加限制的 `try-except` 捕获,影响事件处理流程正确处理,导致无法正常结束此事件。请务必在异常捕获中指定错误类型或排除所有 [MatcherException](../api/exception.md#MatcherException) 类型的异常(如下所示),或将 `finish` 移出捕获范围进行使用。 ```python diff --git a/website/docs/tutorial/matcher.md b/website/docs/tutorial/matcher.md index 8d3bf392..20de895f 100644 --- a/website/docs/tutorial/matcher.md +++ b/website/docs/tutorial/matcher.md @@ -36,7 +36,7 @@ weather = on_command("天气") 这样,我们就获得一个名为 `weather` 的事件响应器了,这个事件响应器会对 `/天气` 开头的消息进行响应。 -:::tip 提示 +:::tip[提示] 如果一条消息中包含“@机器人”或以“机器人的昵称”开始,例如 `@bot /天气` 时,协议适配器会将 `event.is_tome()` 判断为 `True` ,同时也会自动去除 `@bot`,即事件响应器收到的信息内容为 `/天气`,方便进行命令匹配。 ::: @@ -53,6 +53,6 @@ weather = on_command("天气", rule=to_me(), aliases={"weather", "查天气"}, p 这样,我们就获得了一个可以响应 `天气`、`weather`、`查天气` 三个命令的响应规则,需要私聊或 `@bot` 时才会响应,优先级为 10(越小越优先),阻断事件向后续优先级传播的事件响应器了。这些内容的意义和使用方法将会在后续的章节中一一介绍。 -:::tip 提示 +:::tip[提示] 需要注意的是,不同的辅助函数有不同的可选参数,在使用之前可以参考[事件响应器进阶 - 基本辅助函数](../advanced/matcher.md#基本辅助函数)或 [API 文档](../api/plugin/on.md#on)。 ::: diff --git a/website/docs/tutorial/message.md b/website/docs/tutorial/message.md index 86989c49..7c8c89fa 100644 --- a/website/docs/tutorial/message.md +++ b/website/docs/tutorial/message.md @@ -26,7 +26,7 @@ options: 顾名思义,消息段 `MessageSegment` 是一段消息。由于消息序列的本质是由若干消息段所组成的序列,消息段可以被认为是构成消息序列的最小单位。简单来说,消息序列类似于一个自然段,而消息段则是组成自然段的一句话。同时,作为特殊消息载体的存在,绝大多数的平台都有着**独特的消息类型**,这些独特的内容均需要由对应的**协议适配器**所提供,以适应不同平台中的消息模式。**这也意味着,你需要导入对应的协议适配器中的消息序列和消息段后才能使用其特殊的工厂方法。** -:::caution 注意 +:::warning[注意] 消息段的类型是由协议适配器提供的,因此你需要参考协议适配器的文档并导入对应的消息段后才能使用其特殊的消息类型。 在上一节的[使用依赖注入](./event-data.mdx#使用依赖注入)中,我们导入的为 `nonebot.adapters.Message` 抽象基类,因此我们无法使用平台特有的消息类型。仅能使用 `str` 作为纯文本消息回复。 @@ -34,7 +34,7 @@ options: ## 使用消息序列 -:::caution 注意 +:::warning[注意] 在以下的示例中,为了更好的理解多种类型的消息组成方式,我们将使用 `Console` 协议适配器来演示消息序列的使用方法。在实际使用中,你需要确保你使用的**消息序列类型**与你所要发送的**平台类型**一致。 ::: @@ -296,7 +296,7 @@ msg == Message( 如果 `Message.template` 构建消息模板,那么消息模板将采用消息序列形式的格式化,此时的消息将会是平台特定的: -:::caution 注意 +:::warning[注意] 使用 `Message.template` 构建消息模板时,应注意消息序列为平台适配器提供的类型,不能使用 `nonebot.adapters.Message` 基类作为模板构建。使用基类构建模板与使用 `str` 构建模板的效果是一样的,因此请使用上述的 `MessageTemplate` 类直接构建模板。: ::: @@ -336,7 +336,7 @@ Message( ) ``` -:::caution 注意 +:::warning[注意] 只有消息序列中的文本类型消息段才能被格式化,其他类型的消息段将会原样添加。 ::: diff --git a/website/docs/tutorial/store.mdx b/website/docs/tutorial/store.mdx index d21ae1f3..ab33f042 100644 --- a/website/docs/tutorial/store.mdx +++ b/website/docs/tutorial/store.mdx @@ -14,7 +14,7 @@ import Tabs from "@theme/Tabs"; import TabItem from "@theme/TabItem"; import Asciinema from "@site/src/components/Asciinema"; -:::tip 提示 +:::tip[提示] 如果你暂时没有获取商店内容的需求,可以跳过本章节。 diff --git a/website/docusaurus.config.ts b/website/docusaurus.config.ts index f4cef2e2..b0a871c3 100644 --- a/website/docusaurus.config.ts +++ b/website/docusaurus.config.ts @@ -249,10 +249,9 @@ export default async function createConfigAsync() { presets: [ [ "@nullbot/docusaurus-preset-nonepress", - /** @type {import('@nullbot/docusaurus-preset-nonepress').Options} */ { docs: { - sidebarPath: require.resolve("./sidebars.js"), + sidebarPath: require.resolve("./sidebars.ts"), // Please change this to your repo. editUrl: "https://github.com/nonebot/nonebot2/edit/master/website/", showLastUpdateAuthor: true, @@ -293,7 +292,7 @@ export default async function createConfigAsync() { gtag: { trackingID: "G-MRS1GMZG0F", }, - }, + } satisfies Preset.Options, ], ], diff --git a/website/package.json b/website/package.json index 6477423e..11e53a67 100644 --- a/website/package.json +++ b/website/package.json @@ -22,15 +22,13 @@ "serve": "docusaurus serve", "write-translations": "docusaurus write-translations", "write-heading-ids": "docusaurus write-heading-ids", - "typecheck": "tsc", - "prettier": "prettier --config ../.prettierrc --write ." + "typecheck": "tsc" }, "dependencies": { "@docusaurus/core": "3.10.2", - "@docusaurus/eslint-plugin": "3.10.2", "@mdx-js/react": "^3.0.0", - "@nullbot/docusaurus-plugin-changelog": "^3.7.0", - "@nullbot/docusaurus-preset-nonepress": "^3.7.0", + "@nullbot/docusaurus-plugin-changelog": "^3.8.0", + "@nullbot/docusaurus-preset-nonepress": "^3.8.0", "clsx": "^2.0.0", "copy-text-to-clipboard": "^3.2.0", "prism-react-renderer": "^2.3.0", @@ -42,7 +40,7 @@ "devDependencies": { "@docusaurus/faster": "3.10.2", "@docusaurus/module-type-aliases": "3.10.2", - "@nullbot/docusaurus-tsconfig": "^3.7.0", + "@nullbot/docusaurus-tsconfig": "^3.8.0", "@types/react-color": "^3.0.10", "asciinema-player": "^3.5.0", "typescript": "~5.7.2" diff --git a/website/sidebars.ts b/website/sidebars.ts index 3a7f5da1..405a5d64 100644 --- a/website/sidebars.ts +++ b/website/sidebars.ts @@ -148,7 +148,7 @@ const sidebars: SidebarsConfig = { type: "link", label: chunk[0]!.title, href: `/changelog/${index > 0 ? index.toString() : ""}`, - }) + }), ), }, ], diff --git a/website/src/components/Asciinema/index.tsx b/website/src/components/Asciinema/index.tsx index cadd4840..42bca482 100644 --- a/website/src/components/Asciinema/index.tsx +++ b/website/src/components/Asciinema/index.tsx @@ -20,7 +20,6 @@ export default function Asciinema(props: Props): React.ReactNode { } > {() => { - // eslint-disable-next-line @typescript-eslint/no-var-requires const AsciinemaContainer = require("./container.tsx").default; return ; }} diff --git a/website/src/components/Form/Adapter.tsx b/website/src/components/Form/Adapter.tsx index c5b32338..7eedf26e 100644 --- a/website/src/components/Form/Adapter.tsx +++ b/website/src/components/Form/Adapter.tsx @@ -38,7 +38,7 @@ export default function AdapterForm(): React.ReactNode { template: "adapter_publish.yml", title: `Adapter: ${result.name}`, ...result, - })}` + })}`, ); }; diff --git a/website/src/components/Form/Bot.tsx b/website/src/components/Form/Bot.tsx index 6ba4780b..62084220 100644 --- a/website/src/components/Form/Bot.tsx +++ b/website/src/components/Form/Bot.tsx @@ -32,7 +32,7 @@ export default function BotForm(): React.ReactNode { template: "bot_publish.yml", title: `Bot: ${result.name}`, ...result, - })}` + })}`, ); }; diff --git a/website/src/components/Form/Items/Tag/index.tsx b/website/src/components/Form/Items/Tag/index.tsx index 7dfd7c09..a8076ab3 100644 --- a/website/src/components/Form/Items/Tag/index.tsx +++ b/website/src/components/Form/Items/Tag/index.tsx @@ -27,8 +27,8 @@ export default function TagFormItem({ new Set( allowTags .filter((tag) => tag.label.toLocaleLowerCase().includes(label)) - .map((e) => e.label) - ) + .map((e) => e.label), + ), ).slice(0, 5); const validateTag = () => { diff --git a/website/src/components/Form/Items/Tag/styles.css b/website/src/components/Form/Items/Tag/styles.css index a6b66cee..24f2e297 100644 --- a/website/src/components/Form/Items/Tag/styles.css +++ b/website/src/components/Form/Items/Tag/styles.css @@ -29,6 +29,7 @@ .fix-input-color { @apply !text-base-content !bg-base-100; + input { @apply !text-base-content !bg-base-100; } diff --git a/website/src/components/Form/Plugin.tsx b/website/src/components/Form/Plugin.tsx index c5e531f3..bb1125a5 100644 --- a/website/src/components/Form/Plugin.tsx +++ b/website/src/components/Form/Plugin.tsx @@ -24,7 +24,7 @@ export default function PluginForm(): React.ReactNode { template: "plugin_publish.yml", title: `Plugin: ${result.pypi}`, ...result, - })}` + })}`, ); }; diff --git a/website/src/components/Form/index.tsx b/website/src/components/Form/index.tsx index 8d56e27f..5bfe7ed3 100644 --- a/website/src/components/Form/index.tsx +++ b/website/src/components/Form/index.tsx @@ -49,8 +49,8 @@ export function Form({ data .filter((item) => item.tags.length > 0) .map((ele) => ele.tags) - .flat() - ) + .flat(), + ), ) .catch((e) => { console.error(e); @@ -63,7 +63,7 @@ export function Form({ const handleNextStep = () => { const currentStepNames = formItems[currentStep].items.map( - (item) => item.name + (item) => item.name, ); if (currentStepNames.every((name) => result[name])) { setCurrentStep(currentStep + 1); diff --git a/website/src/components/Messenger/index.tsx b/website/src/components/Messenger/index.tsx index 1a52c1c4..f0297a30 100644 --- a/website/src/components/Messenger/index.tsx +++ b/website/src/components/Messenger/index.tsx @@ -37,7 +37,7 @@ function MessageBox({
{isRight ? ( @@ -50,7 +50,7 @@ function MessageBox({
").replace(/ /g, " "), diff --git a/website/src/components/Paginate/index.tsx b/website/src/components/Paginate/index.tsx index 7049c766..8195db7b 100644 --- a/website/src/components/Paginate/index.tsx +++ b/website/src/components/Paginate/index.tsx @@ -26,7 +26,7 @@ export type Props = Pick< export default function Paginate({ className, totalPages, - currentPage, + currentPage: currentPageProp, setPreviousPage, setNextPage, setPage, @@ -67,7 +67,7 @@ export default function Paginate({ const even = MAX_LENGTH % 2 === 0 ? 1 : 0; const left = Math.floor(MAX_LENGTH / 2); const right = totalPages - left + even + 1; - currentPage += 1; + const currentPage = currentPageProp + 1; if (totalPages <= MAX_LENGTH) { pages.push(...range(1, totalPages)); @@ -110,7 +110,7 @@ export default function Paginate({ className={clsx( "paginate-button", typeof page !== "number" && "ellipsis", - currentPage === page && "active" + currentPage === page && "active", )} onClick={() => typeof page === "number" && diff --git a/website/src/components/Resource/Avatar/index.tsx b/website/src/components/Resource/Avatar/index.tsx index fc8243af..3b752a5c 100644 --- a/website/src/components/Resource/Avatar/index.tsx +++ b/website/src/components/Resource/Avatar/index.tsx @@ -21,7 +21,7 @@ export default function Avatar({ authorLink, authorAvatar, className }: Props) {
)} @@ -31,7 +31,7 @@ export default function Avatar({ authorLink, authorAvatar, className }: Props) { className={clsx( "w-full h-full rounded-full object-cover", "transition-opacity duration-300", - loaded ? "opacity-100" : "opacity-0" + loaded ? "opacity-100" : "opacity-0", )} alt="Avatar" /> diff --git a/website/src/components/Resource/Card/index.tsx b/website/src/components/Resource/Card/index.tsx index 0069af9e..3db245a6 100644 --- a/website/src/components/Resource/Card/index.tsx +++ b/website/src/components/Resource/Card/index.tsx @@ -28,7 +28,7 @@ export default function ResourceCard({ className, }: Props): React.ReactNode { const isGithub = /^https:\/\/github.com\/[^/]+\/[^/]+/.test( - resource.homepage + resource.homepage, ); const isPlugin = resource.resourceType === "plugin"; diff --git a/website/src/components/Resource/DetailCard/index.tsx b/website/src/components/Resource/DetailCard/index.tsx index f860a384..804c5a1d 100644 --- a/website/src/components/Resource/DetailCard/index.tsx +++ b/website/src/components/Resource/DetailCard/index.tsx @@ -180,7 +180,7 @@ export default function ResourceDetailCard({ resource }: Props) { `${ pypiData.releases[pypiData.info.version].reduce( (acc, curr) => acc + curr.size, - 0 + 0, ) / 1000 }K`) || "无"} diff --git a/website/src/components/Store/Content/Adapter.tsx b/website/src/components/Store/Content/Adapter.tsx index 404e96a5..b944d06b 100644 --- a/website/src/components/Store/Content/Adapter.tsx +++ b/website/src/components/Store/Content/Adapter.tsx @@ -88,14 +88,14 @@ export default function AdapterPage(): React.ReactNode { (tag: string) => { addFilter(tagFilter(tag)); }, - [addFilter] + [addFilter], ); const onCardAuthorClick = useCallback( (author: string) => { addFilter(authorFilter(author)); }, - [addFilter] + [addFilter], ); return ( diff --git a/website/src/components/Store/Content/Bot.tsx b/website/src/components/Store/Content/Bot.tsx index ecce12ae..ff94084b 100644 --- a/website/src/components/Store/Content/Bot.tsx +++ b/website/src/components/Store/Content/Bot.tsx @@ -80,14 +80,14 @@ export default function PluginPage(): React.ReactNode { (tag: string) => { addFilter(tagFilter(tag)); }, - [addFilter] + [addFilter], ); const onAuthorClick = useCallback( (author: string) => { addFilter(authorFilter(author)); }, - [addFilter] + [addFilter], ); return ( diff --git a/website/src/components/Store/Content/Driver.tsx b/website/src/components/Store/Content/Driver.tsx index 42f4517f..02e95692 100644 --- a/website/src/components/Store/Content/Driver.tsx +++ b/website/src/components/Store/Content/Driver.tsx @@ -71,14 +71,14 @@ export default function DriverPage(): React.ReactNode { (tag: string) => { addFilter(tagFilter(tag)); }, - [addFilter] + [addFilter], ); const onAuthorClick = useCallback( (author: string) => { addFilter(authorFilter(author)); }, - [addFilter] + [addFilter], ); return ( diff --git a/website/src/components/Store/Content/Plugin.tsx b/website/src/components/Store/Content/Plugin.tsx index 52d9f242..72986e46 100644 --- a/website/src/components/Store/Content/Plugin.tsx +++ b/website/src/components/Store/Content/Plugin.tsx @@ -50,7 +50,7 @@ export default function PluginPage(): React.ReactNode { active: sortMode === SortMode.UpdateDesc, onClick: () => { setSortMode( - sortMode === SortMode.Default ? SortMode.UpdateDesc : SortMode.Default + sortMode === SortMode.Default ? SortMode.UpdateDesc : SortMode.Default, ); }, }; @@ -58,7 +58,7 @@ export default function PluginPage(): React.ReactNode { const getSortedPlugins = (plugins: Plugin[]): Plugin[] => { if (sortMode === SortMode.UpdateDesc) { return [...plugins].sort( - (a, b) => new Date(b.time).getTime() - new Date(a.time).getTime() + (a, b) => new Date(b.time).getTime() - new Date(a.time).getTime(), ); } return plugins; @@ -124,14 +124,14 @@ export default function PluginPage(): React.ReactNode { (tag: string) => { addFilter(tagFilter(tag)); }, - [addFilter] + [addFilter], ); const onCardAuthorClick = useCallback( (author: string) => { addFilter(authorFilter(author)); }, - [addFilter] + [addFilter], ); return ( diff --git a/website/src/components/Store/Layout.tsx b/website/src/components/Store/Layout.tsx index 60a1a901..f1020f21 100644 --- a/website/src/components/Store/Layout.tsx +++ b/website/src/components/Store/Layout.tsx @@ -22,7 +22,7 @@ type Props = { function StorePage({ title, children }: Props): React.ReactNode { const sidebarItems = useVersionedSidebar( useDocsVersionCandidates()[0].name, - SIDEBAR_ID + SIDEBAR_ID, )!; return ( diff --git a/website/src/components/Store/Toolbar.tsx b/website/src/components/Store/Toolbar.tsx index 19bb9583..b3467d2f 100644 --- a/website/src/components/Store/Toolbar.tsx +++ b/website/src/components/Store/Toolbar.tsx @@ -125,7 +125,7 @@ export default function StoreToolbar({