diff --git a/.eslintrc.js b/.eslintrc.js index 3ab7c42d..ed507d73 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -1,9 +1,116 @@ /** @type {import('eslint').Linter.Config} */ module.exports = { - extends: ['./configs/.eslintrc.js'], - ignorePatterns: ['**/{node_modules,lib}'], + env: { + browser: true, + node: true + }, + extends: [ + 'prettier' + ], + parser: '@typescript-eslint/parser', + ignorePatterns: [ + '**/{node_modules,lib}', + '**/sprotty-local-template/**/*' + ], parserOptions: { tsconfigRootDir: __dirname, - project: 'tsconfig.json' + project: './tsconfig.json' + }, + plugins: [ + 'eslint-plugin-no-null', + '@typescript-eslint', + 'header' + ], + rules: { + '@typescript-eslint/indent': 'off', + '@typescript-eslint/naming-convention': 'off', + '@typescript-eslint/no-dynamic-delete': 'error', + '@typescript-eslint/no-explicit-any': 'off', + '@typescript-eslint/no-misused-new': 'error', + '@typescript-eslint/no-shadow': [ + 'warn', + { + 'hoist': 'all' + } + ], + '@typescript-eslint/no-unused-expressions': 'off', + '@typescript-eslint/semi': [ + 'error', + 'always' + ], + '@typescript-eslint/type-annotation-spacing': 'warn', + 'header/header': ['error', 'block', [{'pattern': '[\n\r]+ \\* Copyright \\([cC]\\) \\d{4}(-\\d{4})? .*[\n\r]+'}]], + 'brace-style': [ + 'warn', + '1tbs', + { 'allowSingleLine': true } + ], + 'comma-dangle': ['warn', { + 'arrays': 'only-multiline', + 'objects': 'only-multiline', + }], + 'constructor-super': 'error', + 'curly': 'off', + 'eol-last': 'warn', + 'eqeqeq': [ + 'warn', + 'smart' + ], + 'guard-for-in': 'warn', + 'id-blacklist': 'off', + 'id-match': 'off', + 'keyword-spacing': ['warn', { 'before': true }], + 'max-len': [ + 'warn', + { + 'code': 180 + } + ], + 'no-prototype-builtins': 'error', + 'no-caller': 'error', + 'no-console': 'off', + 'no-debugger': 'warn', + 'no-eval': 'error', + 'no-fallthrough': 'warn', + 'no-invalid-this': 'warn', + 'no-new-wrappers': 'warn', + 'no-null/no-null': 'off', + 'no-redeclare': 'off', + 'no-restricted-imports': [ + 'error', + '..', + '../index', + '../..', + '../../index' + ], + 'no-return-await': 'warn', + 'no-sequences': 'error', + 'no-throw-literal': 'error', + 'no-trailing-spaces': 'warn', + 'no-underscore-dangle': 'off', + 'no-unsafe-finally': 'error', + 'no-var': 'error', + 'prefer-const': [ + 'warn', + { + 'destructuring': 'all' + } + ], + 'prefer-object-spread': 'warn', + 'radix': 'warn', + 'spaced-comment': [ + 'warn', + 'always', + { + 'markers': [ + '/' + ], + 'exceptions': [ + '*' + ] + } + ], + 'space-infix-ops': 'warn', + 'use-isnan': 'warn' } -}; \ No newline at end of file +}; diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 73275365..9b532ee1 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -22,5 +22,7 @@ jobs: node-version: '16' - name: Build run: yarn + - name: Lint + run: yarn lint - name: Test run: yarn test diff --git a/configs/.eslintrc.js b/configs/.eslintrc.js deleted file mode 100644 index 620e0aa6..00000000 --- a/configs/.eslintrc.js +++ /dev/null @@ -1,111 +0,0 @@ -module.exports = { - "env": { - "browser": true, - "node": true - }, - "extends": [ - "prettier" - ], - "parser": "@typescript-eslint/parser", - "parserOptions": { - "project": "tsconfig.json", - "sourceType": "module" - }, - "plugins": [ - "eslint-plugin-no-null", - "@typescript-eslint", - "header" - ], - "rules": { - "@typescript-eslint/indent": "off", - "@typescript-eslint/naming-convention": "off", - "@typescript-eslint/no-dynamic-delete": "error", - "@typescript-eslint/no-explicit-any": "off", - "@typescript-eslint/no-misused-new": "error", - "@typescript-eslint/no-shadow": [ - "warn", - { - "hoist": "all" - } - ], - "@typescript-eslint/no-unused-expressions": "off", - "@typescript-eslint/semi": [ - "error", - "always" - ], - "@typescript-eslint/type-annotation-spacing": "warn", - "header/header": ["error", "block", [{"pattern": "[\n\r]+ \\* Copyright \\([cC]\\) \\d{4}(-\\d{4})? .*[\n\r]+"}]], - "brace-style": [ - "warn", - "1tbs", - { "allowSingleLine": true } - ], - "comma-dangle": ["warn", { - "arrays": "only-multiline", - "objects": "only-multiline", - }], - "constructor-super": "error", - "curly": "off", - "eol-last": "warn", - "eqeqeq": [ - "warn", - "smart" - ], - "guard-for-in": "warn", - "id-blacklist": "off", - "id-match": "off", - "keyword-spacing": ["warn", { "before": true }], - "max-len": [ - "warn", - { - "code": 180 - } - ], - "no-prototype-builtins": "error", - "no-caller": "error", - "no-console": "off", - "no-debugger": "warn", - "no-eval": "error", - "no-fallthrough": "warn", - "no-invalid-this": "warn", - "no-new-wrappers": "warn", - "no-null/no-null": "off", - "no-redeclare": "off", - "no-restricted-imports": [ - "error", - "..", - "../index", - "../..", - "../../index" - ], - "no-return-await": "warn", - "no-sequences": "error", - "no-throw-literal": "error", - "no-trailing-spaces": "warn", - "no-underscore-dangle": "off", - "no-unsafe-finally": "error", - "no-var": "error", - "prefer-const": [ - "warn", - { - "destructuring": "all" - } - ], - "prefer-object-spread": "warn", - "radix": "warn", - "spaced-comment": [ - "warn", - "always", - { - "markers": [ - "/" - ], - "exceptions": [ - "*" - ] - } - ], - "space-infix-ops": "warn", - "use-isnan": "warn" - } -}; diff --git a/configs/base.tsconfig.json b/configs/base.tsconfig.json deleted file mode 100644 index 375d455e..00000000 --- a/configs/base.tsconfig.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "$schema": "https://json.schemastore.org/tsconfig", - "compilerOptions": { - "target": "ES2017", - "module": "commonjs", - "lib": [ - "ES2017", - "DOM" - ], - "types": [ - "reflect-metadata" - ], - "sourceMap": true, - "declaration": true, - "declarationMap": true, - "noImplicitAny": true, - "noImplicitThis": true, - "noImplicitReturns": true, - "noImplicitOverride": true, - "noUnusedLocals": true, - "strictNullChecks": true, - "experimentalDecorators": true, - "emitDecoratorMetadata": true, - "esModuleInterop": true, - "jsx": "react" - } -} \ No newline at end of file diff --git a/examples/circlegraph/src/di.config.ts b/examples/circlegraph/src/di.config.ts index ac27909a..9c0a1858 100644 --- a/examples/circlegraph/src/di.config.ts +++ b/examples/circlegraph/src/di.config.ts @@ -25,7 +25,7 @@ import { CircleNodeView } from './views'; const NodeCreator = Symbol('NodeCreator'); -export default (nodeCreator: (point?: Point)=>void) => { +export default (nodeCreator: (point?: Point) => void) => { require('sprotty/css/sprotty.css'); require('../css/diagram.css'); @@ -58,7 +58,7 @@ export default (nodeCreator: (point?: Point)=>void) => { @injectable() class DroppableMouseListener extends MouseListener { - @inject(NodeCreator) nodeCreator: (point?: Point)=>void; + @inject(NodeCreator) nodeCreator: (point?: Point) => void; override dragOver(target: SModelElementImpl, event: MouseEvent): (Action | Promise)[] { event.preventDefault(); @@ -66,7 +66,7 @@ class DroppableMouseListener extends MouseListener { } override drop(target: SModelElementImpl, event: MouseEvent): (Action | Promise)[] { - this.nodeCreator({ x: event.offsetX, y:event.offsetY }) + this.nodeCreator({ x: event.offsetX, y:event.offsetY }); return []; } } diff --git a/examples/circlegraph/src/standalone.ts b/examples/circlegraph/src/standalone.ts index b8e12322..bdbb55e3 100644 --- a/examples/circlegraph/src/standalone.ts +++ b/examples/circlegraph/src/standalone.ts @@ -83,10 +83,10 @@ export default async function runCircleGraph() { async function createNode(point?: Point) { const viewport = await modelSource.getViewport(); const newElements = addNode(getVisibleBounds(viewport)); - if(point) { - const adjust = (offset:number) => { + if (point) { + const adjust = (offset: number) => { return (offset / viewport.zoom) - (NODE_SIZE / 2); - } + }; newElements[0].position = { x: viewport.scroll.x + adjust(point.x), y: viewport.scroll.y + adjust(point.y) @@ -99,7 +99,7 @@ export default async function runCircleGraph() { // Button features document.getElementById('addNode')!.addEventListener('click', async () => { - createNode() + createNode(); }); document.getElementById('scrambleAll')!.addEventListener('click', async () => { diff --git a/examples/classdiagram/src/menu.ts b/examples/classdiagram/src/menu.ts index 527a143e..1bcad108 100644 --- a/examples/classdiagram/src/menu.ts +++ b/examples/classdiagram/src/menu.ts @@ -30,18 +30,19 @@ export class ClassContextMenuService implements IContextMenuService { @inject(TYPES.ViewerOptions) protected viewerOptions: ViewerOptions; show(items: MenuItem[], anchor: Anchor, onHide?: (() => void) | undefined): void { - this.actionDispatcher.dispatch(SetPopupModelAction.create(EMPTY_ROOT)) + this.actionDispatcher.dispatch(SetPopupModelAction.create(EMPTY_ROOT)); const container = document.getElementById(this.viewerOptions.baseDiv); + // eslint-disable-next-line prefer-const let menuNode: HTMLDivElement; const hideMenu = () => { container?.removeChild(menuNode); if (onHide) { - onHide() + onHide(); } - } + }; menuNode = this.createMenu(items, hideMenu); - menuNode.style.top = (anchor.y - 5) + 'px' - menuNode.style.left = (anchor.x - 5) + 'px' + menuNode.style.top = (anchor.y - 5) + 'px'; + menuNode.style.left = (anchor.x - 5) + 'px'; container?.appendChild(menuNode); @@ -65,7 +66,7 @@ export class ClassContextMenuService implements IContextMenuService { if (itemEnabled && item.actions.length > 0) { this.actionDispatcher.dispatchAll(item.actions); } - } + }; menuNode.appendChild(menuItem); }); return menuNode; @@ -78,7 +79,7 @@ export class ClassContextMenuItemProvider implements IContextMenuItemProvider { @inject(TYPES.IActionDispatcher) readonly actionDispatcher: IActionDispatcher; async getItems(root: Readonly, lastMousePosition?: Point | undefined): Promise { - const selectionResult = await this.actionDispatcher.request(GetSelectionAction.create()) + const selectionResult = await this.actionDispatcher.request(GetSelectionAction.create()); return [ new LabeledAction('Fit Diagram to Screen', [FitToScreenAction.create(root.children.map(child => child.id))]), new LabeledAction('Center Selection', [CenterAction.create(selectionResult.selectedElementsIDs)]), @@ -88,7 +89,7 @@ export class ClassContextMenuItemProvider implements IContextMenuItemProvider { { ...new LabeledAction('Delete Selected', [DeleteElementAction.create(selectionResult.selectedElementsIDs)]), isEnabled: () => { - return selectionResult.selectedElementsIDs.length > 0 + return selectionResult.selectedElementsIDs.length > 0; } } as MenuItem ]; diff --git a/examples/classdiagram/src/model-source.ts b/examples/classdiagram/src/model-source.ts index 712a3074..a080367d 100644 --- a/examples/classdiagram/src/model-source.ts +++ b/examples/classdiagram/src/model-source.ts @@ -57,9 +57,12 @@ export class ClassDiagramModelSource extends LocalModelSource { } protected handleCollapseExpandAllAction(action: CollapseExpandAllAction): void { - // tslint:disable-next-line:forin - for (const id in this.expansionState) - this.expansionState[id] === action.expand; + for (const id in this.expansionState) { + if (Object.prototype.hasOwnProperty.call(this.expansionState, id)) { + this.expansionState[id] === action.expand; + } + } + this.applyExpansionState(); this.updateModel(); } @@ -67,15 +70,16 @@ export class ClassDiagramModelSource extends LocalModelSource { protected applyExpansionState() { const index = new SModelIndex(); index.add(this.currentRoot); - // tslint:disable-next-line:forin for (const id in this.expansionState) { - const element = index.getById(id); - if (element && element.children) { - const expanded = this.expansionState[id]; - (element as any).expanded = expanded; - element.children = element.children.filter(child => child.type !== 'comp:comp'); - if (expanded) - this.addExpandedChildren(element); + if (Object.prototype.hasOwnProperty.call(this.expansionState, id)) { + const element = index.getById(id); + if (element && element.children) { + const expanded = this.expansionState[id]; + (element as any).expanded = expanded; + element.children = element.children.filter(child => child.type !== 'comp:comp'); + if (expanded) + this.addExpandedChildren(element); + } } } } @@ -320,7 +324,7 @@ export class ClassDiagramModelSource extends LocalModelSource { } ] }; - const package0: SNode= { + const package0: SNode = { id: 'package0', type: 'node:package', position: { @@ -349,7 +353,7 @@ export class ClassDiagramModelSource extends LocalModelSource { ] } ] - } + }; const edge0 = { id: 'edge0', type: 'edge:straight', diff --git a/examples/classdiagram/src/popup.ts b/examples/classdiagram/src/popup.ts index af51fa9e..aba20914 100644 --- a/examples/classdiagram/src/popup.ts +++ b/examples/classdiagram/src/popup.ts @@ -41,6 +41,7 @@ export class PopupModelProvider implements IPopupModelProvider { { type: 'pre-rendered', id: 'popup-body', + // eslint-disable-next-line max-len code: '
But I must explain to you how all this mistaken idea of denouncing pleasure and praising pain was born and I will give you a complete account of the system, and expound the actual teachings of the great explorer of the truth, the master-builder of human happiness.
' } ] diff --git a/examples/random-graph-distributed/src/standalone.ts b/examples/random-graph-distributed/src/standalone.ts index 9eca3ae8..d5c7fd86 100644 --- a/examples/random-graph-distributed/src/standalone.ts +++ b/examples/random-graph-distributed/src/standalone.ts @@ -34,6 +34,6 @@ export default function runRandomGraphDistributed() { .catch(err => { console.error(err); document.getElementById('sprotty')!.innerText = String(err); - }) + }); }, { once: true }); } diff --git a/examples/random-graph/src/di.config.ts b/examples/random-graph/src/di.config.ts index 9603fa8f..991777c3 100644 --- a/examples/random-graph/src/di.config.ts +++ b/examples/random-graph/src/di.config.ts @@ -108,7 +108,7 @@ export class TrackSelectedUpdateModelCommand extends UpdateModelCommand { override createAnimations(data: UpdateAnimationData, root: SModelRootImpl, context: CommandExecutionContext): Animation[] { const animations = super.createAnimations(data, root, context); - const selectedToMove = data.moves?.find(toMove => isSelectable(toMove.element) && toMove.element.selected) + const selectedToMove = data.moves?.find(toMove => isSelectable(toMove.element) && toMove.element.selected); if (isViewport(root) && selectedToMove) { const nodeMove: Point = { x: selectedToMove.fromPosition.x - selectedToMove.toPosition.x, @@ -122,4 +122,4 @@ export class TrackSelectedUpdateModelCommand extends UpdateModelCommand { } return animations; } -} \ No newline at end of file +} diff --git a/examples/random-graph/src/standalone.ts b/examples/random-graph/src/standalone.ts index 482ceffd..6c2b250c 100644 --- a/examples/random-graph/src/standalone.ts +++ b/examples/random-graph/src/standalone.ts @@ -27,7 +27,7 @@ export default function runRandomGraph() { const layoutConfigurator = container.get(ILayoutConfigurator); document.getElementById('direction')!.addEventListener('change', async (event) => { - layoutConfigurator.setDirection((event.target as any)?.value??'LEFT'); + layoutConfigurator.setDirection((event.target as any)?.value ?? 'LEFT'); modelSource.updateModel(); }); } diff --git a/examples/tsconfig.json b/examples/tsconfig.json index 341b858d..588d0c6a 100644 --- a/examples/tsconfig.json +++ b/examples/tsconfig.json @@ -1,8 +1,9 @@ { - "extends": "../configs/base.tsconfig.json", + "extends": "../tsconfig.json", "compilerOptions": { "types": [ - "reflect-metadata", "webpack-env" + "reflect-metadata", + "webpack-env" ], "declaration": false, "declarationMap": false @@ -11,6 +12,7 @@ "./server/**/*.ts" ], "exclude": [ - "**/*.spec.ts", "**/*.spec.tsx" + "**/*.spec.ts", + "**/*.spec.tsx" ] } \ No newline at end of file diff --git a/package.json b/package.json index 8119347f..cbf10118 100644 --- a/package.json +++ b/package.json @@ -4,6 +4,8 @@ "prepare": "lerna run prepare", "clean": "lerna run clean", "build": "lerna run build", + "lint": "eslint {**/src/**/*.ts,**/src/**/*.tsx}", + "lint:fix": "eslint {**/src/**/*.ts,**/src/**/*.tsx} --fix", "test": "vitest run", "coverage": "vitest run --coverage", "publish:prepare": "lerna version --ignore-scripts --yes --no-push", @@ -11,9 +13,9 @@ "publish:next": "SHA=$(git rev-parse --short HEAD) && lerna publish preminor --exact --canary --preid next.${SHA} --dist-tag next --no-git-reset --no-git-tag-version --no-push --ignore-scripts --yes --no-verify-access" }, "devDependencies": { - "@typescript-eslint/eslint-plugin": "^6.7.3", - "@typescript-eslint/parser": "^6.7.3", - "eslint": "^8.50.0", + "@typescript-eslint/eslint-plugin": "^6.10.0", + "@typescript-eslint/parser": "^6.10.0", + "eslint": "^8.53.0", "eslint-config-prettier": "^9.0.0", "eslint-plugin-header": "^3.1.1", "eslint-plugin-no-null": "^1.0.2", diff --git a/packages/generator-sprotty/package.json b/packages/generator-sprotty/package.json index ddc5c3e4..1df61344 100644 --- a/packages/generator-sprotty/package.json +++ b/packages/generator-sprotty/package.json @@ -42,7 +42,6 @@ "clean": "rimraf app", "build": "tsc --skipLibCheck", "watch": "tsc --watch --skipLibCheck", - "lint": "eslint src test --ext .ts", "run": "yo sprotty", "debug": "npx --node-arg=--inspect yo sprotty", "test": "echo \"No tests defined.\"" diff --git a/packages/generator-sprotty/tsconfig.json b/packages/generator-sprotty/tsconfig.json index fcd1b7d2..817b3857 100644 --- a/packages/generator-sprotty/tsconfig.json +++ b/packages/generator-sprotty/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "../../configs/base.tsconfig.json", + "extends": "../../tsconfig.json", "compilerOptions": { "outDir": "app" }, diff --git a/packages/sprotty-elk/package.json b/packages/sprotty-elk/package.json index 130f4e9e..e62f6331 100644 --- a/packages/sprotty-elk/package.json +++ b/packages/sprotty-elk/package.json @@ -30,18 +30,14 @@ "scripts": { "prepare": "yarn run clean && yarn run build", "clean": "rimraf lib artifacts", - "build": "tsc -p ./tsconfig.json && yarn run lint", + "build": "tsc -p ./tsconfig.json", "test": "vitest run --config ../../vite.config.ts", - "watch": "tsc -w -p ./tsconfig.json", - "lint": "eslint -c ../../configs/.eslintrc.js \"src/**/!(*.spec.ts*)\"" + "watch": "tsc -w -p ./tsconfig.json" }, "files": [ "lib", "src" ], "main": "lib/index", - "types": "lib/index", - "eslintIgnore": [ - "src/**/*.spec.?(ts|tsx)" - ] + "types": "lib/index" } diff --git a/packages/sprotty-elk/tsconfig.json b/packages/sprotty-elk/tsconfig.json index 6f2e210b..c045697f 100644 --- a/packages/sprotty-elk/tsconfig.json +++ b/packages/sprotty-elk/tsconfig.json @@ -1,15 +1,16 @@ { - "extends": "../../configs/base.tsconfig.json", - "compilerOptions": { - "outDir": "lib", - "types": [ - "node" - ] - }, - "include": [ - "src" - ], - "exclude": [ - "**/*.spec.ts", "**/*.spec.tsx" + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "lib", + "types": [ + "node" ] - } \ No newline at end of file + }, + "include": [ + "src" + ], + "exclude": [ + "**/*.spec.ts", + "**/*.spec.tsx" + ] +} \ No newline at end of file diff --git a/packages/sprotty-protocol/package.json b/packages/sprotty-protocol/package.json index 0d7248d4..dbe27309 100644 --- a/packages/sprotty-protocol/package.json +++ b/packages/sprotty-protocol/package.json @@ -25,18 +25,14 @@ "scripts": { "prepare": "yarn run clean && yarn run build", "clean": "rimraf lib artifacts", - "build": "tsc -p ./tsconfig.json && yarn run lint", + "build": "tsc -p ./tsconfig.json", "test": "vitest run --config ../../vite.config.ts", - "watch": "tsc -w -p ./tsconfig.json", - "lint": "eslint -c ../../configs/.eslintrc.js \"src/**/!(*.spec.ts*)\"" + "watch": "tsc -w -p ./tsconfig.json" }, "files": [ "lib", "src" ], "main": "lib/index", - "types": "lib/index", - "eslintIgnore": [ - "src/**/*.spec.?(ts|tsx)" - ] + "types": "lib/index" } diff --git a/packages/sprotty-protocol/src/diagram-server.spec.ts b/packages/sprotty-protocol/src/diagram-server.spec.ts index 5bbed37a..15aa6498 100644 --- a/packages/sprotty-protocol/src/diagram-server.spec.ts +++ b/packages/sprotty-protocol/src/diagram-server.spec.ts @@ -33,7 +33,7 @@ async function condition(cb: () => boolean): Promise { } else { setImmediate(next); } - } + }; next(); }); } @@ -48,7 +48,7 @@ describe('DiagramServer', () => { const actionHandlerRegistry = new ServerActionHandlerRegistry(); const server = new DiagramServer( async a => { - dispatched.push(a) + dispatched.push(a); }, { DiagramGenerator: { generate: () => { @@ -176,9 +176,9 @@ describe('DiagramServer', () => { it('calls a registered action handler', async () => { const { server, actionHandlerRegistry, dispatched } = createServer(); - actionHandlerRegistry.onAction('foo', (_, state, server) => { + actionHandlerRegistry.onAction('foo', (_, state, serverHandler) => { state.revision = -7; - server.dispatch({ kind: 'bar' }); + serverHandler.dispatch({ kind: 'bar' }); return Promise.resolve(); }); await server.accept({ kind: 'foo' }); @@ -189,9 +189,9 @@ describe('DiagramServer', () => { it('does not call an unregistered action handler', async () => { const { server, actionHandlerRegistry, dispatched } = createServer(); - const handler: ServerActionHandler = (_, state, server) => { + const handler: ServerActionHandler = (_, state, serverHandler) => { state.revision = -7; - server.dispatch({ kind: 'bar' }); + serverHandler.dispatch({ kind: 'bar' }); return Promise.resolve(); }; actionHandlerRegistry.onAction('foo', handler); diff --git a/packages/sprotty-protocol/tsconfig.json b/packages/sprotty-protocol/tsconfig.json index 4c5de45f..9f98a077 100644 --- a/packages/sprotty-protocol/tsconfig.json +++ b/packages/sprotty-protocol/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "../../configs/base.tsconfig.json", + "extends": "../../tsconfig.json", "compilerOptions": { "outDir": "lib" }, @@ -7,6 +7,7 @@ "src" ], "exclude": [ - "**/*.spec.ts", "**/*.spec.tsx" + "**/*.spec.ts", + "**/*.spec.tsx" ] } \ No newline at end of file diff --git a/packages/sprotty/package.json b/packages/sprotty/package.json index 2b06fa9e..3ea7bf23 100644 --- a/packages/sprotty/package.json +++ b/packages/sprotty/package.json @@ -41,10 +41,9 @@ "scripts": { "prepare": "yarn run clean && yarn run build", "clean": "rimraf lib artifacts", - "build": "tsc -p ./tsconfig.json && yarn run lint", + "build": "tsc -p ./tsconfig.json", "test": "vitest run --config ../../vite.config.ts", - "watch": "tsc -w -p ./tsconfig.json", - "lint": "eslint -c ../../configs/.eslintrc.js \"src/**/!(*.spec.ts*|test-helper.ts)\"" + "watch": "tsc -w -p ./tsconfig.json" }, "files": [ "lib", @@ -52,9 +51,5 @@ "src" ], "main": "lib/index", - "types": "lib/index", - "eslintIgnore": [ - "src/**/*.spec.?(ts|tsx)", - "src/utils/test-helper.ts" - ] + "types": "lib/index" } diff --git a/packages/sprotty/src/base/features/set-model.spec.ts b/packages/sprotty/src/base/features/set-model.spec.ts index 4fe43c03..c6cfe33c 100644 --- a/packages/sprotty/src/base/features/set-model.spec.ts +++ b/packages/sprotty/src/base/features/set-model.spec.ts @@ -29,12 +29,12 @@ import { SModelElement, SModelRoot, SetModelAction } from 'sprotty-protocol'; function compare(expected: SModelElement, actual: SModelElementImpl) { for (const p in expected) { - if (expected.hasOwnProperty(p)) { + if (Object.prototype.hasOwnProperty.call(expected, p)) { const expectedProp = (expected as any)[p]; const actualProp = (actual as any)[p]; if (p === 'children') { for (const i in expectedProp) { - if (expectedProp.hasOwnProperty(i)) { + if (Object.prototype.hasOwnProperty.call(expectedProp, i)) { compare(expectedProp[i], actualProp[i]); } } diff --git a/packages/sprotty/src/base/views/css-class-postprocessor.spec.tsx b/packages/sprotty/src/base/views/css-class-postprocessor.spec.tsx index cb28fb57..84b90637 100644 --- a/packages/sprotty/src/base/views/css-class-postprocessor.spec.tsx +++ b/packages/sprotty/src/base/views/css-class-postprocessor.spec.tsx @@ -26,9 +26,9 @@ describe('CssClassPostprocessor', () => { const vnode = ; expect(vnode.data!.class!.foo).to.be.true; expect(vnode.data!.class!.bar).to.be.undefined; - const snode = new SModelElementImpl() - snode.cssClasses = ['bar'] - new CssClassPostprocessor().decorate(vnode, snode) + const snode = new SModelElementImpl(); + snode.cssClasses = ['bar']; + new CssClassPostprocessor().decorate(vnode, snode); expect(vnode.data!.class!.foo).to.be.true; expect(vnode.data!.class!.bar).to.be.true; }); diff --git a/packages/sprotty/src/features/hover/hover.spec.ts b/packages/sprotty/src/features/hover/hover.spec.ts index c3c621b4..6657604a 100644 --- a/packages/sprotty/src/features/hover/hover.spec.ts +++ b/packages/sprotty/src/features/hover/hover.spec.ts @@ -57,7 +57,7 @@ describe('hover', () => { }); } - protected override getElementFromEventPosition(event: MouseEvent) { + protected override getElementFromEventPosition(_event: MouseEvent) { // the original implementation uses document which isn't available in unit testing return null; } diff --git a/packages/sprotty/src/features/update/update-model.spec.ts b/packages/sprotty/src/features/update/update-model.spec.ts index 7d26b887..8546214a 100644 --- a/packages/sprotty/src/features/update/update-model.spec.ts +++ b/packages/sprotty/src/features/update/update-model.spec.ts @@ -39,12 +39,12 @@ import { registerModelElement } from '../../base/model/smodel-utils'; function compare(expected: SModelElement, actual: SModelElementImpl) { for (const p in expected) { - if (expected.hasOwnProperty(p)) { + if (Object.prototype.hasOwnProperty.call(expected, p)) { const expectedProp = (expected as any)[p]; const actualProp = (actual as any)[p]; if (p === 'children') { for (const i in expectedProp) { - if (expectedProp.hasOwnProperty(i)) { + if (Object.prototype.hasOwnProperty.call(expectedProp, i)) { compare(expectedProp[i], actualProp[i]); } } diff --git a/packages/sprotty/src/lib/jsx.spec.tsx b/packages/sprotty/src/lib/jsx.spec.tsx index a30adfdd..78c79f32 100644 --- a/packages/sprotty/src/lib/jsx.spec.tsx +++ b/packages/sprotty/src/lib/jsx.spec.tsx @@ -21,7 +21,7 @@ import 'mocha'; import { expect } from 'chai'; import { h } from 'snabbdom'; -const svgNS = 'http://www.w3.org/2000/svg' +const svgNS = 'http://www.w3.org/2000/svg'; describe("JSX", () => { it("should set namespace even for empty svg elements with no attributes", () => { @@ -53,5 +53,5 @@ describe("JSX", () => { }, []) ); - }) -}) + }); +}); diff --git a/packages/sprotty/src/model-source/local-model-source.spec.ts b/packages/sprotty/src/model-source/local-model-source.spec.ts index ff02e261..5f0a8292 100644 --- a/packages/sprotty/src/model-source/local-model-source.spec.ts +++ b/packages/sprotty/src/model-source/local-model-source.spec.ts @@ -17,6 +17,7 @@ import "reflect-metadata"; import { expect, describe, it } from 'vitest'; import { Container, injectable } from "inversify"; +// eslint-disable-next-line max-len import { Action, ComputedBoundsAction, isResponseAction, RequestAction, RequestBoundsAction, ResponseAction, SetModelAction, UpdateModelAction } from 'sprotty-protocol/lib/actions'; import { Deferred } from 'sprotty-protocol/lib/utils/async'; import { TYPES } from "../base/types"; diff --git a/packages/sprotty/tsconfig.json b/packages/sprotty/tsconfig.json index 36b256ae..5d640e7c 100644 --- a/packages/sprotty/tsconfig.json +++ b/packages/sprotty/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "../../configs/base.tsconfig.json", + "extends": "../../tsconfig.json", "compilerOptions": { "outDir": "lib" }, @@ -7,6 +7,8 @@ "src" ], "exclude": [ - "**/*.spec.ts", "**/*.spec.tsx", "src/utils/test-helper.ts" + "**/*.spec.ts", + "**/*.spec.tsx", + "src/utils/test-helper.ts" ] } \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json index e3d00cf1..da1b25e5 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,6 +1,39 @@ { - "extends": "./configs/base.tsconfig.json", + "$schema": "https://json.schemastore.org/tsconfig", + "compilerOptions": { + "target": "ES2017", + "module": "commonjs", + "lib": [ + "ES2017", + "DOM" + ], + "types": [ + "reflect-metadata" + ], + "sourceMap": true, + "declaration": true, + "declarationMap": true, + "noImplicitAny": true, + "noImplicitThis": true, + "noImplicitReturns": true, + "noImplicitOverride": true, + "noUnusedLocals": true, + "strictNullChecks": true, + "experimentalDecorators": true, + "emitDecoratorMetadata": true, + "esModuleInterop": true, + "jsx": "react" + }, "include": [ - "packages/*/src/**/*.ts", + "**/src/**/*.ts", + "**/src/**/*.tsx", + "**/packages/*/*/*.ts", + "**/packages/*/*/*.js", + "*.js", + "*.ts" ], + "exclude": [ + "lib/**/*", + "node_modules/**/*" + ] } \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index 1ec79a79..1be5b829 100644 --- a/yarn.lock +++ b/yarn.lock @@ -169,10 +169,10 @@ resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.9.1.tgz#449dfa81a57a1d755b09aa58d826c1262e4283b4" integrity sha512-Y27x+MBLjXa+0JWDhykM3+JE+il3kHKAEqabfEWq3SDhZjLYb6/BHL/JKFnH3fe207JaXkyDo685Oc2Glt6ifA== -"@eslint/eslintrc@^2.1.2": - version "2.1.2" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.2.tgz#c6936b4b328c64496692f76944e755738be62396" - integrity sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g== +"@eslint/eslintrc@^2.1.3": + version "2.1.3" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.3.tgz#797470a75fe0fbd5a53350ee715e85e87baff22d" + integrity sha512-yZzuIG+jnVu6hNSzFEN07e8BxF3uAzYtQb6uDkaYZLo6oYZDCq454c5kB8zxnzfCYyP4MIuyBn10L0DqwujTmA== dependencies: ajv "^6.12.4" debug "^4.3.2" @@ -184,17 +184,17 @@ minimatch "^3.1.2" strip-json-comments "^3.1.1" -"@eslint/js@8.50.0": - version "8.50.0" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.50.0.tgz#9e93b850f0f3fa35f5fa59adfd03adae8488e484" - integrity sha512-NCC3zz2+nvYd+Ckfh87rA47zfu2QsQpvc6k1yzTk+b9KzRj0wkGa8LSoGOXN6Zv4lRf/EIoZ80biDh9HOI+RNQ== +"@eslint/js@8.53.0": + version "8.53.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.53.0.tgz#bea56f2ed2b5baea164348ff4d5a879f6f81f20d" + integrity sha512-Kn7K8dx/5U6+cT1yEhpX1w4PCSg0M+XyRILPgvwcEBjerFWCwQj5sbr3/VmxqV0JGHCBCzyd6LxypEuehypY1w== -"@humanwhocodes/config-array@^0.11.11": - version "0.11.11" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.11.tgz#88a04c570dbbc7dd943e4712429c3df09bc32844" - integrity sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA== +"@humanwhocodes/config-array@^0.11.13": + version "0.11.13" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.13.tgz#075dc9684f40a531d9b26b0822153c1e832ee297" + integrity sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ== dependencies: - "@humanwhocodes/object-schema" "^1.2.1" + "@humanwhocodes/object-schema" "^2.0.1" debug "^4.1.1" minimatch "^3.0.5" @@ -203,10 +203,10 @@ resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== -"@humanwhocodes/object-schema@^1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" - integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== +"@humanwhocodes/object-schema@^2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz#e5211452df060fa8522b55c7b3c0c4d1981cb044" + integrity sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw== "@hutson/parse-repository-url@^3.0.0": version "3.0.2" @@ -1146,16 +1146,16 @@ "@types/yeoman-environment" "*" "@types/yeoman-generator" "*" -"@typescript-eslint/eslint-plugin@^6.7.3": - version "6.7.3" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.7.3.tgz#d98046e9f7102d49a93d944d413c6055c47fafd7" - integrity sha512-vntq452UHNltxsaaN+L9WyuMch8bMd9CqJ3zhzTPXXidwbf5mqqKCVXEuvRZUqLJSTLeWE65lQwyXsRGnXkCTA== +"@typescript-eslint/eslint-plugin@^6.10.0": + version "6.10.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.10.0.tgz#cfe2bd34e26d2289212946b96ab19dcad64b661a" + integrity sha512-uoLj4g2OTL8rfUQVx2AFO1hp/zja1wABJq77P6IclQs6I/m9GLrm7jCdgzZkvWdDCQf1uEvoa8s8CupsgWQgVg== dependencies: "@eslint-community/regexpp" "^4.5.1" - "@typescript-eslint/scope-manager" "6.7.3" - "@typescript-eslint/type-utils" "6.7.3" - "@typescript-eslint/utils" "6.7.3" - "@typescript-eslint/visitor-keys" "6.7.3" + "@typescript-eslint/scope-manager" "6.10.0" + "@typescript-eslint/type-utils" "6.10.0" + "@typescript-eslint/utils" "6.10.0" + "@typescript-eslint/visitor-keys" "6.10.0" debug "^4.3.4" graphemer "^1.4.0" ignore "^5.2.4" @@ -1163,74 +1163,79 @@ semver "^7.5.4" ts-api-utils "^1.0.1" -"@typescript-eslint/parser@^6.7.3": - version "6.7.3" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-6.7.3.tgz#aaf40092a32877439e5957e18f2d6a91c82cc2fd" - integrity sha512-TlutE+iep2o7R8Lf+yoer3zU6/0EAUc8QIBB3GYBc1KGz4c4TRm83xwXUZVPlZ6YCLss4r77jbu6j3sendJoiQ== +"@typescript-eslint/parser@^6.10.0": + version "6.10.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-6.10.0.tgz#578af79ae7273193b0b6b61a742a2bc8e02f875a" + integrity sha512-+sZwIj+s+io9ozSxIWbNB5873OSdfeBEH/FR0re14WLI6BaKuSOnnwCJ2foUiu8uXf4dRp1UqHP0vrZ1zXGrog== dependencies: - "@typescript-eslint/scope-manager" "6.7.3" - "@typescript-eslint/types" "6.7.3" - "@typescript-eslint/typescript-estree" "6.7.3" - "@typescript-eslint/visitor-keys" "6.7.3" + "@typescript-eslint/scope-manager" "6.10.0" + "@typescript-eslint/types" "6.10.0" + "@typescript-eslint/typescript-estree" "6.10.0" + "@typescript-eslint/visitor-keys" "6.10.0" debug "^4.3.4" -"@typescript-eslint/scope-manager@6.7.3": - version "6.7.3" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-6.7.3.tgz#07e5709c9bdae3eaf216947433ef97b3b8b7d755" - integrity sha512-wOlo0QnEou9cHO2TdkJmzF7DFGvAKEnB82PuPNHpT8ZKKaZu6Bm63ugOTn9fXNJtvuDPanBc78lGUGGytJoVzQ== +"@typescript-eslint/scope-manager@6.10.0": + version "6.10.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-6.10.0.tgz#b0276118b13d16f72809e3cecc86a72c93708540" + integrity sha512-TN/plV7dzqqC2iPNf1KrxozDgZs53Gfgg5ZHyw8erd6jd5Ta/JIEcdCheXFt9b1NYb93a1wmIIVW/2gLkombDg== dependencies: - "@typescript-eslint/types" "6.7.3" - "@typescript-eslint/visitor-keys" "6.7.3" + "@typescript-eslint/types" "6.10.0" + "@typescript-eslint/visitor-keys" "6.10.0" -"@typescript-eslint/type-utils@6.7.3": - version "6.7.3" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-6.7.3.tgz#c2c165c135dda68a5e70074ade183f5ad68f3400" - integrity sha512-Fc68K0aTDrKIBvLnKTZ5Pf3MXK495YErrbHb1R6aTpfK5OdSFj0rVN7ib6Tx6ePrZ2gsjLqr0s98NG7l96KSQw== +"@typescript-eslint/type-utils@6.10.0": + version "6.10.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-6.10.0.tgz#1007faede067c78bdbcef2e8abb31437e163e2e1" + integrity sha512-wYpPs3hgTFblMYwbYWPT3eZtaDOjbLyIYuqpwuLBBqhLiuvJ+9sEp2gNRJEtR5N/c9G1uTtQQL5AhV0fEPJYcg== dependencies: - "@typescript-eslint/typescript-estree" "6.7.3" - "@typescript-eslint/utils" "6.7.3" + "@typescript-eslint/typescript-estree" "6.10.0" + "@typescript-eslint/utils" "6.10.0" debug "^4.3.4" ts-api-utils "^1.0.1" -"@typescript-eslint/types@6.7.3": - version "6.7.3" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.7.3.tgz#0402b5628a63f24f2dc9d4a678e9a92cc50ea3e9" - integrity sha512-4g+de6roB2NFcfkZb439tigpAMnvEIg3rIjWQ+EM7IBaYt/CdJt6em9BJ4h4UpdgaBWdmx2iWsafHTrqmgIPNw== +"@typescript-eslint/types@6.10.0": + version "6.10.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.10.0.tgz#f4f0a84aeb2ac546f21a66c6e0da92420e921367" + integrity sha512-36Fq1PWh9dusgo3vH7qmQAj5/AZqARky1Wi6WpINxB6SkQdY5vQoT2/7rW7uBIsPDcvvGCLi4r10p0OJ7ITAeg== -"@typescript-eslint/typescript-estree@6.7.3": - version "6.7.3" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.7.3.tgz#ec5bb7ab4d3566818abaf0e4a8fa1958561b7279" - integrity sha512-YLQ3tJoS4VxLFYHTw21oe1/vIZPRqAO91z6Uv0Ss2BKm/Ag7/RVQBcXTGcXhgJMdA4U+HrKuY5gWlJlvoaKZ5g== +"@typescript-eslint/typescript-estree@6.10.0": + version "6.10.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.10.0.tgz#667381eed6f723a1a8ad7590a31f312e31e07697" + integrity sha512-ek0Eyuy6P15LJVeghbWhSrBCj/vJpPXXR+EpaRZqou7achUWL8IdYnMSC5WHAeTWswYQuP2hAZgij/bC9fanBg== dependencies: - "@typescript-eslint/types" "6.7.3" - "@typescript-eslint/visitor-keys" "6.7.3" + "@typescript-eslint/types" "6.10.0" + "@typescript-eslint/visitor-keys" "6.10.0" debug "^4.3.4" globby "^11.1.0" is-glob "^4.0.3" semver "^7.5.4" ts-api-utils "^1.0.1" -"@typescript-eslint/utils@6.7.3": - version "6.7.3" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-6.7.3.tgz#96c655816c373135b07282d67407cb577f62e143" - integrity sha512-vzLkVder21GpWRrmSR9JxGZ5+ibIUSudXlW52qeKpzUEQhRSmyZiVDDj3crAth7+5tmN1ulvgKaCU2f/bPRCzg== +"@typescript-eslint/utils@6.10.0": + version "6.10.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-6.10.0.tgz#4d76062d94413c30e402c9b0df8c14aef8d77336" + integrity sha512-v+pJ1/RcVyRc0o4wAGux9x42RHmAjIGzPRo538Z8M1tVx6HOnoQBCX/NoadHQlZeC+QO2yr4nNSFWOoraZCAyg== dependencies: "@eslint-community/eslint-utils" "^4.4.0" "@types/json-schema" "^7.0.12" "@types/semver" "^7.5.0" - "@typescript-eslint/scope-manager" "6.7.3" - "@typescript-eslint/types" "6.7.3" - "@typescript-eslint/typescript-estree" "6.7.3" + "@typescript-eslint/scope-manager" "6.10.0" + "@typescript-eslint/types" "6.10.0" + "@typescript-eslint/typescript-estree" "6.10.0" semver "^7.5.4" -"@typescript-eslint/visitor-keys@6.7.3": - version "6.7.3" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.7.3.tgz#83809631ca12909bd2083558d2f93f5747deebb2" - integrity sha512-HEVXkU9IB+nk9o63CeICMHxFWbHWr3E1mpilIQBe9+7L/lH97rleFLVtYsfnWB+JVMaiFnEaxvknvmIzX+CqVg== +"@typescript-eslint/visitor-keys@6.10.0": + version "6.10.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.10.0.tgz#b9eaf855a1ac7e95633ae1073af43d451e8f84e3" + integrity sha512-xMGluxQIEtOM7bqFCo+rCMh5fqI+ZxV5RUUOa29iVPz1OgCZrtc7rFnz5cLUazlkPKYqX+75iuDq7m0HQ48nCg== dependencies: - "@typescript-eslint/types" "6.7.3" + "@typescript-eslint/types" "6.10.0" eslint-visitor-keys "^3.4.1" +"@ungap/structured-clone@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" + integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== + "@vitest/coverage-v8@~0.34.6": version "0.34.6" resolved "https://registry.yarnpkg.com/@vitest/coverage-v8/-/coverage-v8-0.34.6.tgz#931d9223fa738474e00c08f52b84e0f39cedb6d1" @@ -2610,18 +2615,19 @@ eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4 resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== -eslint@^8.50.0: - version "8.50.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.50.0.tgz#2ae6015fee0240fcd3f83e1e25df0287f487d6b2" - integrity sha512-FOnOGSuFuFLv/Sa+FDVRZl4GGVAAFFi8LecRsI5a1tMO5HIE8nCm4ivAlzt4dT3ol/PaaGC0rJEEXQmHJBGoOg== +eslint@^8.53.0: + version "8.53.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.53.0.tgz#14f2c8244298fcae1f46945459577413ba2697ce" + integrity sha512-N4VuiPjXDUa4xVeV/GC/RV3hQW9Nw+Y463lkWaKKXKYMvmRiRDAtfpuPFLN+E1/6ZhyR8J2ig+eVREnYgUsiag== dependencies: "@eslint-community/eslint-utils" "^4.2.0" "@eslint-community/regexpp" "^4.6.1" - "@eslint/eslintrc" "^2.1.2" - "@eslint/js" "8.50.0" - "@humanwhocodes/config-array" "^0.11.11" + "@eslint/eslintrc" "^2.1.3" + "@eslint/js" "8.53.0" + "@humanwhocodes/config-array" "^0.11.13" "@humanwhocodes/module-importer" "^1.0.1" "@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"