diff --git a/.eslintrc.js b/.eslintrc.js index b9d2a257..74614599 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -1,3 +1,10 @@ +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: { @@ -6,80 +13,391 @@ module.exports = { node: true, }, parser: "@typescript-eslint/parser", - parserOptions: { - tsconfigRootDir: __dirname, - project: ["./tsconfig.json", "./website/tsconfig.json"], - }, + parserOptions: {}, globals: { JSX: true, }, extends: [ "eslint:recommended", - "plugin:react/recommended", "plugin:react-hooks/recommended", + "airbnb", "plugin:@typescript-eslint/recommended", - "plugin:import/recommended", + // 'plugin:@typescript-eslint/recommended-requiring-type-checking', + // 'plugin:@typescript-eslint/strict', "plugin:regexp/recommended", - "plugin:prettier/recommended", + "prettier", + "plugin:@docusaurus/all", ], settings: { "import/resolver": { node: { extensions: [".js", ".jsx", ".ts", ".tsx"], }, - typescript: true, - }, - react: { - version: "detect", }, }, - overrides: [ - { - files: ["*.ts", "*.tsx"], - rules: { - "import/no-unresolved": "off", - }, - }, - { - files: ["*.js", "*.cjs"], - rules: { - "@typescript-eslint/no-var-requires": "off", - }, - }, - ], - plugins: ["@typescript-eslint"], + reportUnusedDisableDirectives: true, + plugins: ["react-hooks", "@typescript-eslint", "regexp", "@docusaurus"], rules: { - "linebreak-style": ["error", "unix"], - quotes: ["error", "double", { avoidEscape: true }], - semi: ["error", "always"], - "@typescript-eslint/no-non-null-assertion": "off", + "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": [ - "error", + WARNING, { groups: [ "builtin", "external", "internal", - "parent", - "sibling", - "index", + ["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: [], - "newlines-between": "always", - alphabetize: { - order: "asc", - }, + // 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/package.json b/package.json index 4f3b98ee..bc1bab28 100644 --- a/package.json +++ b/package.json @@ -21,16 +21,15 @@ "pyright": "pyright" }, "devDependencies": { - "@typescript-eslint/eslint-plugin": "^6.6.0", - "@typescript-eslint/parser": "^6.6.0", + "@typescript-eslint/eslint-plugin": "^5.62.0", + "@typescript-eslint/parser": "^5.62.0", "cross-env": "^7.0.3", "eslint": "^8.48.0", - "eslint-config-prettier": "^9.0.0", - "eslint-import-resolver-typescript": "^3.6.0", - "eslint-plugin-import": "^2.28.1", + "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-prettier": "^5.0.0", - "eslint-plugin-react": "^7.33.2", + "eslint-plugin-react": "^7.32.2", "eslint-plugin-react-hooks": "^4.6.0", "eslint-plugin-regexp": "^1.15.0", "prettier": "^3.0.3", diff --git a/website/docusaurus.config.ts b/website/docusaurus.config.ts index 77f340fc..d051cd74 100644 --- a/website/docusaurus.config.ts +++ b/website/docusaurus.config.ts @@ -1,7 +1,8 @@ +import { themes } from "prism-react-renderer"; + import type { Config } from "@docusaurus/types"; import type { Options as ChangelogOptions } from "@nullbot/docusaurus-plugin-changelog"; import type * as Preset from "@nullbot/docusaurus-preset-nonepress"; -import { themes } from "prism-react-renderer"; // color mode config const colorMode: Preset.ThemeConfig["colorMode"] = { diff --git a/website/package.json b/website/package.json index 8a3ca182..24c2b1e4 100644 --- a/website/package.json +++ b/website/package.json @@ -27,6 +27,7 @@ }, "dependencies": { "@docusaurus/core": "^3.7.0", + "@docusaurus/eslint-plugin": "3.7.0", "@mdx-js/react": "^3.0.0", "@nullbot/docusaurus-plugin-changelog": "^3.0.0", "@nullbot/docusaurus-preset-nonepress": "^3.0.0", diff --git a/website/sidebars.ts b/website/sidebars.ts index aa8f23a9..3a7f5da1 100644 --- a/website/sidebars.ts +++ b/website/sidebars.ts @@ -10,9 +10,10 @@ */ import path from "path"; -import type { SidebarsConfig } from "@docusaurus/plugin-content-docs"; import { getChangelogItemsSync } from "@nullbot/docusaurus-plugin-changelog"; +import type { SidebarsConfig } from "@docusaurus/plugin-content-docs"; + const changelogPath = path.join(__dirname, "src/changelog/changelog.md"); const changelogItems = getChangelogItemsSync(changelogPath, 10); diff --git a/website/src/components/Asciinema/container.tsx b/website/src/components/Asciinema/container.tsx index 602b3d46..5205f1c6 100644 --- a/website/src/components/Asciinema/container.tsx +++ b/website/src/components/Asciinema/container.tsx @@ -32,5 +32,5 @@ export default function AsciinemaContainer({ AsciinemaPlayer.create(url, ref.current, options); }, [url, options]); - return
; + return
; } diff --git a/website/src/components/Asciinema/index.tsx b/website/src/components/Asciinema/index.tsx index 48f486c3..cadd4840 100644 --- a/website/src/components/Asciinema/index.tsx +++ b/website/src/components/Asciinema/index.tsx @@ -1,9 +1,11 @@ import React from "react"; import BrowserOnly from "@docusaurus/BrowserOnly"; + import "asciinema-player/dist/bundle/asciinema-player.css"; import type { Props } from "./container"; + import "./styles.css"; export type { Props } from "./container"; diff --git a/website/src/components/Form/Items/Tag/index.tsx b/website/src/components/Form/Items/Tag/index.tsx index 96adf31c..7dfd7c09 100644 --- a/website/src/components/Form/Items/Tag/index.tsx +++ b/website/src/components/Form/Items/Tag/index.tsx @@ -8,7 +8,8 @@ import { ChromePicker, type ColorResult } from "react-color"; import "./styles.css"; import TagComponent from "@/components/Tag"; -import { Tag as TagType } from "@/types/tag"; + +import type { Tag as TagType } from "@/types/tag"; export type Props = { allowTags: TagType[]; @@ -103,7 +104,7 @@ export default function TagFormItem({
diff --git a/website/src/components/Form/index.tsx b/website/src/components/Form/index.tsx index af53f687..4308f4f0 100644 --- a/website/src/components/Form/index.tsx +++ b/website/src/components/Form/index.tsx @@ -4,10 +4,13 @@ import clsx from "clsx"; import "./styles.css"; + +import type { Resource } from "@/libs/store"; +import { fetchRegistryData } from "@/libs/store"; + import TagFormItem from "./Items/Tag"; -import { fetchRegistryData, Resource } from "@/libs/store"; -import { Tag as TagType } from "@/types/tag"; +import type { Tag as TagType } from "@/types/tag"; export type FormItemData = { type: string; @@ -62,8 +65,8 @@ export function Form({ (item) => item.name ); if (currentStepNames.every((name) => result[name])) - setCurrentStep(currentStep + 1); - else return; + {setCurrentStep(currentStep + 1);} + else {} }; const onPrev = () => currentStep > 0 && setCurrentStep(currentStep - 1); const onNext = () => diff --git a/website/src/components/Home/index.tsx b/website/src/components/Home/index.tsx index 19f38865..3a7131e2 100644 --- a/website/src/components/Home/index.tsx +++ b/website/src/components/Home/index.tsx @@ -2,6 +2,7 @@ import React from "react"; import HomeFeatures from "./Feature"; import HomeHero from "./Hero"; + import "./styles.css"; export default function HomeContent(): React.ReactNode { diff --git a/website/src/components/Messenger/index.tsx b/website/src/components/Messenger/index.tsx index bdcff435..f25bd821 100644 --- a/website/src/components/Messenger/index.tsx +++ b/website/src/components/Messenger/index.tsx @@ -7,6 +7,7 @@ import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { useNonepressThemeConfig } from "@nullbot/docusaurus-theme-nonepress/client"; import ThemedImage from "@theme/ThemedImage"; + import "./styles.css"; export type Message = { @@ -54,7 +55,7 @@ function MessageBox({ dangerouslySetInnerHTML={{ __html: msg.replace(/\n/g, "
").replace(/ /g, " "), }} - > + /> ); } diff --git a/website/src/components/Paginate/index.tsx b/website/src/components/Paginate/index.tsx index 292b0015..7049c766 100644 --- a/website/src/components/Paginate/index.tsx +++ b/website/src/components/Paginate/index.tsx @@ -3,6 +3,7 @@ import React, { useCallback } from "react"; import clsx from "clsx"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; + import type { usePagination } from "react-use-pagination"; import "./styles.css"; @@ -66,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 = currentPage + 1; + currentPage += 1; if (totalPages <= MAX_LENGTH) { pages.push(...range(1, totalPages)); diff --git a/website/src/components/Resource/Avatar/index.tsx b/website/src/components/Resource/Avatar/index.tsx new file mode 100644 index 00000000..fc8243af --- /dev/null +++ b/website/src/components/Resource/Avatar/index.tsx @@ -0,0 +1,43 @@ +import { useState } from "react"; +import Link from "@docusaurus/Link"; +import clsx from "clsx"; + +interface Props { + className?: string; + authorLink: string; + authorAvatar: string; +} + +export default function Avatar({ authorLink, authorAvatar, className }: Props) { + const [loaded, setLoaded] = useState(false); + const onLoad = () => setLoaded(true); + + return ( +
+
+ +
+ {!loaded && ( +
+ )} + Avatar +
+ +
+
+ ); +} diff --git a/website/src/components/Resource/Card/index.tsx b/website/src/components/Resource/Card/index.tsx index e5ba5075..0069af9e 100644 --- a/website/src/components/Resource/Card/index.tsx +++ b/website/src/components/Resource/Card/index.tsx @@ -5,9 +5,11 @@ import clsx from "clsx"; import Link from "@docusaurus/Link"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; +import Avatar from "@/components/Resource/Avatar"; import Tag from "@/components/Resource/Tag"; import ValidStatus from "@/components/Resource/ValidStatus"; import type { Resource } from "@/libs/store"; + import "./styles.css"; export type Props = { @@ -73,7 +75,7 @@ export default function ResourceCard({ /> ))}
-
+
@@ -99,13 +101,12 @@ export default function ResourceCard({ )}
-
-
- - - -
-
+ { const fetchingTasks: Promise[] = []; - if (resource.resourceType === "bot" || resource.resourceType === "driver") + if (resource.resourceType === "bot" || resource.resourceType === "driver") { return; + } - if (resource.project_link) + if (resource.project_link) { fetchingTasks.push(fetchPypiProject(resource.project_link)); + } Promise.all(fetchingTasks); }, [resource]); @@ -115,10 +117,11 @@ export default function ResourceDetailCard({ resource }: Props) { return ( <>
-
@@ -152,7 +155,7 @@ export default function ResourceDetailCard({ resource }: Props) {
-
+
{resource.desc} diff --git a/website/src/components/Resource/Tag/index.tsx b/website/src/components/Resource/Tag/index.tsx index 14196986..67c78a57 100644 --- a/website/src/components/Resource/Tag/index.tsx +++ b/website/src/components/Resource/Tag/index.tsx @@ -3,7 +3,10 @@ import React from "react"; import clsx from "clsx"; import { pickTextColor } from "@/libs/color"; + import type { Tag } from "@/types/tag"; + + import "./styles.css"; export type Props = Tag & { diff --git a/website/src/components/Resource/ValidStatus/index.tsx b/website/src/components/Resource/ValidStatus/index.tsx index 52149a66..5aee4a3a 100644 --- a/website/src/components/Resource/ValidStatus/index.tsx +++ b/website/src/components/Resource/ValidStatus/index.tsx @@ -2,17 +2,18 @@ import React from "react"; import clsx from "clsx"; -import type { IconName } from "@fortawesome/fontawesome-common-types"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; -import { Resource } from "@/libs/store"; +import type { Resource } from "@/libs/store"; import { ValidStatus } from "@/libs/valid"; +import type { IconName } from "@fortawesome/fontawesome-common-types"; + export const getValidStatus = (resource: Resource) => { switch (resource.resourceType) { case "plugin": - if (resource.skip_test) return ValidStatus.SKIP; - if (resource.valid) return ValidStatus.VALID; + if (resource.skip_test) {return ValidStatus.SKIP;} + if (resource.valid) {return ValidStatus.VALID;} return ValidStatus.INVALID; default: return ValidStatus.MISSING; diff --git a/website/src/components/Searcher/index.tsx b/website/src/components/Searcher/index.tsx index ab23225c..d74a06af 100644 --- a/website/src/components/Searcher/index.tsx +++ b/website/src/components/Searcher/index.tsx @@ -4,6 +4,7 @@ import clsx from "clsx"; import { translate } from "@docusaurus/Translate"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; + import "./styles.css"; export type Props = { diff --git a/website/src/components/Store/Content/Adapter.tsx b/website/src/components/Store/Content/Adapter.tsx index 3ec6ff2d..404e96a5 100644 --- a/website/src/components/Store/Content/Adapter.tsx +++ b/website/src/components/Store/Content/Adapter.tsx @@ -4,7 +4,6 @@ import Translate from "@docusaurus/Translate"; import { usePagination } from "react-use-pagination"; import Admonition from "@theme/Admonition"; - import AdapterForm from "@/components/Form/Adapter"; import Modal from "@/components/Modal"; import Paginate from "@/components/Paginate"; @@ -16,6 +15,7 @@ import { authorFilter, tagFilter } from "@/libs/filter"; import { useSearchControl } from "@/libs/search"; import { fetchRegistryData, loadFailedTitle } from "@/libs/store"; import { useToolbar } from "@/libs/toolbar"; + import type { Adapter } from "@/types/adapter"; export default function AdapterPage(): React.ReactNode { @@ -146,7 +146,7 @@ export default function AdapterPage(): React.ReactNode { ) : loading ? (

- +

) : (
diff --git a/website/src/components/Store/Content/Bot.tsx b/website/src/components/Store/Content/Bot.tsx index 72899ccf..ecce12ae 100644 --- a/website/src/components/Store/Content/Bot.tsx +++ b/website/src/components/Store/Content/Bot.tsx @@ -4,7 +4,6 @@ import Translate from "@docusaurus/Translate"; import { usePagination } from "react-use-pagination"; import Admonition from "@theme/Admonition"; - import BotForm from "@/components/Form/Bot"; import Modal from "@/components/Modal"; import Paginate from "@/components/Paginate"; @@ -15,6 +14,7 @@ import { authorFilter, tagFilter } from "@/libs/filter"; import { useSearchControl } from "@/libs/search"; import { fetchRegistryData, loadFailedTitle } from "@/libs/store"; import { useToolbar } from "@/libs/toolbar"; + import type { Bot } from "@/types/bot"; export default function PluginPage(): React.ReactNode { @@ -138,7 +138,7 @@ export default function PluginPage(): React.ReactNode { ) : loading ? (

- +

) : (
diff --git a/website/src/components/Store/Content/Driver.tsx b/website/src/components/Store/Content/Driver.tsx index 90d394d5..42f4517f 100644 --- a/website/src/components/Store/Content/Driver.tsx +++ b/website/src/components/Store/Content/Driver.tsx @@ -4,7 +4,6 @@ import Translate from "@docusaurus/Translate"; import { usePagination } from "react-use-pagination"; import Admonition from "@theme/Admonition"; - import Modal from "@/components/Modal"; import Paginate from "@/components/Paginate"; import ResourceCard from "@/components/Resource/Card"; @@ -13,6 +12,7 @@ import Searcher from "@/components/Searcher"; import { authorFilter, tagFilter } from "@/libs/filter"; import { useSearchControl } from "@/libs/search"; import { fetchRegistryData, loadFailedTitle } from "@/libs/store"; + import type { Driver } from "@/types/driver"; export default function DriverPage(): React.ReactNode { @@ -123,7 +123,7 @@ export default function DriverPage(): React.ReactNode { ) : loading ? (

- +

) : (
diff --git a/website/src/components/Store/Content/Plugin.tsx b/website/src/components/Store/Content/Plugin.tsx index ba53114c..52d9f242 100644 --- a/website/src/components/Store/Content/Plugin.tsx +++ b/website/src/components/Store/Content/Plugin.tsx @@ -4,7 +4,6 @@ import Translate, { translate } from "@docusaurus/Translate"; import { usePagination } from "react-use-pagination"; import Admonition from "@theme/Admonition"; - import PluginForm from "@/components/Form/Plugin"; import Modal from "@/components/Modal"; import Paginate from "@/components/Paginate"; @@ -20,6 +19,7 @@ import { useSearchControl } from "@/libs/search"; import { SortMode } from "@/libs/sorter"; import { fetchRegistryData, loadFailedTitle } from "@/libs/store"; import { useToolbar } from "@/libs/toolbar"; + import type { Plugin } from "@/types/plugin"; export default function PluginPage(): React.ReactNode { @@ -149,7 +149,7 @@ export default function PluginPage(): React.ReactNode { {"当前共有 {filteredPluginCount} / {pluginCount} 个插件"} @@ -180,7 +180,7 @@ export default function PluginPage(): React.ReactNode { ) : loading ? (

- +

) : (
diff --git a/website/src/components/Store/Toolbar.tsx b/website/src/components/Store/Toolbar.tsx index 37cc8c1a..a1fce1a1 100644 --- a/website/src/components/Store/Toolbar.tsx +++ b/website/src/components/Store/Toolbar.tsx @@ -2,9 +2,10 @@ import React, { useState } from "react"; import clsx from "clsx"; -import type { IconProp } from "@fortawesome/fontawesome-svg-core"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; +import type { IconProp } from "@fortawesome/fontawesome-svg-core"; + export type Filter = { label: string; icon: IconProp; diff --git a/website/src/components/Tag/index.tsx b/website/src/components/Tag/index.tsx index 83f5a7b1..ba0b503f 100644 --- a/website/src/components/Tag/index.tsx +++ b/website/src/components/Tag/index.tsx @@ -5,7 +5,8 @@ import clsx from "clsx"; import "./styles.css"; import { pickTextColor } from "@/libs/color"; -import { Tag as TagType } from "@/types/tag"; + +import type { Tag as TagType } from "@/types/tag"; export default function Tag({ label, diff --git a/website/src/libs/filter.ts b/website/src/libs/filter.ts index 7197bcbc..aea3db43 100644 --- a/website/src/libs/filter.ts +++ b/website/src/libs/filter.ts @@ -2,10 +2,12 @@ import { useCallback, useState } from "react"; import { translate } from "@docusaurus/Translate"; -import type { Resource } from "./store"; +import { getValidStatus } from "@/components/Resource/ValidStatus"; + import { ValidStatus } from "./valid"; -import { getValidStatus } from "@/components/Resource/ValidStatus"; +import type { Resource } from "./store"; + export type Filter = { type: string; @@ -102,7 +104,7 @@ export const queryFilter = ( id: `query-${query}`, displayName: query, filter: (resource: Resource): boolean => { - if (!query) return true; + if (!query) {return true;} const queryLower = query.toLowerCase(); const pluginMatch = resource.resourceType === "plugin" && @@ -141,7 +143,7 @@ export function useFilteredResources( const addFilter = useCallback( (filter: Filter) => { - if (filters.some((f) => f.id === filter.id)) return; + if (filters.some((f) => f.id === filter.id)) {return;} setFilters((filters) => [...filters, filter]); }, [filters, setFilters] diff --git a/website/src/libs/search.ts b/website/src/libs/search.ts index a90f26a0..cf5672d9 100644 --- a/website/src/libs/search.ts +++ b/website/src/libs/search.ts @@ -1,6 +1,7 @@ import { useCallback, useEffect, useState } from "react"; import { type Filter, useFilteredResources, queryFilter } from "./filter"; + import type { Resource } from "./store"; type useSearchControlReturn = { @@ -42,7 +43,7 @@ export function useSearchControl( const newFilter = queryFilter(newQuery); // do nothing if filter is not changed - if (currentFilter?.id === newFilter.id) return; + if (currentFilter?.id === newFilter.id) {return;} // remove old currentFilter currentFilter && removeFilter(currentFilter); diff --git a/website/src/libs/store.ts b/website/src/libs/store.ts index f2bd4f4d..3b0c66c4 100644 --- a/website/src/libs/store.ts +++ b/website/src/libs/store.ts @@ -31,9 +31,9 @@ export async function fetchRegistryData( throw new Error(`Failed to fetch ${dataType}s: ${e}`); }); if (!resp.ok) - throw new Error( + {throw new Error( `Failed to fetch ${dataType}s: ${resp.status} ${resp.statusText}` - ); + );} const data = (await resp.json()) as RegistryDataResponseTypes[T]; return data.map( (resource) => ({ ...resource, resourceType: dataType }) as ResourceTypes[T] diff --git a/website/src/libs/toolbar.ts b/website/src/libs/toolbar.ts index c47f56e6..611b2739 100644 --- a/website/src/libs/toolbar.ts +++ b/website/src/libs/toolbar.ts @@ -1,15 +1,16 @@ import { translate } from "@docusaurus/Translate"; +import type { Filter as FilterTool } from "@/components/Store/Toolbar"; + import { authorFilter, tagFilter, validStatusFilter, type Filter, } from "./filter"; -import type { Resource } from "./store"; import { ValidStatus } from "./valid"; -import type { Filter as FilterTool } from "@/components/Store/Toolbar"; +import type { Resource } from "./store"; type Props = { resources: T[]; @@ -75,7 +76,7 @@ export function useToolbar({ choices: Object.keys(validateStatusFilterMapping), onSubmit: (type: string) => { const validStatus = validateStatusFilterMapping[type]; - if (!validStatus) return; + if (!validStatus) {return;} addFilter(validStatusFilter(validStatus)); }, }; diff --git a/website/src/pages/index.tsx b/website/src/pages/index.tsx index b8e43994..bc740e21 100644 --- a/website/src/pages/index.tsx +++ b/website/src/pages/index.tsx @@ -1,7 +1,6 @@ import React from "react"; import Layout from "@theme/Layout"; - import HomeContent from "@/components/Home"; export default function Homepage(): React.ReactNode { diff --git a/website/src/theme/Page/TOC/Container/index.tsx b/website/src/theme/Page/TOC/Container/index.tsx index afd51125..aee1c9af 100644 --- a/website/src/theme/Page/TOC/Container/index.tsx +++ b/website/src/theme/Page/TOC/Container/index.tsx @@ -4,6 +4,7 @@ import { useWindowSize } from "@nullbot/docusaurus-theme-nonepress/client"; import type { Props } from "@theme/Page/TOC/Container"; import OriginTOCContainer from "@theme-original/Page/TOC/Container"; + import "./styles.css"; export default function TOCContainer({ @@ -18,7 +19,7 @@ export default function TOCContainer({ {children} {isClient && (
-
+
)} diff --git a/website/static/service-worker.js b/website/static/service-worker.js index 2923c038..575736a8 100644 --- a/website/static/service-worker.js +++ b/website/static/service-worker.js @@ -1,14 +1,14 @@ -self.addEventListener("install", function () { +self.addEventListener("install", () => { self.skipWaiting(); }); -self.addEventListener("activate", function () { +self.addEventListener("activate", () => { self.registration .unregister() - .then(function () { + .then(() => { return self.clients.matchAll(); }) - .then(function (clients) { + .then((clients) => { clients.forEach((client) => client.navigate(client.url)); }); }); diff --git a/website/static/uwu.js b/website/static/uwu.js index b29baefa..95b41f6a 100644 --- a/website/static/uwu.js +++ b/website/static/uwu.js @@ -1,2 +1,2 @@ if (location.search.includes("?uwu")) - document.documentElement.setAttribute("data-uwu", "true"); + {document.documentElement.setAttribute("data-uwu", "true");} diff --git a/website/tailwind.config.ts b/website/tailwind.config.ts index f886d511..3b113e06 100644 --- a/website/tailwind.config.ts +++ b/website/tailwind.config.ts @@ -11,7 +11,7 @@ function excludeThemeColor( ): { [key: string]: string } { const newObj: { [key: string]: string } = {}; for (const key in theme) { - if (exclude.includes(key)) continue; + if (exclude.includes(key)) {continue;} newObj[key] = theme[key]!; } return newObj; diff --git a/yarn.lock b/yarn.lock index c560b6d3..c985164c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1521,6 +1521,14 @@ postcss-sort-media-queries "^5.2.0" tslib "^2.6.0" +"@docusaurus/eslint-plugin@3.7.0": + version "3.7.0" + resolved "https://registry.npmjs.org/@docusaurus/eslint-plugin/-/eslint-plugin-3.7.0.tgz#bb5a13ba7fffb25cd122bf8d955b00fd4017c994" + integrity sha512-Bnmx16acy1cFTkv5onm8kRngU6xETEIqkuka+bH4+gCADnKJewHQ/3CRGjsRaii1M/103NSzGlf8ffQ1k9S04w== + dependencies: + "@typescript-eslint/utils" "^5.62.0" + tslib "^2.6.0" + "@docusaurus/faster@^3.7.0": version "3.7.0" resolved "https://registry.npmjs.org/@docusaurus/faster/-/faster-3.7.0.tgz#8062e05a3d044c0dd470b4812796a113b10b835c" @@ -1828,7 +1836,7 @@ utility-types "^3.10.0" webpack "^5.88.1" -"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": +"@eslint-community/eslint-utils@^4.2.0": version "4.4.0" resolved "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== @@ -1840,7 +1848,7 @@ resolved "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.9.0.tgz#7ccb5f58703fa61ffdcbf39e2c604a109e781162" integrity sha512-zJmuCWj2VLBt4c25CfBIbMZLGLyhkvs7LznyVX5HfpzeocThgIj5XQK4L+g3U36mMcx8bPMhGyPpwCATamC4jQ== -"@eslint-community/regexpp@^4.5.1", "@eslint-community/regexpp@^4.6.1": +"@eslint-community/regexpp@^4.6.1": version "4.11.1" resolved "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.1.tgz#a547badfc719eb3e5f4b556325e542fbe9d7a18f" integrity sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q== @@ -2111,11 +2119,6 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" -"@nolyfill/is-core-module@1.0.39": - version "1.0.39" - resolved "https://registry.npmjs.org/@nolyfill/is-core-module/-/is-core-module-1.0.39.tgz#3dc35ba0f1e66b403c00b39344f870298ebb1c8e" - integrity sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA== - "@nullbot/docusaurus-plugin-changelog@^3.0.0": version "3.4.0" resolved "https://registry.npmjs.org/@nullbot/docusaurus-plugin-changelog/-/docusaurus-plugin-changelog-3.4.0.tgz#0e6f810f6015663bbd21a5ca02bc56a03b17bfa3" @@ -2216,11 +2219,6 @@ resolved "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== -"@pkgr/core@^0.1.0": - version "0.1.1" - resolved "https://registry.npmjs.org/@pkgr/core/-/core-0.1.1.tgz#1ec17e2edbec25c8306d424ecfbf13c7de1aaa31" - integrity sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA== - "@pnpm/config.env-replace@^1.1.0": version "1.1.0" resolved "https://registry.npmjs.org/@pnpm/config.env-replace/-/config.env-replace-1.1.0.tgz#ab29da53df41e8948a00f2433f085f54de8b3a4c" @@ -2714,7 +2712,7 @@ dependencies: "@types/istanbul-lib-report" "*" -"@types/json-schema@*", "@types/json-schema@^7.0.12", "@types/json-schema@^7.0.4", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": +"@types/json-schema@*", "@types/json-schema@^7.0.4", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": version "7.0.15" resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== @@ -2852,7 +2850,7 @@ dependencies: "@types/node" "*" -"@types/semver@^7.5.0": +"@types/semver@^7.3.12": version "7.5.8" resolved "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz#8268a8c57a3e4abd25c165ecd36237db7948a55e" integrity sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ== @@ -2917,91 +2915,89 @@ dependencies: "@types/yargs-parser" "*" -"@typescript-eslint/eslint-plugin@^6.6.0": - version "6.21.0" - resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.21.0.tgz#30830c1ca81fd5f3c2714e524c4303e0194f9cd3" - integrity sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA== +"@typescript-eslint/eslint-plugin@^5.62.0": + version "5.62.0" + resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz#aeef0328d172b9e37d9bab6dbc13b87ed88977db" + integrity sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag== dependencies: - "@eslint-community/regexpp" "^4.5.1" - "@typescript-eslint/scope-manager" "6.21.0" - "@typescript-eslint/type-utils" "6.21.0" - "@typescript-eslint/utils" "6.21.0" - "@typescript-eslint/visitor-keys" "6.21.0" + "@eslint-community/regexpp" "^4.4.0" + "@typescript-eslint/scope-manager" "5.62.0" + "@typescript-eslint/type-utils" "5.62.0" + "@typescript-eslint/utils" "5.62.0" debug "^4.3.4" graphemer "^1.4.0" - ignore "^5.2.4" - natural-compare "^1.4.0" - semver "^7.5.4" - ts-api-utils "^1.0.1" + ignore "^5.2.0" + natural-compare-lite "^1.4.0" + semver "^7.3.7" + tsutils "^3.21.0" -"@typescript-eslint/parser@^6.6.0": - version "6.21.0" - resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.21.0.tgz#af8fcf66feee2edc86bc5d1cf45e33b0630bf35b" - integrity sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ== +"@typescript-eslint/parser@^5.62.0": + version "5.62.0" + resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz#1b63d082d849a2fcae8a569248fbe2ee1b8a56c7" + integrity sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA== dependencies: - "@typescript-eslint/scope-manager" "6.21.0" - "@typescript-eslint/types" "6.21.0" - "@typescript-eslint/typescript-estree" "6.21.0" - "@typescript-eslint/visitor-keys" "6.21.0" + "@typescript-eslint/scope-manager" "5.62.0" + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/typescript-estree" "5.62.0" debug "^4.3.4" -"@typescript-eslint/scope-manager@6.21.0": - version "6.21.0" - resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz#ea8a9bfc8f1504a6ac5d59a6df308d3a0630a2b1" - integrity sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg== +"@typescript-eslint/scope-manager@5.62.0": + version "5.62.0" + resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz#d9457ccc6a0b8d6b37d0eb252a23022478c5460c" + integrity sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w== dependencies: - "@typescript-eslint/types" "6.21.0" - "@typescript-eslint/visitor-keys" "6.21.0" + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/visitor-keys" "5.62.0" -"@typescript-eslint/type-utils@6.21.0": - version "6.21.0" - resolved "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.21.0.tgz#6473281cfed4dacabe8004e8521cee0bd9d4c01e" - integrity sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag== +"@typescript-eslint/type-utils@5.62.0": + version "5.62.0" + resolved "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz#286f0389c41681376cdad96b309cedd17d70346a" + integrity sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew== dependencies: - "@typescript-eslint/typescript-estree" "6.21.0" - "@typescript-eslint/utils" "6.21.0" + "@typescript-eslint/typescript-estree" "5.62.0" + "@typescript-eslint/utils" "5.62.0" debug "^4.3.4" - ts-api-utils "^1.0.1" + tsutils "^3.21.0" -"@typescript-eslint/types@6.21.0": - version "6.21.0" - resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.21.0.tgz#205724c5123a8fef7ecd195075fa6e85bac3436d" - integrity sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg== +"@typescript-eslint/types@5.62.0": + version "5.62.0" + resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz#258607e60effa309f067608931c3df6fed41fd2f" + integrity sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ== -"@typescript-eslint/typescript-estree@6.21.0": - version "6.21.0" - resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz#c47ae7901db3b8bddc3ecd73daff2d0895688c46" - integrity sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ== +"@typescript-eslint/typescript-estree@5.62.0": + version "5.62.0" + resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz#7d17794b77fabcac615d6a48fb143330d962eb9b" + integrity sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA== dependencies: - "@typescript-eslint/types" "6.21.0" - "@typescript-eslint/visitor-keys" "6.21.0" + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/visitor-keys" "5.62.0" debug "^4.3.4" globby "^11.1.0" is-glob "^4.0.3" - minimatch "9.0.3" - semver "^7.5.4" - ts-api-utils "^1.0.1" + semver "^7.3.7" + tsutils "^3.21.0" -"@typescript-eslint/utils@6.21.0": - version "6.21.0" - resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.21.0.tgz#4714e7a6b39e773c1c8e97ec587f520840cd8134" - integrity sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ== +"@typescript-eslint/utils@5.62.0", "@typescript-eslint/utils@^5.62.0": + version "5.62.0" + resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz#141e809c71636e4a75daa39faed2fb5f4b10df86" + integrity sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ== dependencies: - "@eslint-community/eslint-utils" "^4.4.0" - "@types/json-schema" "^7.0.12" - "@types/semver" "^7.5.0" - "@typescript-eslint/scope-manager" "6.21.0" - "@typescript-eslint/types" "6.21.0" - "@typescript-eslint/typescript-estree" "6.21.0" - semver "^7.5.4" + "@eslint-community/eslint-utils" "^4.2.0" + "@types/json-schema" "^7.0.9" + "@types/semver" "^7.3.12" + "@typescript-eslint/scope-manager" "5.62.0" + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/typescript-estree" "5.62.0" + eslint-scope "^5.1.1" + semver "^7.3.7" -"@typescript-eslint/visitor-keys@6.21.0": - version "6.21.0" - resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz#87a99d077aa507e20e238b11d56cc26ade45fe47" - integrity sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A== +"@typescript-eslint/visitor-keys@5.62.0": + version "5.62.0" + resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz#2174011917ce582875954ffe2f6912d5931e353e" + integrity sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw== dependencies: - "@typescript-eslint/types" "6.21.0" - eslint-visitor-keys "^3.4.1" + "@typescript-eslint/types" "5.62.0" + eslint-visitor-keys "^3.3.0" "@ungap/structured-clone@^1.0.0": version "1.3.0" @@ -4093,6 +4089,11 @@ configstore@^6.0.0: write-file-atomic "^3.0.3" xdg-basedir "^5.0.1" +confusing-browser-globals@^1.0.10: + version "1.0.11" + resolved "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz#ae40e9b57cdd3915408a2805ebd3a5585608dc81" + integrity sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA== + connect-history-api-fallback@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz#647264845251a0daf25b97ce87834cace0f5f1c8" @@ -4483,7 +4484,7 @@ debug@2.6.9, debug@^2.6.0: dependencies: ms "2.0.0" -debug@4, debug@^4.0.0, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.7: +debug@4, debug@^4.0.0, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1: version "4.4.0" resolved "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz#2b3f2aea2ffeb776477460267377dc8710faba8a" integrity sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA== @@ -4844,7 +4845,7 @@ end-of-stream@^1.1.0, end-of-stream@^1.4.1: dependencies: once "^1.4.0" -enhanced-resolve@^5.15.0, enhanced-resolve@^5.17.1: +enhanced-resolve@^5.17.1: version "5.18.1" resolved "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.1.tgz#728ab082f8b7b6836de51f1637aab5d3b9568faf" integrity sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg== @@ -5046,10 +5047,29 @@ escape-string-regexp@^5.0.0: resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz#4683126b500b61762f2dbebace1806e8be31b1c8" integrity sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw== -eslint-config-prettier@^9.0.0: - version "9.1.0" - resolved "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz#31af3d94578645966c082fcb71a5846d3c94867f" - integrity sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw== +eslint-config-airbnb-base@^15.0.0: + version "15.0.0" + resolved "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-15.0.0.tgz#6b09add90ac79c2f8d723a2580e07f3925afd236" + integrity sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig== + dependencies: + confusing-browser-globals "^1.0.10" + object.assign "^4.1.2" + object.entries "^1.1.5" + semver "^6.3.0" + +eslint-config-airbnb@^19.0.4: + version "19.0.4" + resolved "https://registry.npmjs.org/eslint-config-airbnb/-/eslint-config-airbnb-19.0.4.tgz#84d4c3490ad70a0ffa571138ebcdea6ab085fdc3" + integrity sha512-T75QYQVQX57jiNgpF9r1KegMICE94VYwoFQyMGhrvc+lB8YF2E/M/PYDaQe1AJcWaEgqLE+ErXV1Og/+6Vyzew== + dependencies: + eslint-config-airbnb-base "^15.0.0" + object.assign "^4.1.2" + object.entries "^1.1.5" + +eslint-config-prettier@^8.8.0: + version "8.10.0" + resolved "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.10.0.tgz#3a06a662130807e2502fc3ff8b4143d8a0658e11" + integrity sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg== eslint-import-resolver-node@^0.3.9: version "0.3.9" @@ -5060,19 +5080,6 @@ eslint-import-resolver-node@^0.3.9: is-core-module "^2.13.0" resolve "^1.22.4" -eslint-import-resolver-typescript@^3.6.0: - version "3.8.3" - resolved "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.8.3.tgz#1721a1e4417e57a8fe6bf9463d0db8e220285eef" - integrity sha512-A0bu4Ks2QqDWNpeEgTQMPTngaMhuDu4yv6xpftBMAf+1ziXnpx+eSR1WRfoPTe2BAiAjHFZ7kSNx1fvr5g5pmQ== - dependencies: - "@nolyfill/is-core-module" "1.0.39" - debug "^4.3.7" - enhanced-resolve "^5.15.0" - get-tsconfig "^4.10.0" - is-bun-module "^1.0.2" - stable-hash "^0.0.4" - tinyglobby "^0.2.12" - eslint-module-utils@^2.12.0: version "2.12.0" resolved "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.0.tgz#fe4cfb948d61f49203d7b08871982b65b9af0b0b" @@ -5080,7 +5087,7 @@ eslint-module-utils@^2.12.0: dependencies: debug "^3.2.7" -eslint-plugin-import@^2.28.1: +eslint-plugin-import@^2.27.5: version "2.31.0" resolved "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz#310ce7e720ca1d9c0bb3f69adfd1c6bdd7d9e0e7" integrity sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A== @@ -5126,20 +5133,12 @@ eslint-plugin-jsx-a11y@^6.7.1: safe-regex-test "^1.0.3" string.prototype.includes "^2.0.1" -eslint-plugin-prettier@^5.0.0: - version "5.2.3" - resolved "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.2.3.tgz#c4af01691a6fa9905207f0fbba0d7bea0902cce5" - integrity sha512-qJ+y0FfCp/mQYQ/vWQ3s7eUlFEL4PyKfAJxsnYTJ4YT73nsJBWqmEpFryxV9OeUiqmsTsYJ5Y+KDNaeP31wrRw== - dependencies: - prettier-linter-helpers "^1.0.0" - synckit "^0.9.1" - eslint-plugin-react-hooks@^4.6.0: version "4.6.2" resolved "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz#c829eb06c0e6f484b3fbb85a97e57784f328c596" integrity sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ== -eslint-plugin-react@^7.33.2: +eslint-plugin-react@^7.32.2: version "7.37.4" resolved "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.4.tgz#1b6c80b6175b6ae4b26055ae4d55d04c414c7181" integrity sha512-BGP0jRmfYyvOyvMoRX/uoUeW+GqNj9y16bPQzqAHf3AYII/tDs+jMN0dBVkl88/OZwNGwrVFxE7riHsXVfy/LQ== @@ -5177,7 +5176,7 @@ eslint-plugin-regexp@^1.15.0: regexp-ast-analysis "^0.6.0" scslre "^0.2.0" -eslint-scope@5.1.1: +eslint-scope@5.1.1, eslint-scope@^5.1.1: version "5.1.1" resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== @@ -5526,11 +5525,6 @@ faye-websocket@^0.11.3: dependencies: websocket-driver ">=0.5.1" -fdir@^6.4.3: - version "6.4.3" - resolved "https://registry.npmjs.org/fdir/-/fdir-6.4.3.tgz#011cdacf837eca9b811c89dbb902df714273db72" - integrity sha512-PMXmW2y1hDDfTSRc9gaXIuCCRpuoz3Kaz8cUelp3smouvfT632ozg2vrT6lJsHKKOF59YLbOGfAWGUcKEfRMQw== - figures@^3.2.0: version "3.2.0" resolved "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" @@ -5808,13 +5802,6 @@ get-symbol-description@^1.1.0: es-errors "^1.3.0" get-intrinsic "^1.2.6" -get-tsconfig@^4.10.0: - version "4.10.0" - resolved "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.10.0.tgz#403a682b373a823612475a4c2928c7326fc0f6bb" - integrity sha512-kGzZ3LWWQcGIAmg6iWvXn0ei6WDtV26wzHRMwDSzmAbcXrTEXxHy6IehI6/4eT6VRKyMP1eF1VqwrVUmE/LR7A== - dependencies: - resolve-pkg-maps "^1.0.0" - github-from-package@0.0.0: version "0.0.0" resolved "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz#97fb5d96bfde8973313f20e8288ef9a167fa64ce" @@ -6551,13 +6538,6 @@ is-boolean-object@^1.2.1: call-bound "^1.0.3" has-tostringtag "^1.0.2" -is-bun-module@^1.0.2: - version "1.3.0" - resolved "https://registry.npmjs.org/is-bun-module/-/is-bun-module-1.3.0.tgz#ea4d24fdebfcecc98e81bcbcb506827fee288760" - integrity sha512-DgXeu5UWI0IsMQundYb5UAOzm6G2eVnarJ0byP6Tm55iZNKceD59LNPA2L4VvsScTtHcw0yEkVwSf7PC+QoLSA== - dependencies: - semver "^7.6.3" - is-callable@^1.2.7: version "1.2.7" resolved "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" @@ -8109,13 +8089,6 @@ minimatch@3.1.2, minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch dependencies: brace-expansion "^1.1.7" -minimatch@9.0.3: - version "9.0.3" - resolved "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz#a6e00c3de44c3a542bfaae70abfc22420a6da825" - integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg== - dependencies: - brace-expansion "^2.0.1" - minimatch@^9.0.4: version "9.0.5" resolved "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5" @@ -8189,6 +8162,11 @@ napi-build-utils@^2.0.0: resolved "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-2.0.0.tgz#13c22c0187fcfccce1461844136372a47ddc027e" integrity sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA== +natural-compare-lite@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz#17b09581988979fddafe0201e931ba933c96cbb4" + integrity sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g== + natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" @@ -8321,7 +8299,7 @@ object-keys@^1.1.1: resolved "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== -object.assign@^4.1.0, object.assign@^4.1.4, object.assign@^4.1.7: +object.assign@^4.1.0, object.assign@^4.1.2, object.assign@^4.1.4, object.assign@^4.1.7: version "4.1.7" resolved "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz#8c14ca1a424c6a561b0bb2a22f66f5049a945d3d" integrity sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw== @@ -8333,7 +8311,7 @@ object.assign@^4.1.0, object.assign@^4.1.4, object.assign@^4.1.7: has-symbols "^1.1.0" object-keys "^1.1.1" -object.entries@^1.1.8: +object.entries@^1.1.5, object.entries@^1.1.8: version "1.1.8" resolved "https://registry.npmjs.org/object.entries/-/object.entries-1.1.8.tgz#bffe6f282e01f4d17807204a24f8edd823599c41" integrity sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ== @@ -8657,11 +8635,6 @@ picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.1: resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== -picomatch@^4.0.2: - version "4.0.2" - resolved "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz#77c742931e8f3b8820946c76cd0c1f13730d1dab" - integrity sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg== - pify@^2.3.0: version "2.3.0" resolved "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" @@ -10036,11 +10009,6 @@ resolve-pathname@^3.0.0: resolved "https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-3.0.0.tgz#99d02224d3cf263689becbb393bc560313025dcd" integrity sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng== -resolve-pkg-maps@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz#616b3dc2c57056b5588c31cdf4b3d64db133720f" - integrity sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw== - resolve@^1.1.6, resolve@^1.1.7, resolve@^1.14.2, resolve@^1.22.8: version "1.22.10" resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz#b663e83ffb09bbf2386944736baae803029b8b39" @@ -10227,12 +10195,12 @@ semver-diff@^4.0.0: dependencies: semver "^7.3.5" -semver@^6.3.1: +semver@^6.3.0, semver@^6.3.1: version "6.3.1" resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== -semver@^7.3.2, semver@^7.3.5, semver@^7.3.7, semver@^7.5.4, semver@^7.6.3: +semver@^7.3.2, semver@^7.3.5, semver@^7.3.7, semver@^7.5.4: version "7.7.1" resolved "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz#abd5098d82b18c6c81f6074ff2647fd3e7220c9f" integrity sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA== @@ -10633,11 +10601,6 @@ sprintf-js@~1.0.2: resolved "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== -stable-hash@^0.0.4: - version "0.0.4" - resolved "https://registry.npmjs.org/stable-hash/-/stable-hash-0.0.4.tgz#55ae7dadc13e4b3faed13601587cec41859b42f7" - integrity sha512-LjdcbuBeLcdETCrPn9i8AYAZ1eCtu4ECAWtP7UleOiZ9LzVxRzzUZEoZ8zB24nhkQnDWyET0I+3sWokSDS3E7g== - statuses@2.0.1: version "2.0.1" resolved "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" @@ -10992,14 +10955,6 @@ swc-loader@^0.2.6: dependencies: "@swc/counter" "^0.1.3" -synckit@^0.9.1: - version "0.9.2" - resolved "https://registry.npmjs.org/synckit/-/synckit-0.9.2.tgz#a3a935eca7922d48b9e7d6c61822ee6c3ae4ec62" - integrity sha512-vrozgXDQwYO72vHjUb/HnFbQx1exDjoKzqx23aXEg2a9VIg2TSFZ8FmeZpTjUCFMYw7mpX4BE2SFu8wI7asYsw== - dependencies: - "@pkgr/core" "^0.1.0" - tslib "^2.6.2" - table@^6.8.1: version "6.8.2" resolved "https://registry.npmjs.org/table/-/table-6.8.2.tgz#c5504ccf201213fa227248bdc8c5569716ac6c58" @@ -11157,14 +11112,6 @@ tinycolor2@^1.4.1: resolved "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.6.0.tgz#f98007460169b0263b97072c5ae92484ce02d09e" integrity sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw== -tinyglobby@^0.2.12: - version "0.2.12" - resolved "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.12.tgz#ac941a42e0c5773bd0b5d08f32de82e74a1a61b5" - integrity sha512-qkf4trmKSIiMTs/E63cxH+ojC2unam7rJ0WrauAzpT3ECNTxGRMlaXxVbfxMUC/w0LaYk6jQ4y/nGR9uBO3tww== - dependencies: - fdir "^6.4.3" - picomatch "^4.0.2" - to-regex-range@^5.0.1: version "5.0.1" resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" @@ -11197,11 +11144,6 @@ trough@^2.0.0: resolved "https://registry.npmjs.org/trough/-/trough-2.2.0.tgz#94a60bd6bd375c152c1df911a4b11d5b0256f50f" integrity sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw== -ts-api-utils@^1.0.1: - version "1.3.0" - resolved "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz#4b490e27129f1e8e686b45cc4ab63714dc60eea1" - integrity sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ== - ts-interface-checker@^0.1.9: version "0.1.13" resolved "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz#784fd3d679722bc103b1b4b8030bcddb5db2a699" @@ -11217,11 +11159,23 @@ tsconfig-paths@^3.15.0: minimist "^1.2.6" strip-bom "^3.0.0" -tslib@^2.0.3, tslib@^2.6.0, tslib@^2.6.2: +tslib@^1.8.1: + version "1.14.1" + resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== + +tslib@^2.0.3, tslib@^2.6.0: version "2.8.1" resolved "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f" integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== +tsutils@^3.21.0: + version "3.21.0" + resolved "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" + integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== + dependencies: + tslib "^1.8.1" + tunnel-agent@^0.6.0: version "0.6.0" resolved "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd"