Skip to content

Commit 5bad357

Browse files
author
Oleksandr Dzhychko
authored
Merge pull request #1003 from modelix/deps/migrate-to-eslint-9
Migrate to ESLint 9
2 parents 31d40c2 + 0b2b2c5 commit 5bad357

27 files changed

+1819
-2638
lines changed

.github/workflows/linting.yml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,15 @@ jobs:
88
runs-on: ubuntu-latest
99
steps:
1010
- uses: actions/checkout@v4
11+
- uses: actions/setup-node@v4
12+
with:
13+
node-version: 20
14+
- uses: actions/cache@v4
15+
with:
16+
path: node_modules
17+
key: release-${{ hashFiles('package.json') }}-${{ hashFiles('package-lock.json') }}
18+
- name: Install dependencies
19+
run: npm ci
1120
- uses: actions/setup-python@v5
1221
- uses: pre-commit/[email protected]
1322

.pre-commit-config.yaml

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -37,15 +37,11 @@ repos:
3737
hooks:
3838
- id: prettier
3939
files: ^(vue-model-api)|(model-api-gen-gradle-test/vue-integration)|(model-client-js-test/model-client-connection)/
40-
- repo: https://github.com/pre-commit/mirrors-eslint
41-
# IMPORTANT: keep versions of hook and additional dependencies in sync with the versions configured in `vue-model-api/package.json`
42-
rev: v8.56.0
40+
- repo: "local"
4341
hooks:
4442
- id: eslint
45-
additional_dependencies:
46-
47-
48-
- "@typescript-eslint/[email protected]"
49-
- "@typescript-eslint/[email protected]"
50-
files: ^(vue-model-api)|(ts-model-api)/src/
51-
types: [ts]
43+
name: ESLint
44+
language: node
45+
entry: npm
46+
args: [ "run", "lint" ]
47+
types: [ file ]

eslint.config.mjs

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
import globals from "globals";
2+
import pluginJs from "@eslint/js";
3+
import tseslint from "typescript-eslint";
4+
import eslintConfigPrettier from "eslint-config-prettier";
5+
6+
export default [
7+
{ files: ["**/*.{js,mjs,cjs,ts}"] },
8+
{ ignores: ["**/.gradle", "**/dist/", "**/build/"] },
9+
{
10+
languageOptions: {
11+
ecmaVersion: "latest",
12+
sourceType: "module",
13+
globals: {
14+
...globals.browser,
15+
...globals.node,
16+
...globals.es2021
17+
},
18+
},
19+
},
20+
pluginJs.configs.recommended,
21+
...tseslint.configs.recommended,
22+
eslintConfigPrettier, // > Turns off all rules that are unnecessary or might conflict with Prettier.
23+
{
24+
// The Redocly plugin uses CommonJS syntax for imports and exports as in the Redocly documentation.
25+
files: ["model-server-openapi/**/*"],
26+
rules: {
27+
"@typescript-eslint/no-require-imports": "off"
28+
}
29+
},
30+
{
31+
rules: {
32+
"@typescript-eslint/consistent-type-imports": "error",
33+
"@typescript-eslint/no-import-type-side-effects": "error",
34+
"@typescript-eslint/no-unused-vars": [
35+
"error",
36+
{
37+
vars: "all",
38+
args: "after-used",
39+
varsIgnorePattern: "^_.+",
40+
argsIgnorePattern: "^_.+",
41+
},
42+
],
43+
"@typescript-eslint/ban-ts-comment": [
44+
"error",
45+
{ "ts-ignore": "allow-with-description" },
46+
],
47+
},
48+
},
49+
];

model-api-gen-gradle-test/typescript-generation/src/ChildrenAccessor.test.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,9 @@
44
* of the generated languages, we will conduct the test here for now.
55
*/
66

7+
import type {
8+
BaseCommentAttribute} from "../build/typescript_src/L_jetbrains_mps_lang_core";
79
import {
8-
BaseCommentAttribute,
910
C_BaseCommentAttribute,
1011
C_BaseConcept,
1112
C_TypeAnnotated,

model-api-gen-gradle-test/typescript-generation/src/test-helpers.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { org } from "@modelix/model-client";
2-
import { ITypedNode, LanguageRegistry } from "@modelix/ts-model-api";
2+
import type { ITypedNode} from "@modelix/ts-model-api";
3+
import { LanguageRegistry } from "@modelix/ts-model-api";
34
import { registerLanguages } from "../build/typescript_src";
45

56
const DEFAULT_NODE_DATA = {

model-api-gen-gradle-test/vue-integration/src/intergration.test.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
11
import { useModelsFromJson } from "@modelix/vue-model-api";
22
import { computed } from "vue";
33
import { registerLanguages } from "typescript-generation";
4+
import type { BaseConcept } from "typescript-generation/dist/L_jetbrains_mps_lang_core";
45
import {
5-
BaseConcept,
66
C_Attribute,
77
C_INamedConcept,
88
isOfConcept_INamedConcept,
99
} from "typescript-generation/dist/L_jetbrains_mps_lang_core";
10-
import {
10+
import type {
1111
StaticFieldReference,
1212
Classifier,
1313
} from "typescript-generation/dist/L_jetbrains_mps_baseLanguage";
1414

15-
import { ITypedNode, LanguageRegistry } from "@modelix/ts-model-api";
15+
import { LanguageRegistry } from "@modelix/ts-model-api";
1616

1717
registerLanguages();
1818

model-server/src/main/resources/public/content-explorer.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ function getExpandedNodeIds() {
1111
element => element.nextElementSibling?.getAttribute('data-nodeid'));
1212
}
1313

14+
// eslint-disable-next-line @typescript-eslint/no-unused-vars -- Used by HTML generated in Kotlin
1415
function scrollToElement(id) {
1516
document.getElementById(id).scrollIntoView();
1617
}

0 commit comments

Comments
 (0)