@chris.araneo/eslint-config 0.0.13 → 0.0.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/index.mjs +70 -0
  2. package/package.json +6 -3
  3. package/index.js +0 -118
package/index.mjs ADDED
@@ -0,0 +1,70 @@
1
+ import eslint from "@eslint/js";
2
+ import tseslint from "typescript-eslint";
3
+ import angular from "angular-eslint";
4
+ import eslintPluginJsonc from "eslint-plugin-jsonc";
5
+ import simpleImportSort from "eslint-plugin-simple-import-sort";
6
+ import jsoncParser from "jsonc-eslint-parser";
7
+
8
+ export default function createConfig(jsonFiles, sourceFiles, htmlFiles) {
9
+ return tseslint.config(
10
+ ...eslintPluginJsonc.configs["flat/recommended-with-jsonc"],
11
+ {
12
+ files: jsonFiles,
13
+ languageOptions: {
14
+ parser: jsoncParser,
15
+ },
16
+ },
17
+ {
18
+ files: sourceFiles,
19
+ extends: [
20
+ eslint.configs.all,
21
+ ...tseslint.configs.all,
22
+ ...angular.configs.tsAll,
23
+ ],
24
+ processor: angular.processInlineTemplates,
25
+ rules: {
26
+ "@angular-eslint/directive-selector": [
27
+ "error",
28
+ {
29
+ type: "attribute",
30
+ prefix: "app",
31
+ style: "camelCase",
32
+ },
33
+ ],
34
+ "@angular-eslint/component-selector": [
35
+ "error",
36
+ {
37
+ type: "element",
38
+ prefix: "app",
39
+ style: "kebab-case",
40
+ },
41
+ ],
42
+ "@typescript-eslint/no-extraneous-class": "off",
43
+ },
44
+ },
45
+ {
46
+ files: sourceFiles,
47
+ plugins: {
48
+ "simple-import-sort": simpleImportSort,
49
+ },
50
+ rules: {
51
+ "simple-import-sort/imports": "error",
52
+ "simple-import-sort/exports": "error",
53
+ },
54
+ },
55
+ {
56
+ files: htmlFiles,
57
+ extends: [...angular.configs.templateAll],
58
+ },
59
+ {
60
+ ignores: [
61
+ "node_modules/",
62
+ "reports/",
63
+ ".stryker-tmp/",
64
+ ".angular",
65
+ "package.json",
66
+ "package-lock.json",
67
+ ],
68
+ }
69
+ );
70
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@chris.araneo/eslint-config",
3
- "version": "0.0.13",
3
+ "version": "0.0.14",
4
4
  "description": "",
5
5
  "keywords": [
6
6
  "eslint",
@@ -14,9 +14,9 @@
14
14
  "license": "MIT",
15
15
  "author": "Krzysztof Pająk (Chris Araneo) <chris.araneo@gmail.com>",
16
16
  "type": "module",
17
- "main": "./index.js",
17
+ "main": "./index.mjs",
18
18
  "files": [
19
- "./index.js"
19
+ "./index.mjs"
20
20
  ],
21
21
  "scripts": {
22
22
  "format": "npx sort-package-json"
@@ -24,6 +24,9 @@
24
24
  "dependencies": {
25
25
  "angular-eslint": "^19.4.0",
26
26
  "eslint": "^9.27.0",
27
+ "eslint-plugin-jsonc": "^2.20.1",
28
+ "eslint-plugin-simple-import-sort": "^12.1.1",
29
+ "jsonc-eslint-parser": "^2.4.0",
27
30
  "typescript-eslint": "^8.32.1"
28
31
  },
29
32
  "publishConfig": {
package/index.js DELETED
@@ -1,118 +0,0 @@
1
- import angular from "angular-eslint";
2
- import typescript from "typescript-eslint";
3
-
4
- export default {
5
- typescript: [
6
- {
7
- files: ["**/*.ts"],
8
- plugins: {
9
- typescript,
10
- angular,
11
- },
12
- rules: {
13
- "@angular-eslint/component-class-suffix": [
14
- "error",
15
- { suffixes: ["Component", "Modal", "Page"] },
16
- ],
17
- "@angular-eslint/component-max-inline-declarations": "error",
18
- "@angular-eslint/component-selector": [
19
- "error",
20
- { type: "element", style: "kebab-case" },
21
- ],
22
- "@angular-eslint/consistent-component-styles": "error",
23
- "@angular-eslint/contextual-decorator": "error",
24
- "@angular-eslint/contextual-lifecycle": "error",
25
- "@angular-eslint/directive-class-suffix": "error",
26
- "@angular-eslint/directive-selector": [
27
- "error",
28
- { type: "attribute", style: "camelCase" },
29
- ],
30
- "@angular-eslint/no-async-lifecycle-method": "error",
31
- "@angular-eslint/no-attribute-decorator": "error",
32
- "@angular-eslint/no-conflicting-lifecycle": "error",
33
- "@angular-eslint/no-empty-lifecycle-method": "error",
34
- "@angular-eslint/no-forward-ref": "error",
35
- "@angular-eslint/no-input-prefix": ["error", { prefixes: ["on"] }],
36
- "@angular-eslint/no-input-rename": "error",
37
- "@angular-eslint/no-inputs-metadata-property": "error",
38
- "@angular-eslint/no-lifecycle-call": "error",
39
- "@angular-eslint/no-output-native": "error",
40
- "@angular-eslint/no-output-on-prefix": "error",
41
- "@angular-eslint/no-output-rename": "error",
42
- "@angular-eslint/no-outputs-metadata-property": "error",
43
- "@angular-eslint/no-pipe-impure": "error",
44
- "@angular-eslint/no-queries-metadata-property": "error",
45
- "@angular-eslint/prefer-output-readonly": "error",
46
- "@angular-eslint/prefer-standalone": "error",
47
- "@angular-eslint/relative-url-prefix": "error",
48
- "@angular-eslint/sort-lifecycle-methods": "error",
49
- "@angular-eslint/sort-ngmodule-metadata-arrays": "error",
50
- "@angular-eslint/use-component-view-encapsulation": "error",
51
- "@angular-eslint/use-injectable-provided-in": "error",
52
- "@angular-eslint/use-lifecycle-interface": "error",
53
- "@angular-eslint/use-pipe-transform-interface": "error",
54
- "@typescript-eslint/return-await": "error",
55
- "@typescript-eslint/lines-between-class-members": [
56
- "error",
57
- "always",
58
- { exceptAfterSingleLine: true },
59
- ],
60
- "@typescript-eslint/member-ordering": "error",
61
- "@typescript-eslint/no-explicit-any": "off",
62
- "@typescript-eslint/no-extraneous-class": [
63
- "error",
64
- { allowEmpty: true, allowStaticOnly: true },
65
- ],
66
- "@typescript-eslint/no-misused-promises": [
67
- "error",
68
- { checksVoidReturn: false },
69
- ],
70
- "@typescript-eslint/no-non-null-assertion": "off",
71
- "@typescript-eslint/prefer-destructuring": "error",
72
- "@typescript-eslint/prefer-optional-chain": "error",
73
- "@typescript-eslint/sort-type-constituents": "error",
74
- "@typescript-eslint/unbound-method": ["error", { ignoreStatic: true }],
75
- },
76
- },
77
- ],
78
- template: [
79
- {
80
- files: ["**/*.html"],
81
- plugins: {
82
- angular,
83
- },
84
- rules: {
85
- "@angular-eslint/template/attributes-order": [
86
- "error",
87
- { alphabetical: true },
88
- ],
89
- "@angular-eslint/template/banana-in-box": "error",
90
- "@angular-eslint/template/conditional-complexity": "error",
91
- "@angular-eslint/template/cyclomatic-complexity": [
92
- "error",
93
- { maxComplexity: 10 },
94
- ],
95
- "@angular-eslint/template/elements-content": "error",
96
- "@angular-eslint/template/eqeqeq": "error",
97
- "@angular-eslint/template/label-has-associated-control": "error",
98
- "@angular-eslint/template/mouse-events-have-key-events": "error",
99
- "@angular-eslint/template/no-any": "error",
100
- "@angular-eslint/template/no-autofocus": "error",
101
- "@angular-eslint/template/no-call-expression": "error",
102
- "@angular-eslint/template/no-distracting-elements": "error",
103
- "@angular-eslint/template/no-duplicate-attributes": "error",
104
- "@angular-eslint/template/no-interpolation-in-attributes": "error",
105
- "@angular-eslint/template/no-negated-async": "error",
106
- "@angular-eslint/template/no-positive-tabindex": "error",
107
- "@angular-eslint/template/prefer-self-closing-tags": "error",
108
- "@angular-eslint/template/role-has-required-aria": "error",
109
- "@angular-eslint/template/table-scope": "error",
110
- "@angular-eslint/template/use-track-by-function": [
111
- "error",
112
- { alias: ["ngForTrackByIndex", "ngForTrackByProperty"] },
113
- ],
114
- "@angular-eslint/template/valid-aria": "error",
115
- },
116
- },
117
- ],
118
- };