diff --git a/.nvmrc b/.nvmrc index 3e558c9b..8ce70308 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -18.12.0 +20.16.0 diff --git a/.vscode/settings.json b/.vscode/settings.json index f9dab0cd..7e3d9e26 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -4,8 +4,10 @@ "estree", "Middlewares", "MVVM", + "plusplus", "preconfigured", "TSES", + "tseslint", "unimported", "unmagler", "unsubscribers" diff --git a/packages/eslint-plugin-obsidian/.eslintignore b/packages/eslint-plugin-obsidian/.eslintignore deleted file mode 100644 index b3555380..00000000 --- a/packages/eslint-plugin-obsidian/.eslintignore +++ /dev/null @@ -1,2 +0,0 @@ -dist/*, -wallaby.js diff --git a/packages/eslint-plugin-obsidian/.eslintrc.json b/packages/eslint-plugin-obsidian/.eslintrc.json deleted file mode 100644 index aedd4c42..00000000 --- a/packages/eslint-plugin-obsidian/.eslintrc.json +++ /dev/null @@ -1,106 +0,0 @@ -{ - "env": { - "es2021": true, - "jest": true - }, - "ignorePatterns": ["**/*.config.js"], - "extends": [ - "airbnb-base", - "plugin:import/typescript", - "plugin:@stylistic/disable-legacy", - "plugin:jest-formatting/recommended" - ], - "parser": "@typescript-eslint/parser", - "parserOptions": { - "sourceType": "module", - "project": "tsconfig.json" - }, - "plugins": [ - "@stylistic", - "@typescript-eslint", - "import-newlines", - "unused-imports", - "jest-formatting" - ], - "rules": { - "no-console":"off", - "no-empty-function": ["error", { "allow": ["constructors"] }], - "no-multi-spaces": "error", - "no-multiple-empty-lines": ["error", { "max": 1 }], - "@stylistic/max-len": [ - "error", - { - "code": 115, - "comments": 200, - "ignoreRegExpLiterals": true, - "ignoreStrings": true, - "ignoreTemplateLiterals": true - } - ], - "@stylistic/no-extra-semi": "error", - "@stylistic/lines-between-class-members": ["error", "always", {"exceptAfterSingleLine": true}], - "import/extensions": "off", - "@typescript-eslint/no-non-null-assertion": "off", - "no-useless-constructor": "off", - "@typescript-eslint/member-delimiter-style": "error", - "import/no-unresolved": "off", - "class-methods-use-this": "off", - "no-use-before-define": "off", - "@typescript-eslint/no-use-before-define": ["off"], - "no-restricted-syntax": "off", - "import/no-named-as-default": "off", - "@typescript-eslint/ban-types": ["off"], - "import/no-extraneous-dependencies": ["error", {"devDependencies": true}], - "max-classes-per-file": ["off"], - "curly": ["error", "multi-line"], - "@stylistic/semi": ["error", "always"], - "@stylistic/comma-dangle": ["error", "always-multiline"], - "@stylistic/function-call-argument-newline": ["error", "consistent"], - "@stylistic/function-paren-newline": ["error", "multiline-arguments"], - "@stylistic/object-curly-newline": [ - "error", - { - "ObjectExpression": { - "multiline": true, - "consistent": true - }, - "ObjectPattern": { - "multiline": true, - "consistent": true - } - } - ], - "@stylistic/no-whitespace-before-property": "error", - "import-newlines/enforce": [ - "error", - { - "items": 3, - "max-len": 115, - "semi": false - } - ], - "no-plusplus": "off", - "@stylistic/no-trailing-spaces": "error", - "no-shadow": "off", - "@typescript-eslint/no-shadow": ["error", {"allow": ["Graph"]}], - "arrow-body-style": ["off"], - "@stylistic/quotes": ["error", "single", {"avoidEscape": true, "allowTemplateLiterals": true}], - "@typescript-eslint/lines-between-class-members": "off", - "@typescript-eslint/no-explicit-any": "off", - "import/prefer-default-export": "off", - "@typescript-eslint/no-unused-vars": "off", - "unused-imports/no-unused-imports": "error", - "unused-imports/no-unused-vars": [ - "error", - { "vars": "all", "varsIgnorePattern": "^_", "args": "after-used", "argsIgnorePattern": "^_" } - ], - "@typescript-eslint/ban-ts-comment": "off" - }, - "settings": { - "import/resolver": { - "node": { - "extensions": [".js", ".ts"] - } - } - } -} diff --git a/packages/eslint-plugin-obsidian/eslint.config.mjs b/packages/eslint-plugin-obsidian/eslint.config.mjs new file mode 100644 index 00000000..875344cb --- /dev/null +++ b/packages/eslint-plugin-obsidian/eslint.config.mjs @@ -0,0 +1,154 @@ +import { fixupConfigRules, fixupPluginRules } from "@eslint/compat"; +import stylistic from "@stylistic/eslint-plugin"; +import eslintTs from "typescript-eslint"; +import eslintJs from "@eslint/js"; +import eslintJest from "eslint-plugin-jest"; +import globals from "globals"; +import tsParser from "@typescript-eslint/parser"; + +export default eslintTs.config( + { + ignores: ["**/*.d.ts", "**/*.js"], + }, + { + files: ["**/*.ts", "**/*.tsx"], + name: "EslintPluginObsidian", + languageOptions: { + globals: { + ...globals.jest, + }, + sourceType: "module", + parser: tsParser, + parserOptions: { + project: "tsconfig.json", + tsconfigRootDir: import.meta.dirname, + }, + }, + settings: { + "import/resolver": { + node: { + extensions: [".js", ".jsx", ".ts", ".tsx"], + }, + }, + }, + extends: [ + eslintJs.configs.recommended, + ...eslintTs.configs.recommendedTypeChecked, + eslintJest.configs['flat/recommended'], + stylistic.configs["recommended-flat"], + ], + rules: { + "no-console": "off", + "no-empty-function": ["error", { + allow: ["constructors"], + }], + + "no-multi-spaces": "error", + + "no-multiple-empty-lines": ["error", { + max: 1, + }], + + "@stylistic/max-len": ["error", { + code: 115, + comments: 200, + ignoreRegExpLiterals: true, + ignoreStrings: true, + ignoreTemplateLiterals: true, + }], + + "@stylistic/no-extra-semi": "error", + + "@stylistic/lines-between-class-members": ["error", "always", { + exceptAfterSingleLine: true, + }], + + "import/extensions": "off", + "@typescript-eslint/no-non-null-assertion": "off", + "no-useless-constructor": "off", + "@stylistic/member-delimiter-style": "error", + "import/no-unresolved": "off", + "class-methods-use-this": "off", + "no-use-before-define": "off", + "@typescript-eslint/no-use-before-define": ["off"], + "no-restricted-syntax": "off", + "import/no-named-as-default": "off", + "@typescript-eslint/ban-types": ["off"], + + // "import/no-extraneous-dependencies": ["error", { + // devDependencies: true, + // }], + + "max-classes-per-file": ["off"], + curly: ["error", "multi-line"], + "@stylistic/semi": ["error", "always"], + "@stylistic/comma-dangle": ["error", "always-multiline"], + "@stylistic/function-call-argument-newline": ["error", "consistent"], + "@stylistic/function-paren-newline": ["error", "multiline-arguments"], + + "@stylistic/object-curly-newline": ["error", { + ObjectExpression: { + multiline: true, + consistent: true, + }, + + ObjectPattern: { + multiline: true, + consistent: true, + }, + }], + + "@stylistic/no-whitespace-before-property": "error", + + // "import-newlines/enforce": ["error", { + // items: 3, + // "max-len": 115, + // semi: false, + // }], + + "no-plusplus": "off", + "@stylistic/no-trailing-spaces": "error", + "no-shadow": "off", + + "@typescript-eslint/no-shadow": ["error", { + allow: ["Graph"], + }], + + "arrow-body-style": ["off"], + "@stylistic/member-delimiter-style": ["error", { + "multiline": { + "delimiter": "semi", + "requireLast": true + }, + "singleline": { + "delimiter": "semi", + "requireLast": false + }, + "multilineDetection": "brackets" + }], + "@stylistic/quotes": ["error", "single", { + avoidEscape: true, + allowTemplateLiterals: true, + }], + "@typescript-eslint/no-base-to-string": "off", + + "@typescript-eslint/lines-between-class-members": "off", + "@typescript-eslint/no-explicit-any": "off", + "@typescript-eslint/no-require-imports": ["error", { + allow: ["path"] + }], + "import/prefer-default-export": "off", + "@typescript-eslint/no-unused-vars": "off", + // "unused-imports/no-unused-imports": "error", + + // "unused-imports/no-unused-vars": ["error", { + // vars: "all", + // varsIgnorePattern: "^_", + // args: "after-used", + // argsIgnorePattern: "^_", + // }], + + "@typescript-eslint/ban-ts-comment": "off", + }, + } +); diff --git a/packages/eslint-plugin-obsidian/jest.config.js b/packages/eslint-plugin-obsidian/jest.config.js index 36b2f522..cd5c4fb6 100644 --- a/packages/eslint-plugin-obsidian/jest.config.js +++ b/packages/eslint-plugin-obsidian/jest.config.js @@ -6,6 +6,7 @@ const config = { 'tests' ], testEnvironment: 'jsdom', + setupFiles: ['./jest.setup.js'], }; module.exports = config; diff --git a/packages/eslint-plugin-obsidian/jest.setup.js b/packages/eslint-plugin-obsidian/jest.setup.js new file mode 100644 index 00000000..868aa3fb --- /dev/null +++ b/packages/eslint-plugin-obsidian/jest.setup.js @@ -0,0 +1,5 @@ +// https://github.com/jsdom/jsdom/issues/3363#issuecomment-1221060809 +// https://stackoverflow.com/questions/73607410/referenceerror-structuredclone-is-not-defined-using-jest-with-nodejs-typesc +global.structuredClone = val => { + return JSON.parse(JSON.stringify(val)) +} \ No newline at end of file diff --git a/packages/eslint-plugin-obsidian/package.json b/packages/eslint-plugin-obsidian/package.json index 2fd5f7a8..d8c6f9ce 100644 --- a/packages/eslint-plugin-obsidian/package.json +++ b/packages/eslint-plugin-obsidian/package.json @@ -2,11 +2,11 @@ "name": "eslint-plugin-obsidian", "description": "ESLint rules for Obsidian", "main": "dist/index.js", - "version": "2.10.2", + "version": "2.11.0-alpha.1", "scripts": { "build": "npx tsc --project tsconfig.prod.json", "test": "npx jest", - "lint": "eslint src --ignore-pattern '*.d.ts' --ext .ts,.tsx,.js" + "lint": "eslint" }, "author": "Orly Dadashev", "files": [ @@ -15,13 +15,13 @@ "LICENSE" ], "peerDependencies": { - "eslint": "8.x.x", + "eslint": "^9.9.0", "eslint-plugin-obsidian": "*", "react-obsidian": "2.x.x" }, "dependencies": { - "@typescript-eslint/parser": "6.6.x", - "@typescript-eslint/utils": "6.6.x", + "@typescript-eslint/parser": "8.4.0", + "@typescript-eslint/utils": "8.4.0", "lodash": "^4.17.21" }, "devDependencies": { @@ -33,24 +33,25 @@ "@babel/preset-react": "7.22.x", "@babel/preset-typescript": "7.22.x", "@babel/types": "7.24.x", - "@eslint/eslintrc": "^3.0.2", - "@eslint/js": "8.x.x", - "@stylistic/eslint-plugin": "^1.7.0", - "@types/eslint": "8.4.9", - "@types/node": "18.x.x", - "@typescript-eslint/eslint-plugin": "6.6.x", - "@typescript-eslint/rule-tester": "6.6.x", - "@typescript-eslint/types": "6.6.x", - "@typescript-eslint/typescript-estree": "6.6.x", + "@eslint/compat": "^1.1.1", + "@eslint/eslintrc": "^3.1.0", + "@eslint/js": "^9.9.0", + "@stylistic/eslint-plugin": "^2.7.2", + "@types/eslint": "^9.6.1", + "@types/node": "20.16.x", + "@typescript-eslint/eslint-plugin": "^8.4.0", + "@typescript-eslint/rule-tester": "^8.4.0", + "@typescript-eslint/types": "^8.4.0", + "@typescript-eslint/typescript-estree": "^8.4.0", "cross-env": "^7.0.3", - "eslint": "8.x.x", - "eslint-plugin-import": "^2.25.2", - "eslint-plugin-import-newlines": "^1.1.5", - "eslint-plugin-jest-formatting": "^3.1.0", - "eslint-plugin-unused-imports": "3.1.x", - "jest": "29.5.x", - "jest-extended": "^4.0.0", - "typescript": "^4.5.4" + "eslint": "^9.9.1", + "eslint-plugin-jest": "^28.8.2", + "eslint-plugin-unused-imports": "^4.1.3", + "globals": "^15.9.0", + "jest": "^29.7.0", + "jest-environment-jsdom": "^29.7.0", + "jest-extended": "^4.0.2", + "typescript": "^5.5.4" }, "keywords": [ "react-obsidian", diff --git a/packages/eslint-plugin-obsidian/src/dto/callExpression.ts b/packages/eslint-plugin-obsidian/src/dto/callExpression.ts index c3fc0f10..72ab323c 100644 --- a/packages/eslint-plugin-obsidian/src/dto/callExpression.ts +++ b/packages/eslint-plugin-obsidian/src/dto/callExpression.ts @@ -14,20 +14,27 @@ export class CallExpression { } get parent(): TSESTree.Node { - return this.node.parent!; + return this.node.parent; } get arguments(): Identifier[] { - return this.node.arguments.map((arg) => new Identifier(arg)); + return this.node.arguments.map(arg => new Identifier(arg)); } get generics() { - return this.node.typeArguments ? - new Generics(this.node.typeArguments) : - this.node.typeParameters && new Generics(this.node.typeParameters); + if (this.node.typeArguments) { + return new Generics(this.node.typeArguments); + } + // @ts-expect-error - compatibility with typescript-eslint 8 + const typeParametersESLint8 = this.node['typeParameters'] as unknown; + if (typeParametersESLint8) { + return new Generics(typeParametersESLint8 as TSESTree.TSTypeParameterInstantiation); + } + + return Generics.EMPTY; } private get callee(): TSESTree.Identifier { return this.node.callee as TSESTree.Identifier; } -} \ No newline at end of file +} diff --git a/packages/eslint-plugin-obsidian/src/dto/class.ts b/packages/eslint-plugin-obsidian/src/dto/class.ts index 0c7f75cd..bc4537ee 100644 --- a/packages/eslint-plugin-obsidian/src/dto/class.ts +++ b/packages/eslint-plugin-obsidian/src/dto/class.ts @@ -28,8 +28,8 @@ export class Clazz { public getDecoratedMethods(decoratorName: string): Method[] { return this.body .filter(isMethodDefinition) - .map((node) => new Method(node)) - .filter((method) => method.isDecoratedWith(decoratorName)); + .map(node => new Method(node)) + .filter(method => method.isDecoratedWith(decoratorName)); } public requireDecorator(name: string) { @@ -43,4 +43,4 @@ export class Clazz { private get name() { return this.node.id?.name; } -} \ No newline at end of file +} diff --git a/packages/eslint-plugin-obsidian/src/dto/classFile.ts b/packages/eslint-plugin-obsidian/src/dto/classFile.ts index 8d13f0e6..ee323fc5 100644 --- a/packages/eslint-plugin-obsidian/src/dto/classFile.ts +++ b/packages/eslint-plugin-obsidian/src/dto/classFile.ts @@ -2,7 +2,6 @@ import type { Clazz } from './class'; import type { Import } from './import'; export class ClassFile { - constructor( public readonly clazz: Clazz, public readonly imports: Import[], diff --git a/packages/eslint-plugin-obsidian/src/dto/componentProps.ts b/packages/eslint-plugin-obsidian/src/dto/componentProps.ts index 43c24bf7..7f7b33d6 100644 --- a/packages/eslint-plugin-obsidian/src/dto/componentProps.ts +++ b/packages/eslint-plugin-obsidian/src/dto/componentProps.ts @@ -1,9 +1,9 @@ import type { TSESTree } from '@typescript-eslint/types'; import { -isAnyType, -isTypeAnnotation, -isTypeIntersection, -isTypeReference, + isAnyType, + isTypeAnnotation, + isTypeIntersection, + isTypeReference, } from '../utils/ast'; import { SingleType } from './types/singleType'; import { TypeIntersection } from './types/typeIntersection'; diff --git a/packages/eslint-plugin-obsidian/src/dto/context.ts b/packages/eslint-plugin-obsidian/src/dto/context.ts index a8d4ae4e..02cc1dbb 100644 --- a/packages/eslint-plugin-obsidian/src/dto/context.ts +++ b/packages/eslint-plugin-obsidian/src/dto/context.ts @@ -8,10 +8,10 @@ export class Context) { this.context.report({ messageId, node, data }); } -} \ No newline at end of file +} diff --git a/packages/eslint-plugin-obsidian/src/dto/decorator.ts b/packages/eslint-plugin-obsidian/src/dto/decorator.ts index 438c4e4b..80586f9e 100644 --- a/packages/eslint-plugin-obsidian/src/dto/decorator.ts +++ b/packages/eslint-plugin-obsidian/src/dto/decorator.ts @@ -17,4 +17,4 @@ export class Decorator { const property = getDecoratorProperty(this.node, name); return property && new Property(property); } -} \ No newline at end of file +} diff --git a/packages/eslint-plugin-obsidian/src/dto/file.ts b/packages/eslint-plugin-obsidian/src/dto/file.ts index 1ed6cf20..63717667 100644 --- a/packages/eslint-plugin-obsidian/src/dto/file.ts +++ b/packages/eslint-plugin-obsidian/src/dto/file.ts @@ -1,10 +1,10 @@ import type { TSESTree } from '@typescript-eslint/types'; import { Clazz } from './class'; import { -getClassDeclaration, -isClassLike, -isImportDeclaration, -isVariableDeclaration, + getClassDeclaration, + isClassLike, + isImportDeclaration, + isVariableDeclaration, } from '../utils/ast'; import { Import } from './import'; import { ClassFile } from './classFile'; @@ -13,7 +13,7 @@ import { Variable } from './variable'; export class File { constructor(program: TSESTree.Program, path?: string); - constructor(private program: TSESTree.Program,private path: string) { } + constructor(private program: TSESTree.Program, private path: string) { } public requireGraph(name: string) { const graph = this.classNodes.find((node) => { @@ -42,7 +42,7 @@ export class File { get imports() { return this.body .filter(isImportDeclaration) - .map((node) => new Import(node)); + .map(node => new Import(node)); } get graphs() { @@ -60,8 +60,8 @@ export class File { get variables() { return this.body .filter(isVariableDeclaration) - .map((node) => node.declarations) + .map(node => node.declarations) .flat() - .map((node) => new Variable(node)); + .map(node => new Variable(node)); } } diff --git a/packages/eslint-plugin-obsidian/src/dto/functionalComponent.ts b/packages/eslint-plugin-obsidian/src/dto/functionalComponent.ts index 789ab223..8236522c 100644 --- a/packages/eslint-plugin-obsidian/src/dto/functionalComponent.ts +++ b/packages/eslint-plugin-obsidian/src/dto/functionalComponent.ts @@ -7,4 +7,4 @@ export class FunctionalComponent { get props(): ComponentProps { return new ComponentProps(this.node.params[0]); } -} \ No newline at end of file +} diff --git a/packages/eslint-plugin-obsidian/src/dto/generics.ts b/packages/eslint-plugin-obsidian/src/dto/generics.ts index 6d80a83b..d41b1330 100644 --- a/packages/eslint-plugin-obsidian/src/dto/generics.ts +++ b/packages/eslint-plugin-obsidian/src/dto/generics.ts @@ -6,6 +6,8 @@ import type { Type } from './types/type'; import { TypeReference } from './types/typeReference'; export class Generics { + static EMPTY = new Generics({ params: [] } as unknown as TSESTree.TSTypeParameterInstantiation); + constructor(node: TSESTree.TSTypeParameterInstantiation | undefined); constructor(readonly node: TSESTree.TSTypeParameterInstantiation) { assertDefined(node); @@ -21,4 +23,4 @@ export class Generics { private get params() { return this.node.params as TSESTree.TSTypeReference[]; } -} \ No newline at end of file +} diff --git a/packages/eslint-plugin-obsidian/src/dto/identifier.ts b/packages/eslint-plugin-obsidian/src/dto/identifier.ts index aacd4435..9cc3acf1 100644 --- a/packages/eslint-plugin-obsidian/src/dto/identifier.ts +++ b/packages/eslint-plugin-obsidian/src/dto/identifier.ts @@ -7,4 +7,4 @@ export class Identifier { get name(): string { return this.node.name; } -} \ No newline at end of file +} diff --git a/packages/eslint-plugin-obsidian/src/dto/import.ts b/packages/eslint-plugin-obsidian/src/dto/import.ts index 592eb70c..997fcb2b 100644 --- a/packages/eslint-plugin-obsidian/src/dto/import.ts +++ b/packages/eslint-plugin-obsidian/src/dto/import.ts @@ -9,7 +9,7 @@ export class Import { public includes(name: string) { return this.node.specifiers - .map((specifier) => specifier.local.name) + .map(specifier => specifier.local.name) .includes(name); } -} \ No newline at end of file +} diff --git a/packages/eslint-plugin-obsidian/src/dto/method.ts b/packages/eslint-plugin-obsidian/src/dto/method.ts index d7477808..c5a0331f 100644 --- a/packages/eslint-plugin-obsidian/src/dto/method.ts +++ b/packages/eslint-plugin-obsidian/src/dto/method.ts @@ -3,7 +3,6 @@ import { Decorator } from './decorator'; import { Parameter } from './parameter'; export class Method { - constructor(public readonly node: TSESTree.MethodDefinition) {} get name() { @@ -11,7 +10,7 @@ export class Method { } get parameters() { - return this.node.value.params.map((param) => new Parameter(param)); + return this.node.value.params.map(param => new Parameter(param)); } isDecoratedWith(decoratorName: string): boolean { diff --git a/packages/eslint-plugin-obsidian/src/dto/parameter.ts b/packages/eslint-plugin-obsidian/src/dto/parameter.ts index e9407d8d..04f3d211 100644 --- a/packages/eslint-plugin-obsidian/src/dto/parameter.ts +++ b/packages/eslint-plugin-obsidian/src/dto/parameter.ts @@ -6,4 +6,4 @@ export class Parameter { get name() { return (this.node as TSESTree.Identifier).name; } -} \ No newline at end of file +} diff --git a/packages/eslint-plugin-obsidian/src/dto/property.ts b/packages/eslint-plugin-obsidian/src/dto/property.ts index 9bcc57e3..e48404a8 100644 --- a/packages/eslint-plugin-obsidian/src/dto/property.ts +++ b/packages/eslint-plugin-obsidian/src/dto/property.ts @@ -6,4 +6,4 @@ export class Property { getValue() { return this.node.value as T; } -} \ No newline at end of file +} diff --git a/packages/eslint-plugin-obsidian/src/dto/types/missingType.ts b/packages/eslint-plugin-obsidian/src/dto/types/missingType.ts index 901ad08c..e4c216a1 100644 --- a/packages/eslint-plugin-obsidian/src/dto/types/missingType.ts +++ b/packages/eslint-plugin-obsidian/src/dto/types/missingType.ts @@ -10,14 +10,14 @@ export class MissingType implements Type { } equals(types: Type[]): boolean { - return types.length === 0 || types.length === 1 && types[0].isEmpty(); + return types.length === 0 || (types.length === 1 && types[0].isEmpty()); } includes(): boolean { - return false; + return false; } size(): number { return 0; } -} \ No newline at end of file +} diff --git a/packages/eslint-plugin-obsidian/src/dto/types/singleType.ts b/packages/eslint-plugin-obsidian/src/dto/types/singleType.ts index 67b678bc..276f267c 100644 --- a/packages/eslint-plugin-obsidian/src/dto/types/singleType.ts +++ b/packages/eslint-plugin-obsidian/src/dto/types/singleType.ts @@ -20,10 +20,10 @@ export class SingleType implements Type { } includes(type: Type[]): boolean { - return type.some((t) => isEqual(t.toString(), this.toString())); + return type.some(t => isEqual(t.toString(), this.toString())); } size(): number { return 1; } -} \ No newline at end of file +} diff --git a/packages/eslint-plugin-obsidian/src/dto/types/type.ts b/packages/eslint-plugin-obsidian/src/dto/types/type.ts index a4246ac6..a9b6d03a 100644 --- a/packages/eslint-plugin-obsidian/src/dto/types/type.ts +++ b/packages/eslint-plugin-obsidian/src/dto/types/type.ts @@ -4,4 +4,4 @@ export interface Type { equals(types: Type[]): boolean; includes(type: Type[]): boolean; size(): number; -} \ No newline at end of file +} diff --git a/packages/eslint-plugin-obsidian/src/dto/types/typeIntersection.ts b/packages/eslint-plugin-obsidian/src/dto/types/typeIntersection.ts index 2abc8486..a1967d28 100644 --- a/packages/eslint-plugin-obsidian/src/dto/types/typeIntersection.ts +++ b/packages/eslint-plugin-obsidian/src/dto/types/typeIntersection.ts @@ -19,11 +19,11 @@ export class TypeIntersection implements Type { } equals(types: Type[]): boolean { - return isEqual(this.toString(),types.map((type) => type.toString()).flat()); + return isEqual(this.toString(), types.map(type => type.toString()).flat()); } includes(type: Type[]): boolean { - return this.types.every((t) => t.includes(type)); + return this.types.every(t => t.includes(type)); } private get types(): Type[] { diff --git a/packages/eslint-plugin-obsidian/src/dto/types/typeLiteral.ts b/packages/eslint-plugin-obsidian/src/dto/types/typeLiteral.ts index 03831bb2..2f5bb01d 100644 --- a/packages/eslint-plugin-obsidian/src/dto/types/typeLiteral.ts +++ b/packages/eslint-plugin-obsidian/src/dto/types/typeLiteral.ts @@ -4,7 +4,7 @@ import type { Type } from './type'; export class TypeLiteral implements Type { private readonly name = uniqueId('TypeLiteral'); - static isTypeLiteral(type: Type): type is TypeLiteral { + static isTypeLiteral(this: void, type: Type): type is TypeLiteral { return type instanceof TypeLiteral; } @@ -21,7 +21,7 @@ export class TypeLiteral implements Type { } includes(type: Type[]): boolean { - return type.every((t) => isEqual(t.toString(), this.toString())); + return type.every(t => isEqual(t.toString(), this.toString())); } size(): number { diff --git a/packages/eslint-plugin-obsidian/src/dto/types/typeReference.ts b/packages/eslint-plugin-obsidian/src/dto/types/typeReference.ts index aad9d543..b3360e43 100644 --- a/packages/eslint-plugin-obsidian/src/dto/types/typeReference.ts +++ b/packages/eslint-plugin-obsidian/src/dto/types/typeReference.ts @@ -15,14 +15,14 @@ export class TypeReference implements Type { } equals(types: Type[]): boolean { - return isEqual(this.toString(), types.map((type) => type.toString()).flat()); + return isEqual(this.toString(), types.map(type => type.toString()).flat()); } includes(type: Type[]): boolean { - return type.some((t) => isEqual(this.toString(), t.toString())); + return type.some(t => isEqual(this.toString(), t.toString())); } size(): number { return 1; } -} \ No newline at end of file +} diff --git a/packages/eslint-plugin-obsidian/src/dto/variable.ts b/packages/eslint-plugin-obsidian/src/dto/variable.ts index 07ae3052..098c2aee 100644 --- a/packages/eslint-plugin-obsidian/src/dto/variable.ts +++ b/packages/eslint-plugin-obsidian/src/dto/variable.ts @@ -1,4 +1,4 @@ -import type { TSESTree } from '@typescript-eslint/types'; +import { TSESTree } from '@typescript-eslint/types'; import assert from 'assert'; export class Variable { @@ -9,11 +9,11 @@ export class Variable { } get isArrowFunction(): boolean { - return this.node.init?.type === 'ArrowFunctionExpression'; + return this.node.init?.type === TSESTree.AST_NODE_TYPES.ArrowFunctionExpression; } get arrowFunction(): TSESTree.ArrowFunctionExpression { assert(this.isArrowFunction, 'Variable does not represent an arrow function'); return this.node.init as TSESTree.ArrowFunctionExpression; } -} \ No newline at end of file +} diff --git a/packages/eslint-plugin-obsidian/src/framework/fileReader.ts b/packages/eslint-plugin-obsidian/src/framework/fileReader.ts index 25cc0af6..69bdc6d3 100644 --- a/packages/eslint-plugin-obsidian/src/framework/fileReader.ts +++ b/packages/eslint-plugin-obsidian/src/framework/fileReader.ts @@ -32,4 +32,4 @@ export class FileReader { }, ); } -} \ No newline at end of file +} diff --git a/packages/eslint-plugin-obsidian/src/framework/pathResolver.ts b/packages/eslint-plugin-obsidian/src/framework/pathResolver.ts index 3c14d0a7..47d9869a 100644 --- a/packages/eslint-plugin-obsidian/src/framework/pathResolver.ts +++ b/packages/eslint-plugin-obsidian/src/framework/pathResolver.ts @@ -4,4 +4,4 @@ export class PathResolver { public resolve(baseFilePath: string, relativeFilePath: string) { return path.resolve(path.dirname(baseFilePath), `${relativeFilePath}.ts`); } -} \ No newline at end of file +} diff --git a/packages/eslint-plugin-obsidian/src/index.ts b/packages/eslint-plugin-obsidian/src/index.ts index 5382876d..60554efa 100644 --- a/packages/eslint-plugin-obsidian/src/index.ts +++ b/packages/eslint-plugin-obsidian/src/index.ts @@ -1,6 +1,7 @@ -const { unresolvedProviderDependenciesGenerator } = require('./rules/unresolvedProviderDependencies'); -const { noCircularDependenciesGenerator } = require('./rules/noCircularDependency'); -const { stronglyTypedInjectComponentGenerator } = require('./rules/stronglyTypedInjectComponent'); +/* eslint-disable @typescript-eslint/no-require-imports */ +const { unresolvedProviderDependenciesGenerator } = require('./rules/unresolvedProviderDependencies') as typeof import('./rules/unresolvedProviderDependencies'); +const { noCircularDependenciesGenerator } = require('./rules/noCircularDependency') as typeof import('./rules/noCircularDependency'); +const { stronglyTypedInjectComponentGenerator } = require('./rules/stronglyTypedInjectComponent') as typeof import('./rules/stronglyTypedInjectComponent'); module.exports = { rules: { diff --git a/packages/eslint-plugin-obsidian/src/rules/noCircularDependency/circularDependenciesDetector.ts b/packages/eslint-plugin-obsidian/src/rules/noCircularDependency/circularDependenciesDetector.ts index 25965d82..a05eb60d 100644 --- a/packages/eslint-plugin-obsidian/src/rules/noCircularDependency/circularDependenciesDetector.ts +++ b/packages/eslint-plugin-obsidian/src/rules/noCircularDependency/circularDependenciesDetector.ts @@ -7,7 +7,6 @@ type DetectionResult = { hasCircularDependency: false; path?: never; node?: never }; export class CircularDependenciesDetector { - detect(clazz: Clazz): DetectionResult { const providers = clazz.getDecoratedMethods('Provides'); const visited = new Set(); @@ -50,4 +49,4 @@ export class CircularDependenciesDetector { return { hasCircularDependency: false }; } -} \ No newline at end of file +} diff --git a/packages/eslint-plugin-obsidian/src/rules/noCircularDependency/errorReporter.ts b/packages/eslint-plugin-obsidian/src/rules/noCircularDependency/errorReporter.ts index a33445c1..ff31e0f8 100644 --- a/packages/eslint-plugin-obsidian/src/rules/noCircularDependency/errorReporter.ts +++ b/packages/eslint-plugin-obsidian/src/rules/noCircularDependency/errorReporter.ts @@ -22,4 +22,4 @@ export class ErrorReporter { ); } } -} \ No newline at end of file +} diff --git a/packages/eslint-plugin-obsidian/src/rules/noCircularDependency/index.ts b/packages/eslint-plugin-obsidian/src/rules/noCircularDependency/index.ts index 365eb1ec..b701cc2d 100644 --- a/packages/eslint-plugin-obsidian/src/rules/noCircularDependency/index.ts +++ b/packages/eslint-plugin-obsidian/src/rules/noCircularDependency/index.ts @@ -1,12 +1,12 @@ import { ESLintUtils, type TSESLint } from '@typescript-eslint/utils'; import type { RuleContext } from '@typescript-eslint/utils/ts-eslint'; import { create } from './createRule'; -import {Context} from '../../dto/context'; +import { Context } from '../../dto/context'; type Rule = TSESLint.RuleModule<'no-circular-dependencies', []>; const createRule = ESLintUtils.RuleCreator( - (name) => `https://wix-incubator.github.io/obsidian/docs/documentation/meta/eslint#${name}`, + name => `https://wix-incubator.github.io/obsidian/docs/documentation/meta/eslint#${name}`, ); export const noCircularDependenciesGenerator = () => { @@ -18,7 +18,6 @@ export const noCircularDependenciesGenerator = () => { meta: { docs: { description: 'Dependencies must be defined in the graph or its subgraphs.', - recommended: 'strict', }, messages: { 'no-circular-dependencies': 'Circular dependency detected starting from {{firstDependency}}: {{path}}', @@ -28,4 +27,4 @@ export const noCircularDependenciesGenerator = () => { }, defaultOptions: [], }) satisfies Rule; -}; \ No newline at end of file +}; diff --git a/packages/eslint-plugin-obsidian/src/rules/stronglyTypedInjectComponent/index.ts b/packages/eslint-plugin-obsidian/src/rules/stronglyTypedInjectComponent/index.ts index 6c44a46e..da605f7c 100644 --- a/packages/eslint-plugin-obsidian/src/rules/stronglyTypedInjectComponent/index.ts +++ b/packages/eslint-plugin-obsidian/src/rules/stronglyTypedInjectComponent/index.ts @@ -1,7 +1,7 @@ import { ESLintUtils, type TSESLint } from '@typescript-eslint/utils'; import type { RuleContext } from '@typescript-eslint/utils/ts-eslint'; import { create } from './createRule'; -import {Context} from '../../dto/context'; +import { Context } from '../../dto/context'; export type Options = readonly [ { @@ -13,7 +13,7 @@ export type Options = readonly [ type Rule = TSESLint.RuleModule<'strongly-typed-inject-component', Options>; const createRule = ESLintUtils.RuleCreator( - (name) => `https://wix-incubator.github.io/obsidian/docs/documentation/meta/eslint#${name}`, + name => `https://wix-incubator.github.io/obsidian/docs/documentation/meta/eslint#${name}`, ); export const stronglyTypedInjectComponentGenerator = () => { @@ -25,7 +25,6 @@ export const stronglyTypedInjectComponentGenerator = () => { meta: { docs: { description: 'Calling injectComponent without prop types is a bad practice and a common source of bugs.', - recommended: 'strict', }, messages: { 'strongly-typed-inject-component': '{{message}}', @@ -59,4 +58,4 @@ export const stronglyTypedInjectComponentGenerator = () => { }, ], }) satisfies Rule; -}; \ No newline at end of file +}; diff --git a/packages/eslint-plugin-obsidian/src/rules/stronglyTypedInjectComponent/injectComponentHandler.ts b/packages/eslint-plugin-obsidian/src/rules/stronglyTypedInjectComponent/injectComponentHandler.ts index 668201d5..d3c00e15 100644 --- a/packages/eslint-plugin-obsidian/src/rules/stronglyTypedInjectComponent/injectComponentHandler.ts +++ b/packages/eslint-plugin-obsidian/src/rules/stronglyTypedInjectComponent/injectComponentHandler.ts @@ -20,7 +20,7 @@ export class InjectComponentHandler { private getInjectedComponent(node: TSESTree.CallExpression, args: Identifier[]) { return new File(requireProgram(node)) .variables - .filter((variable) => variable.isArrowFunction) - .find((variable) => variable.name === args[0].name); + .filter(variable => variable.isArrowFunction) + .find(variable => variable.name === args[0].name); } -} \ No newline at end of file +} diff --git a/packages/eslint-plugin-obsidian/src/rules/stronglyTypedInjectComponent/result/errorReporter.ts b/packages/eslint-plugin-obsidian/src/rules/stronglyTypedInjectComponent/result/errorReporter.ts index 67296401..f21cc965 100644 --- a/packages/eslint-plugin-obsidian/src/rules/stronglyTypedInjectComponent/result/errorReporter.ts +++ b/packages/eslint-plugin-obsidian/src/rules/stronglyTypedInjectComponent/result/errorReporter.ts @@ -16,4 +16,4 @@ export class ErrorReporter { ); } } -} \ No newline at end of file +} diff --git a/packages/eslint-plugin-obsidian/src/rules/stronglyTypedInjectComponent/result/missingTypeError.ts b/packages/eslint-plugin-obsidian/src/rules/stronglyTypedInjectComponent/result/missingTypeError.ts index 303c4812..ac36e147 100644 --- a/packages/eslint-plugin-obsidian/src/rules/stronglyTypedInjectComponent/result/missingTypeError.ts +++ b/packages/eslint-plugin-obsidian/src/rules/stronglyTypedInjectComponent/result/missingTypeError.ts @@ -14,4 +14,4 @@ export class MissingTypeError implements Result { const injected = this.injected[0]; return own && injected ? `${own}, ${injected}` : own; } -} \ No newline at end of file +} diff --git a/packages/eslint-plugin-obsidian/src/rules/stronglyTypedInjectComponent/result/redundantTypeError.ts b/packages/eslint-plugin-obsidian/src/rules/stronglyTypedInjectComponent/result/redundantTypeError.ts index 5b67e07f..0445ef88 100644 --- a/packages/eslint-plugin-obsidian/src/rules/stronglyTypedInjectComponent/result/redundantTypeError.ts +++ b/packages/eslint-plugin-obsidian/src/rules/stronglyTypedInjectComponent/result/redundantTypeError.ts @@ -10,4 +10,4 @@ export class RedundantTypeError implements Result { getMessage() { return `injectComponent has one or more redundant types: ${toString(this.redundantType)}.`; } -} \ No newline at end of file +} diff --git a/packages/eslint-plugin-obsidian/src/rules/stronglyTypedInjectComponent/result/result.ts b/packages/eslint-plugin-obsidian/src/rules/stronglyTypedInjectComponent/result/result.ts index 82e4ffb4..5b9a05f6 100644 --- a/packages/eslint-plugin-obsidian/src/rules/stronglyTypedInjectComponent/result/result.ts +++ b/packages/eslint-plugin-obsidian/src/rules/stronglyTypedInjectComponent/result/result.ts @@ -1,4 +1,4 @@ export interface Result { readonly isError: boolean; getMessage: () => string; -} \ No newline at end of file +} diff --git a/packages/eslint-plugin-obsidian/src/rules/stronglyTypedInjectComponent/result/success.ts b/packages/eslint-plugin-obsidian/src/rules/stronglyTypedInjectComponent/result/success.ts index 56e548bc..ae8a5ec5 100644 --- a/packages/eslint-plugin-obsidian/src/rules/stronglyTypedInjectComponent/result/success.ts +++ b/packages/eslint-plugin-obsidian/src/rules/stronglyTypedInjectComponent/result/success.ts @@ -6,4 +6,4 @@ export class Success implements Result { getMessage(): string { throw new Error('Success should not have an error message'); } -} \ No newline at end of file +} diff --git a/packages/eslint-plugin-obsidian/src/rules/stronglyTypedInjectComponent/typeValidator.ts b/packages/eslint-plugin-obsidian/src/rules/stronglyTypedInjectComponent/typeValidator.ts index 70788f75..fb818f02 100644 --- a/packages/eslint-plugin-obsidian/src/rules/stronglyTypedInjectComponent/typeValidator.ts +++ b/packages/eslint-plugin-obsidian/src/rules/stronglyTypedInjectComponent/typeValidator.ts @@ -22,16 +22,16 @@ export class TypeValidator { } private areTypesValid(componentProps: Type, injectComponentGenerics: Type[]): Result { - if ( this.typesAreEqual(componentProps, injectComponentGenerics) && this.isInjected(componentProps)) { + if (this.typesAreEqual(componentProps, injectComponentGenerics) && this.isInjected(componentProps)) { return new RedundantTypeError(injectComponentGenerics); } if ( - this.hasInlineType(injectComponentGenerics) || - (this.typesAreEqual(componentProps, injectComponentGenerics) && !this.isInjected(componentProps)) || - (isEmpty(injectComponentGenerics) && this.isInjected(componentProps)) || - this.typesAreInCorrectOrder(injectComponentGenerics, componentProps) || - (this.isInjected(componentProps) && injectComponentGenerics.length === 2) + this.hasInlineType(injectComponentGenerics) + || (this.typesAreEqual(componentProps, injectComponentGenerics) && !this.isInjected(componentProps)) + || (isEmpty(injectComponentGenerics) && this.isInjected(componentProps)) + || this.typesAreInCorrectOrder(injectComponentGenerics, componentProps) + || (this.isInjected(componentProps) && injectComponentGenerics.length === 2) ) return new Success(); const injected = this.getInjectedTypes(componentProps); @@ -62,9 +62,9 @@ export class TypeValidator { private typesAreInCorrectOrder(injectComponentGenerics: Type[], componentProps: Type) { const isInjectSecond = !!injectComponentGenerics[1]?.toString()[0].match(stringToRegex(this.injectedPattern)); - return isInjectSecond && - componentProps.size() === injectComponentGenerics.length && - componentProps.includes(injectComponentGenerics); + return isInjectSecond + && componentProps.size() === injectComponentGenerics.length + && componentProps.includes(injectComponentGenerics); } private get injectedPattern() { @@ -74,4 +74,4 @@ export class TypeValidator { private get ownPattern() { return this.options[0].ownPropsPattern; } -} \ No newline at end of file +} diff --git a/packages/eslint-plugin-obsidian/src/rules/unresolvedProviderDependencies/dependencyResolver.ts b/packages/eslint-plugin-obsidian/src/rules/unresolvedProviderDependencies/dependencyResolver.ts index c5031e47..4f3c231c 100644 --- a/packages/eslint-plugin-obsidian/src/rules/unresolvedProviderDependencies/dependencyResolver.ts +++ b/packages/eslint-plugin-obsidian/src/rules/unresolvedProviderDependencies/dependencyResolver.ts @@ -21,9 +21,9 @@ export class DependencyResolver { .flatMap(this.getGraphDependencies); } - private getGraphDependencies({ clazz }: ClassFile) { + private getGraphDependencies(this: void, { clazz }: ClassFile) { return clazz .getDecoratedMethods('Provides') - .map((method) => method.name); + .map(method => method.name); } -} \ No newline at end of file +} diff --git a/packages/eslint-plugin-obsidian/src/rules/unresolvedProviderDependencies/errorReporter.ts b/packages/eslint-plugin-obsidian/src/rules/unresolvedProviderDependencies/errorReporter.ts index 7a2b9e8a..59e4e765 100644 --- a/packages/eslint-plugin-obsidian/src/rules/unresolvedProviderDependencies/errorReporter.ts +++ b/packages/eslint-plugin-obsidian/src/rules/unresolvedProviderDependencies/errorReporter.ts @@ -3,9 +3,9 @@ import type { Context } from '../../dto/context'; export function reportErrorIfDependencyIsUnresolved( context: Context, - {error, param, node}: {error: boolean; param?: string; node?: TSESTree.Node}, + { error, param, node }: { error: boolean; param?: string; node?: TSESTree.Node }, ) { if (error && node) { - context.reportError(node, 'unresolved-provider-dependencies', {dependencyName: param}); + context.reportError(node, 'unresolved-provider-dependencies', { dependencyName: param }); } } diff --git a/packages/eslint-plugin-obsidian/src/rules/unresolvedProviderDependencies/index.ts b/packages/eslint-plugin-obsidian/src/rules/unresolvedProviderDependencies/index.ts index 99ab432b..d2764990 100644 --- a/packages/eslint-plugin-obsidian/src/rules/unresolvedProviderDependencies/index.ts +++ b/packages/eslint-plugin-obsidian/src/rules/unresolvedProviderDependencies/index.ts @@ -3,12 +3,12 @@ import type { RuleContext } from '@typescript-eslint/utils/ts-eslint'; import { create } from './createRule'; import { PathResolver } from '../../framework/pathResolver'; import { FileReader } from '../../framework/fileReader'; -import {Context} from '../../dto/context'; +import { Context } from '../../dto/context'; type Rule = TSESLint.RuleModule<'unresolved-provider-dependencies', []>; const createRule = ESLintUtils.RuleCreator( - (name) => `https://wix-incubator.github.io/obsidian/docs/documentation/meta/eslint#${name}`, + name => `https://wix-incubator.github.io/obsidian/docs/documentation/meta/eslint#${name}`, ); export const unresolvedProviderDependenciesGenerator = ( @@ -22,7 +22,6 @@ export const unresolvedProviderDependenciesGenerator = ( meta: { docs: { description: 'Dependencies must be defined in the graph or its subgraphs.', - recommended: 'strict', }, messages: { 'unresolved-provider-dependencies': 'Dependency {{ dependencyName }} is unresolved.', @@ -32,4 +31,4 @@ export const unresolvedProviderDependenciesGenerator = ( }, defaultOptions: [], }) satisfies Rule; -}; \ No newline at end of file +}; diff --git a/packages/eslint-plugin-obsidian/src/rules/unresolvedProviderDependencies/resolvedDependencyChecker.ts b/packages/eslint-plugin-obsidian/src/rules/unresolvedProviderDependencies/resolvedDependencyChecker.ts index d1157bf6..147374cd 100644 --- a/packages/eslint-plugin-obsidian/src/rules/unresolvedProviderDependencies/resolvedDependencyChecker.ts +++ b/packages/eslint-plugin-obsidian/src/rules/unresolvedProviderDependencies/resolvedDependencyChecker.ts @@ -4,13 +4,12 @@ import type { Parameter } from '../../dto/parameter'; type DependencyCheckResult = { error: boolean; param?: string; node?: any }; export class ResolvedDependencyChecker { - public check(clazz: Clazz, dependencies: string[]): DependencyCheckResult { const unresolvedDependency = clazz .getDecoratedMethods('Provides') - .flatMap((method) => method.parameters) - .find((provider) => !dependencies.includes(provider.name)); - return this.getResult(unresolvedDependency); + .flatMap(method => method.parameters) + .find(provider => !dependencies.includes(provider.name)); + return this.getResult(unresolvedDependency); } private getResult(unresolvedDependency: Parameter | undefined): DependencyCheckResult { @@ -19,4 +18,4 @@ export class ResolvedDependencyChecker { } return { error: false }; } -} \ No newline at end of file +} diff --git a/packages/eslint-plugin-obsidian/src/rules/unresolvedProviderDependencies/subgraphResolver.ts b/packages/eslint-plugin-obsidian/src/rules/unresolvedProviderDependencies/subgraphResolver.ts index 260a37f1..7e3bd9d3 100644 --- a/packages/eslint-plugin-obsidian/src/rules/unresolvedProviderDependencies/subgraphResolver.ts +++ b/packages/eslint-plugin-obsidian/src/rules/unresolvedProviderDependencies/subgraphResolver.ts @@ -12,7 +12,7 @@ export class SubgraphResolver { return [ ...this.getImportedGraphs(clazz), ...this.getLocalGraphs(clazz), - ].flatMap((g) => [g, ...this.resolve(g)]); + ].flatMap(g => [g, ...this.resolve(g)]); } private getImportedGraphs(clazz: ClassFile) { @@ -39,7 +39,7 @@ export class SubgraphResolver { return this.getLocalSubgraphClasses(subgraphs, clazz); } - private getSubgraphsPropertyFromGraphDecorator({clazz}: ClassFile) { + private getSubgraphsPropertyFromGraphDecorator({ clazz }: ClassFile) { const graphDecorator = clazz.requireDecorator('Graph'); return graphDecorator.getProperty('subgraphs'); } @@ -51,7 +51,7 @@ export class SubgraphResolver { return this.createLocalGraphClasses(clazz, localGraphNames); } - private createLocalGraphClasses({clazz, imports, path}: ClassFile, localGraphNames: string[]) { + private createLocalGraphClasses({ clazz, imports, path }: ClassFile, localGraphNames: string[]) { if (localGraphNames.length === 0) return []; const parent = new File(requireProgram(clazz.node), path); return localGraphNames.map((localGraphName) => { @@ -62,15 +62,15 @@ export class SubgraphResolver { private getSubgraphNamesFromDecoratorProperty(subgraphs: Property) { return mapArrayExpression( subgraphs.getValue(), - (el) => (el as TSESTree.Identifier).name, + el => (el as TSESTree.Identifier).name, ); } - private getLocalGraphNames(subgraphs: string[], {imports}: ClassFile) { + private getLocalGraphNames(subgraphs: string[], { imports }: ClassFile) { return subgraphs.filter((subgraph) => { return imports.some(($import) => { return $import.includes(subgraph); }) === false; }); } -} \ No newline at end of file +} diff --git a/packages/eslint-plugin-obsidian/src/utils/array.ts b/packages/eslint-plugin-obsidian/src/utils/array.ts index 2ba9562a..010d9afd 100644 --- a/packages/eslint-plugin-obsidian/src/utils/array.ts +++ b/packages/eslint-plugin-obsidian/src/utils/array.ts @@ -1,7 +1,7 @@ export function isEmpty(array?: any[]) { - return array === undefined || array.length === 0; + return array === undefined || array.length === 0; } -export function toString(array: any[] = []) { - return `[${array.map((a) => a.toString()).join(', ')}]`; -} \ No newline at end of file +export function toString(array: object[] = []) { + return `[${array.map(a => a.toString()).join(', ')}]`; +} diff --git a/packages/eslint-plugin-obsidian/src/utils/assertions.ts b/packages/eslint-plugin-obsidian/src/utils/assertions.ts index 85db3853..7a418fbb 100644 --- a/packages/eslint-plugin-obsidian/src/utils/assertions.ts +++ b/packages/eslint-plugin-obsidian/src/utils/assertions.ts @@ -1,3 +1,3 @@ -export function assertDefined(obj: T, message?: string): asserts obj is NonNullable{ +export function assertDefined(obj: T, message?: string): asserts obj is NonNullable { if (!obj) throw new Error(message || 'Expected object to exist'); } diff --git a/packages/eslint-plugin-obsidian/src/utils/ast.ts b/packages/eslint-plugin-obsidian/src/utils/ast.ts index b1252039..e2e215b3 100644 --- a/packages/eslint-plugin-obsidian/src/utils/ast.ts +++ b/packages/eslint-plugin-obsidian/src/utils/ast.ts @@ -1,14 +1,14 @@ -import type { TSESTree } from '@typescript-eslint/types'; +import { AST_NODE_TYPES, type TSESTree } from '@typescript-eslint/types'; import type { ArrayExpressionElement } from '../types'; import { assertDefined } from './assertions'; export function isClassLike(node: TSESTree.Node): node is TSESTree.ClassDeclaration { switch (node.type) { - case 'ClassDeclaration': + case AST_NODE_TYPES.ClassDeclaration: return true; - case 'ExportDefaultDeclaration': + case AST_NODE_TYPES.ExportDefaultDeclaration: return isClassLike(node.declaration); - case 'ExportNamedDeclaration': + case AST_NODE_TYPES.ExportNamedDeclaration: return isClassLike(node.declaration!); default: return false; @@ -16,28 +16,28 @@ export function isClassLike(node: TSESTree.Node): node is TSESTree.ClassDeclarat } export function isTypeReference(node?: TSESTree.Node): node is TSESTree.TSTypeReference { - return node?.type === 'TSTypeReference'; + return node?.type === AST_NODE_TYPES.TSTypeReference; } export function isTypeLiteral(node: TSESTree.Node): node is TSESTree.TSTypeLiteral { - return node.type === 'TSTypeLiteral'; + return node.type === AST_NODE_TYPES.TSTypeLiteral; } export function isImportDeclaration(node: TSESTree.Node): node is TSESTree.ImportDeclaration { - return node.type === 'ImportDeclaration'; + return node.type === AST_NODE_TYPES.ImportDeclaration; } export function isMethodDefinition(node: TSESTree.Node): node is TSESTree.MethodDefinition { - return node.type === 'MethodDefinition'; + return node.type === AST_NODE_TYPES.MethodDefinition; } export function getClassDeclaration(node: TSESTree.Node): TSESTree.ClassDeclaration | undefined { switch (node.type) { - case 'ClassDeclaration': + case AST_NODE_TYPES.ClassDeclaration: return node; - case 'ExportDefaultDeclaration': + case AST_NODE_TYPES.ExportDefaultDeclaration: return getClassDeclaration(node.declaration); - case 'ExportNamedDeclaration': + case AST_NODE_TYPES.ExportNamedDeclaration: return getClassDeclaration(node.declaration!); default: return undefined; @@ -47,7 +47,7 @@ export function getClassDeclaration(node: TSESTree.Node): TSESTree.ClassDeclarat export function requireProgram(node: TSESTree.Node | undefined): TSESTree.Program { assertDefined(node); switch (node.type) { - case 'Program': + case AST_NODE_TYPES.Program: return node; default: return requireProgram(node.parent); @@ -64,8 +64,8 @@ export function getDecoratorProperty(decorator: TSESTree.Decorator, propertyName function getObjectProperty(obj: TSESTree.ObjectExpression, propertyName: string) { return obj.properties.find((property) => { - return property.type === 'Property' - && property.key.type === 'Identifier' + return property.type === AST_NODE_TYPES.Property + && property.key.type === AST_NODE_TYPES.Identifier && property.key.name === propertyName; }) as TSESTree.Property | undefined; } @@ -75,17 +75,17 @@ export function mapArrayExpression(array: TSESTree.ArrayExpression, map: (el: } export function isTypeIntersection(node: TSESTree.Node | undefined): node is TSESTree.TSIntersectionType { - return node?.type === 'TSIntersectionType'; + return node?.type === AST_NODE_TYPES.TSIntersectionType; } export function isTypeAnnotation(node: TSESTree.Node | undefined): node is TSESTree.TSTypeAnnotation { - return node?.type === 'TSTypeAnnotation'; + return node?.type === AST_NODE_TYPES.TSTypeAnnotation; } export function isAnyType(node: TSESTree.Node | undefined): node is TSESTree.TSAnyKeyword { - return node?.type === 'TSAnyKeyword'; + return node?.type === AST_NODE_TYPES.TSAnyKeyword; } export function isVariableDeclaration(node: TSESTree.Node): node is TSESTree.VariableDeclaration { - return node.type === 'VariableDeclaration'; -} \ No newline at end of file + return node.type === AST_NODE_TYPES.VariableDeclaration; +} diff --git a/packages/eslint-plugin-obsidian/src/utils/regex.ts b/packages/eslint-plugin-obsidian/src/utils/regex.ts index ee550d91..955d377b 100644 --- a/packages/eslint-plugin-obsidian/src/utils/regex.ts +++ b/packages/eslint-plugin-obsidian/src/utils/regex.ts @@ -2,4 +2,4 @@ export function stringToRegex(str: string) { const main = str.match(/\/(.+)\/.*/)![1]; const options = str.match(/\/.+\/(.*)/)![1]; return new RegExp(main, options); -} \ No newline at end of file +} diff --git a/packages/eslint-plugin-obsidian/tests/noCircularDependencies/circularDependencies.test.ts b/packages/eslint-plugin-obsidian/tests/noCircularDependencies/circularDependencies.test.ts index bfeff44f..bc562066 100644 --- a/packages/eslint-plugin-obsidian/tests/noCircularDependencies/circularDependencies.test.ts +++ b/packages/eslint-plugin-obsidian/tests/noCircularDependencies/circularDependencies.test.ts @@ -29,4 +29,4 @@ ruleTester.run( }, ], }, -); \ No newline at end of file +); diff --git a/packages/eslint-plugin-obsidian/tests/noCircularDependencies/code/invalidGraphs.ts b/packages/eslint-plugin-obsidian/tests/noCircularDependencies/code/invalidGraphs.ts index 9c9a7a5c..1108cb15 100644 --- a/packages/eslint-plugin-obsidian/tests/noCircularDependencies/code/invalidGraphs.ts +++ b/packages/eslint-plugin-obsidian/tests/noCircularDependencies/code/invalidGraphs.ts @@ -51,4 +51,4 @@ class SimpleGraph extends ObjectGraph { baz(bar: any): string { return 'baz'; } -}`; \ No newline at end of file +}`; diff --git a/packages/eslint-plugin-obsidian/tests/noCircularDependencies/code/validGraphs.ts b/packages/eslint-plugin-obsidian/tests/noCircularDependencies/code/validGraphs.ts index 6abec9f0..2cf05710 100644 --- a/packages/eslint-plugin-obsidian/tests/noCircularDependencies/code/validGraphs.ts +++ b/packages/eslint-plugin-obsidian/tests/noCircularDependencies/code/validGraphs.ts @@ -18,4 +18,3 @@ export default class SimpleGraph extends ObjectGraph { return 'baz'; } }`; - diff --git a/packages/eslint-plugin-obsidian/tests/stronglyTypedInjectComponent/code/invalidGraphs.ts b/packages/eslint-plugin-obsidian/tests/stronglyTypedInjectComponent/code/invalidGraphs.ts index 38c7f207..0fa3f410 100644 --- a/packages/eslint-plugin-obsidian/tests/stronglyTypedInjectComponent/code/invalidGraphs.ts +++ b/packages/eslint-plugin-obsidian/tests/stronglyTypedInjectComponent/code/invalidGraphs.ts @@ -50,4 +50,4 @@ const _Foo = (props: Injected) => { return null; }; -export const Foo = injectComponent(_Foo, SomeGraph);`; \ No newline at end of file +export const Foo = injectComponent(_Foo, SomeGraph);`; diff --git a/packages/eslint-plugin-obsidian/tests/stronglyTypedInjectComponent/stronglyTypedInjectComponent.test.ts b/packages/eslint-plugin-obsidian/tests/stronglyTypedInjectComponent/stronglyTypedInjectComponent.test.ts index 8e2f9560..08466f32 100644 --- a/packages/eslint-plugin-obsidian/tests/stronglyTypedInjectComponent/stronglyTypedInjectComponent.test.ts +++ b/packages/eslint-plugin-obsidian/tests/stronglyTypedInjectComponent/stronglyTypedInjectComponent.test.ts @@ -52,4 +52,4 @@ ruleTester.run( }, ], }, -); \ No newline at end of file +); diff --git a/packages/eslint-plugin-obsidian/tests/stubs/PathResolverStub.ts b/packages/eslint-plugin-obsidian/tests/stubs/PathResolverStub.ts index 2a0e73ab..7bec0bcc 100644 --- a/packages/eslint-plugin-obsidian/tests/stubs/PathResolverStub.ts +++ b/packages/eslint-plugin-obsidian/tests/stubs/PathResolverStub.ts @@ -1,10 +1,9 @@ import { PathResolver } from '../../src/framework/pathResolver'; export class PathResolverStub implements PathResolver { - public resolve(_baseFilePath: string, relativeFilePath: string): string { const cwd = process.cwd(); - switch(relativeFilePath) { + switch (relativeFilePath) { case './subgraph': return `${cwd}/tests/unresolvedProviderDependencies/fixtures/subgraph.ts`; case './graphWithSubgraph': @@ -15,4 +14,4 @@ export class PathResolverStub implements PathResolver { throw new Error(`PathResolverStub: Unhandled relativeFilePath: ${relativeFilePath}`); } } -} \ No newline at end of file +} diff --git a/packages/eslint-plugin-obsidian/tests/unresolvedProviderDependencies/fixtures/graphWithSubgraph.ts b/packages/eslint-plugin-obsidian/tests/unresolvedProviderDependencies/fixtures/graphWithSubgraph.ts index c50fa626..b564dcc0 100644 --- a/packages/eslint-plugin-obsidian/tests/unresolvedProviderDependencies/fixtures/graphWithSubgraph.ts +++ b/packages/eslint-plugin-obsidian/tests/unresolvedProviderDependencies/fixtures/graphWithSubgraph.ts @@ -1,7 +1,7 @@ import { Graph, ObjectGraph, Provides } from 'react-obsidian'; import Subgraph from './subgraph'; -@Graph({subgraphs: [Subgraph]}) +@Graph({ subgraphs: [Subgraph] }) export default class GraphWithSubgraph extends ObjectGraph { @Provides() someString(instanceId: string, foo: string): string { diff --git a/packages/eslint-plugin-obsidian/tsconfig.json b/packages/eslint-plugin-obsidian/tsconfig.json index b0e5af10..7913cf8e 100644 --- a/packages/eslint-plugin-obsidian/tsconfig.json +++ b/packages/eslint-plugin-obsidian/tsconfig.json @@ -2,14 +2,13 @@ "include": [ "src/**/*", "tests/**/*", - ".eslintrc.js", ], "exclude": [ "node_modules", "dist" ], "compilerOptions": { - "target": "es2018", + "target": "es2023", "module": "Node16", "lib": [ "ES6", diff --git a/packages/react-obsidian/.eslintignore b/packages/react-obsidian/.eslintignore deleted file mode 100644 index b3555380..00000000 --- a/packages/react-obsidian/.eslintignore +++ /dev/null @@ -1,2 +0,0 @@ -dist/*, -wallaby.js diff --git a/packages/react-obsidian/.eslintrc.json b/packages/react-obsidian/.eslintrc.json deleted file mode 100644 index b926c9fb..00000000 --- a/packages/react-obsidian/.eslintrc.json +++ /dev/null @@ -1,117 +0,0 @@ -{ - "root": true, - "env": { - "es2021": true, - "jest": true - }, - "ignorePatterns": ["**/*.config.js"], - "extends": [ - "airbnb-base", - "airbnb-typescript", - "plugin:react/recommended", - "plugin:import/typescript", - "plugin:@stylistic/disable-legacy", - "plugin:jest-formatting/recommended" - ], - "parser": "@typescript-eslint/parser", - "parserOptions": { - "sourceType": "module", - "project": "tsconfig.json" - }, - "plugins": [ - "@stylistic", - "react", - "@typescript-eslint", - "import-newlines", - "unused-imports", - "jest-formatting", - "obsidian" - ], - "rules": { - "no-console":"off", - "obsidian/unresolved-provider-dependencies": "error", - "obsidian/no-circular-dependencies": "warn", - "obsidian/strongly-typed-inject-component": ["error", {"injectedPropsPattern": "/\\b(Injected|InjectedProps)\\b/"}], - "@stylistic/max-len": [ - "error", - { - "code": 115, - "comments": 200, - "ignoreRegExpLiterals": true - } - ], - "@stylistic/no-extra-semi": "error", - "@stylistic/lines-between-class-members": ["error", "always", {"exceptAfterSingleLine": true}], - "import/extensions": "off", - "@typescript-eslint/no-non-null-assertion": "off", - "no-useless-constructor": "off", - "@typescript-eslint/member-delimiter-style": "error", - "import/no-unresolved": "off", - "class-methods-use-this": "off", - "react/jsx-filename-extension": ["error", {"extensions": [".js", ".ts", ".jsx", ".tsx"]}], - "react/jsx-props-no-spreading": "off", - "no-use-before-define": "off", - "@typescript-eslint/no-use-before-define": ["off"], - "no-restricted-syntax": "off", - "import/no-named-as-default": "off", - "@typescript-eslint/ban-types": ["off"], - "import/no-extraneous-dependencies": ["error", {"devDependencies": true}], - "max-classes-per-file": ["off"], - "curly": ["error", "multi-line"], - "@stylistic/semi": ["error", "always"], - "@stylistic/comma-dangle": ["error", "always-multiline"], - "@stylistic/function-call-argument-newline": ["error", "consistent"], - "@stylistic/function-paren-newline": ["error", "multiline-arguments"], - "@stylistic/object-curly-newline": [ - "error", - { - "ObjectExpression": { - "multiline": true, - "consistent": true - }, - "ObjectPattern": { - "multiline": true, - "consistent": true - } - } - ], - "@stylistic/no-whitespace-before-property": "error", - "import-newlines/enforce": [ - "error", - { - "items": 3, - "max-len": 115, - "semi": false - } - ], - "react/display-name": "off", - "no-plusplus": "off", - "@stylistic/no-trailing-spaces": "error", - "no-shadow": "off", - "@typescript-eslint/no-shadow": ["error", {"allow": ["Graph"]}], - "react/button-has-type": "off", - "react/jsx-one-expression-per-line": ["off"], - "arrow-body-style": ["off"], - "@stylistic/quotes": ["error", "single", {"avoidEscape": true, "allowTemplateLiterals": true}], - "@typescript-eslint/lines-between-class-members": "off", - "@typescript-eslint/no-explicit-any": "off", - "import/prefer-default-export": "off", - "@typescript-eslint/no-unused-vars": "off", - "unused-imports/no-unused-imports": "error", - "unused-imports/no-unused-vars": [ - "error", - { "vars": "all", "varsIgnorePattern": "^_", "args": "after-used", "argsIgnorePattern": "^_" } - ], - "@typescript-eslint/ban-ts-comment": "off" - }, - "settings": { - "import/resolver": { - "node": { - "extensions": [".js", ".jsx", ".ts", ".tsx"] - } - }, - "react": { - "version": "detect" - } - } -} diff --git a/packages/react-obsidian/.vscode/settings.json b/packages/react-obsidian/.vscode/settings.json new file mode 100644 index 00000000..3dc7d64d --- /dev/null +++ b/packages/react-obsidian/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "eslint.useFlatConfig": true +} \ No newline at end of file diff --git a/packages/react-obsidian/babel.config.js b/packages/react-obsidian/babel.config.js index 0fde13f4..034c18e2 100644 --- a/packages/react-obsidian/babel.config.js +++ b/packages/react-obsidian/babel.config.js @@ -1,7 +1,7 @@ module.exports = { presets: [ - ['@babel/preset-env', { targets: { node: 'current' }}], - ['@babel/preset-typescript', {'onlyRemoveTypeImports': true}], + ['@babel/preset-env', { targets: { node: 'current', 'esmodules': true } }], + ['@babel/preset-typescript', { 'onlyRemoveTypeImports': true }], '@babel/preset-react', ], plugins: [ diff --git a/packages/react-obsidian/eslint.config.mjs b/packages/react-obsidian/eslint.config.mjs new file mode 100644 index 00000000..3c815d75 --- /dev/null +++ b/packages/react-obsidian/eslint.config.mjs @@ -0,0 +1,140 @@ +import stylistic from "@stylistic/eslint-plugin"; +import eslintJest from "eslint-plugin-jest"; +import obsidian from "eslint-plugin-obsidian"; +import globals from "globals"; +import tsParser from "@typescript-eslint/parser"; +import eslintTs from "typescript-eslint"; +import eslintJs from "@eslint/js"; + + +export default eslintTs.config( + { + ignores: ["**/*.d.ts", "**/*.js"], + }, + { + files: ["**/*.ts", "**/*.tsx"], + name: "ReactObsidian", + languageOptions: { + globals: { + ...globals.jest, + }, + sourceType: "module", + parser: tsParser, + parserOptions: { + project: "tsconfig.json", + tsconfigRootDir: import.meta.dirname, + }, + }, + settings: { + "import/resolver": { + node: { + extensions: [".js", ".jsx", ".ts", ".tsx"], + }, + }, + react: { + version: "detect", + }, + }, + extends: [ + eslintJs.configs.recommended, + ...eslintTs.configs.recommendedTypeChecked, + eslintJest.configs['flat/recommended'], + stylistic.configs["recommended-flat"], + ], + plugins: { + obsidian, + }, + rules: { + "@typescript-eslint/no-explicit-any": "off", + "@typescript-eslint/no-unsafe-member-access": "off", + "@typescript-eslint/no-empty-object-type": "off", + "@typescript-eslint/no-unsafe-assignment": "off", + "@typescript-eslint/no-unsafe-argument": "off", + "@typescript-eslint/no-unsafe-return": "off", + "@typescript-eslint/no-unsafe-function-type": "off", + "@typescript-eslint/no-unsafe-call": "off", + "@typescript-eslint/unbound-method": "off", + "@typescript-eslint/no-unused-vars": [ + "error", + { + "args": "all", + "argsIgnorePattern": "^_", + "caughtErrors": "all", + "caughtErrorsIgnorePattern": "^_", + "destructuredArrayIgnorePattern": "^_", + "varsIgnorePattern": "^_", + "ignoreRestSiblings": true + } + ], + "no-empty-function": ["error", { + allow: ["constructors"], + }], + "no-multiple-empty-lines": ["error", { + max: 1, + }], + "no-multi-spaces": "error", + "@stylistic/brace-style": ["error", "1tbs", { allowSingleLine: true }], + "@stylistic/jsx-one-expression-per-line": ["error", { + "allow": "non-jsx" + }], + "@stylistic/max-len": ["error", { + code: 115, + comments: 200, + ignoreRegExpLiterals: true, + ignoreStrings: true, + ignoreTemplateLiterals: true, + }], + "@stylistic/max-statements-per-line": ["error", { "max": 2 }], + "@stylistic/no-extra-semi": "error", + + "@stylistic/lines-between-class-members": ["error", "always", { + exceptAfterSingleLine: true, + }], + "lines-between-class-members": ["error", { + enforce: [ + { blankLine: "always", prev: "method", next: "method" }, + { blankLine: "never", prev: "field", next: "field" }, + ] + }], + curly: ["error", "multi-line"], + "@stylistic/semi": ["error", "always"], + "@stylistic/comma-dangle": ["error", "always-multiline"], + "@stylistic/function-call-argument-newline": ["error", "consistent"], + "@stylistic/function-paren-newline": ["error", "multiline-arguments"], + + "@stylistic/object-curly-newline": ["error", { + ObjectExpression: { + multiline: true, + consistent: true, + }, + + ObjectPattern: { + multiline: true, + consistent: true, + }, + }], + + "@stylistic/no-whitespace-before-property": "error", + "@stylistic/no-trailing-spaces": "error", + "@stylistic/member-delimiter-style": ["error", { + "multiline": { + "delimiter": "semi", + "requireLast": true + }, + "singleline": { + "delimiter": "semi", + "requireLast": false + }, + "multilineDetection": "brackets" + }], + "@stylistic/quotes": ["error", "single", { + avoidEscape: true, + allowTemplateLiterals: true, + }], + "@typescript-eslint/no-base-to-string": "off", + "obsidian/unresolved-provider-dependencies": "error", + "obsidian/no-circular-dependencies": "error", + "obsidian/strongly-typed-inject-component": "error", + }, + } +); diff --git a/packages/react-obsidian/package.json b/packages/react-obsidian/package.json index 7cf3e9ed..87ccf482 100644 --- a/packages/react-obsidian/package.json +++ b/packages/react-obsidian/package.json @@ -1,10 +1,10 @@ { "name": "react-obsidian", - "version": "2.10.2", + "version": "2.11.0-alpha.1", "description": "Dependency injection framework for React and React Native applications", "scripts": { "prepack": "npm run lint && tsc --project tsconfig.prod.json", - "lint": "npx eslint src transformers test --ignore-pattern '*.d.ts' --ext .ts,.tsx,.js", + "lint": "eslint", "build": "tsc --project tsconfig.json", "pretest": "tsc --project tsconfig.json", "test": "npx jest", @@ -22,15 +22,18 @@ "react": "*" }, "devDependencies": { - "@babel/core": "7.22.x", - "@babel/eslint-parser": "7.22.x", - "@babel/plugin-proposal-decorators": "7.22.x", - "@babel/plugin-transform-class-properties": "7.22.x", - "@babel/preset-env": "7.22.x", - "@babel/preset-react": "7.22.x", - "@babel/preset-typescript": "7.22.x", - "@babel/types": "7.24.x", - "@stylistic/eslint-plugin": "^1.7.0", + "@babel/core": "^7.25.2", + "@babel/eslint-parser": "^7.25.1", + "@babel/plugin-proposal-decorators": "^7.24.7", + "@babel/plugin-transform-class-properties": "^7.25.4", + "@babel/preset-env": "^7.25.4", + "@babel/preset-react": "^7.24.7", + "@babel/preset-typescript": "^7.24.7", + "@babel/types": "^7.25.6", + "@eslint/compat": "^1.1.1", + "@eslint/eslintrc": "^3.1.0", + "@eslint/js": "^9.9.1", + "@stylistic/eslint-plugin": "^2.7.2", "@testing-library/react": "14.x.x", "@types/hoist-non-react-statics": "^3.3.1", "@types/jest": "29.5.x", @@ -38,21 +41,19 @@ "@types/lodash": "^4.14.176", "@types/react": "18.3.x", "@types/react-dom": "18.3.x", - "@typescript-eslint/eslint-plugin": "6.x.x", - "@typescript-eslint/parser": "6.x.x", + "@typescript-eslint/eslint-plugin": "^8.4.0", + "@typescript-eslint/parser": "^8.4.0", "babel-plugin-parameter-decorator": "1.x.x", "cross-env": "^7.0.3", - "eslint": "8.x.x", - "eslint-config-airbnb-typescript": "17.x.x", - "eslint-plugin-import": "^2.25.2", - "eslint-plugin-import-newlines": "^1.1.5", - "eslint-plugin-jest-formatting": "^3.1.0", - "eslint-plugin-obsidian": "2.10.2", - "eslint-plugin-react": "^7.26.1", - "eslint-plugin-react-hooks": "^4.2.0", - "eslint-plugin-unused-imports": "3.1.x", - "jest": "29.5.x", - "jest-environment-jsdom": "^29.5.0", + "eslint": "^9.9.1", + "eslint-plugin-jest": "^28.8.1", + "eslint-plugin-obsidian": "2.11.0-alpha.1", + "eslint-plugin-react": "^7.35.0", + "eslint-plugin-react-hooks": "^4.6.2", + "eslint-plugin-unused-imports": "^4.1.3", + "globals": "^15.9.0", + "jest": "29.7.x", + "jest-environment-jsdom": "^29.7.0", "jest-extended": "^4.0.0", "jest-mock-extended": "3.x.x", "jest-when": "3.x.x", @@ -60,7 +61,8 @@ "react": "18.2.x", "react-dom": "18.2.x", "setimmediate": "^1.0.5", - "typescript": "^4.5.4" + "typescript": "^5.5.4", + "typescript-eslint": "^8.3.0" }, "repository": { "type": "git", diff --git a/packages/react-obsidian/src/decorators/Memoize.ts b/packages/react-obsidian/src/decorators/Memoize.ts index 9d1dce64..d2032e5b 100644 --- a/packages/react-obsidian/src/decorators/Memoize.ts +++ b/packages/react-obsidian/src/decorators/Memoize.ts @@ -1,4 +1,3 @@ -/* eslint-disable no-param-reassign */ import 'reflect-metadata'; export default function Memoize() { diff --git a/packages/react-obsidian/src/decorators/inject/Inject.ts b/packages/react-obsidian/src/decorators/inject/Inject.ts index 85b3c0aa..920cf89d 100644 --- a/packages/react-obsidian/src/decorators/inject/Inject.ts +++ b/packages/react-obsidian/src/decorators/inject/Inject.ts @@ -3,7 +3,7 @@ import InjectionMetadata from '../../injectors/class/InjectionMetadata'; export function Inject(name?: string) { return ( - target: Object | any, + target: any, _propertyKey?: string, indexOrPropertyDescriptor?: number | PropertyDescriptor, ) => { diff --git a/packages/react-obsidian/src/decorators/provides/MemoizeDescriptor.ts b/packages/react-obsidian/src/decorators/provides/MemoizeDescriptor.ts index f64454ee..7bc3266e 100644 --- a/packages/react-obsidian/src/decorators/provides/MemoizeDescriptor.ts +++ b/packages/react-obsidian/src/decorators/provides/MemoizeDescriptor.ts @@ -1,4 +1,3 @@ -/* eslint-disable no-param-reassign */ export function memoizeDescriptor(propertyKey: string, descriptor: PropertyDescriptor): PropertyDescriptor { const originalValue = descriptor.value; descriptor.value = function value(...args: any[]) { diff --git a/packages/react-obsidian/src/graph/ObjectGraph.ts b/packages/react-obsidian/src/graph/ObjectGraph.ts index 0b69603c..07bd46c5 100644 --- a/packages/react-obsidian/src/graph/ObjectGraph.ts +++ b/packages/react-obsidian/src/graph/ObjectGraph.ts @@ -26,13 +26,11 @@ export abstract class ObjectGraph implements Graph { return this.propertyRetriever.retrieve(property, receiver, detector) as Dependency | undefined; } - onBind(_target: any) { - - } + onBind(_target: any) { void 0; } } Reflect.set(ObjectGraph, 'typeDiscriminator', 'ObjectGraph'); -export function isGraph(object: Constructable | any): object is Constructable { +export function isGraph(object: any): object is Constructable { return Reflect.get(object, 'typeDiscriminator') === 'ObjectGraph'; } diff --git a/packages/react-obsidian/src/graph/PropertyRetriever.test.ts b/packages/react-obsidian/src/graph/PropertyRetriever.test.ts index 47cfcfec..270c1421 100644 --- a/packages/react-obsidian/src/graph/PropertyRetriever.test.ts +++ b/packages/react-obsidian/src/graph/PropertyRetriever.test.ts @@ -33,7 +33,7 @@ describe('PropertyRetriever', () => { it('throws on circular dependencies', () => { const uut1 = new PropertyRetriever(new CircularDependencyGraph2()); - expect(() => uut1.retrieve('dep1')).toThrowError( + expect(() => uut1.retrieve('dep1')).toThrow( /Could not resolve dep1 from CircularDependencyGraph2\d because of a circular dependency: dep1 -> dep2 -> dep3 -> dep1/, ); }); diff --git a/packages/react-obsidian/src/graph/PropertyRetriever.ts b/packages/react-obsidian/src/graph/PropertyRetriever.ts index 5bc3cde6..b8c08f17 100644 --- a/packages/react-obsidian/src/graph/PropertyRetriever.ts +++ b/packages/react-obsidian/src/graph/PropertyRetriever.ts @@ -10,7 +10,7 @@ export default class PropertyRetriever { property: string, receiver?: unknown, maybeDetector?: CircularDependenciesDetector, - ): unknown | undefined { + ): unknown { const mangledPropertyKey = providedPropertiesStore.getMangledProperty(this.graph, property); const circularDependenciesDetector = maybeDetector ?? new CircularDependenciesDetector(this.graph.name); @@ -32,8 +32,8 @@ export default class PropertyRetriever { if (circularDependenciesDetector.hasCircularDependencies()) { throw new Error( `Could not resolve ${circularDependenciesDetector.firstDependencyName}` - + ` from ${circularDependenciesDetector.graphName} because of a circular dependency:` - + ` ${circularDependenciesDetector.getDependencies().join(' -> ')}`, + + ` from ${circularDependenciesDetector.graphName} because of a circular dependency:` + + ` ${circularDependenciesDetector.getDependencies().join(' -> ')}`, ); } @@ -56,6 +56,6 @@ export default class PropertyRetriever { const subgraphs = graphRegistry.getSubgraphs(this.graph); return subgraphs .map((subgraph: Graph) => subgraph.retrieve(property, receiver, circularDependenciesDetector)) - .filter((result) => result !== undefined); + .filter(result => result !== undefined); } } diff --git a/packages/react-obsidian/src/graph/PropertyRetrieverDelegate.ts b/packages/react-obsidian/src/graph/PropertyRetrieverDelegate.ts index f457efd3..f04d6fe4 100644 --- a/packages/react-obsidian/src/graph/PropertyRetrieverDelegate.ts +++ b/packages/react-obsidian/src/graph/PropertyRetrieverDelegate.ts @@ -5,7 +5,7 @@ interface PropertyRetrieverDelegate { property: string, receiver?: unknown, circularDependenciesDetector?: CircularDependenciesDetector - ) => unknown | undefined; + ) => unknown; } export default PropertyRetrieverDelegate; diff --git a/packages/react-obsidian/src/graph/ProviderBinder.ts b/packages/react-obsidian/src/graph/ProviderBinder.ts index 25094fdc..2c020bf5 100644 --- a/packages/react-obsidian/src/graph/ProviderBinder.ts +++ b/packages/react-obsidian/src/graph/ProviderBinder.ts @@ -1,10 +1,9 @@ -/* eslint-disable no-param-reassign */ import providedPropertiesStore from '../ProvidedPropertiesStore'; import { Graph } from './Graph'; export function bindProviders(graph: Graph & Record) { providedPropertiesStore.getMangledProperties(graph) - .filter((method) => graph[method]) + .filter(method => graph[method]) .forEach((method) => { graph[method] = graph[method].bind(graph); }); diff --git a/packages/react-obsidian/src/graph/registry/GraphRegistry.ts b/packages/react-obsidian/src/graph/registry/GraphRegistry.ts index 27dbb59e..e9cb39fc 100644 --- a/packages/react-obsidian/src/graph/registry/GraphRegistry.ts +++ b/packages/react-obsidian/src/graph/registry/GraphRegistry.ts @@ -25,7 +25,7 @@ export class GraphRegistry { getSubgraphs(graph: Graph): Graph[] { const Graph = this.instanceToConstructor.get(graph)!; const subgraphs = this.graphToSubgraphs.get(Graph) ?? new Set(); - return Array.from(subgraphs).map((G) => this.resolve(G)); + return Array.from(subgraphs).map(G => this.resolve(G)); } getGraphInstance(name: string): Graph { @@ -39,9 +39,9 @@ export class GraphRegistry { injectionToken?: string, ): T { if ((this.isSingleton(Graph) || this.isBoundToReactLifecycle(Graph)) && this.has(Graph, injectionToken)) { - return this.isComponentScopedLifecycleBound(Graph) ? - this.getByInjectionToken(Graph, injectionToken) : - this.getFirst(Graph); + return this.isComponentScopedLifecycleBound(Graph) + ? this.getByInjectionToken(Graph, injectionToken) + : this.getFirst(Graph); } if (this.isBoundToReactLifecycle(Graph) && source !== 'lifecycleOwner') { throw new ObtainLifecycleBoundGraphException(Graph); @@ -58,7 +58,7 @@ export class GraphRegistry { if (this.isComponentScopedLifecycleBound(Graph)) { return Array .from(instances) - .some((graph) => this.instanceToInjectionToken.get(graph) === injectionToken); + .some(graph => this.instanceToInjectionToken.get(graph) === injectionToken); } return (this.constructorToInstance.get(Graph)?.size ?? 0) > 0; @@ -151,7 +151,7 @@ export class GraphRegistry { } } -// @ts-ignore +// @ts-expect-error - workaround an issue in jest tests where the registry was created multiple times global.graphRegistry = global.graphRegistry || new GraphRegistry(); -// @ts-ignore +// @ts-expect-error - see above export default global.graphRegistry as GraphRegistry; diff --git a/packages/react-obsidian/src/graph/registry/GraphResolverChain.test.ts b/packages/react-obsidian/src/graph/registry/GraphResolverChain.test.ts index f597ba6c..099f7417 100644 --- a/packages/react-obsidian/src/graph/registry/GraphResolverChain.test.ts +++ b/packages/react-obsidian/src/graph/registry/GraphResolverChain.test.ts @@ -6,7 +6,6 @@ import GraphResolversChain from './GraphMiddlewareChain'; import { ObjectGraph } from '../ObjectGraph'; import { GraphMiddleware } from './GraphMiddleware'; - describe('GraphResolverChain', () => { let uut: GraphResolversChain; let defaultGraphResolver: GraphMiddleware; diff --git a/packages/react-obsidian/src/graph/registry/ObtainLifecycleBoundGraphException.ts b/packages/react-obsidian/src/graph/registry/ObtainLifecycleBoundGraphException.ts index 4657505c..af60ffa5 100644 --- a/packages/react-obsidian/src/graph/registry/ObtainLifecycleBoundGraphException.ts +++ b/packages/react-obsidian/src/graph/registry/ObtainLifecycleBoundGraphException.ts @@ -10,6 +10,6 @@ export class ObtainLifecycleBoundGraphException extends Error { private static createMessage(graph: Constructable): string { const graphName = isDev() ? ` ${graph.name}` : ''; return `Tried to obtain a @LifecycleBound graph${graphName}, but it was not created yet. ` - + '@LifecycleBound graphs can only be obtained after they were created by a React component or hook.'; + + '@LifecycleBound graphs can only be obtained after they were created by a React component or hook.'; } } diff --git a/packages/react-obsidian/src/injectors/class/ClassInjector.ts b/packages/react-obsidian/src/injectors/class/ClassInjector.ts index 367859f5..8b2b59ce 100644 --- a/packages/react-obsidian/src/injectors/class/ClassInjector.ts +++ b/packages/react-obsidian/src/injectors/class/ClassInjector.ts @@ -35,10 +35,10 @@ export default class ClassInjector { graph.onBind(target); const createdObject = Reflect.construct(target, argsToInject, newTarget); this.injectProperties(target, createdObject, graph); - const originalComponentWillUnmount = createdObject.componentWillUnmount; + const originalComponentWillUnmount: () => void | undefined = createdObject.componentWillUnmount; createdObject.componentWillUnmount = () => { originalComponentWillUnmount?.(); - referenceCounter.release(graph, (g) => graphRegistry.clear(g)); + referenceCounter.release(graph, g => graphRegistry.clear(g)); }; return createdObject; } diff --git a/packages/react-obsidian/src/injectors/components/ComponentInjector.test.tsx b/packages/react-obsidian/src/injectors/components/ComponentInjector.test.tsx index 29fb1bb9..f8d49099 100644 --- a/packages/react-obsidian/src/injectors/components/ComponentInjector.test.tsx +++ b/packages/react-obsidian/src/injectors/components/ComponentInjector.test.tsx @@ -16,17 +16,17 @@ describe('ComponentInjector', () => { it('Rerenders on props change', () => { const InjectedComponent = injectComponent(Component, MainGraph); - const { container, rerender } = render(); + const { container, rerender } = render(); expect(container.textContent).toBe('0 - Fear kills progress'); - rerender(); + rerender(); expect(container.textContent).toBe('1 - Fear kills progress'); }); it('Injects memoized component', () => { const MemoizedComponent = React.memo(Component); const InjectedComponent = injectComponent(MemoizedComponent, MainGraph); - const { container } = render(); + const { container } = render(); expect(container.textContent).toBe('0 - Fear kills progress'); }); @@ -34,10 +34,10 @@ describe('ComponentInjector', () => { it('Rerenders memoized components on props change', () => { const MemoizedComponent = React.memo(Component); const InjectedComponent = injectComponent(MemoizedComponent, MainGraph); - const { container, rerender } = render(); + const { container, rerender } = render(); expect(container.textContent).toBe('0 - Fear kills progress'); - rerender(); + rerender(); expect(container.textContent).toBe('1 - Fear kills progress'); }); @@ -45,7 +45,7 @@ describe('ComponentInjector', () => { let arePropsEqual = true; const MemoizedComponent = React.memo(Component, () => arePropsEqual); const InjectedComponent = injectComponent(MemoizedComponent, MainGraph); - const { container, rerender } = render(); + const { container, rerender } = render(); expect(container.textContent).toBe('0 - Fear kills progress'); rerender(); diff --git a/packages/react-obsidian/src/injectors/components/ComponentInjector.tsx b/packages/react-obsidian/src/injectors/components/ComponentInjector.tsx index 0476843e..ca0562ba 100644 --- a/packages/react-obsidian/src/injectors/components/ComponentInjector.tsx +++ b/packages/react-obsidian/src/injectors/components/ComponentInjector.tsx @@ -32,7 +32,7 @@ export default class ComponentInjector { const proxiedProps = new PropsInjector(graph).inject(passedProps); return ( - + {Target(proxiedProps as unknown as PropsWithChildren

)} ); diff --git a/packages/react-obsidian/src/injectors/components/InjectComponent.test.tsx b/packages/react-obsidian/src/injectors/components/InjectComponent.test.tsx index 4bc7c80d..89e6a2ef 100644 --- a/packages/react-obsidian/src/injectors/components/InjectComponent.test.tsx +++ b/packages/react-obsidian/src/injectors/components/InjectComponent.test.tsx @@ -16,16 +16,17 @@ describe('injectComponent', () => { it('Both own and injected props are defined', () => { const InjectedComponent = injectComponent(component, MainGraph); const { container } = render( - , + , ); expect(container.textContent).toBe('this prop must be provided - overriding injected string'); }); it('Only own props are defined', () => { const InjectedComponent = injectComponent(component, MainGraph); - const { container } = render(); + const { container } = render(); expect(container.textContent).toBe('this prop must be provided - Fear kills progress'); }); @@ -38,7 +39,7 @@ describe('injectComponent', () => { // it throws an error if the Graph is undefined it('Throws an error if the Graph is undefined', () => { const Graph = undefined as unknown as Constructable; - expect(() => injectComponent(component, Graph)).toThrowError( + expect(() => injectComponent(component, Graph)).toThrow( `injectComponent was called with an undefined Graph.` + `This is probably not an issue with Obsidian.` + `It's typically caused by circular dependencies.` diff --git a/packages/react-obsidian/src/injectors/components/InjectComponent.ts b/packages/react-obsidian/src/injectors/components/InjectComponent.ts index 22b258b5..0a4c921b 100644 --- a/packages/react-obsidian/src/injectors/components/InjectComponent.ts +++ b/packages/react-obsidian/src/injectors/components/InjectComponent.ts @@ -18,9 +18,9 @@ export const injectComponent = : OwnProps : - OwnProps extends InjectedProps ? Partial : OwnProps & Partial + InjectedProps extends Discriminator ? + OwnProps extends Discriminator ? Partial : OwnProps : + OwnProps extends InjectedProps ? Partial : OwnProps & Partial >; }; function assertGraph(Graph: Constructable>, Target: any) { diff --git a/packages/react-obsidian/src/injectors/components/PropsInjector.ts b/packages/react-obsidian/src/injectors/components/PropsInjector.ts index df6af6a9..1f095798 100644 --- a/packages/react-obsidian/src/injectors/components/PropsInjector.ts +++ b/packages/react-obsidian/src/injectors/components/PropsInjector.ts @@ -4,7 +4,6 @@ export default class PropsInjector { constructor(private graph: ObjectGraph) {} inject(passedProps: Props): Partial { - // eslint-disable-next-line prefer-object-spread return new Proxy(Object.assign({}, passedProps), { get: (target: object, p: string, receiver: any): any => { return p in target ? Reflect.get(target, p, receiver) : this.graph.retrieve(p, receiver); diff --git a/packages/react-obsidian/src/injectors/components/useGraph.ts b/packages/react-obsidian/src/injectors/components/useGraph.ts index b7be1cb0..021c1a89 100644 --- a/packages/react-obsidian/src/injectors/components/useGraph.ts +++ b/packages/react-obsidian/src/injectors/components/useGraph.ts @@ -10,7 +10,6 @@ export default

( props?: Partial

, injectionToken?: string, ) => { - const [graph] = useState(() => { const resolvedGraph = graphRegistry.resolve(Graph, 'lifecycleOwner', props, injectionToken); resolvedGraph.onBind(target); @@ -18,7 +17,7 @@ export default

( }); useEffect(() => { referenceCounter.retain(graph); - return () => referenceCounter.release(graph, (g) => graphRegistry.clear(g)); + return () => referenceCounter.release(graph, g => graphRegistry.clear(g)); }, [graph]); return graph; }; diff --git a/packages/react-obsidian/src/injectors/hooks/InjectHook.ts b/packages/react-obsidian/src/injectors/hooks/InjectHook.ts index faaf8008..58a41b15 100644 --- a/packages/react-obsidian/src/injectors/hooks/InjectHook.ts +++ b/packages/react-obsidian/src/injectors/hooks/InjectHook.ts @@ -1,4 +1,3 @@ -/* eslint-disable max-len */ import { ObjectGraph } from '../../graph/ObjectGraph'; import { Constructable } from '../../types'; import HookInjector from './HookInjector'; diff --git a/packages/react-obsidian/src/observable/Observable.ts b/packages/react-obsidian/src/observable/Observable.ts index d472d4e2..22fd992b 100644 --- a/packages/react-obsidian/src/observable/Observable.ts +++ b/packages/react-obsidian/src/observable/Observable.ts @@ -14,7 +14,7 @@ export class Observable implements IObservable { public set value(value: T) { this.currentValue = value; - this.subscribers.forEach((subscriber) => subscriber(value)); + this.subscribers.forEach(subscriber => subscriber(value)); } async first(): Promise { @@ -35,7 +35,7 @@ export class Observable implements IObservable { return () => this.subscribers.delete(onNext); } - public unsubscribe(onNext:OnNext) { + public unsubscribe(onNext: OnNext) { if (!this.subscribers.has(onNext)) { throw new Error(`Can't unsubscribe, subscriber doesn't exist`); } diff --git a/packages/react-obsidian/src/observable/cold/ColdMediatorObservable.ts b/packages/react-obsidian/src/observable/cold/ColdMediatorObservable.ts index b396afd1..3b720b37 100644 --- a/packages/react-obsidian/src/observable/cold/ColdMediatorObservable.ts +++ b/packages/react-obsidian/src/observable/cold/ColdMediatorObservable.ts @@ -1,7 +1,6 @@ import { Observable } from '../Observable'; import { MediatorObservable } from '../mediator/MediatorObservable'; import { OnNext } from '../types'; - export class ColdMediatorObservable extends MediatorObservable { constructor(obj: T, private readonly handler = new PropertyAccessTrackingProxy()) { super(new Proxy(obj, handler)); diff --git a/packages/react-obsidian/src/observable/cold/useColdObservers.ts b/packages/react-obsidian/src/observable/cold/useColdObservers.ts index 18d39aa6..c436a007 100644 --- a/packages/react-obsidian/src/observable/cold/useColdObservers.ts +++ b/packages/react-obsidian/src/observable/cold/useColdObservers.ts @@ -10,7 +10,7 @@ export function useColdObservables>(observables: T const [values, setValues] = useState(() => mediator.value as ObservedValues); useEffect(() => { - Object.keys(observables as {}).forEach((key) => { + Object.keys(observables).forEach((key) => { mediator.addSource(observables[key], (value) => { mediator.setValue(key, value); }); diff --git a/packages/react-obsidian/src/observable/mediator/MediatorObservable.test.ts b/packages/react-obsidian/src/observable/mediator/MediatorObservable.test.ts index 82deb77d..b1e424c3 100644 --- a/packages/react-obsidian/src/observable/mediator/MediatorObservable.test.ts +++ b/packages/react-obsidian/src/observable/mediator/MediatorObservable.test.ts @@ -1,7 +1,7 @@ import { Observable } from '../Observable'; import { MediatorObservable } from './MediatorObservable'; -const NOOP = () => {}; +const NOOP = () => { void 0; }; describe('MediatorObservable', () => { let uut!: MediatorObservable; @@ -83,9 +83,9 @@ describe('MediatorObservable', () => { }); it('should throw an error if a subscriber is already subscribed', () => { - const subscriber = () => {}; + const subscriber = () => { void 0; }; uut.subscribe(subscriber); - expect(() => uut.subscribe(subscriber)).toThrowError( + expect(() => uut.subscribe(subscriber)).toThrow( 'Subscriber already subscribed', ); }); @@ -108,10 +108,20 @@ describe('MediatorObservable', () => { }); it('should support chaining addSource calls', () => { - const a = new Observable(); - const b = new Observable(); + const a = new Observable(0); + const b = new Observable(0); + + uut + .addSource(a, (nextA) => { + uut.value = (uut.value ?? 0) + nextA; + }) + .addSource(b, (nextB) => { + uut.value = (uut.value ?? 0) + nextB * 10; + }); - uut.addSource(a, NOOP).addSource(b, NOOP); + a.value = 2; + b.value = 3; + expect(uut.value).toEqual(32); }); it('supports passing initial value in through the constructor', () => { diff --git a/packages/react-obsidian/src/observable/mediator/MediatorObservable.ts b/packages/react-obsidian/src/observable/mediator/MediatorObservable.ts index a34cd4b8..69cff7e4 100644 --- a/packages/react-obsidian/src/observable/mediator/MediatorObservable.ts +++ b/packages/react-obsidian/src/observable/mediator/MediatorObservable.ts @@ -67,7 +67,7 @@ export class MediatorObservable extends Observable { values[index] = next; } else { values[index] = next; - this.value = mapNext(values, this.value) as T; + this.value = mapNext(values, this.value); } }); }); diff --git a/packages/react-obsidian/src/observable/observable.test.ts b/packages/react-obsidian/src/observable/observable.test.ts index 0f54258b..bc4643b0 100644 --- a/packages/react-obsidian/src/observable/observable.test.ts +++ b/packages/react-obsidian/src/observable/observable.test.ts @@ -46,9 +46,9 @@ describe('makeObservable', () => { it('should subscribe only once', () => { const observable = new Observable({}); - const subscriber = () => {}; + const subscriber = () => { void 0; }; observable.subscribe(subscriber); - expect(() => observable.subscribe(subscriber)).toThrowError('Subscriber already subscribed'); + expect(() => observable.subscribe(subscriber)).toThrow('Subscriber already subscribed'); }); it('should unsubscribe', () => { @@ -70,8 +70,8 @@ describe('makeObservable', () => { it('should throw error because the subscriber is not subscribed', () => { const observable = new Observable({}); - const subscriber = () => { }; - expect(() => observable.unsubscribe(subscriber)).toThrowError(`Can't unsubscribe, subscriber doesn't exist`); + const subscriber = () => { void 0; }; + expect(() => observable.unsubscribe(subscriber)).toThrow(`Can't unsubscribe, subscriber doesn't exist`); }); it('should await the current value', async () => { diff --git a/packages/react-obsidian/src/observable/useObserver.ts b/packages/react-obsidian/src/observable/useObserver.ts index 81269519..7c60f401 100644 --- a/packages/react-obsidian/src/observable/useObserver.ts +++ b/packages/react-obsidian/src/observable/useObserver.ts @@ -1,4 +1,3 @@ -/* eslint-disable no-param-reassign */ import { useCallback, useEffect, @@ -26,6 +25,6 @@ export function useObserver(observableOrGenerator: ObservableOrGenerator): return [value, onNext]; } -function getOrGenerateObservable(observableOrGenerator: ObservableOrGenerator) { +function getOrGenerateObservable(observableOrGenerator: ObservableOrGenerator): Observable { return observableOrGenerator instanceof Observable ? observableOrGenerator : observableOrGenerator(); } diff --git a/packages/react-obsidian/src/observable/useObservers.ts b/packages/react-obsidian/src/observable/useObservers.ts index be32a70b..11cfbfef 100644 --- a/packages/react-obsidian/src/observable/useObservers.ts +++ b/packages/react-obsidian/src/observable/useObservers.ts @@ -2,15 +2,16 @@ import { useEffect, useState } from 'react'; import { MediatorObservable } from './mediator/MediatorObservable'; import { ObservedValues, Unsubscribe } from './types'; import { mapObservablesToValues } from './mapObservablesToValues'; +import type { Observable } from './Observable'; -export function useObservers>(observables: T): ObservedValues { +export function useObservers>>(observables: T): ObservedValues { const [values, setValues] = useState(() => mapObservablesToValues(observables)); useEffect(() => { const mediator = new MediatorObservable(); const unsubscribers: Unsubscribe[] = []; - Object.keys(observables as {}).forEach((key) => { + Object.keys(observables).forEach((key) => { const onNext = (value: any) => setValues({ ...values, [key]: value }); mediator.addSource(observables[key], onNext); @@ -19,7 +20,7 @@ export function useObservers>(observables: T): Obs }); }); - return () => unsubscribers.forEach((unsubscribe) => unsubscribe()); + return () => unsubscribers.forEach(unsubscribe => unsubscribe()); }, []); return values; diff --git a/packages/react-obsidian/src/utils/isDev.ts b/packages/react-obsidian/src/utils/isDev.ts index f0a80cc3..66e75382 100644 --- a/packages/react-obsidian/src/utils/isDev.ts +++ b/packages/react-obsidian/src/utils/isDev.ts @@ -3,11 +3,10 @@ export function isDev(): boolean { } function isNodeDev(): boolean { - // eslint-disable-next-line @typescript-eslint/dot-notation return ['test', 'development'].includes(process.env['NODE_ENV'] ?? ''); } function isReactNativeDev(): boolean { - // @ts-ignore + // @ts-expect-error __DEV__ is a global variable in React Native return __DEV__ as boolean ?? false; } diff --git a/packages/react-obsidian/test/acceptance/obtain.test.ts b/packages/react-obsidian/test/acceptance/obtain.test.ts index c4b70ff5..3f4f065e 100644 --- a/packages/react-obsidian/test/acceptance/obtain.test.ts +++ b/packages/react-obsidian/test/acceptance/obtain.test.ts @@ -17,7 +17,7 @@ describe('obtain', () => { it('Should throw circular dependency error when encountering circular dependencies', () => { expect( () => Obsidian.obtain(CircularDependencyGraph).aString(), - ).toThrowError(/Could not resolve aString from CircularDependencyGraph\d because of a circular dependency: aString -> aString$/); + ).toThrow(/Could not resolve aString from CircularDependencyGraph\d because of a circular dependency: aString -> aString$/); }); it('Should not throw circular dependency error resolving valid dependencies', () => { @@ -27,8 +27,7 @@ describe('obtain', () => { }); it('describes the circular dependency path in the thrown exception', () => { - expect(() => Obsidian.obtain(CircularDependencyFromSubgraph).dep1()).toThrowError( - // eslint-disable-next-line max-len + expect(() => Obsidian.obtain(CircularDependencyFromSubgraph).dep1()).toThrow( /Could not resolve dep1 from CircularDependencyFromSubgraph\d because of a circular dependency: dep1 -> dep2 -> dep3 -> dep2/, ); }); diff --git a/packages/react-obsidian/test/acceptance/testKit.test.tsx b/packages/react-obsidian/test/acceptance/testKit.test.tsx index 08aebff9..42da0a16 100644 --- a/packages/react-obsidian/test/acceptance/testKit.test.tsx +++ b/packages/react-obsidian/test/acceptance/testKit.test.tsx @@ -10,14 +10,14 @@ describe('TestKit', () => { const InjectedComponent = injectComponent(Component, SingletonGraph); it('clears @Singleton graphs between tests - part 1', () => { - const { container } = render(); + const { container } = render(); const instanceName = container.textContent!; expect(injectedValues.has(instanceName)).toBeFalsy(); injectedValues.add(instanceName); }); it('clears @Singleton graphs between tests - part 2', () => { - const { container } = render(); + const { container } = render(); const instanceName = container.textContent!; expect(injectedValues.has(instanceName)).toBeFalsy(); injectedValues.add(instanceName); diff --git a/packages/react-obsidian/test/fixtures/CircularDependencyFromSubgraph.ts b/packages/react-obsidian/test/fixtures/CircularDependencyFromSubgraph.ts index bf24d4e8..b62888c9 100644 --- a/packages/react-obsidian/test/fixtures/CircularDependencyFromSubgraph.ts +++ b/packages/react-obsidian/test/fixtures/CircularDependencyFromSubgraph.ts @@ -4,7 +4,7 @@ import { SubgraphWithCircularDependency } from './SubgraphWithCircularDependency @Graph({ subgraphs: [SubgraphWithCircularDependency] }) export class CircularDependencyFromSubgraph extends ObjectGraph { @Provides() - dep1(dep2: any) { + dep1(dep2: unknown) { return dep2; } } diff --git a/packages/react-obsidian/test/fixtures/CircularDependencyGraph.ts b/packages/react-obsidian/test/fixtures/CircularDependencyGraph.ts index d1fc8fff..792e857b 100644 --- a/packages/react-obsidian/test/fixtures/CircularDependencyGraph.ts +++ b/packages/react-obsidian/test/fixtures/CircularDependencyGraph.ts @@ -1,3 +1,4 @@ +/* eslint-disable obsidian/no-circular-dependencies */ import { Graph, ObjectGraph, Provides } from '../../src'; @Graph() diff --git a/packages/react-obsidian/test/fixtures/CircularDependencyGraph2.ts b/packages/react-obsidian/test/fixtures/CircularDependencyGraph2.ts index 37cf334d..012b273f 100644 --- a/packages/react-obsidian/test/fixtures/CircularDependencyGraph2.ts +++ b/packages/react-obsidian/test/fixtures/CircularDependencyGraph2.ts @@ -1,3 +1,4 @@ +/* eslint-disable obsidian/no-circular-dependencies */ import { Graph, ObjectGraph, Provides } from '../../src'; @Graph() diff --git a/packages/react-obsidian/test/fixtures/GraphWithOnBind.ts b/packages/react-obsidian/test/fixtures/GraphWithOnBind.ts index 1518c849..6826f64c 100644 --- a/packages/react-obsidian/test/fixtures/GraphWithOnBind.ts +++ b/packages/react-obsidian/test/fixtures/GraphWithOnBind.ts @@ -4,12 +4,12 @@ import { Graph, ObjectGraph, Provides } from '../../src'; export class GraphWithOnBind extends ObjectGraph { private target!: any; - override onBind(target: any) { + override onBind(target: unknown) { this.target = target; } @Provides() targetName(): string { - return this.target.name; + return this.target.name as string; } } diff --git a/packages/react-obsidian/test/fixtures/LifecycleBoundWithLifecycleBoundSubgraph.ts b/packages/react-obsidian/test/fixtures/LifecycleBoundWithLifecycleBoundSubgraph.ts index c21a340e..973d301b 100644 --- a/packages/react-obsidian/test/fixtures/LifecycleBoundWithLifecycleBoundSubgraph.ts +++ b/packages/react-obsidian/test/fixtures/LifecycleBoundWithLifecycleBoundSubgraph.ts @@ -4,9 +4,8 @@ import { LifecycleBoundGraph } from './LifecycleBoundGraph'; export type Props = Record & { stringFromProps: string }; -@LifecycleBound() @Graph({subgraphs: [LifecycleBoundGraph]}) +@LifecycleBound() @Graph({ subgraphs: [LifecycleBoundGraph] }) export class LifecycleBoundGraphWithLifecycleBoundSubgraph extends ObjectGraph { - @Provides() aString(computedFromProps: string): string { return `A string that requires props from a lifecycle bound subgraph: ${computedFromProps}`; diff --git a/packages/react-obsidian/test/fixtures/ScopedLifecycleBoundGraph.ts b/packages/react-obsidian/test/fixtures/ScopedLifecycleBoundGraph.ts index 8a147d52..87dbeaa8 100644 --- a/packages/react-obsidian/test/fixtures/ScopedLifecycleBoundGraph.ts +++ b/packages/react-obsidian/test/fixtures/ScopedLifecycleBoundGraph.ts @@ -3,7 +3,7 @@ import { LifecycleBound } from '../../src/decorators/LifecycleBound'; export type Props = Record & { stringFromProps: string }; -@LifecycleBound({scope: 'component'}) @Graph() +@LifecycleBound({ scope: 'component' }) @Graph() export class ScopedLifecycleBoundGraph extends ObjectGraph { } diff --git a/packages/react-obsidian/test/fixtures/SubgraphWithCircularDependency.ts b/packages/react-obsidian/test/fixtures/SubgraphWithCircularDependency.ts index cfdac08c..0e194a00 100644 --- a/packages/react-obsidian/test/fixtures/SubgraphWithCircularDependency.ts +++ b/packages/react-obsidian/test/fixtures/SubgraphWithCircularDependency.ts @@ -1,3 +1,4 @@ +/* eslint-disable obsidian/no-circular-dependencies */ import { Graph, ObjectGraph, diff --git a/packages/react-obsidian/test/fixtures/UniqueNumberGraph.ts b/packages/react-obsidian/test/fixtures/UniqueNumberGraph.ts index 078e6d7a..13ed23be 100644 --- a/packages/react-obsidian/test/fixtures/UniqueNumberGraph.ts +++ b/packages/react-obsidian/test/fixtures/UniqueNumberGraph.ts @@ -7,7 +7,6 @@ import { @Graph() export class UniqueNumberGraph extends ObjectGraph { - // eslint-disable-next-line unused-imports/no-unused-vars, no-unused-vars constructor(private uniqueNumberGenerator: () => number) { super(); } diff --git a/packages/react-obsidian/test/integration/functionalComponentReactLifecycle.test.tsx b/packages/react-obsidian/test/integration/functionalComponentReactLifecycle.test.tsx index 5083b4c3..5cd57865 100644 --- a/packages/react-obsidian/test/integration/functionalComponentReactLifecycle.test.tsx +++ b/packages/react-obsidian/test/integration/functionalComponentReactLifecycle.test.tsx @@ -3,7 +3,8 @@ import { fireEvent, render } from '@testing-library/react'; import { injectComponent } from '../../src'; import MainGraph from '../fixtures/MainGraph'; -enum Lifecycle {Mounted, Unmounted} +enum Lifecycle { Mounted, Unmounted } + const componentLifecycle: Lifecycle[] = []; interface InjectedComponentProps { @@ -13,10 +14,10 @@ interface InjectedComponentProps { const Component: React.FunctionComponent = ({ someString }: InjectedComponentProps) => { useEffect(() => { componentLifecycle.push(Lifecycle.Mounted); - return () => { componentLifecycle.push(Lifecycle.Unmounted); }; + return () => void componentLifecycle.push(Lifecycle.Unmounted); }, []); - const onClick = useCallback(() => { setCounter(counter + 1); }, []); + const onClick = useCallback(() => setCounter(counter + 1), []); const [counter, setCounter] = useState(0); return ( @@ -32,7 +33,6 @@ describe('React lifecycle - functional component', () => { let InjectedComponent: React.FunctionComponent>; beforeEach(() => { - // eslint-disable-next-line obsidian/strongly-typed-inject-component InjectedComponent = injectComponent(Component, MainGraph); }); diff --git a/packages/react-obsidian/test/integration/lateInject.test.tsx b/packages/react-obsidian/test/integration/lateInject.test.tsx index 1e49267a..b936884a 100644 --- a/packages/react-obsidian/test/integration/lateInject.test.tsx +++ b/packages/react-obsidian/test/integration/lateInject.test.tsx @@ -46,6 +46,7 @@ class LateProperty { @Injectable(MainGraph) class LatePropertyConstructorInjection { @LateInject() someString!: string; + constructor() { Obsidian.inject(this); } diff --git a/packages/react-obsidian/test/integration/lifecyleBoundGraphs.test.tsx b/packages/react-obsidian/test/integration/lifecyleBoundGraphs.test.tsx index 3aeda36d..889ded5f 100644 --- a/packages/react-obsidian/test/integration/lifecyleBoundGraphs.test.tsx +++ b/packages/react-obsidian/test/integration/lifecyleBoundGraphs.test.tsx @@ -17,7 +17,7 @@ describe('React lifecycle bound graphs', () => { LifecycleBoundGraph.timesCreated = 0; }); - it('creates a bound graph only once', async () => { + it('creates a bound graph only once', () => { render(); render(); expect(LifecycleBoundGraph.timesCreated).toBe(1); @@ -32,7 +32,7 @@ describe('React lifecycle bound graphs', () => { }); it('clears a bound graph after dependent components are unmounted when it was used for class injection', () => { - const Component2 = createFunctionalComponent({ instantiateInjectableClass: true}); + const Component2 = createFunctionalComponent({ instantiateInjectableClass: true }); const { unmount } = render(); unmount(); render(); @@ -41,7 +41,7 @@ describe('React lifecycle bound graphs', () => { }); it('passes props to the component', () => { - const { container } = render(); + const { container } = render(); expect(container.textContent).toBe('A string passed via props: Obsidian is cool'); }); @@ -56,10 +56,10 @@ describe('React lifecycle bound graphs', () => { expect(() => { @Injectable(LifecycleBoundGraph) class Foo { - // @ts-ignore + // @ts-expect-error - This is used to inject the class @Inject() private computedFromProps!: string; } - // eslint-disable-next-line no-new + new Foo(); }).toThrow(ObtainLifecycleBoundGraphException); }); @@ -79,20 +79,19 @@ describe('React lifecycle bound graphs', () => { }); it('clears a bound graph when all dependent class components are unmounted', () => { - const { unmount } = render(); + const { unmount } = render(); unmount(); render(); expect(LifecycleBoundGraph.timesCreated).toBe(2); }); - type CreateOptions = {instantiateInjectableClass: boolean}; - function createFunctionalComponent({instantiateInjectableClass}: CreateOptions = { + type CreateOptions = { instantiateInjectableClass: boolean }; + function createFunctionalComponent({ instantiateInjectableClass }: CreateOptions = { instantiateInjectableClass: false, }) { const useHook = injectHook(() => { if (instantiateInjectableClass) { - // eslint-disable-next-line no-new new Foo(); } }, LifecycleBoundGraph); diff --git a/packages/react-obsidian/test/integration/reactStrictMode.test.tsx b/packages/react-obsidian/test/integration/reactStrictMode.test.tsx index e7ddd5e8..56cbf435 100644 --- a/packages/react-obsidian/test/integration/reactStrictMode.test.tsx +++ b/packages/react-obsidian/test/integration/reactStrictMode.test.tsx @@ -5,7 +5,7 @@ import { LifecycleBoundGraph } from '../fixtures/LifecycleBoundGraph'; describe('React Strict Mode', () => { it('should render without crashing', () => { - const { container } = render(, { + const { container } = render(, { wrapper: React.StrictMode, }); expect(container.textContent).toBe('A string passed via props: foo'); diff --git a/packages/react-obsidian/test/integration/resolvePrecedance.test.tsx b/packages/react-obsidian/test/integration/resolvePrecedance.test.tsx index 331a2bf6..6a1422df 100644 --- a/packages/react-obsidian/test/integration/resolvePrecedance.test.tsx +++ b/packages/react-obsidian/test/integration/resolvePrecedance.test.tsx @@ -1,4 +1,3 @@ -/* eslint-disable arrow-body-style */ import { render } from '@testing-library/react'; import React from 'react'; import { injectComponent } from '../../src'; @@ -25,7 +24,7 @@ describe('Property resolving precedence', () => { InjectedComponent = injectComponent(Component, MainGraph); }); - it('Injects dependencies from subgraphs', async () => { + it('Injects dependencies from subgraphs', () => { const { container } = render(); expect(container.textContent).toBe(`${injectedValues.fromStringProvider}${injectedValues.fromSubgraph}`); }); diff --git a/packages/react-obsidian/test/integration/scopedLifecycleBoundGraphs.test.tsx b/packages/react-obsidian/test/integration/scopedLifecycleBoundGraphs.test.tsx index e9b3c1b3..14bdd834 100644 --- a/packages/react-obsidian/test/integration/scopedLifecycleBoundGraphs.test.tsx +++ b/packages/react-obsidian/test/integration/scopedLifecycleBoundGraphs.test.tsx @@ -59,23 +59,22 @@ type Props = { renderComponentC?: boolean; }; -const ComponentA = injectComponent(({renderComponentC}: Props) => { +const ComponentA = injectComponent(({ renderComponentC }: Props) => { return ( <> {renderComponentC && } ); - }, ScopedLifecycleBoundGraph); type Injected = DependenciesOf; -type Own = {injectionToken: string}; +type Own = { injectionToken: string }; -const ComponentB = injectComponent(({count, id}: Injected & Own) => { +const ComponentB = injectComponent(({ count, id }: Injected & Own) => { return <>{`count: ${count} id: ${id}`}; }, ScopedLifecycleBoundGraph); -const ComponentC = injectComponent(({count, id}: Injected & Own) => { +const ComponentC = injectComponent(({ count, id }: Injected & Own) => { return <>{` from C: count: ${count} id: ${id}`}; -}, ScopedLifecycleBoundGraph); \ No newline at end of file +}, ScopedLifecycleBoundGraph); diff --git a/packages/react-obsidian/testkit/index.ts b/packages/react-obsidian/testkit/index.ts index fb1a4a76..da3ec8fb 100644 --- a/packages/react-obsidian/testkit/index.ts +++ b/packages/react-obsidian/testkit/index.ts @@ -7,7 +7,6 @@ class TestKit { * @deprecated testKit.mockGraphs is deprecated, use mockGraphs instead */ public mockGraphs(graphNameToGraph: Record | ((props: any) => ObjectGraph)>) { - // eslint-disable-next-line no-console console.warn('testKit.mockGraphs is deprecated, use mockGraphs instead'); return mockGraphs(graphNameToGraph); } diff --git a/packages/react-obsidian/transformers/babel-plugin-obsidian/__snapshots__/index.test.ts.snap b/packages/react-obsidian/transformers/babel-plugin-obsidian/__snapshots__/index.test.ts.snap index ed5eb6f8..d24036c5 100644 --- a/packages/react-obsidian/transformers/babel-plugin-obsidian/__snapshots__/index.test.ts.snap +++ b/packages/react-obsidian/transformers/babel-plugin-obsidian/__snapshots__/index.test.ts.snap @@ -2,99 +2,99 @@ exports[`Provider Arguments Transformer Adds method name to provider arguments (@Provider() -> @Provider({name: "myProvidedDependency"}) 1`] = ` "var _dec, _class; -function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) { var desc = {}; Object.keys(descriptor).forEach(function (key) { desc[key] = descriptor[key]; }); desc.enumerable = !!desc.enumerable; desc.configurable = !!desc.configurable; if ('value' in desc || desc.initializer) { desc.writable = true; } desc = decorators.slice().reverse().reduce(function (desc, decorator) { return decorator(target, property, desc) || desc; }, desc); if (context && desc.initializer !== void 0) { desc.value = desc.initializer ? desc.initializer.call(context) : void 0; desc.initializer = undefined; } if (desc.initializer === void 0) { Object.defineProperty(target, property, desc); desc = null; } return desc; } +function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, ("value" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; } let MainGraph = (_dec = Provides({ name: "someString" -}), (_class = class MainGraph { +}), _class = class MainGraph { someString({ stringProvider: stringProvider, emptyString: emptyString }) { return stringProvider.theString + emptyString; } -}, (_applyDecoratedDescriptor(_class.prototype, "someString", [_dec], Object.getOwnPropertyDescriptor(_class.prototype, "someString"), _class.prototype)), _class));" +}, _applyDecoratedDescriptor(_class.prototype, "someString", [_dec], Object.getOwnPropertyDescriptor(_class.prototype, "someString"), _class.prototype), _class);" `; exports[`Provider Arguments Transformer Adds property name to @Inject arguments @Inject -> @Inject("myDependency") 1`] = ` "var _dec, _class, _descriptor; -function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) { var desc = {}; Object.keys(descriptor).forEach(function (key) { desc[key] = descriptor[key]; }); desc.enumerable = !!desc.enumerable; desc.configurable = !!desc.configurable; if ('value' in desc || desc.initializer) { desc.writable = true; } desc = decorators.slice().reverse().reduce(function (desc, decorator) { return decorator(target, property, desc) || desc; }, desc); if (context && desc.initializer !== void 0) { desc.value = desc.initializer ? desc.initializer.call(context) : void 0; desc.initializer = undefined; } if (desc.initializer === void 0) { Object.defineProperty(target, property, desc); desc = null; } return desc; } -function _initializerWarningHelper(descriptor, context) { throw new Error('Decorating class property failed. Please ensure that ' + 'transform-class-properties is enabled and runs after the decorators transform.'); } -let MainGraph = (_dec = Inject("someString"), (_class = class MainGraph { +function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, ("value" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; } +function _initializerWarningHelper(r, e) { throw Error("Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform."); } +let MainGraph = (_dec = Inject("someString"), _class = class MainGraph { someString = _initializerWarningHelper(_descriptor, this); -}, (_descriptor = _applyDecoratedDescriptor(_class.prototype, "someString", [_dec], { +}, _descriptor = _applyDecoratedDescriptor(_class.prototype, "someString", [_dec], { configurable: true, enumerable: true, writable: true, initializer: null -})), _class));" +}), _class);" `; exports[`Provider Arguments Transformer Adds property name to @LateInject arguments @LateInject -> @LateInject("myDependency") 1`] = ` "var _dec, _class, _descriptor; -function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) { var desc = {}; Object.keys(descriptor).forEach(function (key) { desc[key] = descriptor[key]; }); desc.enumerable = !!desc.enumerable; desc.configurable = !!desc.configurable; if ('value' in desc || desc.initializer) { desc.writable = true; } desc = decorators.slice().reverse().reduce(function (desc, decorator) { return decorator(target, property, desc) || desc; }, desc); if (context && desc.initializer !== void 0) { desc.value = desc.initializer ? desc.initializer.call(context) : void 0; desc.initializer = undefined; } if (desc.initializer === void 0) { Object.defineProperty(target, property, desc); desc = null; } return desc; } -function _initializerWarningHelper(descriptor, context) { throw new Error('Decorating class property failed. Please ensure that ' + 'transform-class-properties is enabled and runs after the decorators transform.'); } -let MainGraph = (_dec = LateInject("someString"), (_class = class MainGraph { +function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, ("value" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; } +function _initializerWarningHelper(r, e) { throw Error("Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform."); } +let MainGraph = (_dec = LateInject("someString"), _class = class MainGraph { someString = _initializerWarningHelper(_descriptor, this); -}, (_descriptor = _applyDecoratedDescriptor(_class.prototype, "someString", [_dec], { +}, _descriptor = _applyDecoratedDescriptor(_class.prototype, "someString", [_dec], { configurable: true, enumerable: true, writable: true, initializer: null -})), _class));" +}), _class);" `; exports[`Provider Arguments Transformer Does not add name if name is provided by the user 1`] = ` "var _dec, _class; -function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) { var desc = {}; Object.keys(descriptor).forEach(function (key) { desc[key] = descriptor[key]; }); desc.enumerable = !!desc.enumerable; desc.configurable = !!desc.configurable; if ('value' in desc || desc.initializer) { desc.writable = true; } desc = decorators.slice().reverse().reduce(function (desc, decorator) { return decorator(target, property, desc) || desc; }, desc); if (context && desc.initializer !== void 0) { desc.value = desc.initializer ? desc.initializer.call(context) : void 0; desc.initializer = undefined; } if (desc.initializer === void 0) { Object.defineProperty(target, property, desc); desc = null; } return desc; } +function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, ("value" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; } let MainGraph = (_dec = Provides({ name: 'myDependency' -}), (_class = class MainGraph { +}), _class = class MainGraph { someString({ stringProvider: stringProvider }) { return stringProvider.theString; } -}, (_applyDecoratedDescriptor(_class.prototype, "someString", [_dec], Object.getOwnPropertyDescriptor(_class.prototype, "someString"), _class.prototype)), _class));" +}, _applyDecoratedDescriptor(_class.prototype, "someString", [_dec], Object.getOwnPropertyDescriptor(_class.prototype, "someString"), _class.prototype), _class);" `; exports[`Provider Arguments Transformer Does not add property name to @Inject if name is provided by the user 1`] = ` "var _dec, _class, _descriptor; -function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) { var desc = {}; Object.keys(descriptor).forEach(function (key) { desc[key] = descriptor[key]; }); desc.enumerable = !!desc.enumerable; desc.configurable = !!desc.configurable; if ('value' in desc || desc.initializer) { desc.writable = true; } desc = decorators.slice().reverse().reduce(function (desc, decorator) { return decorator(target, property, desc) || desc; }, desc); if (context && desc.initializer !== void 0) { desc.value = desc.initializer ? desc.initializer.call(context) : void 0; desc.initializer = undefined; } if (desc.initializer === void 0) { Object.defineProperty(target, property, desc); desc = null; } return desc; } -function _initializerWarningHelper(descriptor, context) { throw new Error('Decorating class property failed. Please ensure that ' + 'transform-class-properties is enabled and runs after the decorators transform.'); } -let MainGraph = (_dec = Inject("someString"), (_class = class MainGraph { +function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, ("value" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; } +function _initializerWarningHelper(r, e) { throw Error("Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform."); } +let MainGraph = (_dec = Inject("someString"), _class = class MainGraph { someString = _initializerWarningHelper(_descriptor, this); -}, (_descriptor = _applyDecoratedDescriptor(_class.prototype, "someString", [_dec], { +}, _descriptor = _applyDecoratedDescriptor(_class.prototype, "someString", [_dec], { configurable: true, enumerable: true, writable: true, initializer: null -})), _class));" +}), _class);" `; exports[`Provider Arguments Transformer Does not add property name to @LateInject if name is provided by the user 1`] = ` "var _dec, _class, _descriptor; -function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) { var desc = {}; Object.keys(descriptor).forEach(function (key) { desc[key] = descriptor[key]; }); desc.enumerable = !!desc.enumerable; desc.configurable = !!desc.configurable; if ('value' in desc || desc.initializer) { desc.writable = true; } desc = decorators.slice().reverse().reduce(function (desc, decorator) { return decorator(target, property, desc) || desc; }, desc); if (context && desc.initializer !== void 0) { desc.value = desc.initializer ? desc.initializer.call(context) : void 0; desc.initializer = undefined; } if (desc.initializer === void 0) { Object.defineProperty(target, property, desc); desc = null; } return desc; } -function _initializerWarningHelper(descriptor, context) { throw new Error('Decorating class property failed. Please ensure that ' + 'transform-class-properties is enabled and runs after the decorators transform.'); } -let MainGraph = (_dec = LateInject("someString"), (_class = class MainGraph { +function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, ("value" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; } +function _initializerWarningHelper(r, e) { throw Error("Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform."); } +let MainGraph = (_dec = LateInject("someString"), _class = class MainGraph { someString = _initializerWarningHelper(_descriptor, this); -}, (_descriptor = _applyDecoratedDescriptor(_class.prototype, "someString", [_dec], { +}, _descriptor = _applyDecoratedDescriptor(_class.prototype, "someString", [_dec], { configurable: true, enumerable: true, writable: true, initializer: null -})), _class));" +}), _class);" `; exports[`Provider Arguments Transformer handles providers that have no arguments 1`] = ` "var _dec, _class; -function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) { var desc = {}; Object.keys(descriptor).forEach(function (key) { desc[key] = descriptor[key]; }); desc.enumerable = !!desc.enumerable; desc.configurable = !!desc.configurable; if ('value' in desc || desc.initializer) { desc.writable = true; } desc = decorators.slice().reverse().reduce(function (desc, decorator) { return decorator(target, property, desc) || desc; }, desc); if (context && desc.initializer !== void 0) { desc.value = desc.initializer ? desc.initializer.call(context) : void 0; desc.initializer = undefined; } if (desc.initializer === void 0) { Object.defineProperty(target, property, desc); desc = null; } return desc; } +function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, ("value" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; } let MainGraph = (_dec = Provides({ name: "someString" -}), (_class = class MainGraph { +}), _class = class MainGraph { someString() { return 'someString'; } -}, (_applyDecoratedDescriptor(_class.prototype, "someString", [_dec], Object.getOwnPropertyDescriptor(_class.prototype, "someString"), _class.prototype)), _class));" +}, _applyDecoratedDescriptor(_class.prototype, "someString", [_dec], Object.getOwnPropertyDescriptor(_class.prototype, "someString"), _class.prototype), _class);" `; exports[`Provider Arguments Transformer saves constructor argument name in Inject - @Inject -> @Inject(arg) 1`] = ` diff --git a/packages/react-obsidian/transformers/babel-plugin-obsidian/helpers/index.ts b/packages/react-obsidian/transformers/babel-plugin-obsidian/helpers/index.ts index 7f7d99a6..76d9b35b 100644 --- a/packages/react-obsidian/transformers/babel-plugin-obsidian/helpers/index.ts +++ b/packages/react-obsidian/transformers/babel-plugin-obsidian/helpers/index.ts @@ -1,4 +1,3 @@ -/* eslint-disable no-param-reassign */ import { types as t } from '@babel/core'; import { CallExpression, @@ -9,6 +8,7 @@ import { ObjectExpression, ObjectPattern, TSParameterProperty, + Node, } from '@babel/types'; const never = ''; @@ -39,7 +39,7 @@ export function addNameToProviderArguments(node: ClassMethod, decorator: Decorat export function getDecoratorArgument(decorator: Decorator): ObjectExpression | undefined { if (t.isCallExpression(decorator.expression)) { - return decorator.expression.arguments.find((a) => t.isObjectExpression(a)) as ObjectExpression; + return decorator.expression.arguments.find(a => t.isObjectExpression(a)) as ObjectExpression; } return undefined; } @@ -53,17 +53,17 @@ export function getDecoratorByName( decorators: Array | undefined | null, decoratorName: string, ): Decorator | undefined { - return decorators?.find((decorator) => get(decorator, 'expression.callee.name') === decoratorName); + return decorators?.find(decorator => get(decorator, 'expression.callee.name') === decoratorName); } export function getDecoratorName(decorator?: Decorator): string | undefined { return get(decorator, 'expression.callee.name'); } -export function paramsToDestructuringAssignment(params: (Identifier | any)[]): ObjectPattern { +export function paramsToDestructuringAssignment(params: Node[]): ObjectPattern { return t.objectPattern(params - .filter((p) => t.isIdentifier(p)) - .map((p) => t.objectProperty(t.identifier(p.name), t.identifier(p.name)))); + .filter(p => t.isIdentifier(p)) + .map(p => t.objectProperty(t.identifier(p.name), t.identifier(p.name)))); } export function passParamNameAsInjectArgument( @@ -93,9 +93,9 @@ function getNodeName(node: AcceptedNodeType): string { return node.name; } -function get(node: any, path: string): any { +function get(node: any, path: string): T | undefined { if (node === undefined || node === null) return undefined; const [key, ...rest] = path.split('.'); - if (rest.length === 0) return node[key]; + if (rest.length === 0) return node[key] as T; return get(node[key], rest.join('.')); } diff --git a/packages/react-obsidian/transformers/babel-plugin-obsidian/index.test.ts b/packages/react-obsidian/transformers/babel-plugin-obsidian/index.test.ts index a8479950..4bc81e84 100644 --- a/packages/react-obsidian/transformers/babel-plugin-obsidian/index.test.ts +++ b/packages/react-obsidian/transformers/babel-plugin-obsidian/index.test.ts @@ -43,7 +43,7 @@ const namedLateInject = `class MainGraph { }`; describe('Provider Arguments Transformer', () => { - const uut: Function = providerArgumentsTransformer; + const uut = providerArgumentsTransformer; it('Adds method name to provider arguments (@Provider() -> @Provider({name: "myProvidedDependency"})', () => { const result = transformSync(unnamedProvider); diff --git a/packages/react-obsidian/transformers/babel-plugin-obsidian/index.ts b/packages/react-obsidian/transformers/babel-plugin-obsidian/index.ts index df257772..72f84414 100644 --- a/packages/react-obsidian/transformers/babel-plugin-obsidian/index.ts +++ b/packages/react-obsidian/transformers/babel-plugin-obsidian/index.ts @@ -1,4 +1,3 @@ -/* eslint-disable no-param-reassign */ import { ClassMethod, ClassProperty, diff --git a/packages/react-obsidian/transformers/babel-plugin-obsidian/unmagler/method.ts b/packages/react-obsidian/transformers/babel-plugin-obsidian/unmagler/method.ts index c1e52444..582344d3 100644 --- a/packages/react-obsidian/transformers/babel-plugin-obsidian/unmagler/method.ts +++ b/packages/react-obsidian/transformers/babel-plugin-obsidian/unmagler/method.ts @@ -16,9 +16,8 @@ function saveMethod(name: string, node: ClassMethod) { } function convertProviderParamsToDestructuringAssignment(node: ClassMethod) { - if (node.params.length === 0) { return; } + if (node.params.length === 0) return; const destructuredParams = paramsToDestructuringAssignment(node.params); - // eslint-disable-next-line no-param-reassign node.params.length = 0; node.params.push(destructuredParams); } diff --git a/packages/react-obsidian/tsconfig.base.json b/packages/react-obsidian/tsconfig.base.json index 0c2d0a6f..f9a12c2e 100644 --- a/packages/react-obsidian/tsconfig.base.json +++ b/packages/react-obsidian/tsconfig.base.json @@ -12,7 +12,7 @@ "dist" ], "compilerOptions": { - "target": "es2018", + "target": "es2023", "module": "commonjs", "lib": [ "ES6", diff --git a/yarn.lock b/yarn.lock index 3d49f09f..44f43987 100644 --- a/yarn.lock +++ b/yarn.lock @@ -250,6 +250,13 @@ __metadata: languageName: node linkType: hard +"@babel/compat-data@npm:^7.25.2, @babel/compat-data@npm:^7.25.4": + version: 7.25.4 + resolution: "@babel/compat-data@npm:7.25.4" + checksum: b12a91d27c3731a4b0bdc9312a50b1911f41f7f728aaf0d4b32486e2257fd2cb2d3ea1a295e98449600c48f2c7883a3196ca77cda1cef7d97a10c2e83d037974 + languageName: node + linkType: hard + "@babel/core@npm:7.22.x": version: 7.22.20 resolution: "@babel/core@npm:7.22.20" @@ -319,6 +326,29 @@ __metadata: languageName: node linkType: hard +"@babel/core@npm:^7.25.2": + version: 7.25.2 + resolution: "@babel/core@npm:7.25.2" + dependencies: + "@ampproject/remapping": ^2.2.0 + "@babel/code-frame": ^7.24.7 + "@babel/generator": ^7.25.0 + "@babel/helper-compilation-targets": ^7.25.2 + "@babel/helper-module-transforms": ^7.25.2 + "@babel/helpers": ^7.25.0 + "@babel/parser": ^7.25.0 + "@babel/template": ^7.25.0 + "@babel/traverse": ^7.25.2 + "@babel/types": ^7.25.2 + convert-source-map: ^2.0.0 + debug: ^4.1.0 + gensync: ^1.0.0-beta.2 + json5: ^2.2.3 + semver: ^6.3.1 + checksum: 9a1ef604a7eb62195f70f9370cec45472a08114e3934e3eaaedee8fd754edf0730e62347c7b4b5e67d743ce57b5bb8cf3b92459482ca94d06e06246ef021390a + languageName: node + linkType: hard + "@babel/eslint-parser@npm:7.22.x": version: 7.22.15 resolution: "@babel/eslint-parser@npm:7.22.15" @@ -333,6 +363,20 @@ __metadata: languageName: node linkType: hard +"@babel/eslint-parser@npm:^7.25.1": + version: 7.25.1 + resolution: "@babel/eslint-parser@npm:7.25.1" + dependencies: + "@nicolo-ribaudo/eslint-scope-5-internals": 5.1.1-v1 + eslint-visitor-keys: ^2.1.0 + semver: ^6.3.1 + peerDependencies: + "@babel/core": ^7.11.0 + eslint: ^7.5.0 || ^8.0.0 || ^9.0.0 + checksum: 73207b7e84a58bd6560d29f11cf5c6f9d64a01b9299d4d0a145423a028ea4c402be2fd09228647fdbec14b65a07d4138e751468fd33d9a9363c9698582fa80b5 + languageName: node + linkType: hard + "@babel/generator@npm:^7.22.15, @babel/generator@npm:^7.24.5, @babel/generator@npm:^7.7.2": version: 7.24.5 resolution: "@babel/generator@npm:7.24.5" @@ -357,6 +401,18 @@ __metadata: languageName: node linkType: hard +"@babel/generator@npm:^7.25.0, @babel/generator@npm:^7.25.6": + version: 7.25.6 + resolution: "@babel/generator@npm:7.25.6" + dependencies: + "@babel/types": ^7.25.6 + "@jridgewell/gen-mapping": ^0.3.5 + "@jridgewell/trace-mapping": ^0.3.25 + jsesc: ^2.5.1 + checksum: b55975cd664f5602304d868bb34f4ee3bed6f5c7ce8132cd92ff27a46a53a119def28a182d91992e86f75db904f63094a81247703c4dc96e4db0c03fd04bcd68 + languageName: node + linkType: hard + "@babel/helper-annotate-as-pure@npm:^7.22.5": version: 7.22.5 resolution: "@babel/helper-annotate-as-pure@npm:7.22.5" @@ -420,6 +476,19 @@ __metadata: languageName: node linkType: hard +"@babel/helper-compilation-targets@npm:^7.24.8, @babel/helper-compilation-targets@npm:^7.25.2": + version: 7.25.2 + resolution: "@babel/helper-compilation-targets@npm:7.25.2" + dependencies: + "@babel/compat-data": ^7.25.2 + "@babel/helper-validator-option": ^7.24.8 + browserslist: ^4.23.1 + lru-cache: ^5.1.1 + semver: ^6.3.1 + checksum: aed33c5496cb9db4b5e2d44e26bf8bc474074cc7f7bb5ebe1d4a20fdeb362cb3ba9e1596ca18c7484bcd6e5c3a155ab975e420d520c0ae60df81f9de04d0fd16 + languageName: node + linkType: hard + "@babel/helper-create-class-features-plugin@npm:^7.22.15, @babel/helper-create-class-features-plugin@npm:^7.22.5, @babel/helper-create-class-features-plugin@npm:^7.24.1, @babel/helper-create-class-features-plugin@npm:^7.24.4, @babel/helper-create-class-features-plugin@npm:^7.24.5": version: 7.24.5 resolution: "@babel/helper-create-class-features-plugin@npm:7.24.5" @@ -458,6 +527,23 @@ __metadata: languageName: node linkType: hard +"@babel/helper-create-class-features-plugin@npm:^7.25.4": + version: 7.25.4 + resolution: "@babel/helper-create-class-features-plugin@npm:7.25.4" + dependencies: + "@babel/helper-annotate-as-pure": ^7.24.7 + "@babel/helper-member-expression-to-functions": ^7.24.8 + "@babel/helper-optimise-call-expression": ^7.24.7 + "@babel/helper-replace-supers": ^7.25.0 + "@babel/helper-skip-transparent-expression-wrappers": ^7.24.7 + "@babel/traverse": ^7.25.4 + semver: ^6.3.1 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 4544ebda4516eb25efdebd47ca024bd7bdb1eb6e7cc3ad89688c8ef8e889734c2f4411ed78981899c641394f013f246f2af63d92a0e9270f6c453309b4cb89ba + languageName: node + linkType: hard + "@babel/helper-create-regexp-features-plugin@npm:^7.18.6, @babel/helper-create-regexp-features-plugin@npm:^7.22.15, @babel/helper-create-regexp-features-plugin@npm:^7.22.5": version: 7.22.15 resolution: "@babel/helper-create-regexp-features-plugin@npm:7.22.15" @@ -484,6 +570,19 @@ __metadata: languageName: node linkType: hard +"@babel/helper-create-regexp-features-plugin@npm:^7.25.0, @babel/helper-create-regexp-features-plugin@npm:^7.25.2": + version: 7.25.2 + resolution: "@babel/helper-create-regexp-features-plugin@npm:7.25.2" + dependencies: + "@babel/helper-annotate-as-pure": ^7.24.7 + regexpu-core: ^5.3.1 + semver: ^6.3.1 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: df55fdc6a1f3090dd37d91347df52d9322d52affa239543808dc142f8fe35e6787e67d8612337668198fac85826fafa9e6772e6c28b7d249ec94e6fafae5da6e + languageName: node + linkType: hard + "@babel/helper-define-polyfill-provider@npm:^0.4.4": version: 0.4.4 resolution: "@babel/helper-define-polyfill-provider@npm:0.4.4" @@ -602,6 +701,16 @@ __metadata: languageName: node linkType: hard +"@babel/helper-member-expression-to-functions@npm:^7.24.8": + version: 7.24.8 + resolution: "@babel/helper-member-expression-to-functions@npm:7.24.8" + dependencies: + "@babel/traverse": ^7.24.8 + "@babel/types": ^7.24.8 + checksum: bf923d05d81b06857f4ca4fe9c528c9c447a58db5ea39595bb559eae2fce01a8266173db0fd6a2ec129d7bbbb9bb22f4e90008252f7c66b422c76630a878a4bc + languageName: node + linkType: hard + "@babel/helper-module-imports@npm:^7.22.15, @babel/helper-module-imports@npm:^7.24.1, @babel/helper-module-imports@npm:^7.24.3": version: 7.24.3 resolution: "@babel/helper-module-imports@npm:7.24.3" @@ -651,6 +760,20 @@ __metadata: languageName: node linkType: hard +"@babel/helper-module-transforms@npm:^7.24.8, @babel/helper-module-transforms@npm:^7.25.0, @babel/helper-module-transforms@npm:^7.25.2": + version: 7.25.2 + resolution: "@babel/helper-module-transforms@npm:7.25.2" + dependencies: + "@babel/helper-module-imports": ^7.24.7 + "@babel/helper-simple-access": ^7.24.7 + "@babel/helper-validator-identifier": ^7.24.7 + "@babel/traverse": ^7.25.2 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 282d4e3308df6746289e46e9c39a0870819630af5f84d632559171e4fae6045684d771a65f62df3d569e88ccf81dc2def78b8338a449ae3a94bb421aa14fc367 + languageName: node + linkType: hard + "@babel/helper-optimise-call-expression@npm:^7.22.5": version: 7.22.5 resolution: "@babel/helper-optimise-call-expression@npm:7.22.5" @@ -683,6 +806,13 @@ __metadata: languageName: node linkType: hard +"@babel/helper-plugin-utils@npm:^7.24.8": + version: 7.24.8 + resolution: "@babel/helper-plugin-utils@npm:7.24.8" + checksum: 73b1a83ba8bcee21dc94de2eb7323207391715e4369fd55844bb15cf13e3df6f3d13a40786d990e6370bf0f571d94fc31f70dec96c1d1002058258c35ca3767a + languageName: node + linkType: hard + "@babel/helper-remap-async-to-generator@npm:^7.22.20": version: 7.22.20 resolution: "@babel/helper-remap-async-to-generator@npm:7.22.20" @@ -709,6 +839,19 @@ __metadata: languageName: node linkType: hard +"@babel/helper-remap-async-to-generator@npm:^7.25.0": + version: 7.25.0 + resolution: "@babel/helper-remap-async-to-generator@npm:7.25.0" + dependencies: + "@babel/helper-annotate-as-pure": ^7.24.7 + "@babel/helper-wrap-function": ^7.25.0 + "@babel/traverse": ^7.25.0 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 47f3065e43fe9d6128ddb4291ffb9cf031935379265fd13de972b5f241943121f7583efb69cd2e1ecf39e3d0f76f047547d56c3fcc2c853b326fad5465da0bd7 + languageName: node + linkType: hard + "@babel/helper-replace-supers@npm:^7.22.9, @babel/helper-replace-supers@npm:^7.24.1": version: 7.24.1 resolution: "@babel/helper-replace-supers@npm:7.24.1" @@ -735,6 +878,19 @@ __metadata: languageName: node linkType: hard +"@babel/helper-replace-supers@npm:^7.25.0": + version: 7.25.0 + resolution: "@babel/helper-replace-supers@npm:7.25.0" + dependencies: + "@babel/helper-member-expression-to-functions": ^7.24.8 + "@babel/helper-optimise-call-expression": ^7.24.7 + "@babel/traverse": ^7.25.0 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: f669fc2487c22d40b808f94b9c3ee41129484d5ef0ba689bdd70f216ff91e10b6b021d2f8cd37e7bdd700235a2a6ae6622526344f064528190383bf661ac65f8 + languageName: node + linkType: hard + "@babel/helper-simple-access@npm:^7.22.5, @babel/helper-simple-access@npm:^7.24.5": version: 7.24.5 resolution: "@babel/helper-simple-access@npm:7.24.5" @@ -805,6 +961,13 @@ __metadata: languageName: node linkType: hard +"@babel/helper-string-parser@npm:^7.24.8": + version: 7.24.8 + resolution: "@babel/helper-string-parser@npm:7.24.8" + checksum: 39b03c5119216883878655b149148dc4d2e284791e969b19467a9411fccaa33f7a713add98f4db5ed519535f70ad273cdadfd2eb54d47ebbdeac5083351328ce + languageName: node + linkType: hard + "@babel/helper-validator-identifier@npm:^7.22.20, @babel/helper-validator-identifier@npm:^7.24.5": version: 7.24.5 resolution: "@babel/helper-validator-identifier@npm:7.24.5" @@ -833,6 +996,13 @@ __metadata: languageName: node linkType: hard +"@babel/helper-validator-option@npm:^7.24.8": + version: 7.24.8 + resolution: "@babel/helper-validator-option@npm:7.24.8" + checksum: a52442dfa74be6719c0608fee3225bd0493c4057459f3014681ea1a4643cd38b68ff477fe867c4b356da7330d085f247f0724d300582fa4ab9a02efaf34d107c + languageName: node + linkType: hard + "@babel/helper-wrap-function@npm:^7.22.20": version: 7.24.5 resolution: "@babel/helper-wrap-function@npm:7.24.5" @@ -856,6 +1026,17 @@ __metadata: languageName: node linkType: hard +"@babel/helper-wrap-function@npm:^7.25.0": + version: 7.25.0 + resolution: "@babel/helper-wrap-function@npm:7.25.0" + dependencies: + "@babel/template": ^7.25.0 + "@babel/traverse": ^7.25.0 + "@babel/types": ^7.25.0 + checksum: 0095b4741704066d1687f9bbd5370bb88c733919e4275e49615f70c180208148ff5f24ab58d186ce92f8f5d28eab034ec6617e9264590cc4744c75302857629c + languageName: node + linkType: hard + "@babel/helpers@npm:^7.22.15, @babel/helpers@npm:^7.24.5": version: 7.24.5 resolution: "@babel/helpers@npm:7.24.5" @@ -877,6 +1058,16 @@ __metadata: languageName: node linkType: hard +"@babel/helpers@npm:^7.25.0": + version: 7.25.6 + resolution: "@babel/helpers@npm:7.25.6" + dependencies: + "@babel/template": ^7.25.0 + "@babel/types": ^7.25.6 + checksum: 5a548999db82049a5f7ac6de57576b4ed0d386ce07d058151698836ed411eae6230db12535487caeebb68a2ffc964491e8aead62364a5132ab0ae20e8b68e19f + languageName: node + linkType: hard + "@babel/highlight@npm:^7.24.2": version: 7.24.5 resolution: "@babel/highlight@npm:7.24.5" @@ -919,6 +1110,17 @@ __metadata: languageName: node linkType: hard +"@babel/parser@npm:^7.25.0, @babel/parser@npm:^7.25.6": + version: 7.25.6 + resolution: "@babel/parser@npm:7.25.6" + dependencies: + "@babel/types": ^7.25.6 + bin: + parser: ./bin/babel-parser.js + checksum: 85b237ded09ee43cc984493c35f3b1ff8a83e8dbbb8026b8132e692db6567acc5a1659ec928e4baa25499ddd840d7dae9dee3062be7108fe23ec5f94a8066b1e + languageName: node + linkType: hard + "@babel/plugin-bugfix-firefox-class-in-computed-class-key@npm:^7.24.7": version: 7.24.7 resolution: "@babel/plugin-bugfix-firefox-class-in-computed-class-key@npm:7.24.7" @@ -931,6 +1133,29 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-bugfix-firefox-class-in-computed-class-key@npm:^7.25.3": + version: 7.25.3 + resolution: "@babel/plugin-bugfix-firefox-class-in-computed-class-key@npm:7.25.3" + dependencies: + "@babel/helper-plugin-utils": ^7.24.8 + "@babel/traverse": ^7.25.3 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: d3dba60f360defe70eb43e35a1b17ea9dd4a99e734249e15be3d5c288019644f96f88d7ff51990118fda0845b4ad50f6d869e0382232b1d8b054d113d4eea7e2 + languageName: node + linkType: hard + +"@babel/plugin-bugfix-safari-class-field-initializer-scope@npm:^7.25.0": + version: 7.25.0 + resolution: "@babel/plugin-bugfix-safari-class-field-initializer-scope@npm:7.25.0" + dependencies: + "@babel/helper-plugin-utils": ^7.24.8 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: fd56d1e6435f2c008ca9050ea906ff7eedcbec43f532f2bf2e7e905d8bf75bf5e4295ea9593f060394e2c8e45737266ccbf718050bad2dd7be4e7613c60d1b5b + languageName: node + linkType: hard + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:^7.22.15": version: 7.24.1 resolution: "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:7.24.1" @@ -953,6 +1178,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:^7.25.0": + version: 7.25.0 + resolution: "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:7.25.0" + dependencies: + "@babel/helper-plugin-utils": ^7.24.8 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 13ed301b108d85867d64226bbc4032b07dd1a23aab68e9e32452c4fe3930f2198bb65bdae9c262c4104bd5e45647bc1830d25d43d356ee9a137edd8d5fab8350 + languageName: node + linkType: hard + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:^7.22.15": version: 7.24.1 resolution: "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:7.24.1" @@ -991,6 +1227,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:^7.25.0": + version: 7.25.0 + resolution: "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:7.25.0" + dependencies: + "@babel/helper-plugin-utils": ^7.24.8 + "@babel/traverse": ^7.25.0 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: c8d08b8d6cc71451ad2a50cf7db72ab5b41c1e5e2e4d56cf6837a25a61270abd682c6b8881ab025f11a552d2024b3780519bb051459ebb71c27aed13d9917663 + languageName: node + linkType: hard + "@babel/plugin-proposal-decorators@npm:7.22.x": version: 7.22.15 resolution: "@babel/plugin-proposal-decorators@npm:7.22.15" @@ -1006,6 +1254,19 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-proposal-decorators@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-proposal-decorators@npm:7.24.7" + dependencies: + "@babel/helper-create-class-features-plugin": ^7.24.7 + "@babel/helper-plugin-utils": ^7.24.7 + "@babel/plugin-syntax-decorators": ^7.24.7 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 75aa5ff5537d5ff77f0e52eb161a2f67c7d2bfd8f2000be710dedb1dd238b43ce53d2f734f84bda95b3f013b69de126403f84167f4eddb1d35e8f26257ee07c8 + languageName: node + linkType: hard + "@babel/plugin-proposal-private-property-in-object@npm:7.21.0-placeholder-for-preset-env.2": version: 7.21.0-placeholder-for-preset-env.2 resolution: "@babel/plugin-proposal-private-property-in-object@npm:7.21.0-placeholder-for-preset-env.2" @@ -1070,6 +1331,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-syntax-decorators@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-syntax-decorators@npm:7.24.7" + dependencies: + "@babel/helper-plugin-utils": ^7.24.7 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: dc303bcc1f5df61638f1eddc69dd55e65574bd43d8a4a098d3589f5a742e93a4ca3a173967b34eb95e4eaa994799b4c72bfed8688036e43c634be7f24db01ac5 + languageName: node + linkType: hard + "@babel/plugin-syntax-dynamic-import@npm:^7.8.3": version: 7.8.3 resolution: "@babel/plugin-syntax-dynamic-import@npm:7.8.3" @@ -1352,6 +1624,20 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-async-generator-functions@npm:^7.25.4": + version: 7.25.4 + resolution: "@babel/plugin-transform-async-generator-functions@npm:7.25.4" + dependencies: + "@babel/helper-plugin-utils": ^7.24.8 + "@babel/helper-remap-async-to-generator": ^7.25.0 + "@babel/plugin-syntax-async-generators": ^7.8.4 + "@babel/traverse": ^7.25.4 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 4235444735a1946f8766fe56564a8134c2c36c73e6cf83b3f2ed5624ebc84ff5979506a6a5b39acdb23aa09d442a6af471710ed408ccce533a2c4d2990b9df6a + languageName: node + linkType: hard + "@babel/plugin-transform-async-to-generator@npm:^7.22.5": version: 7.24.1 resolution: "@babel/plugin-transform-async-to-generator@npm:7.24.1" @@ -1422,6 +1708,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-block-scoping@npm:^7.25.0": + version: 7.25.0 + resolution: "@babel/plugin-transform-block-scoping@npm:7.25.0" + dependencies: + "@babel/helper-plugin-utils": ^7.24.8 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: b1a8f932f69ad2a47ae3e02b4cedd2a876bfc2ac9cf72a503fd706cdc87272646fe9eed81e068c0fc639647033de29f7fa0c21cddd1da0026f83dbaac97316a8 + languageName: node + linkType: hard + "@babel/plugin-transform-class-properties@npm:7.22.x": version: 7.22.5 resolution: "@babel/plugin-transform-class-properties@npm:7.22.5" @@ -1458,6 +1755,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-class-properties@npm:^7.25.4": + version: 7.25.4 + resolution: "@babel/plugin-transform-class-properties@npm:7.25.4" + dependencies: + "@babel/helper-create-class-features-plugin": ^7.25.4 + "@babel/helper-plugin-utils": ^7.24.8 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: b73f7d968639c6c2dfc13f4c5a8fe45cefd260f0faa7890ae12e65d41211072544ff5e128c8b61a86887b29ffd3df8422dbdfbf61648488e71d4bb599c41f4a5 + languageName: node + linkType: hard + "@babel/plugin-transform-class-static-block@npm:^7.22.11": version: 7.24.4 resolution: "@babel/plugin-transform-class-static-block@npm:7.24.4" @@ -1520,6 +1829,22 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-classes@npm:^7.25.4": + version: 7.25.4 + resolution: "@babel/plugin-transform-classes@npm:7.25.4" + dependencies: + "@babel/helper-annotate-as-pure": ^7.24.7 + "@babel/helper-compilation-targets": ^7.25.2 + "@babel/helper-plugin-utils": ^7.24.8 + "@babel/helper-replace-supers": ^7.25.0 + "@babel/traverse": ^7.25.4 + globals: ^11.1.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 0bf20e46eeb691bd60cee5d1b01950fc37accec88018ecace25099f7c8d8509c1ac54d11b8caf9f2157c6945969520642a3bc421159c1a14e80224dc9a7611de + languageName: node + linkType: hard + "@babel/plugin-transform-computed-properties@npm:^7.22.5": version: 7.24.1 resolution: "@babel/plugin-transform-computed-properties@npm:7.24.1" @@ -1566,6 +1891,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-destructuring@npm:^7.24.8": + version: 7.24.8 + resolution: "@babel/plugin-transform-destructuring@npm:7.24.8" + dependencies: + "@babel/helper-plugin-utils": ^7.24.8 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 0b4bd3d608979a1e5bd97d9d42acd5ad405c7fffa61efac4c7afd8e86ea6c2d91ab2d94b6a98d63919571363fe76e0b03c4ff161f0f60241b895842596e4a999 + languageName: node + linkType: hard + "@babel/plugin-transform-dotall-regex@npm:^7.22.5": version: 7.24.1 resolution: "@babel/plugin-transform-dotall-regex@npm:7.24.1" @@ -1612,6 +1948,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-duplicate-named-capturing-groups-regex@npm:^7.25.0": + version: 7.25.0 + resolution: "@babel/plugin-transform-duplicate-named-capturing-groups-regex@npm:7.25.0" + dependencies: + "@babel/helper-create-regexp-features-plugin": ^7.25.0 + "@babel/helper-plugin-utils": ^7.24.8 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 608d6b0e77341189508880fd1a9f605a38d0803dd6f678ea3920ab181b17b377f6d5221ae8cf0104c7a044d30d4ddb0366bd064447695671d78457a656bb264f + languageName: node + linkType: hard + "@babel/plugin-transform-dynamic-import@npm:^7.22.11": version: 7.24.1 resolution: "@babel/plugin-transform-dynamic-import@npm:7.24.1" @@ -1734,6 +2082,19 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-function-name@npm:^7.25.1": + version: 7.25.1 + resolution: "@babel/plugin-transform-function-name@npm:7.25.1" + dependencies: + "@babel/helper-compilation-targets": ^7.24.8 + "@babel/helper-plugin-utils": ^7.24.8 + "@babel/traverse": ^7.25.1 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 743f3ea03bbc5a90944849d5a880b6bd9243dddbde581a46952da76e53a0b74c1e2424133fe8129d7a152c1f8c872bcd27e0b6728d7caadabd1afa7bb892e1e0 + languageName: node + linkType: hard + "@babel/plugin-transform-json-strings@npm:^7.22.11": version: 7.24.1 resolution: "@babel/plugin-transform-json-strings@npm:7.24.1" @@ -1780,6 +2141,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-literals@npm:^7.25.2": + version: 7.25.2 + resolution: "@babel/plugin-transform-literals@npm:7.25.2" + dependencies: + "@babel/helper-plugin-utils": ^7.24.8 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 70c9bb40e377a306bd8f500899fb72127e527517914466e95dc6bb53fa7a0f51479db244a54a771b5780fc1eab488fedd706669bf11097b81a23c81ab7423eb1 + languageName: node + linkType: hard + "@babel/plugin-transform-logical-assignment-operators@npm:^7.22.11": version: 7.24.1 resolution: "@babel/plugin-transform-logical-assignment-operators@npm:7.24.1" @@ -1876,6 +2248,19 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-modules-commonjs@npm:^7.24.8": + version: 7.24.8 + resolution: "@babel/plugin-transform-modules-commonjs@npm:7.24.8" + dependencies: + "@babel/helper-module-transforms": ^7.24.8 + "@babel/helper-plugin-utils": ^7.24.8 + "@babel/helper-simple-access": ^7.24.7 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: a4cf95b1639c33382064b44558f73ee5fac023f2a94d16e549d2bb55ceebd5cbc10fcddd505d08cd5bc97f5a64af9fd155512358b7dcf7b1a0082e8945cf21c5 + languageName: node + linkType: hard + "@babel/plugin-transform-modules-systemjs@npm:^7.22.11": version: 7.24.1 resolution: "@babel/plugin-transform-modules-systemjs@npm:7.24.1" @@ -1904,6 +2289,20 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-modules-systemjs@npm:^7.25.0": + version: 7.25.0 + resolution: "@babel/plugin-transform-modules-systemjs@npm:7.25.0" + dependencies: + "@babel/helper-module-transforms": ^7.25.0 + "@babel/helper-plugin-utils": ^7.24.8 + "@babel/helper-validator-identifier": ^7.24.7 + "@babel/traverse": ^7.25.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: fe673bec08564e491847324bb80a1e6edfb229f5c37e58a094d51e95306e7b098e1d130fc43e992d22debd93b9beac74441ffc3f6ea5d78f6b2535896efa0728 + languageName: node + linkType: hard + "@babel/plugin-transform-modules-umd@npm:^7.22.5": version: 7.24.1 resolution: "@babel/plugin-transform-modules-umd@npm:7.24.1" @@ -2124,6 +2523,19 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-optional-chaining@npm:^7.24.8": + version: 7.24.8 + resolution: "@babel/plugin-transform-optional-chaining@npm:7.24.8" + dependencies: + "@babel/helper-plugin-utils": ^7.24.8 + "@babel/helper-skip-transparent-expression-wrappers": ^7.24.7 + "@babel/plugin-syntax-optional-chaining": ^7.8.3 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 45e55e3a2fffb89002d3f89aef59c141610f23b60eee41e047380bffc40290b59f64fc649aa7ec5281f73d41b2065410d788acc6afaad2a9f44cad6e8af04442 + languageName: node + linkType: hard + "@babel/plugin-transform-parameters@npm:^7.22.15, @babel/plugin-transform-parameters@npm:^7.24.5": version: 7.24.5 resolution: "@babel/plugin-transform-parameters@npm:7.24.5" @@ -2170,6 +2582,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-private-methods@npm:^7.25.4": + version: 7.25.4 + resolution: "@babel/plugin-transform-private-methods@npm:7.25.4" + dependencies: + "@babel/helper-create-class-features-plugin": ^7.25.4 + "@babel/helper-plugin-utils": ^7.24.8 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: cb1dabfc03e2977990263d65bc8f43a9037dffbb5d9a5f825c00d05447ff68015099408c1531d9dd88f18a41a90f5062dc48f3a1d52b415d2d2ee4827dedff09 + languageName: node + linkType: hard + "@babel/plugin-transform-private-property-in-object@npm:^7.22.11": version: 7.24.5 resolution: "@babel/plugin-transform-private-property-in-object@npm:7.24.5" @@ -2503,6 +2927,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-typeof-symbol@npm:^7.24.8": + version: 7.24.8 + resolution: "@babel/plugin-transform-typeof-symbol@npm:7.24.8" + dependencies: + "@babel/helper-plugin-utils": ^7.24.8 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 8663a8e7347cedf181001d99c88cf794b6598c3d82f324098510fe8fb8bd22113995526a77aa35a3cc5d70ffd0617a59dd0d10311a9bf0e1a3a7d3e59b900c00 + languageName: node + linkType: hard + "@babel/plugin-transform-typescript@npm:^7.22.15": version: 7.24.5 resolution: "@babel/plugin-transform-typescript@npm:7.24.5" @@ -2625,6 +3060,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-unicode-sets-regex@npm:^7.25.4": + version: 7.25.4 + resolution: "@babel/plugin-transform-unicode-sets-regex@npm:7.25.4" + dependencies: + "@babel/helper-create-regexp-features-plugin": ^7.25.2 + "@babel/helper-plugin-utils": ^7.24.8 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 6d1a7e9fdde4ffc9a81c0e3f261b96a9a0dfe65da282ec96fe63b36c597a7389feac638f1df2a8a4f8c9128337bba8e984f934e9f19077930f33abf1926759ea + languageName: node + linkType: hard + "@babel/preset-env@npm:7.22.x": version: 7.22.20 resolution: "@babel/preset-env@npm:7.22.20" @@ -2806,6 +3253,99 @@ __metadata: languageName: node linkType: hard +"@babel/preset-env@npm:^7.25.4": + version: 7.25.4 + resolution: "@babel/preset-env@npm:7.25.4" + dependencies: + "@babel/compat-data": ^7.25.4 + "@babel/helper-compilation-targets": ^7.25.2 + "@babel/helper-plugin-utils": ^7.24.8 + "@babel/helper-validator-option": ^7.24.8 + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": ^7.25.3 + "@babel/plugin-bugfix-safari-class-field-initializer-scope": ^7.25.0 + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": ^7.25.0 + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": ^7.24.7 + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": ^7.25.0 + "@babel/plugin-proposal-private-property-in-object": 7.21.0-placeholder-for-preset-env.2 + "@babel/plugin-syntax-async-generators": ^7.8.4 + "@babel/plugin-syntax-class-properties": ^7.12.13 + "@babel/plugin-syntax-class-static-block": ^7.14.5 + "@babel/plugin-syntax-dynamic-import": ^7.8.3 + "@babel/plugin-syntax-export-namespace-from": ^7.8.3 + "@babel/plugin-syntax-import-assertions": ^7.24.7 + "@babel/plugin-syntax-import-attributes": ^7.24.7 + "@babel/plugin-syntax-import-meta": ^7.10.4 + "@babel/plugin-syntax-json-strings": ^7.8.3 + "@babel/plugin-syntax-logical-assignment-operators": ^7.10.4 + "@babel/plugin-syntax-nullish-coalescing-operator": ^7.8.3 + "@babel/plugin-syntax-numeric-separator": ^7.10.4 + "@babel/plugin-syntax-object-rest-spread": ^7.8.3 + "@babel/plugin-syntax-optional-catch-binding": ^7.8.3 + "@babel/plugin-syntax-optional-chaining": ^7.8.3 + "@babel/plugin-syntax-private-property-in-object": ^7.14.5 + "@babel/plugin-syntax-top-level-await": ^7.14.5 + "@babel/plugin-syntax-unicode-sets-regex": ^7.18.6 + "@babel/plugin-transform-arrow-functions": ^7.24.7 + "@babel/plugin-transform-async-generator-functions": ^7.25.4 + "@babel/plugin-transform-async-to-generator": ^7.24.7 + "@babel/plugin-transform-block-scoped-functions": ^7.24.7 + "@babel/plugin-transform-block-scoping": ^7.25.0 + "@babel/plugin-transform-class-properties": ^7.25.4 + "@babel/plugin-transform-class-static-block": ^7.24.7 + "@babel/plugin-transform-classes": ^7.25.4 + "@babel/plugin-transform-computed-properties": ^7.24.7 + "@babel/plugin-transform-destructuring": ^7.24.8 + "@babel/plugin-transform-dotall-regex": ^7.24.7 + "@babel/plugin-transform-duplicate-keys": ^7.24.7 + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": ^7.25.0 + "@babel/plugin-transform-dynamic-import": ^7.24.7 + "@babel/plugin-transform-exponentiation-operator": ^7.24.7 + "@babel/plugin-transform-export-namespace-from": ^7.24.7 + "@babel/plugin-transform-for-of": ^7.24.7 + "@babel/plugin-transform-function-name": ^7.25.1 + "@babel/plugin-transform-json-strings": ^7.24.7 + "@babel/plugin-transform-literals": ^7.25.2 + "@babel/plugin-transform-logical-assignment-operators": ^7.24.7 + "@babel/plugin-transform-member-expression-literals": ^7.24.7 + "@babel/plugin-transform-modules-amd": ^7.24.7 + "@babel/plugin-transform-modules-commonjs": ^7.24.8 + "@babel/plugin-transform-modules-systemjs": ^7.25.0 + "@babel/plugin-transform-modules-umd": ^7.24.7 + "@babel/plugin-transform-named-capturing-groups-regex": ^7.24.7 + "@babel/plugin-transform-new-target": ^7.24.7 + "@babel/plugin-transform-nullish-coalescing-operator": ^7.24.7 + "@babel/plugin-transform-numeric-separator": ^7.24.7 + "@babel/plugin-transform-object-rest-spread": ^7.24.7 + "@babel/plugin-transform-object-super": ^7.24.7 + "@babel/plugin-transform-optional-catch-binding": ^7.24.7 + "@babel/plugin-transform-optional-chaining": ^7.24.8 + "@babel/plugin-transform-parameters": ^7.24.7 + "@babel/plugin-transform-private-methods": ^7.25.4 + "@babel/plugin-transform-private-property-in-object": ^7.24.7 + "@babel/plugin-transform-property-literals": ^7.24.7 + "@babel/plugin-transform-regenerator": ^7.24.7 + "@babel/plugin-transform-reserved-words": ^7.24.7 + "@babel/plugin-transform-shorthand-properties": ^7.24.7 + "@babel/plugin-transform-spread": ^7.24.7 + "@babel/plugin-transform-sticky-regex": ^7.24.7 + "@babel/plugin-transform-template-literals": ^7.24.7 + "@babel/plugin-transform-typeof-symbol": ^7.24.8 + "@babel/plugin-transform-unicode-escapes": ^7.24.7 + "@babel/plugin-transform-unicode-property-regex": ^7.24.7 + "@babel/plugin-transform-unicode-regex": ^7.24.7 + "@babel/plugin-transform-unicode-sets-regex": ^7.25.4 + "@babel/preset-modules": 0.1.6-no-external-plugins + babel-plugin-polyfill-corejs2: ^0.4.10 + babel-plugin-polyfill-corejs3: ^0.10.6 + babel-plugin-polyfill-regenerator: ^0.6.1 + core-js-compat: ^3.37.1 + semver: ^6.3.1 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 752be43f0b78a2eefe5007076aed3d21b505e1c09d134b61e7de8838f1bbb1e7af81023d39adb14b6eae23727fb5a9fd23f8115a44df043319be22319be17913 + languageName: node + linkType: hard + "@babel/preset-modules@npm:0.1.6-no-external-plugins": version: 0.1.6-no-external-plugins resolution: "@babel/preset-modules@npm:0.1.6-no-external-plugins" @@ -2835,7 +3375,7 @@ __metadata: languageName: node linkType: hard -"@babel/preset-react@npm:^7.18.6, @babel/preset-react@npm:^7.22.5": +"@babel/preset-react@npm:^7.18.6, @babel/preset-react@npm:^7.22.5, @babel/preset-react@npm:^7.24.7": version: 7.24.7 resolution: "@babel/preset-react@npm:7.24.7" dependencies: @@ -2866,7 +3406,7 @@ __metadata: languageName: node linkType: hard -"@babel/preset-typescript@npm:^7.21.0, @babel/preset-typescript@npm:^7.22.5": +"@babel/preset-typescript@npm:^7.21.0, @babel/preset-typescript@npm:^7.22.5, @babel/preset-typescript@npm:^7.24.7": version: 7.24.7 resolution: "@babel/preset-typescript@npm:7.24.7" dependencies: @@ -2938,6 +3478,17 @@ __metadata: languageName: node linkType: hard +"@babel/template@npm:^7.25.0": + version: 7.25.0 + resolution: "@babel/template@npm:7.25.0" + dependencies: + "@babel/code-frame": ^7.24.7 + "@babel/parser": ^7.25.0 + "@babel/types": ^7.25.0 + checksum: 3f2db568718756d0daf2a16927b78f00c425046b654cd30b450006f2e84bdccaf0cbe6dc04994aa1f5f6a4398da2f11f3640a4d3ee31722e43539c4c919c817b + languageName: node + linkType: hard + "@babel/traverse@npm:^7.22.20, @babel/traverse@npm:^7.24.5": version: 7.24.5 resolution: "@babel/traverse@npm:7.24.5" @@ -2974,6 +3525,21 @@ __metadata: languageName: node linkType: hard +"@babel/traverse@npm:^7.24.8, @babel/traverse@npm:^7.25.0, @babel/traverse@npm:^7.25.1, @babel/traverse@npm:^7.25.2, @babel/traverse@npm:^7.25.3, @babel/traverse@npm:^7.25.4": + version: 7.25.6 + resolution: "@babel/traverse@npm:7.25.6" + dependencies: + "@babel/code-frame": ^7.24.7 + "@babel/generator": ^7.25.6 + "@babel/parser": ^7.25.6 + "@babel/template": ^7.25.0 + "@babel/types": ^7.25.6 + debug: ^4.3.1 + globals: ^11.1.0 + checksum: 11ee47269aa4356f2d6633a05b9af73405b5ed72c09378daf644289b686ef852035a6ac9aa410f601991993c6bbf72006795b5478283b78eb1ca77874ada7737 + languageName: node + linkType: hard + "@babel/types@npm:7.24.x, @babel/types@npm:^7.0.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.22.15, @babel/types@npm:^7.22.19, @babel/types@npm:^7.22.5, @babel/types@npm:^7.23.0, @babel/types@npm:^7.23.4, @babel/types@npm:^7.24.0, @babel/types@npm:^7.24.5, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4, @babel/types@npm:^7.8.3": version: 7.24.5 resolution: "@babel/types@npm:7.24.5" @@ -2996,6 +3562,17 @@ __metadata: languageName: node linkType: hard +"@babel/types@npm:^7.24.8, @babel/types@npm:^7.25.0, @babel/types@npm:^7.25.2, @babel/types@npm:^7.25.6": + version: 7.25.6 + resolution: "@babel/types@npm:7.25.6" + dependencies: + "@babel/helper-string-parser": ^7.24.8 + "@babel/helper-validator-identifier": ^7.24.7 + to-fast-properties: ^2.0.0 + checksum: 9b2f84ff3f874ad05b0b9bf06862c56f478b65781801f82296b4cc01bee39e79c20a7c0a06959fed0ee582c8267e1cb21638318655c5e070b0287242a844d1c9 + languageName: node + linkType: hard + "@bcoe/v8-coverage@npm:^0.2.3": version: 0.2.3 resolution: "@bcoe/v8-coverage@npm:0.2.3" @@ -3587,31 +4164,32 @@ __metadata: languageName: node linkType: hard -"@eslint-community/regexpp@npm:^4.5.1, @eslint-community/regexpp@npm:^4.6.1": - version: 4.10.0 - resolution: "@eslint-community/regexpp@npm:4.10.0" - checksum: 2a6e345429ea8382aaaf3a61f865cae16ed44d31ca917910033c02dc00d505d939f10b81e079fa14d43b51499c640138e153b7e40743c4c094d9df97d4e56f7b +"@eslint-community/regexpp@npm:^4.10.0, @eslint-community/regexpp@npm:^4.11.0": + version: 4.11.0 + resolution: "@eslint-community/regexpp@npm:4.11.0" + checksum: 97d2fe46690b69417a551bd19a3dc53b6d9590d2295c43cc4c4e44e64131af541e2f4a44d5c12e87de990403654d3dae9d33600081f3a2f0386b368abc9111ec languageName: node linkType: hard -"@eslint/eslintrc@npm:^2.1.4": - version: 2.1.4 - resolution: "@eslint/eslintrc@npm:2.1.4" +"@eslint/compat@npm:^1.1.1": + version: 1.1.1 + resolution: "@eslint/compat@npm:1.1.1" + checksum: c9146b139e52ee4f79e25b97f22d2936c50b876cef8e9c5789600f12d8fabae689d75571a8429e5aae0d5e8067b0628fd87b7e849cee391b485db9557b40b6a4 + languageName: node + linkType: hard + +"@eslint/config-array@npm:^0.18.0": + version: 0.18.0 + resolution: "@eslint/config-array@npm:0.18.0" dependencies: - ajv: ^6.12.4 - debug: ^4.3.2 - espree: ^9.6.0 - globals: ^13.19.0 - ignore: ^5.2.0 - import-fresh: ^3.2.1 - js-yaml: ^4.1.0 + "@eslint/object-schema": ^2.1.4 + debug: ^4.3.1 minimatch: ^3.1.2 - strip-json-comments: ^3.1.1 - checksum: 10957c7592b20ca0089262d8c2a8accbad14b4f6507e35416c32ee6b4dbf9cad67dfb77096bbd405405e9ada2b107f3797fe94362e1c55e0b09d6e90dd149127 + checksum: 5ff748e1788745bfb3160c3b3151d62a7c054e336e9fe8069e86cfa6106f3abbd59b24f1253122268295f98c66803e9a7b23d7f947a8c00f62d2060cc44bc7fc languageName: node linkType: hard -"@eslint/eslintrc@npm:^3.0.2": +"@eslint/eslintrc@npm:^3.1.0": version: 3.1.0 resolution: "@eslint/eslintrc@npm:3.1.0" dependencies: @@ -3628,10 +4206,24 @@ __metadata: languageName: node linkType: hard -"@eslint/js@npm:8.57.0, @eslint/js@npm:8.x.x": - version: 8.57.0 - resolution: "@eslint/js@npm:8.57.0" - checksum: 315dc65b0e9893e2bff139bddace7ea601ad77ed47b4550e73da8c9c2d2766c7a575c3cddf17ef85b8fd6a36ff34f91729d0dcca56e73ca887c10df91a41b0bb +"@eslint/js@npm:9.9.1, @eslint/js@npm:^9.9.1": + version: 9.9.1 + resolution: "@eslint/js@npm:9.9.1" + checksum: 24436d7a1023dbc6c63fd199e45afa9eab8537f7bd808872d9d17dd70c5237f599fe3d08f519d55b40e33bfde02a460861df1c96aa07674090c3f98c83b0c178 + languageName: node + linkType: hard + +"@eslint/js@npm:^9.9.0": + version: 9.9.0 + resolution: "@eslint/js@npm:9.9.0" + checksum: 33f0c8988e4e6f6c1499d05e2e91ef3df1c0b221a46c41ed1d27cf1265809451fba5b7a9452ece70e98bfd2f745c0f0df3c9cc1fdcfdcaacbcae45ddc415b5d6 + languageName: node + linkType: hard + +"@eslint/object-schema@npm:^2.1.4": + version: 2.1.4 + resolution: "@eslint/object-schema@npm:2.1.4" + checksum: 5a03094115bcdab7991dbbc5d17a9713f394cebb4b44d3eaf990d7487b9b8e1877b817997334ab40be52e299a0384595c6f6ba91b389901e5e1d21efda779271 languageName: node linkType: hard @@ -3651,17 +4243,6 @@ __metadata: languageName: node linkType: hard -"@humanwhocodes/config-array@npm:^0.11.14": - version: 0.11.14 - resolution: "@humanwhocodes/config-array@npm:0.11.14" - dependencies: - "@humanwhocodes/object-schema": ^2.0.2 - debug: ^4.3.1 - minimatch: ^3.0.5 - checksum: 861ccce9eaea5de19546653bccf75bf09fe878bc39c3aab00aeee2d2a0e654516adad38dd1098aab5e3af0145bbcbf3f309bdf4d964f8dab9dcd5834ae4c02f2 - languageName: node - linkType: hard - "@humanwhocodes/module-importer@npm:^1.0.1": version: 1.0.1 resolution: "@humanwhocodes/module-importer@npm:1.0.1" @@ -3669,10 +4250,10 @@ __metadata: languageName: node linkType: hard -"@humanwhocodes/object-schema@npm:^2.0.2": - version: 2.0.3 - resolution: "@humanwhocodes/object-schema@npm:2.0.3" - checksum: d3b78f6c5831888c6ecc899df0d03bcc25d46f3ad26a11d7ea52944dc36a35ef543fad965322174238d677a43d5c694434f6607532cff7077062513ad7022631 +"@humanwhocodes/retry@npm:^0.3.0": + version: 0.3.0 + resolution: "@humanwhocodes/retry@npm:0.3.0" + checksum: 4349cb8b60466a000e945fde8f8551cefb01ebba22ead4a92ac7b145f67f5da6b52e5a1e0c53185d732d0a49958ac29327934a4a5ac1d0bc20efb4429a4f7bf7 languageName: node linkType: hard @@ -3724,7 +4305,7 @@ __metadata: languageName: node linkType: hard -"@jest/core@npm:^29.5.0, @jest/core@npm:^29.7.0": +"@jest/core@npm:^29.7.0": version: 29.7.0 resolution: "@jest/core@npm:29.7.0" dependencies: @@ -3926,7 +4507,7 @@ __metadata: languageName: node linkType: hard -"@jest/types@npm:^29.5.0, @jest/types@npm:^29.6.3": +"@jest/types@npm:^29.6.3": version: 29.6.3 resolution: "@jest/types@npm:29.6.3" dependencies: @@ -4214,72 +4795,19 @@ __metadata: languageName: node linkType: hard -"@stylistic/eslint-plugin-js@npm:1.8.1, @stylistic/eslint-plugin-js@npm:^1.8.1": - version: 1.8.1 - resolution: "@stylistic/eslint-plugin-js@npm:1.8.1" +"@stylistic/eslint-plugin@npm:^2.7.2": + version: 2.7.2 + resolution: "@stylistic/eslint-plugin@npm:2.7.2" dependencies: - "@types/eslint": ^8.56.10 - acorn: ^8.11.3 - escape-string-regexp: ^4.0.0 - eslint-visitor-keys: ^3.4.3 - espree: ^9.6.1 - peerDependencies: - eslint: ">=8.40.0" - checksum: b0f71b2194ca9a525029615ef7c981d9457d266d7fd93d5a194b1f10d1a87f3bd99b46319f73058504c9706a2c79f747a2876693296077d875b72a40368fd4b4 - languageName: node - linkType: hard - -"@stylistic/eslint-plugin-jsx@npm:1.8.1": - version: 1.8.1 - resolution: "@stylistic/eslint-plugin-jsx@npm:1.8.1" - dependencies: - "@stylistic/eslint-plugin-js": ^1.8.1 - "@types/eslint": ^8.56.10 + "@types/eslint": ^9.6.1 + "@typescript-eslint/utils": ^8.3.0 + eslint-visitor-keys: ^4.0.0 + espree: ^10.1.0 estraverse: ^5.3.0 picomatch: ^4.0.2 peerDependencies: eslint: ">=8.40.0" - checksum: 41b5ab07aec9b4dfb646a1d0ee448ccc820bdc2e8a47e32c3affc1ef6586e0cf825c757a9445ff1c8eb69bed4698bd76826bd5eebcd6969b78326573c3097373 - languageName: node - linkType: hard - -"@stylistic/eslint-plugin-plus@npm:1.8.1": - version: 1.8.1 - resolution: "@stylistic/eslint-plugin-plus@npm:1.8.1" - dependencies: - "@types/eslint": ^8.56.10 - "@typescript-eslint/utils": ^6.21.0 - peerDependencies: - eslint: "*" - checksum: 034d37d8af531e6b2e260fe91cc4703e4461a8b9a74e799e3ca9bcdeb3d5bda55a5ce0a0c48a98d863612ef5affbe950b77869de83eab94ebd90451d06526cac - languageName: node - linkType: hard - -"@stylistic/eslint-plugin-ts@npm:1.8.1": - version: 1.8.1 - resolution: "@stylistic/eslint-plugin-ts@npm:1.8.1" - dependencies: - "@stylistic/eslint-plugin-js": 1.8.1 - "@types/eslint": ^8.56.10 - "@typescript-eslint/utils": ^6.21.0 - peerDependencies: - eslint: ">=8.40.0" - checksum: 851e9c028d2146cf8ed0ee3a60bddbff413cd6a5594aac1921e845f560cd2808c25aee456a4862facae419c896e2b1c43a58720ebd72b60b25190a9a56e39af5 - languageName: node - linkType: hard - -"@stylistic/eslint-plugin@npm:^1.7.0": - version: 1.8.1 - resolution: "@stylistic/eslint-plugin@npm:1.8.1" - dependencies: - "@stylistic/eslint-plugin-js": 1.8.1 - "@stylistic/eslint-plugin-jsx": 1.8.1 - "@stylistic/eslint-plugin-plus": 1.8.1 - "@stylistic/eslint-plugin-ts": 1.8.1 - "@types/eslint": ^8.56.10 - peerDependencies: - eslint: ">=8.40.0" - checksum: 32e6648f873a0c4fcaa7b76d50b35bf5eb5e3763a2a0ad007f5d6637f061566dcfcd05eed6d22b7991f0c2aa290c5d4bd1c3d7c57cd5c9f71f64481894f7e683 + checksum: 3cade3ab96f761d4c8b10e2903745ccccb7a3349fb06975f85ae777da3c9f73ca53d8784c90800d3999f4313b2e3c8df36159b5c3e823aa304219aec0a4f6023 languageName: node linkType: hard @@ -4606,7 +5134,7 @@ __metadata: languageName: node linkType: hard -"@types/eslint@npm:*, @types/eslint@npm:^8.56.10": +"@types/eslint@npm:*": version: 8.56.10 resolution: "@types/eslint@npm:8.56.10" dependencies: @@ -4616,13 +5144,13 @@ __metadata: languageName: node linkType: hard -"@types/eslint@npm:8.4.9": - version: 8.4.9 - resolution: "@types/eslint@npm:8.4.9" +"@types/eslint@npm:^9.6.1": + version: 9.6.1 + resolution: "@types/eslint@npm:9.6.1" dependencies: "@types/estree": "*" "@types/json-schema": "*" - checksum: 9eda34e000f1e09850f447d8d65b671f59153aa5b580aca5b95185cf42b047b9cfda86eea83a6295aa883931b769a79236ce439601be7ab4485be88ce77b69ad + checksum: c286e79707ab604b577cf8ce51d9bbb9780e3d6a68b38a83febe13fa05b8012c92de17c28532fac2b03d3c460123f5055d603a579685325246ca1c86828223e0 languageName: node linkType: hard @@ -4793,20 +5321,13 @@ __metadata: languageName: node linkType: hard -"@types/json-schema@npm:*, @types/json-schema@npm:^7.0.12, @types/json-schema@npm:^7.0.4, @types/json-schema@npm:^7.0.5, @types/json-schema@npm:^7.0.8, @types/json-schema@npm:^7.0.9": +"@types/json-schema@npm:*, @types/json-schema@npm:^7.0.4, @types/json-schema@npm:^7.0.5, @types/json-schema@npm:^7.0.8, @types/json-schema@npm:^7.0.9": version: 7.0.15 resolution: "@types/json-schema@npm:7.0.15" checksum: 97ed0cb44d4070aecea772b7b2e2ed971e10c81ec87dd4ecc160322ffa55ff330dace1793489540e3e318d90942064bb697cc0f8989391797792d919737b3b98 languageName: node linkType: hard -"@types/json5@npm:^0.0.29": - version: 0.0.29 - resolution: "@types/json5@npm:0.0.29" - checksum: e60b153664572116dfea673c5bda7778dbff150498f44f998e34b5886d8afc47f16799280e4b6e241c0472aef1bc36add771c569c68fc5125fc2ae519a3eb9ac - languageName: node - linkType: hard - "@types/lodash@npm:^4.14.176": version: 4.17.4 resolution: "@types/lodash@npm:4.17.4" @@ -4862,12 +5383,12 @@ __metadata: languageName: node linkType: hard -"@types/node@npm:18.x.x": - version: 18.19.33 - resolution: "@types/node@npm:18.19.33" +"@types/node@npm:20.16.x": + version: 20.16.1 + resolution: "@types/node@npm:20.16.1" dependencies: - undici-types: ~5.26.4 - checksum: b6db87d095bc541d64a410fa323a35c22c6113220b71b608bbe810b2397932d0f0a51c3c0f3ef90c20d8180a1502d950a7c5314b907e182d9cc10b36efd2a44e + undici-types: ~6.19.2 + checksum: 2b8f30f416f5c1851ffa8a13ef6c464a5e355edfd763713c22813a7839f6419a64e27925f9e89c972513d78432263179332f0bffb273d16498233bfdf495d096 languageName: node linkType: hard @@ -4980,13 +5501,6 @@ __metadata: languageName: node linkType: hard -"@types/semver@npm:^7.5.0": - version: 7.5.8 - resolution: "@types/semver@npm:7.5.8" - checksum: ea6f5276f5b84c55921785a3a27a3cd37afee0111dfe2bcb3e03c31819c197c782598f17f0b150a69d453c9584cd14c4c4d7b9a55d2c5e6cacd4d66fdb3b3663 - languageName: node - linkType: hard - "@types/send@npm:*": version: 0.17.4 resolution: "@types/send@npm:0.17.4" @@ -5079,268 +5593,255 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/eslint-plugin@npm:6.6.x": - version: 6.6.0 - resolution: "@typescript-eslint/eslint-plugin@npm:6.6.0" +"@typescript-eslint/eslint-plugin@npm:8.3.0": + version: 8.3.0 + resolution: "@typescript-eslint/eslint-plugin@npm:8.3.0" dependencies: - "@eslint-community/regexpp": ^4.5.1 - "@typescript-eslint/scope-manager": 6.6.0 - "@typescript-eslint/type-utils": 6.6.0 - "@typescript-eslint/utils": 6.6.0 - "@typescript-eslint/visitor-keys": 6.6.0 - debug: ^4.3.4 + "@eslint-community/regexpp": ^4.10.0 + "@typescript-eslint/scope-manager": 8.3.0 + "@typescript-eslint/type-utils": 8.3.0 + "@typescript-eslint/utils": 8.3.0 + "@typescript-eslint/visitor-keys": 8.3.0 graphemer: ^1.4.0 - ignore: ^5.2.4 + ignore: ^5.3.1 natural-compare: ^1.4.0 - semver: ^7.5.4 - ts-api-utils: ^1.0.1 + ts-api-utils: ^1.3.0 peerDependencies: - "@typescript-eslint/parser": ^6.0.0 || ^6.0.0-alpha - eslint: ^7.0.0 || ^8.0.0 + "@typescript-eslint/parser": ^8.0.0 || ^8.0.0-alpha.0 + eslint: ^8.57.0 || ^9.0.0 peerDependenciesMeta: typescript: optional: true - checksum: ed41c6df87096706777e9c1f53adabd998fd840691b57f5b68b18903e567f16c0a8354ff0ad29229c249f29440ba4a017c9fe966da182a455dde9769232a4344 + checksum: edef62ba07cf457bfb4364976000cf18e6123e6a27a591cd7586e950e0ede14c6ec418904ffdd4256192c48f6ce80c3fc18b057210d5c9e7c4e722fec2ce85e4 languageName: node linkType: hard -"@typescript-eslint/eslint-plugin@npm:6.x.x": - version: 6.21.0 - resolution: "@typescript-eslint/eslint-plugin@npm:6.21.0" +"@typescript-eslint/eslint-plugin@npm:^8.4.0": + version: 8.4.0 + resolution: "@typescript-eslint/eslint-plugin@npm:8.4.0" 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 - debug: ^4.3.4 + "@eslint-community/regexpp": ^4.10.0 + "@typescript-eslint/scope-manager": 8.4.0 + "@typescript-eslint/type-utils": 8.4.0 + "@typescript-eslint/utils": 8.4.0 + "@typescript-eslint/visitor-keys": 8.4.0 graphemer: ^1.4.0 - ignore: ^5.2.4 + ignore: ^5.3.1 natural-compare: ^1.4.0 - semver: ^7.5.4 - ts-api-utils: ^1.0.1 + ts-api-utils: ^1.3.0 peerDependencies: - "@typescript-eslint/parser": ^6.0.0 || ^6.0.0-alpha - eslint: ^7.0.0 || ^8.0.0 + "@typescript-eslint/parser": ^8.0.0 || ^8.0.0-alpha.0 + eslint: ^8.57.0 || ^9.0.0 peerDependenciesMeta: typescript: optional: true - checksum: 5ef2c502255e643e98051e87eb682c2a257e87afd8ec3b9f6274277615e1c2caf3131b352244cfb1987b8b2c415645eeacb9113fa841fc4c9b2ac46e8aed6efd + checksum: 62009bfd28d489cd78a59997b16c6b0d2ea4ac3e485ac3c5f1afb4934a5396e439241778441a753a2a96b07aaa7bd200fb8989368febf749fc669d8c8f7e5f0c languageName: node linkType: hard -"@typescript-eslint/parser@npm:6.6.x": - version: 6.6.0 - resolution: "@typescript-eslint/parser@npm:6.6.0" +"@typescript-eslint/parser@npm:8.3.0": + version: 8.3.0 + resolution: "@typescript-eslint/parser@npm:8.3.0" dependencies: - "@typescript-eslint/scope-manager": 6.6.0 - "@typescript-eslint/types": 6.6.0 - "@typescript-eslint/typescript-estree": 6.6.0 - "@typescript-eslint/visitor-keys": 6.6.0 + "@typescript-eslint/scope-manager": 8.3.0 + "@typescript-eslint/types": 8.3.0 + "@typescript-eslint/typescript-estree": 8.3.0 + "@typescript-eslint/visitor-keys": 8.3.0 debug: ^4.3.4 peerDependencies: - eslint: ^7.0.0 || ^8.0.0 + eslint: ^8.57.0 || ^9.0.0 peerDependenciesMeta: typescript: optional: true - checksum: b2d0082b6acc1a85997ebbb60fc73a43f3fe5e5028cb4130938a2cffddc94872c8e0d00a1742be8f8b755bc1994d43b55b7e4660dc88946744094ff2aca4ffd3 + checksum: cac61afb1d4e0732a0b4e7a8af7a5d167894453907f9a173c8f25aab7d4d04e9b497f759eaacf6e445dccef1dbce76260a2b295994b774f7ae5363fbfc092a59 languageName: node linkType: hard -"@typescript-eslint/parser@npm:6.x.x": - version: 6.21.0 - resolution: "@typescript-eslint/parser@npm:6.21.0" +"@typescript-eslint/parser@npm:8.4.0, @typescript-eslint/parser@npm:^8.4.0": + version: 8.4.0 + resolution: "@typescript-eslint/parser@npm:8.4.0" 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": 8.4.0 + "@typescript-eslint/types": 8.4.0 + "@typescript-eslint/typescript-estree": 8.4.0 + "@typescript-eslint/visitor-keys": 8.4.0 debug: ^4.3.4 peerDependencies: - eslint: ^7.0.0 || ^8.0.0 + eslint: ^8.57.0 || ^9.0.0 peerDependenciesMeta: typescript: optional: true - checksum: 162fe3a867eeeffda7328bce32dae45b52283c68c8cb23258fb9f44971f761991af61f71b8c9fe1aa389e93dfe6386f8509c1273d870736c507d76dd40647b68 + checksum: 4c91ac5e7e276a8e216971dfc525c9864250e2cc37f7a476290fc09ff7e646d332dedf52481dc69f7a78611f3709f032f8d64550a88cd1febfa9f009f3b3e564 languageName: node linkType: hard -"@typescript-eslint/rule-tester@npm:6.6.x": - version: 6.6.0 - resolution: "@typescript-eslint/rule-tester@npm:6.6.0" +"@typescript-eslint/rule-tester@npm:^8.4.0": + version: 8.4.0 + resolution: "@typescript-eslint/rule-tester@npm:8.4.0" dependencies: - "@typescript-eslint/typescript-estree": 6.6.0 - "@typescript-eslint/utils": 6.6.0 - ajv: ^6.10.0 + "@typescript-eslint/typescript-estree": 8.4.0 + "@typescript-eslint/utils": 8.4.0 + ajv: ^6.12.6 + json-stable-stringify-without-jsonify: ^1.0.1 lodash.merge: 4.6.2 - semver: ^7.5.4 + semver: ^7.6.0 peerDependencies: - "@eslint/eslintrc": ">=2" - eslint: ">=8" - checksum: 6d0690b43527ea8324f6f528e467de2a019782228187c9d752e3903b0d796ef819a8388a043ef1b84db9227dda6934719814ad789c3c4484c58dc4be60fe2294 + eslint: ^8.57.0 || ^9.0.0 + checksum: b81f215abe8fec67d01a157e090d1b770b07137770a287b03427053b89f315a3b6c542b7ee996132dc988d5b4833555ce50a3b05bc646fb1838aa7312aa5064b languageName: node linkType: hard -"@typescript-eslint/scope-manager@npm:6.21.0": - version: 6.21.0 - resolution: "@typescript-eslint/scope-manager@npm:6.21.0" +"@typescript-eslint/scope-manager@npm:8.3.0": + version: 8.3.0 + resolution: "@typescript-eslint/scope-manager@npm:8.3.0" dependencies: - "@typescript-eslint/types": 6.21.0 - "@typescript-eslint/visitor-keys": 6.21.0 - checksum: 71028b757da9694528c4c3294a96cc80bc7d396e383a405eab3bc224cda7341b88e0fc292120b35d3f31f47beac69f7083196c70616434072fbcd3d3e62d3376 + "@typescript-eslint/types": 8.3.0 + "@typescript-eslint/visitor-keys": 8.3.0 + checksum: 2ccf0d965c0e812f21a156bdb551029d2777bf1e6528275ccb9b79f9a36e4c6803c94f4e98519095396d3e416a62dc2356fda7286a6feeec8af6b63154f158d9 languageName: node linkType: hard -"@typescript-eslint/scope-manager@npm:6.6.0": - version: 6.6.0 - resolution: "@typescript-eslint/scope-manager@npm:6.6.0" +"@typescript-eslint/scope-manager@npm:8.4.0": + version: 8.4.0 + resolution: "@typescript-eslint/scope-manager@npm:8.4.0" dependencies: - "@typescript-eslint/types": 6.6.0 - "@typescript-eslint/visitor-keys": 6.6.0 - checksum: 18b552fee98894c4f35e9f3d71a276f266ad4e2d7c6b9bb32a9b25caa36cc3768928676972b4e78308098ad53fa8dc6626a82810f17d51c667ce959da3ac11bc + "@typescript-eslint/types": 8.4.0 + "@typescript-eslint/visitor-keys": 8.4.0 + checksum: 0a513bcaf35dbee789bff6ca9cbc8f237b2efa85347bda17de3c66a35e913790b8e69b7ad824eeebd6bb9e218cd8b696da8901f10bf0e9107a8ed19072f86152 languageName: node linkType: hard -"@typescript-eslint/type-utils@npm:6.21.0": - version: 6.21.0 - resolution: "@typescript-eslint/type-utils@npm:6.21.0" +"@typescript-eslint/type-utils@npm:8.3.0": + version: 8.3.0 + resolution: "@typescript-eslint/type-utils@npm:8.3.0" dependencies: - "@typescript-eslint/typescript-estree": 6.21.0 - "@typescript-eslint/utils": 6.21.0 + "@typescript-eslint/typescript-estree": 8.3.0 + "@typescript-eslint/utils": 8.3.0 debug: ^4.3.4 - ts-api-utils: ^1.0.1 - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 + ts-api-utils: ^1.3.0 peerDependenciesMeta: typescript: optional: true - checksum: 77025473f4d80acf1fafcce99c5c283e557686a61861febeba9c9913331f8a41e930bf5cd8b7a54db502a57b6eb8ea6d155cbd4f41349ed00e3d7aeb1f477ddc + checksum: 386e37da49cda7282034c16dd9a3ed88ce735ee1e4b141bef6d12350c9be547788c5498a414eb6312401107ebb3004bbcc1b9dfce4747f2adfa6d1af4bedb6e5 languageName: node linkType: hard -"@typescript-eslint/type-utils@npm:6.6.0": - version: 6.6.0 - resolution: "@typescript-eslint/type-utils@npm:6.6.0" +"@typescript-eslint/type-utils@npm:8.4.0": + version: 8.4.0 + resolution: "@typescript-eslint/type-utils@npm:8.4.0" dependencies: - "@typescript-eslint/typescript-estree": 6.6.0 - "@typescript-eslint/utils": 6.6.0 + "@typescript-eslint/typescript-estree": 8.4.0 + "@typescript-eslint/utils": 8.4.0 debug: ^4.3.4 - ts-api-utils: ^1.0.1 - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 + ts-api-utils: ^1.3.0 peerDependenciesMeta: typescript: optional: true - checksum: be68ebc1d8da9d4db48933cfd5c8f22382fdf1faf4116b0eb929c65eaeaf00ef224f38b03e7f6ea2de4496d046380876dd5db514c65d078ebc7a25e771a61265 + checksum: 5fec2aa96d1d5dcad1cbaea967d0aae978d872b9659d943f21a857bedce8ac9385e1e30f051c34154990a7d9da611cf84107d4ec5c23924c8db4337d93e79d14 languageName: node linkType: hard -"@typescript-eslint/types@npm:6.21.0": - version: 6.21.0 - resolution: "@typescript-eslint/types@npm:6.21.0" - checksum: 9501b47d7403417af95fc1fb72b2038c5ac46feac0e1598a46bcb43e56a606c387e9dcd8a2a0abe174c91b509f2d2a8078b093786219eb9a01ab2fbf9ee7b684 +"@typescript-eslint/types@npm:8.3.0": + version: 8.3.0 + resolution: "@typescript-eslint/types@npm:8.3.0" + checksum: 6fa6be32dbb32899b0ccb6a5cf78bf85892efa87048e0d3939f706743d3c2ad4afab8228d588883ac314d4934a01bafc5e4043b6608ebb82290edf3bfc17f442 languageName: node linkType: hard -"@typescript-eslint/types@npm:6.6.0, @typescript-eslint/types@npm:6.6.x": - version: 6.6.0 - resolution: "@typescript-eslint/types@npm:6.6.0" - checksum: d0642ad52e904062a4ac75ac4e6cc51d81ec6030f8830e230df476e69786d3232d45ca0c9ce011add9ede13f0eba4ab7f1eaf679954c6602cf4f43e1ba002be9 +"@typescript-eslint/types@npm:8.4.0, @typescript-eslint/types@npm:^8.4.0": + version: 8.4.0 + resolution: "@typescript-eslint/types@npm:8.4.0" + checksum: d1d486503e10e98bf124931e83d83e82cba1690d846190a8d196137d6c00ccbe47e7b84cc0b86cb3daffaaca22d32df5694ac0bcb28812139855b427857751f4 languageName: node linkType: hard -"@typescript-eslint/typescript-estree@npm:6.21.0": - version: 6.21.0 - resolution: "@typescript-eslint/typescript-estree@npm:6.21.0" +"@typescript-eslint/typescript-estree@npm:8.3.0": + version: 8.3.0 + resolution: "@typescript-eslint/typescript-estree@npm:8.3.0" dependencies: - "@typescript-eslint/types": 6.21.0 - "@typescript-eslint/visitor-keys": 6.21.0 + "@typescript-eslint/types": 8.3.0 + "@typescript-eslint/visitor-keys": 8.3.0 debug: ^4.3.4 - globby: ^11.1.0 + fast-glob: ^3.3.2 is-glob: ^4.0.3 - minimatch: 9.0.3 - semver: ^7.5.4 - ts-api-utils: ^1.0.1 + minimatch: ^9.0.4 + semver: ^7.6.0 + ts-api-utils: ^1.3.0 peerDependenciesMeta: typescript: optional: true - checksum: dec02dc107c4a541e14fb0c96148f3764b92117c3b635db3a577b5a56fc48df7a556fa853fb82b07c0663b4bf2c484c9f245c28ba3e17e5cb0918ea4cab2ea21 + checksum: edfddfa895201be7cc6c83e8d4d72ce3e0877693bf109ced94dcd1496fc45ea9cceae08e1b8a451bee7df7f23748f79b80797ddf49d5e6c96d8f2053ce28e966 languageName: node linkType: hard -"@typescript-eslint/typescript-estree@npm:6.6.0, @typescript-eslint/typescript-estree@npm:6.6.x": - version: 6.6.0 - resolution: "@typescript-eslint/typescript-estree@npm:6.6.0" +"@typescript-eslint/typescript-estree@npm:8.4.0, @typescript-eslint/typescript-estree@npm:^8.4.0": + version: 8.4.0 + resolution: "@typescript-eslint/typescript-estree@npm:8.4.0" dependencies: - "@typescript-eslint/types": 6.6.0 - "@typescript-eslint/visitor-keys": 6.6.0 + "@typescript-eslint/types": 8.4.0 + "@typescript-eslint/visitor-keys": 8.4.0 debug: ^4.3.4 - globby: ^11.1.0 + fast-glob: ^3.3.2 is-glob: ^4.0.3 - semver: ^7.5.4 - ts-api-utils: ^1.0.1 + minimatch: ^9.0.4 + semver: ^7.6.0 + ts-api-utils: ^1.3.0 peerDependenciesMeta: typescript: optional: true - checksum: 100620bc5865dc9d2551c6be520a34b931bc70eca144c5ab0e275b81e57aa92f24a9d3a57f332d98b96e4581cf7e87211c3196d964f4951c7a2508105e3bd3f5 + checksum: 6ae4a2fb8c6066c9a893e4bd6b741e8ff45a4f17178d5e13dea41c414fa0f141f93f1b412c0a683aeb209c4e5781d4380bba51c513d439c6432136ab8823c83c languageName: node linkType: hard -"@typescript-eslint/utils@npm:6.21.0, @typescript-eslint/utils@npm:^6.21.0": - version: 6.21.0 - resolution: "@typescript-eslint/utils@npm:6.21.0" +"@typescript-eslint/utils@npm:8.3.0, @typescript-eslint/utils@npm:^6.0.0 || ^7.0.0 || ^8.0.0, @typescript-eslint/utils@npm:^8.3.0": + version: 8.3.0 + resolution: "@typescript-eslint/utils@npm:8.3.0" 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 + "@typescript-eslint/scope-manager": 8.3.0 + "@typescript-eslint/types": 8.3.0 + "@typescript-eslint/typescript-estree": 8.3.0 peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - checksum: b129b3a4aebec8468259f4589985cb59ea808afbfdb9c54f02fad11e17d185e2bf72bb332f7c36ec3c09b31f18fc41368678b076323e6e019d06f74ee93f7bf2 + eslint: ^8.57.0 || ^9.0.0 + checksum: 041cd2cef3d89d0b45c99a5226aadfa0b25fdd517842cf6dd864ae57fa28afb5f613f5589fe5138662025903de9df8e24ed7fe55486da46e971751405b5ed9fb languageName: node linkType: hard -"@typescript-eslint/utils@npm:6.6.0, @typescript-eslint/utils@npm:6.6.x": - version: 6.6.0 - resolution: "@typescript-eslint/utils@npm:6.6.0" +"@typescript-eslint/utils@npm:8.4.0": + version: 8.4.0 + resolution: "@typescript-eslint/utils@npm:8.4.0" dependencies: "@eslint-community/eslint-utils": ^4.4.0 - "@types/json-schema": ^7.0.12 - "@types/semver": ^7.5.0 - "@typescript-eslint/scope-manager": 6.6.0 - "@typescript-eslint/types": 6.6.0 - "@typescript-eslint/typescript-estree": 6.6.0 - semver: ^7.5.4 + "@typescript-eslint/scope-manager": 8.4.0 + "@typescript-eslint/types": 8.4.0 + "@typescript-eslint/typescript-estree": 8.4.0 peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - checksum: da02305703569549eb7deebb7512940cd40426eccec684680087a5b8c8e08052e2ff0ff6951a2ca64740e86e4b5b390903d0b13ad51efc374d9ae54f70c6a046 + eslint: ^8.57.0 || ^9.0.0 + checksum: dc4975611815e8da8b54ed5fb4faa7a47a2f1d06c7df509c08b8d5603baf5eda3d56a02193955fce33f2ca7dafbb053610e9c7bd889799a1f6077b7d99a08cde languageName: node linkType: hard -"@typescript-eslint/visitor-keys@npm:6.21.0": - version: 6.21.0 - resolution: "@typescript-eslint/visitor-keys@npm:6.21.0" +"@typescript-eslint/visitor-keys@npm:8.3.0": + version: 8.3.0 + resolution: "@typescript-eslint/visitor-keys@npm:8.3.0" dependencies: - "@typescript-eslint/types": 6.21.0 - eslint-visitor-keys: ^3.4.1 - checksum: 67c7e6003d5af042d8703d11538fca9d76899f0119130b373402819ae43f0bc90d18656aa7add25a24427ccf1a0efd0804157ba83b0d4e145f06107d7d1b7433 + "@typescript-eslint/types": 8.3.0 + eslint-visitor-keys: ^3.4.3 + checksum: 23a85ae0a3d693be1c9db92457727ab3f16cac3d1fb4950e29bfe2b0f4d186a755a71b2a347063cc94cf03b8dd1367502e0a60386eed71425f74c18fb686b0e8 languageName: node linkType: hard -"@typescript-eslint/visitor-keys@npm:6.6.0": - version: 6.6.0 - resolution: "@typescript-eslint/visitor-keys@npm:6.6.0" +"@typescript-eslint/visitor-keys@npm:8.4.0": + version: 8.4.0 + resolution: "@typescript-eslint/visitor-keys@npm:8.4.0" dependencies: - "@typescript-eslint/types": 6.6.0 - eslint-visitor-keys: ^3.4.1 - checksum: 28171124c5c7d5d10c04c204530508f1488214f2af5eb7e64a5f1cc410c64f02676c04be087adcfd0deb5566f5bb7337b208afcb249719614634c38bcc3da897 + "@typescript-eslint/types": 8.4.0 + eslint-visitor-keys: ^3.4.3 + checksum: 000f375aaad20343d74cb71e3cf9295f60a0f9f5bc07bd15883bffcc3f7e25b69bb48b21f0cbb2805588a1bc309b9b9fd1162028872ee79c553c843bece6c9ac languageName: node linkType: hard -"@ungap/structured-clone@npm:^1.0.0, @ungap/structured-clone@npm:^1.2.0": +"@ungap/structured-clone@npm:^1.0.0": version: 1.2.0 resolution: "@ungap/structured-clone@npm:1.2.0" checksum: 4f656b7b4672f2ce6e272f2427d8b0824ed11546a601d8d5412b9d7704e83db38a8d9f402ecdf2b9063fc164af842ad0ec4a55819f621ed7e7ea4d1efcc74524 @@ -5564,7 +6065,7 @@ __metadata: languageName: node linkType: hard -"acorn-walk@npm:^8.0.0": +"acorn-walk@npm:^8.0.0, acorn-walk@npm:^8.0.2": version: 8.3.3 resolution: "acorn-walk@npm:8.3.3" dependencies: @@ -5573,13 +6074,6 @@ __metadata: languageName: node linkType: hard -"acorn-walk@npm:^8.0.2": - version: 8.3.2 - resolution: "acorn-walk@npm:8.3.2" - checksum: 3626b9d26a37b1b427796feaa5261faf712307a8920392c8dce9a5739fb31077667f4ad2ec71c7ac6aaf9f61f04a9d3d67ff56f459587206fc04aa31c27ef392 - languageName: node - linkType: hard - "acorn@npm:^8.0.0, acorn@npm:^8.0.4, acorn@npm:^8.11.0, acorn@npm:^8.7.1, acorn@npm:^8.8.2": version: 8.12.0 resolution: "acorn@npm:8.12.0" @@ -5589,7 +6083,16 @@ __metadata: languageName: node linkType: hard -"acorn@npm:^8.1.0, acorn@npm:^8.11.3, acorn@npm:^8.8.1, acorn@npm:^8.9.0": +"acorn@npm:^8.1.0, acorn@npm:^8.12.0, acorn@npm:^8.8.1": + version: 8.12.1 + resolution: "acorn@npm:8.12.1" + bin: + acorn: bin/acorn + checksum: 677880034aee5bdf7434cc2d25b641d7bedb0b5ef47868a78dadabedccf58e1c5457526d9d8249cd253f2df087e081c3fe7d903b448d8e19e5131a3065b83c07 + languageName: node + linkType: hard + +"acorn@npm:^8.11.3": version: 8.11.3 resolution: "acorn@npm:8.11.3" bin: @@ -5667,7 +6170,7 @@ __metadata: languageName: node linkType: hard -"ajv@npm:^6.10.0, ajv@npm:^6.12.2, ajv@npm:^6.12.4, ajv@npm:^6.12.5": +"ajv@npm:^6.12.2, ajv@npm:^6.12.4, ajv@npm:^6.12.5, ajv@npm:^6.12.6": version: 6.12.6 resolution: "ajv@npm:6.12.6" dependencies: @@ -5857,7 +6360,7 @@ __metadata: languageName: node linkType: hard -"array-includes@npm:^3.1.6, array-includes@npm:^3.1.7": +"array-includes@npm:^3.1.6, array-includes@npm:^3.1.8": version: 3.1.8 resolution: "array-includes@npm:3.1.8" dependencies: @@ -5878,7 +6381,7 @@ __metadata: languageName: node linkType: hard -"array.prototype.findlast@npm:^1.2.4": +"array.prototype.findlast@npm:^1.2.5": version: 1.2.5 resolution: "array.prototype.findlast@npm:1.2.5" dependencies: @@ -5892,21 +6395,7 @@ __metadata: languageName: node linkType: hard -"array.prototype.findlastindex@npm:^1.2.3": - version: 1.2.5 - resolution: "array.prototype.findlastindex@npm:1.2.5" - dependencies: - call-bind: ^1.0.7 - define-properties: ^1.2.1 - es-abstract: ^1.23.2 - es-errors: ^1.3.0 - es-object-atoms: ^1.0.0 - es-shim-unscopables: ^1.0.2 - checksum: 2c81cff2a75deb95bf1ed89b6f5f2bfbfb882211e3b7cc59c3d6b87df774cd9d6b36949a8ae39ac476e092c1d4a4905f5ee11a86a456abb10f35f8211ae4e710 - languageName: node - linkType: hard - -"array.prototype.flat@npm:^1.3.1, array.prototype.flat@npm:^1.3.2": +"array.prototype.flat@npm:^1.3.1": version: 1.3.2 resolution: "array.prototype.flat@npm:1.3.2" dependencies: @@ -5930,28 +6419,16 @@ __metadata: languageName: node linkType: hard -"array.prototype.toreversed@npm:^1.1.2": - version: 1.1.2 - resolution: "array.prototype.toreversed@npm:1.1.2" - dependencies: - call-bind: ^1.0.2 - define-properties: ^1.2.0 - es-abstract: ^1.22.1 - es-shim-unscopables: ^1.0.0 - checksum: 58598193426282155297bedf950dc8d464624a0d81659822fb73124286688644cb7e0e4927a07f3ab2daaeb6617b647736cc3a5e6ca7ade5bb8e573b284e6240 - languageName: node - linkType: hard - -"array.prototype.tosorted@npm:^1.1.3": - version: 1.1.3 - resolution: "array.prototype.tosorted@npm:1.1.3" +"array.prototype.tosorted@npm:^1.1.4": + version: 1.1.4 + resolution: "array.prototype.tosorted@npm:1.1.4" dependencies: - call-bind: ^1.0.5 + call-bind: ^1.0.7 define-properties: ^1.2.1 - es-abstract: ^1.22.3 - es-errors: ^1.1.0 + es-abstract: ^1.23.3 + es-errors: ^1.3.0 es-shim-unscopables: ^1.0.2 - checksum: 555e8808086bbde9e634c5dc5a8c0a2f1773075447b43b2fa76ab4f94f4e90f416d2a4f881024e1ce1a2931614caf76cd6b408af901c9d7cd13061d0d268f5af + checksum: e4142d6f556bcbb4f393c02e7dbaea9af8f620c040450c2be137c9cbbd1a17f216b9c688c5f2c08fbb038ab83f55993fa6efdd9a05881d84693c7bcb5422127a languageName: node linkType: hard @@ -6117,6 +6594,18 @@ __metadata: languageName: node linkType: hard +"babel-plugin-polyfill-corejs3@npm:^0.10.6": + version: 0.10.6 + resolution: "babel-plugin-polyfill-corejs3@npm:0.10.6" + dependencies: + "@babel/helper-define-polyfill-provider": ^0.6.2 + core-js-compat: ^3.38.0 + peerDependencies: + "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 + checksum: f762f29f7acca576897c63149c850f0a72babd3fb9ea436a2e36f0c339161c4b912a77828541d8188ce8a91e50965c6687120cf36071eabb1b7aa92f279e2164 + languageName: node + linkType: hard + "babel-plugin-polyfill-corejs3@npm:^0.8.3": version: 0.8.7 resolution: "babel-plugin-polyfill-corejs3@npm:0.8.7" @@ -6345,6 +6834,20 @@ __metadata: languageName: node linkType: hard +"browserslist@npm:^4.23.1, browserslist@npm:^4.23.3": + version: 4.23.3 + resolution: "browserslist@npm:4.23.3" + dependencies: + caniuse-lite: ^1.0.30001646 + electron-to-chromium: ^1.5.4 + node-releases: ^2.0.18 + update-browserslist-db: ^1.1.0 + bin: + browserslist: cli.js + checksum: 7906064f9970aeb941310b2fcb8b4ace4a1b50aa657c986677c6f1553a8cabcc94ee9c5922f715baffbedaa0e6cf0831b6fed7b059dde6873a4bfadcbe069c7e + languageName: node + linkType: hard + "bser@npm:2.1.1": version: 2.1.1 resolution: "bser@npm:2.1.1" @@ -6494,6 +6997,13 @@ __metadata: languageName: node linkType: hard +"caniuse-lite@npm:^1.0.30001646": + version: 1.0.30001655 + resolution: "caniuse-lite@npm:1.0.30001655" + checksum: 3739c8f6d0fb55cff3c631d28c4fdafc81ab28756ce17a373428042c06f84a5877288d89fbe41be5ac494dd5092dca38ab91c9304e81935b9f2938419d2c23b3 + languageName: node + linkType: hard + "ccount@npm:^2.0.0": version: 2.0.1 resolution: "ccount@npm:2.0.1" @@ -6898,13 +7408,6 @@ __metadata: languageName: node linkType: hard -"confusing-browser-globals@npm:^1.0.10": - version: 1.0.11 - resolution: "confusing-browser-globals@npm:1.0.11" - checksum: 3afc635abd37e566477f610e7978b15753f0e84025c25d49236f1f14d480117185516bdd40d2a2167e6bed8048641a9854964b9c067e3dcdfa6b5d0ad3c3a5ef - languageName: node - linkType: hard - "connect-history-api-fallback@npm:^2.0.0": version: 2.0.0 resolution: "connect-history-api-fallback@npm:2.0.0" @@ -7002,6 +7505,15 @@ __metadata: languageName: node linkType: hard +"core-js-compat@npm:^3.37.1, core-js-compat@npm:^3.38.0": + version: 3.38.1 + resolution: "core-js-compat@npm:3.38.1" + dependencies: + browserslist: ^4.23.3 + checksum: a0a5673bcd59f588f0cd0b59cdacd4712b82909738a87406d334dd412eb3d273ae72b275bdd8e8fef63fca9ef12b42ed651be139c7c44c8a1acb423c8906992e + languageName: node + linkType: hard + "core-js-pure@npm:^3.30.2": version: 3.37.1 resolution: "core-js-pure@npm:3.37.1" @@ -7415,15 +7927,6 @@ __metadata: languageName: node linkType: hard -"debug@npm:^3.2.7": - version: 3.2.7 - resolution: "debug@npm:3.2.7" - dependencies: - ms: ^2.1.1 - checksum: b3d8c5940799914d30314b7c3304a43305fd0715581a919dacb8b3176d024a782062368405b47491516d2091d6462d4d11f2f4974a405048094f8bfebfa3071c - languageName: node - linkType: hard - "debug@npm:^4.0.0": version: 4.3.5 resolution: "debug@npm:4.3.5" @@ -7554,7 +8057,7 @@ __metadata: languageName: node linkType: hard -"define-properties@npm:^1.2.0, define-properties@npm:^1.2.1": +"define-properties@npm:^1.1.3, define-properties@npm:^1.2.0, define-properties@npm:^1.2.1": version: 1.2.1 resolution: "define-properties@npm:1.2.1" dependencies: @@ -7699,15 +8202,6 @@ __metadata: languageName: node linkType: hard -"doctrine@npm:^3.0.0": - version: 3.0.0 - resolution: "doctrine@npm:3.0.0" - dependencies: - esutils: ^2.0.2 - checksum: fd7673ca77fe26cd5cba38d816bc72d641f500f1f9b25b83e8ce28827fe2da7ad583a8da26ab6af85f834138cf8dae9f69b0cd6ab925f52ddab1754db44d99ce - languageName: node - linkType: hard - "documentation@workspace:packages/documentation": version: 0.0.0-use.local resolution: "documentation@workspace:packages/documentation" @@ -7873,6 +8367,13 @@ __metadata: languageName: node linkType: hard +"electron-to-chromium@npm:^1.5.4": + version: 1.5.13 + resolution: "electron-to-chromium@npm:1.5.13" + checksum: f18ac84dd3bf9a200654a6a9292b9ec4bced0cf9bd26cec9941b775f4470c581c9d043e70b37a124d9752dcc0f47fc96613d52b2defd8e59632852730cb418b9 + languageName: node + linkType: hard + "emittery@npm:^0.13.1": version: 0.13.1 resolution: "emittery@npm:0.13.1" @@ -7978,7 +8479,7 @@ __metadata: languageName: node linkType: hard -"es-abstract@npm:^1.22.1, es-abstract@npm:^1.22.3, es-abstract@npm:^1.23.0, es-abstract@npm:^1.23.1, es-abstract@npm:^1.23.2, es-abstract@npm:^1.23.3": +"es-abstract@npm:^1.17.5, es-abstract@npm:^1.22.1, es-abstract@npm:^1.22.3, es-abstract@npm:^1.23.0, es-abstract@npm:^1.23.1, es-abstract@npm:^1.23.2, es-abstract@npm:^1.23.3": version: 1.23.3 resolution: "es-abstract@npm:1.23.3" dependencies: @@ -8041,7 +8542,7 @@ __metadata: languageName: node linkType: hard -"es-errors@npm:^1.1.0, es-errors@npm:^1.2.1, es-errors@npm:^1.3.0": +"es-errors@npm:^1.2.1, es-errors@npm:^1.3.0": version: 1.3.0 resolution: "es-errors@npm:1.3.0" checksum: ec1414527a0ccacd7f15f4a3bc66e215f04f595ba23ca75cdae0927af099b5ec865f9f4d33e9d7e86f512f252876ac77d4281a7871531a50678132429b1271b5 @@ -8065,7 +8566,7 @@ __metadata: languageName: node linkType: hard -"es-iterator-helpers@npm:^1.0.17": +"es-iterator-helpers@npm:^1.0.19": version: 1.0.19 resolution: "es-iterator-helpers@npm:1.0.19" dependencies: @@ -8201,106 +8702,43 @@ __metadata: languageName: node linkType: hard -"eslint-config-airbnb-base@npm:^15.0.0": - version: 15.0.0 - resolution: "eslint-config-airbnb-base@npm:15.0.0" +"eslint-plugin-jest@npm:^28.8.1": + version: 28.8.1 + resolution: "eslint-plugin-jest@npm:28.8.1" dependencies: - confusing-browser-globals: ^1.0.10 - object.assign: ^4.1.2 - object.entries: ^1.1.5 - semver: ^6.3.0 - peerDependencies: - eslint: ^7.32.0 || ^8.2.0 - eslint-plugin-import: ^2.25.2 - checksum: 38626bad2ce2859fccac86b30cd2b86c9b7d8d71d458331860861dc05290a5b198bded2f4fb89efcb9046ec48f8ab4c4fb00365ba8916f27b172671da28b93ea - languageName: node - linkType: hard - -"eslint-config-airbnb-typescript@npm:17.x.x": - version: 17.1.0 - resolution: "eslint-config-airbnb-typescript@npm:17.1.0" - dependencies: - eslint-config-airbnb-base: ^15.0.0 + "@typescript-eslint/utils": ^6.0.0 || ^7.0.0 || ^8.0.0 peerDependencies: - "@typescript-eslint/eslint-plugin": ^5.13.0 || ^6.0.0 - "@typescript-eslint/parser": ^5.0.0 || ^6.0.0 - eslint: ^7.32.0 || ^8.2.0 - eslint-plugin-import: ^2.25.3 - checksum: cfd26a2782e322ebfdfbf9a64262332c7653f297c4a32d7b951079eb18bb9502a83d67b3f7ef2cc1c5374ae06098eb454ed010784b3416e7274839083022a08c - languageName: node - linkType: hard - -"eslint-import-resolver-node@npm:^0.3.9": - version: 0.3.9 - resolution: "eslint-import-resolver-node@npm:0.3.9" - dependencies: - debug: ^3.2.7 - is-core-module: ^2.13.0 - resolve: ^1.22.4 - checksum: 439b91271236b452d478d0522a44482e8c8540bf9df9bd744062ebb89ab45727a3acd03366a6ba2bdbcde8f9f718bab7fe8db64688aca75acf37e04eafd25e22 - languageName: node - linkType: hard - -"eslint-module-utils@npm:^2.8.0": - version: 2.8.1 - resolution: "eslint-module-utils@npm:2.8.1" - dependencies: - debug: ^3.2.7 + "@typescript-eslint/eslint-plugin": ^6.0.0 || ^7.0.0 || ^8.0.0 + eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 + jest: "*" peerDependenciesMeta: - eslint: + "@typescript-eslint/eslint-plugin": optional: true - checksum: 3cecd99b6baf45ffc269167da0f95dcb75e5aa67b93d73a3bab63e2a7eedd9cdd6f188eed048e2f57c1b77db82c9cbf2adac20b512fa70e597d863dd3720170d - languageName: node - linkType: hard - -"eslint-plugin-import-newlines@npm:^1.1.5": - version: 1.4.0 - resolution: "eslint-plugin-import-newlines@npm:1.4.0" - peerDependencies: - eslint: ">=6.0.0" - bin: - import-linter: lib/index.js - checksum: fe1fb8812f862870aa89bd2f7323daaf81cf52dccb0c3a8d75a926cc628fdfb8b75379e5d0a3e1153205556cd21c430db884dea4dddacd847a06192de90206d9 + jest: + optional: true + checksum: 3c738ea275991f2d15d8096cecdba15533bb48d124ef2c32e3ed7406c2cadf074d96c92085baf81b38ec164956fda388a7faff72d508005e49fc875e0a38ddb2 languageName: node linkType: hard -"eslint-plugin-import@npm:^2.25.2": - version: 2.29.1 - resolution: "eslint-plugin-import@npm:2.29.1" +"eslint-plugin-jest@npm:^28.8.2": + version: 28.8.2 + resolution: "eslint-plugin-jest@npm:28.8.2" dependencies: - array-includes: ^3.1.7 - array.prototype.findlastindex: ^1.2.3 - array.prototype.flat: ^1.3.2 - array.prototype.flatmap: ^1.3.2 - debug: ^3.2.7 - doctrine: ^2.1.0 - eslint-import-resolver-node: ^0.3.9 - eslint-module-utils: ^2.8.0 - hasown: ^2.0.0 - is-core-module: ^2.13.1 - is-glob: ^4.0.3 - minimatch: ^3.1.2 - object.fromentries: ^2.0.7 - object.groupby: ^1.0.1 - object.values: ^1.1.7 - semver: ^6.3.1 - tsconfig-paths: ^3.15.0 - peerDependencies: - eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 - checksum: e65159aef808136d26d029b71c8c6e4cb5c628e65e5de77f1eb4c13a379315ae55c9c3afa847f43f4ff9df7e54515c77ffc6489c6a6f81f7dd7359267577468c - languageName: node - linkType: hard - -"eslint-plugin-jest-formatting@npm:^3.1.0": - version: 3.1.0 - resolution: "eslint-plugin-jest-formatting@npm:3.1.0" + "@typescript-eslint/utils": ^6.0.0 || ^7.0.0 || ^8.0.0 peerDependencies: - eslint: ">=0.8.0" - checksum: 350f6f3f46eefcbc3df003049e35776786829977a4da077f1793885664dfd0f34b5e8814dd29e52b2f44384df03e688454a3b905586c3cdbede83860a80cba89 + "@typescript-eslint/eslint-plugin": ^6.0.0 || ^7.0.0 || ^8.0.0 + eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 + jest: "*" + peerDependenciesMeta: + "@typescript-eslint/eslint-plugin": + optional: true + jest: + optional: true + checksum: ffb7cf1a537b91447a5914704018d0018456d83240b3982cd81d1c8e351bcacd5d71a36e3a92c50da7399b1b3b38370fb16c095bbdf6a282d6c232f665b7ea0e languageName: node linkType: hard -"eslint-plugin-obsidian@2.10.2, eslint-plugin-obsidian@workspace:packages/eslint-plugin-obsidian": +"eslint-plugin-obsidian@2.11.0-alpha.1, eslint-plugin-obsidian@workspace:packages/eslint-plugin-obsidian": version: 0.0.0-use.local resolution: "eslint-plugin-obsidian@workspace:packages/eslint-plugin-obsidian" dependencies: @@ -8312,35 +8750,36 @@ __metadata: "@babel/preset-react": 7.22.x "@babel/preset-typescript": 7.22.x "@babel/types": 7.24.x - "@eslint/eslintrc": ^3.0.2 - "@eslint/js": 8.x.x - "@stylistic/eslint-plugin": ^1.7.0 - "@types/eslint": 8.4.9 - "@types/node": 18.x.x - "@typescript-eslint/eslint-plugin": 6.6.x - "@typescript-eslint/parser": 6.6.x - "@typescript-eslint/rule-tester": 6.6.x - "@typescript-eslint/types": 6.6.x - "@typescript-eslint/typescript-estree": 6.6.x - "@typescript-eslint/utils": 6.6.x + "@eslint/compat": ^1.1.1 + "@eslint/eslintrc": ^3.1.0 + "@eslint/js": ^9.9.0 + "@stylistic/eslint-plugin": ^2.7.2 + "@types/eslint": ^9.6.1 + "@types/node": 20.16.x + "@typescript-eslint/eslint-plugin": ^8.4.0 + "@typescript-eslint/parser": 8.4.0 + "@typescript-eslint/rule-tester": ^8.4.0 + "@typescript-eslint/types": ^8.4.0 + "@typescript-eslint/typescript-estree": ^8.4.0 + "@typescript-eslint/utils": 8.4.0 cross-env: ^7.0.3 - eslint: 8.x.x - eslint-plugin-import: ^2.25.2 - eslint-plugin-import-newlines: ^1.1.5 - eslint-plugin-jest-formatting: ^3.1.0 - eslint-plugin-unused-imports: 3.1.x - jest: 29.5.x - jest-extended: ^4.0.0 + eslint: ^9.9.1 + eslint-plugin-jest: ^28.8.2 + eslint-plugin-unused-imports: ^4.1.3 + globals: ^15.9.0 + jest: ^29.7.0 + jest-environment-jsdom: ^29.7.0 + jest-extended: ^4.0.2 lodash: ^4.17.21 - typescript: ^4.5.4 + typescript: ^5.5.4 peerDependencies: - eslint: 8.x.x + eslint: ^9.9.0 eslint-plugin-obsidian: "*" react-obsidian: 2.x.x languageName: unknown linkType: soft -"eslint-plugin-react-hooks@npm:^4.2.0": +"eslint-plugin-react-hooks@npm:^4.6.2": version: 4.6.2 resolution: "eslint-plugin-react-hooks@npm:4.6.2" peerDependencies: @@ -8349,53 +8788,44 @@ __metadata: languageName: node linkType: hard -"eslint-plugin-react@npm:^7.26.1": - version: 7.34.1 - resolution: "eslint-plugin-react@npm:7.34.1" +"eslint-plugin-react@npm:^7.35.0": + version: 7.35.0 + resolution: "eslint-plugin-react@npm:7.35.0" dependencies: - array-includes: ^3.1.7 - array.prototype.findlast: ^1.2.4 + array-includes: ^3.1.8 + array.prototype.findlast: ^1.2.5 array.prototype.flatmap: ^1.3.2 - array.prototype.toreversed: ^1.1.2 - array.prototype.tosorted: ^1.1.3 + array.prototype.tosorted: ^1.1.4 doctrine: ^2.1.0 - es-iterator-helpers: ^1.0.17 + es-iterator-helpers: ^1.0.19 estraverse: ^5.3.0 + hasown: ^2.0.2 jsx-ast-utils: ^2.4.1 || ^3.0.0 minimatch: ^3.1.2 - object.entries: ^1.1.7 - object.fromentries: ^2.0.7 - object.hasown: ^1.1.3 - object.values: ^1.1.7 + object.entries: ^1.1.8 + object.fromentries: ^2.0.8 + object.values: ^1.2.0 prop-types: ^15.8.1 resolve: ^2.0.0-next.5 semver: ^6.3.1 - string.prototype.matchall: ^4.0.10 + string.prototype.matchall: ^4.0.11 + string.prototype.repeat: ^1.0.0 peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 - checksum: 82f391c5a093235c3bc2f664c54e009c49460778ee7d1b86c1536df9ac4d2a80d1dedc9241ac797df4a9dced936e955d9c89042fb3ac8d017b5359d1320d3c0f + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 + checksum: cd4d3c0567e947964643dda5fc80147e058d75f06bac47c3f086ff0cd6156286c669d98e685e3834997c4043f3922b90e6374b6c3658f22abd025dbd41acc23f languageName: node linkType: hard -"eslint-plugin-unused-imports@npm:3.1.x": - version: 3.1.0 - resolution: "eslint-plugin-unused-imports@npm:3.1.0" - dependencies: - eslint-rule-composer: ^0.3.0 +"eslint-plugin-unused-imports@npm:^4.1.3": + version: 4.1.3 + resolution: "eslint-plugin-unused-imports@npm:4.1.3" peerDependencies: - "@typescript-eslint/eslint-plugin": 6 - 7 - eslint: 8 + "@typescript-eslint/eslint-plugin": ^8.0.0-0 || ^7.0.0 || ^6.0.0 || ^5.0.0 + eslint: ^9.0.0 || ^8.0.0 peerDependenciesMeta: "@typescript-eslint/eslint-plugin": optional: true - checksum: c41da339ea8faf40b8b4081f0d52a4c75d24f121c5b95b19b777d12abfbc23505e4aab2422918b2517dd239a749a38912fb3405b42a9aa6b50c32cf5f3d6ecf0 - languageName: node - linkType: hard - -"eslint-rule-composer@npm:^0.3.0": - version: 0.3.0 - resolution: "eslint-rule-composer@npm:0.3.0" - checksum: c2f57cded8d1c8f82483e0ce28861214347e24fd79fd4144667974cd334d718f4ba05080aaef2399e3bbe36f7d6632865110227e6b176ed6daa2d676df9281b1 + checksum: 3a2d51e84db5b55af3ec8540fa48943c218f32496bcec9f390edb49322999069c1aac09ec7e43fd5aa05ec0156484d4684ebb85cc8ab07e94ccba38079689ee0 languageName: node linkType: hard @@ -8409,13 +8839,13 @@ __metadata: languageName: node linkType: hard -"eslint-scope@npm:^7.2.2": - version: 7.2.2 - resolution: "eslint-scope@npm:7.2.2" +"eslint-scope@npm:^8.0.2": + version: 8.0.2 + resolution: "eslint-scope@npm:8.0.2" dependencies: esrecurse: ^4.3.0 estraverse: ^5.2.0 - checksum: ec97dbf5fb04b94e8f4c5a91a7f0a6dd3c55e46bfc7bbcd0e3138c3a76977570e02ed89a1810c778dcd72072ff0e9621ba1379b4babe53921d71e2e4486fda3e + checksum: bd1e7a0597ec605cf3bc9b35c9e13d7ea6c11fee031b0cada9e8993b0ecf16d81d6f40f1dcd463424af439abf53cd62302ea25707c1599689eb2750d6aa29688 languageName: node linkType: hard @@ -8426,7 +8856,7 @@ __metadata: languageName: node linkType: hard -"eslint-visitor-keys@npm:^3.3.0, eslint-visitor-keys@npm:^3.4.1, eslint-visitor-keys@npm:^3.4.3": +"eslint-visitor-keys@npm:^3.3.0, eslint-visitor-keys@npm:^3.4.3": version: 3.4.3 resolution: "eslint-visitor-keys@npm:3.4.3" checksum: 36e9ef87fca698b6fd7ca5ca35d7b2b6eeaaf106572e2f7fd31c12d3bfdaccdb587bba6d3621067e5aece31c8c3a348b93922ab8f7b2cbc6aaab5e1d89040c60 @@ -8440,40 +8870,36 @@ __metadata: languageName: node linkType: hard -"eslint@npm:8.x.x": - version: 8.57.0 - resolution: "eslint@npm:8.57.0" +"eslint@npm:^9.9.1": + version: 9.9.1 + resolution: "eslint@npm:9.9.1" dependencies: "@eslint-community/eslint-utils": ^4.2.0 - "@eslint-community/regexpp": ^4.6.1 - "@eslint/eslintrc": ^2.1.4 - "@eslint/js": 8.57.0 - "@humanwhocodes/config-array": ^0.11.14 + "@eslint-community/regexpp": ^4.11.0 + "@eslint/config-array": ^0.18.0 + "@eslint/eslintrc": ^3.1.0 + "@eslint/js": 9.9.1 "@humanwhocodes/module-importer": ^1.0.1 + "@humanwhocodes/retry": ^0.3.0 "@nodelib/fs.walk": ^1.2.8 - "@ungap/structured-clone": ^1.2.0 ajv: ^6.12.4 chalk: ^4.0.0 cross-spawn: ^7.0.2 debug: ^4.3.2 - 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 - esquery: ^1.4.2 + eslint-scope: ^8.0.2 + eslint-visitor-keys: ^4.0.0 + espree: ^10.1.0 + esquery: ^1.5.0 esutils: ^2.0.2 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.19.0 - graphemer: ^1.4.0 ignore: ^5.2.0 imurmurhash: ^0.1.4 is-glob: ^4.0.0 is-path-inside: ^3.0.3 - js-yaml: ^4.1.0 json-stable-stringify-without-jsonify: ^1.0.1 levn: ^0.4.1 lodash.merge: ^4.6.2 @@ -8482,9 +8908,14 @@ __metadata: optionator: ^0.9.3 strip-ansi: ^6.0.1 text-table: ^0.2.0 + peerDependencies: + jiti: "*" + peerDependenciesMeta: + jiti: + optional: true bin: eslint: bin/eslint.js - checksum: 3a48d7ff85ab420a8447e9810d8087aea5b1df9ef68c9151732b478de698389ee656fd895635b5f2871c89ee5a2652b3f343d11e9db6f8486880374ebc74a2d9 + checksum: a1ff85cd26a6f138e0f52e17668b7794371c81fd0ac66634c4d554dc2d878dcfbe6047a025e63e85168c897c83dfa453501a10395cbefda7debd79fe6ea00eab languageName: node linkType: hard @@ -8499,14 +8930,14 @@ __metadata: languageName: node linkType: hard -"espree@npm:^9.6.0, espree@npm:^9.6.1": - version: 9.6.1 - resolution: "espree@npm:9.6.1" +"espree@npm:^10.1.0": + version: 10.1.0 + resolution: "espree@npm:10.1.0" dependencies: - acorn: ^8.9.0 + acorn: ^8.12.0 acorn-jsx: ^5.3.2 - eslint-visitor-keys: ^3.4.1 - checksum: eb8c149c7a2a77b3f33a5af80c10875c3abd65450f60b8af6db1bfcfa8f101e21c1e56a561c6dc13b848e18148d43469e7cd208506238554fb5395a9ea5a1ab9 + eslint-visitor-keys: ^4.0.0 + checksum: a4708ab987f6c03734b8738b1588e9f31b2e305e869ca4677c60d82294eb05f7099b6687eb39eeb0913bb2d49bdf0bd0f31c511599ea7ee171281f871a9c897e languageName: node linkType: hard @@ -8520,12 +8951,12 @@ __metadata: languageName: node linkType: hard -"esquery@npm:^1.4.2": - version: 1.5.0 - resolution: "esquery@npm:1.5.0" +"esquery@npm:^1.5.0": + version: 1.6.0 + resolution: "esquery@npm:1.6.0" dependencies: estraverse: ^5.1.0 - checksum: aefb0d2596c230118656cd4ec7532d447333a410a48834d80ea648b1e7b5c9bc9ed8b5e33a89cb04e487b60d622f44cf5713bf4abed7c97343edefdc84a35900 + checksum: 08ec4fe446d9ab27186da274d979558557fbdbbd10968fa9758552482720c54152a5640e08b9009e5a30706b66aba510692054d4129d32d0e12e05bbc0b96fb2 languageName: node linkType: hard @@ -8770,7 +9201,7 @@ __metadata: languageName: node linkType: hard -"fast-glob@npm:^3.2.11, fast-glob@npm:^3.2.9, fast-glob@npm:^3.3.0": +"fast-glob@npm:^3.2.11, fast-glob@npm:^3.2.9, fast-glob@npm:^3.3.0, fast-glob@npm:^3.3.2": version: 3.3.2 resolution: "fast-glob@npm:3.3.2" dependencies: @@ -8851,12 +9282,12 @@ __metadata: languageName: node linkType: hard -"file-entry-cache@npm:^6.0.1": - version: 6.0.1 - resolution: "file-entry-cache@npm:6.0.1" +"file-entry-cache@npm:^8.0.0": + version: 8.0.0 + resolution: "file-entry-cache@npm:8.0.0" dependencies: - flat-cache: ^3.0.4 - checksum: f49701feaa6314c8127c3c2f6173cfefff17612f5ed2daaafc6da13b5c91fd43e3b2a58fd0d63f9f94478a501b167615931e7200e31485e320f74a33885a9c74 + flat-cache: ^4.0.0 + checksum: f67802d3334809048c69b3d458f672e1b6d26daefda701761c81f203b80149c35dea04d78ea4238969dd617678e530876722a0634c43031a0957f10cc3ed190f languageName: node linkType: hard @@ -8952,14 +9383,13 @@ __metadata: languageName: node linkType: hard -"flat-cache@npm:^3.0.4": - version: 3.2.0 - resolution: "flat-cache@npm:3.2.0" +"flat-cache@npm:^4.0.0": + version: 4.0.1 + resolution: "flat-cache@npm:4.0.1" dependencies: flatted: ^3.2.9 - keyv: ^4.5.3 - rimraf: ^3.0.2 - checksum: e7e0f59801e288b54bee5cb9681e9ee21ee28ef309f886b312c9d08415b79fc0f24ac842f84356ce80f47d6a53de62197ce0e6e148dc42d5db005992e2a756ec + keyv: ^4.5.4 + checksum: 899fc86bf6df093547d76e7bfaeb900824b869d7d457d02e9b8aae24836f0a99fbad79328cfd6415ee8908f180699bf259dc7614f793447cb14f707caf5996f6 languageName: node linkType: hard @@ -9341,15 +9771,6 @@ __metadata: languageName: node linkType: hard -"globals@npm:^13.19.0": - version: 13.24.0 - resolution: "globals@npm:13.24.0" - dependencies: - type-fest: ^0.20.2 - checksum: 56066ef058f6867c04ff203b8a44c15b038346a62efbc3060052a1016be9f56f4cf0b2cd45b74b22b81e521a889fc7786c73691b0549c2f3a6e825b3d394f43c - languageName: node - linkType: hard - "globals@npm:^14.0.0": version: 14.0.0 resolution: "globals@npm:14.0.0" @@ -9357,6 +9778,13 @@ __metadata: languageName: node linkType: hard +"globals@npm:^15.9.0": + version: 15.9.0 + resolution: "globals@npm:15.9.0" + checksum: 32c4470ffcc26db3ddbc579ddf968b74c26462d1a268039980c2fa2e107090fd442a7a7445d953dc4ee874f68846e713066c5a8e63d146fd9349cd1fc5a6f63d + languageName: node + linkType: hard + "globalthis@npm:^1.0.3": version: 1.0.4 resolution: "globalthis@npm:1.0.4" @@ -9997,6 +10425,13 @@ __metadata: languageName: node linkType: hard +"ignore@npm:^5.3.1": + version: 5.3.2 + resolution: "ignore@npm:5.3.2" + checksum: 2acfd32a573260ea522ea0bfeff880af426d68f6831f973129e2ba7363f422923cf53aab62f8369cbf4667c7b25b6f8a3761b34ecdb284ea18e87a5262a865be + languageName: node + linkType: hard + "image-size@npm:^1.0.2": version: 1.1.1 resolution: "image-size@npm:1.1.1" @@ -10267,7 +10702,7 @@ __metadata: languageName: node linkType: hard -"is-core-module@npm:^2.13.0, is-core-module@npm:^2.13.1": +"is-core-module@npm:^2.13.0": version: 2.13.1 resolution: "is-core-module@npm:2.13.1" dependencies: @@ -10788,7 +11223,7 @@ __metadata: languageName: node linkType: hard -"jest-cli@npm:^29.5.0": +"jest-cli@npm:^29.7.0": version: 29.7.0 resolution: "jest-cli@npm:29.7.0" dependencies: @@ -10886,7 +11321,7 @@ __metadata: languageName: node linkType: hard -"jest-environment-jsdom@npm:^29.5.0": +"jest-environment-jsdom@npm:^29.7.0": version: 29.7.0 resolution: "jest-environment-jsdom@npm:29.7.0" dependencies: @@ -10921,7 +11356,7 @@ __metadata: languageName: node linkType: hard -"jest-extended@npm:^4.0.0": +"jest-extended@npm:^4.0.0, jest-extended@npm:^4.0.2": version: 4.0.2 resolution: "jest-extended@npm:4.0.2" dependencies: @@ -11237,14 +11672,14 @@ __metadata: languageName: node linkType: hard -"jest@npm:29.5.x": - version: 29.5.0 - resolution: "jest@npm:29.5.0" +"jest@npm:29.7.x, jest@npm:^29.7.0": + version: 29.7.0 + resolution: "jest@npm:29.7.0" dependencies: - "@jest/core": ^29.5.0 - "@jest/types": ^29.5.0 + "@jest/core": ^29.7.0 + "@jest/types": ^29.6.3 import-local: ^3.0.2 - jest-cli: ^29.5.0 + jest-cli: ^29.7.0 peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 peerDependenciesMeta: @@ -11252,7 +11687,7 @@ __metadata: optional: true bin: jest: bin/jest.js - checksum: a8ff2eb0f421623412236e23cbe67c638127fffde466cba9606bc0c0553b4c1e5cb116d7e0ef990b5d1712851652c8ee461373b578df50857fe635b94ff455d5 + checksum: 17ca8d67504a7dbb1998cf3c3077ec9031ba3eb512da8d71cb91bcabb2b8995c4e4b292b740cb9bf1cbff5ce3e110b3f7c777b0cefb6f41ab05445f248d0ee0b languageName: node linkType: hard @@ -11407,17 +11842,6 @@ __metadata: languageName: node linkType: hard -"json5@npm:^1.0.2": - version: 1.0.2 - resolution: "json5@npm:1.0.2" - dependencies: - minimist: ^1.2.0 - bin: - json5: lib/cli.js - checksum: 866458a8c58a95a49bef3adba929c625e82532bcff1fe93f01d29cb02cac7c3fe1f4b79951b7792c2da9de0b32871a8401a6e3c5b36778ad852bf5b8a61165d7 - languageName: node - linkType: hard - "json5@npm:^2.1.2, json5@npm:^2.2.3": version: 2.2.3 resolution: "json5@npm:2.2.3" @@ -11452,7 +11876,7 @@ __metadata: languageName: node linkType: hard -"keyv@npm:^4.5.3": +"keyv@npm:^4.5.3, keyv@npm:^4.5.4": version: 4.5.4 resolution: "keyv@npm:4.5.4" dependencies: @@ -12652,25 +13076,25 @@ __metadata: languageName: node linkType: hard -"minimatch@npm:9.0.3": - version: 9.0.3 - resolution: "minimatch@npm:9.0.3" +"minimatch@npm:^9.0.1": + version: 9.0.4 + resolution: "minimatch@npm:9.0.4" dependencies: brace-expansion: ^2.0.1 - checksum: 253487976bf485b612f16bf57463520a14f512662e592e95c571afdab1442a6a6864b6c88f248ce6fc4ff0b6de04ac7aa6c8bb51e868e99d1d65eb0658a708b5 + checksum: cf717f597ec3eed7dabc33153482a2e8d49f4fd3c26e58fd9c71a94c5029a0838728841b93f46bf1263b65a8010e2ee800d0dc9b004ab8ba8b6d1ec07cc115b5 languageName: node linkType: hard -"minimatch@npm:^9.0.1": - version: 9.0.4 - resolution: "minimatch@npm:9.0.4" +"minimatch@npm:^9.0.4": + version: 9.0.5 + resolution: "minimatch@npm:9.0.5" dependencies: brace-expansion: ^2.0.1 - checksum: cf717f597ec3eed7dabc33153482a2e8d49f4fd3c26e58fd9c71a94c5029a0838728841b93f46bf1263b65a8010e2ee800d0dc9b004ab8ba8b6d1ec07cc115b5 + checksum: 2c035575eda1e50623c731ec6c14f65a85296268f749b9337005210bb2b34e2705f8ef1a358b188f69892286ab99dc42c8fb98a57bde55c8d81b3023c19cea28 languageName: node linkType: hard -"minimist@npm:^1.2.0, minimist@npm:^1.2.6": +"minimist@npm:^1.2.0": version: 1.2.8 resolution: "minimist@npm:1.2.8" checksum: 75a6d645fb122dad29c06a7597bddea977258957ed88d7a6df59b5cd3fe4a527e253e9bbf2e783e4b73657f9098b96a5fe96ab8a113655d4109108577ecf85b0 @@ -12791,7 +13215,7 @@ __metadata: languageName: node linkType: hard -"ms@npm:2.1.3, ms@npm:^2.1.1": +"ms@npm:2.1.3": version: 2.1.3 resolution: "ms@npm:2.1.3" checksum: aa92de608021b242401676e35cfa5aa42dd70cbdc082b916da7fb925c542173e36bce97ea3e804923fe92c0ad991434e4a38327e15a1b5b5f945d66df615ae6d @@ -12903,6 +13327,13 @@ __metadata: languageName: node linkType: hard +"node-releases@npm:^2.0.18": + version: 2.0.18 + resolution: "node-releases@npm:2.0.18" + checksum: ef55a3d853e1269a6d6279b7692cd6ff3e40bc74947945101138745bfdc9a5edabfe72cb19a31a8e45752e1910c4c65c77d931866af6357f242b172b7283f5b3 + languageName: node + linkType: hard + "nopt@npm:^7.0.0": version: 7.2.1 resolution: "nopt@npm:7.2.1" @@ -12961,9 +13392,9 @@ __metadata: linkType: hard "nwsapi@npm:^2.2.2": - version: 2.2.10 - resolution: "nwsapi@npm:2.2.10" - checksum: 5f1d361b38c47ab49727d5ea8bbfeb5867ae6de0e538eec9a8b77c88005ddde36d8b930e0730b50ee5e5dda949112c0f9ffed1bf15e7e1b3cd9cfa319f5a9b6f + version: 2.2.12 + resolution: "nwsapi@npm:2.2.12" + checksum: 4dbce7ecbcf336eef1edcbb5161cbceea95863e63a16d9bcec8e81cbb260bdab3d07e6c7b58354d465dc803eef6d0ea4fb20220a80fa148ae65f18d56df81799 languageName: node linkType: hard @@ -12998,7 +13429,7 @@ __metadata: languageName: node linkType: hard -"object.assign@npm:^4.1.0, object.assign@npm:^4.1.2, object.assign@npm:^4.1.4, object.assign@npm:^4.1.5": +"object.assign@npm:^4.1.0, object.assign@npm:^4.1.4, object.assign@npm:^4.1.5": version: 4.1.5 resolution: "object.assign@npm:4.1.5" dependencies: @@ -13010,7 +13441,7 @@ __metadata: languageName: node linkType: hard -"object.entries@npm:^1.1.5, object.entries@npm:^1.1.7": +"object.entries@npm:^1.1.8": version: 1.1.8 resolution: "object.entries@npm:1.1.8" dependencies: @@ -13021,7 +13452,7 @@ __metadata: languageName: node linkType: hard -"object.fromentries@npm:^2.0.7": +"object.fromentries@npm:^2.0.8": version: 2.0.8 resolution: "object.fromentries@npm:2.0.8" dependencies: @@ -13033,29 +13464,7 @@ __metadata: languageName: node linkType: hard -"object.groupby@npm:^1.0.1": - version: 1.0.3 - resolution: "object.groupby@npm:1.0.3" - dependencies: - call-bind: ^1.0.7 - define-properties: ^1.2.1 - es-abstract: ^1.23.2 - checksum: 0d30693ca3ace29720bffd20b3130451dca7a56c612e1926c0a1a15e4306061d84410bdb1456be2656c5aca53c81b7a3661eceaa362db1bba6669c2c9b6d1982 - languageName: node - linkType: hard - -"object.hasown@npm:^1.1.3": - version: 1.1.4 - resolution: "object.hasown@npm:1.1.4" - dependencies: - define-properties: ^1.2.1 - es-abstract: ^1.23.2 - es-object-atoms: ^1.0.0 - checksum: bc46eb5ca22106fcd07aab1411508c2c68b7565fe8fb272f166fb9bf203972e8b5c86a5a4b2c86204beead0626a7a4119d32cefbaf7c5dd57b400bf9e6363cb6 - languageName: node - linkType: hard - -"object.values@npm:^1.1.6, object.values@npm:^1.1.7": +"object.values@npm:^1.1.6, object.values@npm:^1.2.0": version: 1.2.0 resolution: "object.values@npm:1.2.0" dependencies: @@ -14378,15 +14787,18 @@ __metadata: version: 0.0.0-use.local resolution: "react-obsidian@workspace:packages/react-obsidian" dependencies: - "@babel/core": 7.22.x - "@babel/eslint-parser": 7.22.x - "@babel/plugin-proposal-decorators": 7.22.x - "@babel/plugin-transform-class-properties": 7.22.x - "@babel/preset-env": 7.22.x - "@babel/preset-react": 7.22.x - "@babel/preset-typescript": 7.22.x - "@babel/types": 7.24.x - "@stylistic/eslint-plugin": ^1.7.0 + "@babel/core": ^7.25.2 + "@babel/eslint-parser": ^7.25.1 + "@babel/plugin-proposal-decorators": ^7.24.7 + "@babel/plugin-transform-class-properties": ^7.25.4 + "@babel/preset-env": ^7.25.4 + "@babel/preset-react": ^7.24.7 + "@babel/preset-typescript": ^7.24.7 + "@babel/types": ^7.25.6 + "@eslint/compat": ^1.1.1 + "@eslint/eslintrc": ^3.1.0 + "@eslint/js": ^9.9.1 + "@stylistic/eslint-plugin": ^2.7.2 "@testing-library/react": 14.x.x "@types/hoist-non-react-statics": ^3.3.1 "@types/jest": 29.5.x @@ -14394,22 +14806,20 @@ __metadata: "@types/lodash": ^4.14.176 "@types/react": 18.3.x "@types/react-dom": 18.3.x - "@typescript-eslint/eslint-plugin": 6.x.x - "@typescript-eslint/parser": 6.x.x + "@typescript-eslint/eslint-plugin": ^8.4.0 + "@typescript-eslint/parser": ^8.4.0 babel-plugin-parameter-decorator: 1.x.x cross-env: ^7.0.3 - eslint: 8.x.x - eslint-config-airbnb-typescript: 17.x.x - eslint-plugin-import: ^2.25.2 - eslint-plugin-import-newlines: ^1.1.5 - eslint-plugin-jest-formatting: ^3.1.0 - eslint-plugin-obsidian: 2.10.2 - eslint-plugin-react: ^7.26.1 - eslint-plugin-react-hooks: ^4.2.0 - eslint-plugin-unused-imports: 3.1.x + eslint: ^9.9.1 + eslint-plugin-jest: ^28.8.1 + eslint-plugin-obsidian: 2.11.0-alpha.1 + eslint-plugin-react: ^7.35.0 + eslint-plugin-react-hooks: ^4.6.2 + eslint-plugin-unused-imports: ^4.1.3 + globals: ^15.9.0 hoist-non-react-statics: 3.x.x - jest: 29.5.x - jest-environment-jsdom: ^29.5.0 + jest: 29.7.x + jest-environment-jsdom: ^29.7.0 jest-extended: ^4.0.0 jest-mock-extended: 3.x.x jest-when: 3.x.x @@ -14418,7 +14828,8 @@ __metadata: react-dom: 18.2.x reflect-metadata: ~0.1.13 setimmediate: ^1.0.5 - typescript: ^4.5.4 + typescript: ^5.5.4 + typescript-eslint: ^8.3.0 peerDependencies: react: "*" languageName: unknown @@ -14859,7 +15270,7 @@ __metadata: languageName: node linkType: hard -"resolve@npm:^1.1.6, resolve@npm:^1.14.2, resolve@npm:^1.20.0, resolve@npm:^1.22.4": +"resolve@npm:^1.1.6, resolve@npm:^1.14.2, resolve@npm:^1.20.0": version: 1.22.8 resolution: "resolve@npm:1.22.8" dependencies: @@ -14885,7 +15296,7 @@ __metadata: languageName: node linkType: hard -"resolve@patch:resolve@^1.1.6#~builtin, resolve@patch:resolve@^1.14.2#~builtin, resolve@patch:resolve@^1.20.0#~builtin, resolve@patch:resolve@^1.22.4#~builtin": +"resolve@patch:resolve@^1.1.6#~builtin, resolve@patch:resolve@^1.14.2#~builtin, resolve@patch:resolve@^1.20.0#~builtin": version: 1.22.8 resolution: "resolve@patch:resolve@npm%3A1.22.8#~builtin::version=1.22.8&hash=c3c19d" dependencies: @@ -15145,6 +15556,15 @@ __metadata: languageName: node linkType: hard +"semver@npm:^7.6.0": + version: 7.6.3 + resolution: "semver@npm:7.6.3" + bin: + semver: bin/semver.js + checksum: 4110ec5d015c9438f322257b1c51fe30276e5f766a3f64c09edd1d7ea7118ecbc3f379f3b69032bacf13116dc7abc4ad8ce0d7e2bd642e26b0d271b56b61a7d8 + languageName: node + linkType: hard + "send@npm:0.18.0": version: 0.18.0 resolution: "send@npm:0.18.0" @@ -15630,7 +16050,7 @@ __metadata: languageName: node linkType: hard -"string.prototype.matchall@npm:^4.0.10": +"string.prototype.matchall@npm:^4.0.11": version: 4.0.11 resolution: "string.prototype.matchall@npm:4.0.11" dependencies: @@ -15650,6 +16070,16 @@ __metadata: languageName: node linkType: hard +"string.prototype.repeat@npm:^1.0.0": + version: 1.0.0 + resolution: "string.prototype.repeat@npm:1.0.0" + dependencies: + define-properties: ^1.1.3 + es-abstract: ^1.17.5 + checksum: 95dfc514ed7f328d80a066dabbfbbb1615c3e51490351085409db2eb7cbfed7ea29fdadaf277647fbf9f4a1e10e6dd9e95e78c0fd2c4e6bb6723ea6e59401004 + languageName: node + linkType: hard + "string.prototype.trim@npm:^1.2.9": version: 1.2.9 resolution: "string.prototype.trim@npm:1.2.9" @@ -15748,13 +16178,6 @@ __metadata: languageName: node linkType: hard -"strip-bom@npm:^3.0.0": - version: 3.0.0 - resolution: "strip-bom@npm:3.0.0" - checksum: 8d50ff27b7ebe5ecc78f1fe1e00fcdff7af014e73cf724b46fb81ef889eeb1015fc5184b64e81a2efe002180f3ba431bdd77e300da5c6685d702780fbf0c8d5b - languageName: node - linkType: hard - "strip-bom@npm:^4.0.0": version: 4.0.0 resolution: "strip-bom@npm:4.0.0" @@ -16053,7 +16476,7 @@ __metadata: languageName: node linkType: hard -"ts-api-utils@npm:^1.0.1": +"ts-api-utils@npm:^1.3.0": version: 1.3.0 resolution: "ts-api-utils@npm:1.3.0" peerDependencies: @@ -16074,18 +16497,6 @@ __metadata: languageName: node linkType: hard -"tsconfig-paths@npm:^3.15.0": - version: 3.15.0 - resolution: "tsconfig-paths@npm:3.15.0" - dependencies: - "@types/json5": ^0.0.29 - json5: ^1.0.2 - minimist: ^1.2.6 - strip-bom: ^3.0.0 - checksum: 59f35407a390d9482b320451f52a411a256a130ff0e7543d18c6f20afab29ac19fbe55c360a93d6476213cc335a4d76ce90f67df54c4e9037f7d240920832201 - languageName: node - linkType: hard - "tslib@npm:^2.0.3, tslib@npm:^2.6.0": version: 2.6.3 resolution: "tslib@npm:2.6.3" @@ -16109,13 +16520,6 @@ __metadata: languageName: node linkType: hard -"type-fest@npm:^0.20.2": - version: 0.20.2 - resolution: "type-fest@npm:0.20.2" - checksum: 4fb3272df21ad1c552486f8a2f8e115c09a521ad7a8db3d56d53718d0c907b62c6e9141ba5f584af3f6830d0872c521357e512381f24f7c44acae583ad517d73 - languageName: node - linkType: hard - "type-fest@npm:^0.21.3": version: 0.21.3 resolution: "type-fest@npm:0.21.3" @@ -16208,13 +16612,17 @@ __metadata: languageName: node linkType: hard -"typescript@npm:^4.5.4": - version: 4.9.5 - resolution: "typescript@npm:4.9.5" - bin: - tsc: bin/tsc - tsserver: bin/tsserver - checksum: ee000bc26848147ad423b581bd250075662a354d84f0e06eb76d3b892328d8d4440b7487b5a83e851b12b255f55d71835b008a66cbf8f255a11e4400159237db +"typescript-eslint@npm:^8.3.0": + version: 8.3.0 + resolution: "typescript-eslint@npm:8.3.0" + dependencies: + "@typescript-eslint/eslint-plugin": 8.3.0 + "@typescript-eslint/parser": 8.3.0 + "@typescript-eslint/utils": 8.3.0 + peerDependenciesMeta: + typescript: + optional: true + checksum: 54710d27aad6f05c0b5c53f944099a8f08a483ef6cdaf098bf4d953928db4fbde5b0651eff36b143a99ec88021fc18dc4e4fa6b13e83495c9ff3465f9a6889e6 languageName: node linkType: hard @@ -16228,13 +16636,13 @@ __metadata: languageName: node linkType: hard -"typescript@patch:typescript@^4.5.4#~builtin": - version: 4.9.5 - resolution: "typescript@patch:typescript@npm%3A4.9.5#~builtin::version=4.9.5&hash=289587" +"typescript@npm:^5.5.4": + version: 5.5.4 + resolution: "typescript@npm:5.5.4" bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: 1f8f3b6aaea19f0f67cba79057674ba580438a7db55057eb89cc06950483c5d632115c14077f6663ea76fd09fce3c190e6414bb98582ec80aa5a4eaf345d5b68 + checksum: b309040f3a1cd91c68a5a58af6b9fdd4e849b8c42d837b2c2e73f9a4f96a98c4f1ed398a9aab576ee0a4748f5690cf594e6b99dbe61de7839da748c41e6d6ca8 languageName: node linkType: hard @@ -16248,6 +16656,16 @@ __metadata: languageName: node linkType: hard +"typescript@patch:typescript@^5.5.4#~builtin": + version: 5.5.4 + resolution: "typescript@patch:typescript@npm%3A5.5.4#~builtin::version=5.5.4&hash=5adc0c" + bin: + tsc: bin/tsc + tsserver: bin/tsserver + checksum: fc52962f31a5bcb716d4213bef516885e4f01f30cea797a831205fc9ef12b405a40561c40eae3127ab85ba1548e7df49df2bcdee6b84a94bfbe3a0d7eff16b14 + languageName: node + linkType: hard + "unbox-primitive@npm:^1.0.2": version: 1.0.2 resolution: "unbox-primitive@npm:1.0.2" @@ -16267,6 +16685,13 @@ __metadata: languageName: node linkType: hard +"undici-types@npm:~6.19.2": + version: 6.19.8 + resolution: "undici-types@npm:6.19.8" + checksum: de51f1b447d22571cf155dfe14ff6d12c5bdaec237c765085b439c38ca8518fc360e88c70f99469162bf2e14188a7b0bcb06e1ed2dc031042b984b0bb9544017 + languageName: node + linkType: hard + "unicode-canonical-property-names-ecmascript@npm:^2.0.0": version: 2.0.0 resolution: "unicode-canonical-property-names-ecmascript@npm:2.0.0" @@ -16449,6 +16874,20 @@ __metadata: languageName: node linkType: hard +"update-browserslist-db@npm:^1.1.0": + version: 1.1.0 + resolution: "update-browserslist-db@npm:1.1.0" + dependencies: + escalade: ^3.1.2 + picocolors: ^1.0.1 + peerDependencies: + browserslist: ">= 4.21.0" + bin: + update-browserslist-db: cli.js + checksum: 7b74694d96f0c360f01b702e72353dc5a49df4fe6663d3ee4e5c628f061576cddf56af35a3a886238c01dd3d8f231b7a86a8ceaa31e7a9220ae31c1c1238e562 + languageName: node + linkType: hard + "update-notifier@npm:^6.0.2": version: 6.0.2 resolution: "update-notifier@npm:6.0.2" @@ -17029,8 +17468,8 @@ __metadata: linkType: hard "ws@npm:^8.11.0": - version: 8.17.0 - resolution: "ws@npm:8.17.0" + version: 8.18.0 + resolution: "ws@npm:8.18.0" peerDependencies: bufferutil: ^4.0.1 utf-8-validate: ">=5.0.2" @@ -17039,7 +17478,7 @@ __metadata: optional: true utf-8-validate: optional: true - checksum: 147ef9eab0251364e1d2c55338ad0efb15e6913923ccbfdf20f7a8a6cb8f88432bcd7f4d8f66977135bfad35575644f9983201c1a361019594a4e53977bf6d4e + checksum: 91d4d35bc99ff6df483bdf029b9ea4bfd7af1f16fc91231a96777a63d263e1eabf486e13a2353970efc534f9faa43bdbf9ee76525af22f4752cbc5ebda333975 languageName: node linkType: hard