lint-suite 1.3.10 → 1.4.0

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.
@@ -122,10 +122,10 @@ var angular = defineConfig2([
122
122
  // Require ./ in templateUrl/styleUrl for portability
123
123
  "@angular-eslint/use-component-selector": "error",
124
124
  // All components must declare a selector
125
- "@angular-eslint/no-developer-preview": "error",
126
- // Block APIs marked @developerPreview (no breaking-change policy)
127
- "@angular-eslint/no-experimental": "error"
128
- // Block APIs marked @experimental
125
+ "@angular-eslint/no-developer-preview": "warn",
126
+ // Flag APIs marked @developerPreview (no breaking-change policy)
127
+ "@angular-eslint/no-experimental": "warn"
128
+ // Flag APIs marked @experimental
129
129
  }
130
130
  }
131
131
  ]);
@@ -265,17 +265,7 @@ var base = defineConfig3([
265
265
  ]
266
266
  }
267
267
  ],
268
- "@stylistic/comma-dangle": [
269
- "error",
270
- {
271
- functions: "never",
272
- arrays: "always-multiline",
273
- exports: "always-multiline",
274
- imports: "always-multiline",
275
- objects: "always-multiline",
276
- enums: "always-multiline"
277
- }
278
- ],
268
+ "@stylistic/comma-dangle": ["error", "never"],
279
269
  "@stylistic/indent": [
280
270
  "error",
281
271
  2,
@@ -367,43 +357,10 @@ var javascript = defineConfig4({
367
357
  extends: [...configs4["flat/javascript"]]
368
358
  });
369
359
 
370
- // packages/lint-suite/src/lib/jest.ts
371
- import jestEslint from "eslint-plugin-jest";
372
- import { defineConfig as defineConfig5 } from "eslint/config";
373
- var jest = defineConfig5([
374
- {
375
- files: ["**/*.spec.ts", "**/*.spec.js"],
376
- extends: [jestEslint.configs["flat/recommended"]],
377
- rules: {
378
- "jest/no-done-callback": "off",
379
- // Elevated from recommended defaults
380
- "jest/no-focused-tests": "error",
381
- "jest/no-identical-title": "error",
382
- "jest/valid-expect": "error",
383
- // Style rules (selective additions from flat/style)
384
- "jest/prefer-to-be": "warn",
385
- "jest/prefer-to-contain": "warn",
386
- "jest/prefer-to-have-length": "warn",
387
- // Best practice additions
388
- "jest/consistent-test-it": ["error", { fn: "it" }],
389
- "jest/prefer-comparison-matcher": "error",
390
- "jest/prefer-equality-matcher": "error",
391
- "jest/prefer-hooks-on-top": "error",
392
- "jest/prefer-spy-on": "error",
393
- "jest/prefer-strict-equal": "warn",
394
- "jest/prefer-mock-promise-shorthand": "error",
395
- "jest/no-conditional-in-test": "warn",
396
- "jest/no-duplicate-hooks": "error",
397
- "jest/no-test-return-statement": "error",
398
- "jest/require-to-throw-message": "warn"
399
- }
400
- }
401
- ]);
402
-
403
360
  // packages/lint-suite/src/lib/json.ts
404
361
  import jsonPlugin from "@eslint/json";
405
- import { defineConfig as defineConfig6 } from "eslint/config";
406
- var json = defineConfig6([
362
+ import { defineConfig as defineConfig5 } from "eslint/config";
363
+ var json = defineConfig5([
407
364
  {
408
365
  plugins: { json: jsonPlugin }
409
366
  },
@@ -416,13 +373,13 @@ var json = defineConfig6([
416
373
 
417
374
  // packages/lint-suite/src/lib/prettier.ts
418
375
  import eslintConfigPrettier from "eslint-config-prettier";
419
- import { defineConfig as defineConfig7 } from "eslint/config";
420
- var prettier = defineConfig7([eslintConfigPrettier]);
376
+ import { defineConfig as defineConfig6 } from "eslint/config";
377
+ var prettier = defineConfig6([eslintConfigPrettier]);
421
378
 
422
379
  // packages/lint-suite/src/lib/rxjs.ts
423
380
  import rxjsEslint from "@smarttools/eslint-plugin-rxjs";
424
- import { defineConfig as defineConfig8 } from "eslint/config";
425
- var rxjs = defineConfig8([
381
+ import { defineConfig as defineConfig7 } from "eslint/config";
382
+ var rxjs = defineConfig7([
426
383
  {
427
384
  files: [
428
385
  "**/*.js",
@@ -498,8 +455,8 @@ var rxjs = defineConfig8([
498
455
 
499
456
  // packages/lint-suite/src/lib/storybook.ts
500
457
  import storybookEslint from "eslint-plugin-storybook";
501
- import { defineConfig as defineConfig9 } from "eslint/config";
502
- var storybook = defineConfig9([
458
+ import { defineConfig as defineConfig8 } from "eslint/config";
459
+ var storybook = defineConfig8([
503
460
  {
504
461
  ignores: ["!.storybook"],
505
462
  files: ["**/*.stories.ts"],
@@ -517,7 +474,7 @@ var storybook = defineConfig9([
517
474
  import { configs as configs5 } from "@nx/eslint-plugin";
518
475
  import { createTypeScriptImportResolver } from "eslint-import-resolver-typescript";
519
476
  import importPluginX2 from "eslint-plugin-import-x";
520
- import { defineConfig as defineConfig10 } from "eslint/config";
477
+ import { defineConfig as defineConfig9 } from "eslint/config";
521
478
 
522
479
  // packages/lint-suite/src/lib/rules/explicit-accessibility.ts
523
480
  import { ESLintUtils, TSESTree } from "@typescript-eslint/utils";
@@ -658,7 +615,7 @@ var localTypescriptRules = {
658
615
  "explicit-accessibility": explicit_accessibility_default
659
616
  }
660
617
  };
661
- var typescript = defineConfig10([
618
+ var typescript = defineConfig9([
662
619
  // NOTE: Checks for 'prettier' and 'eslint-plugin-prettier'
663
620
  {
664
621
  files: ["**/*.ts", "**/*.tsx", "**/*.cts", "**/*.mts"],
@@ -936,11 +893,11 @@ var typescript = defineConfig10([
936
893
 
937
894
  // packages/lint-suite/src/lib/vitest.ts
938
895
  import vitestEslint from "@vitest/eslint-plugin";
939
- import { defineConfig as defineConfig11 } from "eslint/config";
896
+ import { defineConfig as defineConfig10 } from "eslint/config";
940
897
  var vitestPlugin = {
941
898
  vitest: vitestEslint
942
899
  };
943
- var vitest = defineConfig11([
900
+ var vitest = defineConfig10([
944
901
  {
945
902
  files: ["**/*.spec.ts", "**/*.spec.js", "**/*.test.ts", "**/*.test.js"],
946
903
  plugins: vitestPlugin,
@@ -965,8 +922,8 @@ var vitest = defineConfig11([
965
922
 
966
923
  // packages/lint-suite/src/lib/playwright.ts
967
924
  import playwrightEslint from "eslint-plugin-playwright";
968
- import { defineConfig as defineConfig12 } from "eslint/config";
969
- var playwright = defineConfig12([
925
+ import { defineConfig as defineConfig11 } from "eslint/config";
926
+ var playwright = defineConfig11([
970
927
  {
971
928
  ...playwrightEslint.configs["flat/recommended"],
972
929
  files: ["**/*.e2e.ts", "**/*.e2e.js"],
@@ -990,8 +947,8 @@ var playwright = defineConfig12([
990
947
 
991
948
  // packages/lint-suite/src/lib/boundaries.ts
992
949
  import boundariesPlugin from "eslint-plugin-boundaries";
993
- import { defineConfig as defineConfig13 } from "eslint/config";
994
- var boundaries = defineConfig13([
950
+ import { defineConfig as defineConfig12 } from "eslint/config";
951
+ var boundaries = defineConfig12([
995
952
  {
996
953
  files: [
997
954
  "**/*.js",
@@ -1039,35 +996,57 @@ var boundaries = defineConfig13([
1039
996
  },
1040
997
  rules: {
1041
998
  ...boundariesPlugin.configs.recommended.rules,
1042
- "boundaries/element-types": [
999
+ "boundaries/dependencies": [
1043
1000
  "error",
1044
1001
  {
1045
1002
  default: "disallow",
1046
1003
  message: "${dependency.type} is not allowed to be imported in ${file.type}",
1047
1004
  rules: [
1048
1005
  {
1049
- from: "feature",
1050
- allow: ["feature", "ui", "domain-logic", "utils", "common"]
1006
+ from: { type: "feature" },
1007
+ allow: [
1008
+ { to: { type: "feature" } },
1009
+ { to: { type: "ui" } },
1010
+ { to: { type: "domain-logic" } },
1011
+ { to: { type: "utils" } },
1012
+ { to: { type: "common" } }
1013
+ ]
1051
1014
  },
1052
1015
  {
1053
- from: "domain-logic",
1054
- allow: ["domain-logic", "data-access", "utils", "common"]
1016
+ from: { type: "domain-logic" },
1017
+ allow: [
1018
+ { to: { type: "domain-logic" } },
1019
+ { to: { type: "data-access" } },
1020
+ { to: { type: "utils" } },
1021
+ { to: { type: "common" } }
1022
+ ]
1055
1023
  },
1056
1024
  {
1057
- from: "data-access",
1058
- allow: ["data-access", "utils", "common"]
1025
+ from: { type: "data-access" },
1026
+ allow: [
1027
+ { to: { type: "data-access" } },
1028
+ { to: { type: "utils" } },
1029
+ { to: { type: "common" } }
1030
+ ]
1059
1031
  },
1060
1032
  {
1061
- from: "ui",
1062
- allow: ["ui", "utils", "common"]
1033
+ from: { type: "ui" },
1034
+ allow: [
1035
+ { to: { type: "ui" } },
1036
+ { to: { type: "utils" } },
1037
+ { to: { type: "common" } }
1038
+ ]
1063
1039
  },
1064
1040
  {
1065
- from: "utils",
1066
- allow: ["utils", "common"]
1041
+ from: { type: "utils" },
1042
+ allow: [
1043
+ { to: { type: "utils" } },
1044
+ { to: { type: "common" } }
1045
+ ]
1067
1046
  },
1068
1047
  {
1069
- from: "common",
1070
- allow: ["common"]
1048
+ from: { type: "common" },
1049
+ allow: [{ to: { type: "common" } }]
1071
1050
  }
1072
1051
  ]
1073
1052
  }
@@ -1077,25 +1056,18 @@ var boundaries = defineConfig13([
1077
1056
  {
1078
1057
  files: ["**/*.stories.ts"],
1079
1058
  rules: {
1080
- "boundaries/element-types": "off"
1059
+ "boundaries/dependencies": "off"
1081
1060
  }
1082
1061
  }
1083
1062
  ]);
1084
1063
 
1085
- // packages/lint-suite/src/index.ts
1064
+ // packages/lint-suite/src/eslint.ts
1086
1065
  var recommended = [
1087
1066
  ...base,
1088
1067
  ...javascript,
1089
1068
  ...typescript,
1090
- ...angular,
1091
- ...angularTemplate,
1092
- ...rxjs,
1093
- ...jest,
1094
1069
  ...json,
1095
1070
  ...boundaries,
1096
- ...storybook,
1097
- ...vitest,
1098
- ...playwright,
1099
1071
  ...prettier
1100
1072
  // Must be last to disable formatting rules that conflict with Prettier
1101
1073
  ];
@@ -1105,7 +1077,6 @@ export {
1105
1077
  base,
1106
1078
  boundaries,
1107
1079
  javascript,
1108
- jest,
1109
1080
  json,
1110
1081
  playwright,
1111
1082
  prettier,
@@ -1115,4 +1086,4 @@ export {
1115
1086
  typescript,
1116
1087
  vitest
1117
1088
  };
1118
- //# sourceMappingURL=index.js.map
1089
+ //# sourceMappingURL=eslint.js.map
package/eslint.js.map ADDED
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../packages/lint-suite/src/lib/angular-template.ts", "../../../../packages/lint-suite/src/lib/angular.ts", "../../../../packages/lint-suite/src/lib/base.ts", "../../../../packages/lint-suite/src/lib/javascript.ts", "../../../../packages/lint-suite/src/lib/json.ts", "../../../../packages/lint-suite/src/lib/prettier.ts", "../../../../packages/lint-suite/src/lib/rxjs.ts", "../../../../packages/lint-suite/src/lib/storybook.ts", "../../../../packages/lint-suite/src/lib/typescript.ts", "../../../../packages/lint-suite/src/lib/rules/explicit-accessibility.ts", "../../../../packages/lint-suite/src/lib/vitest.ts", "../../../../packages/lint-suite/src/lib/playwright.ts", "../../../../packages/lint-suite/src/lib/boundaries.ts", "../../../../packages/lint-suite/src/eslint.ts"],
4
+ "sourcesContent": ["import { configs } from 'angular-eslint';\nimport { defineConfig } from 'eslint/config';\nimport type { Config } from 'eslint/config';\n\nexport const angularTemplate = defineConfig([\n {\n files: ['**/*.html'],\n extends: [\n ...(configs.templateAccessibility as Config[]),\n ...(configs.templateRecommended as Config[])\n ],\n rules: {\n '@angular-eslint/template/prefer-template-literal': 'error',\n '@angular-eslint/template/no-any': 'error',\n '@angular-eslint/template/no-duplicate-attributes': 'error',\n '@angular-eslint/template/button-has-type': 'error',\n '@angular-eslint/template/no-positive-tabindex': 'error',\n '@angular-eslint/template/valid-aria': 'error',\n '@angular-eslint/template/alt-text': 'error',\n '@angular-eslint/template/elements-content': 'error',\n '@angular-eslint/template/click-events-have-key-events': 'error',\n '@angular-eslint/template/mouse-events-have-key-events': 'error',\n '@angular-eslint/template/table-scope': 'error',\n '@angular-eslint/template/no-autofocus': 'error',\n '@angular-eslint/template/no-distracting-elements': 'error',\n '@angular-eslint/template/prefer-control-flow': 'error',\n '@angular-eslint/template/prefer-self-closing-tags': 'error',\n '@angular-eslint/template/prefer-ngsrc': 'error',\n '@angular-eslint/template/prefer-built-in-pipes': 'error',\n '@angular-eslint/template/no-interpolation-in-attributes': 'error',\n '@angular-eslint/template/no-nested-tags': 'error',\n '@angular-eslint/template/use-track-by-function': 'error',\n '@angular-eslint/template/label-has-associated-control': 'error',\n '@angular-eslint/template/prefer-at-else': 'error', // v21: @if/@else syntax\n '@angular-eslint/template/prefer-at-empty': 'error', // v21: @for/@empty syntax\n '@angular-eslint/template/prefer-contextual-for-variables': 'error', // v21: Use $index, $first, etc.\n '@angular-eslint/template/no-empty-control-flow': 'error', // v21: Catch incomplete refactoring\n '@angular-eslint/template/prefer-class-binding': 'error', // v21.2.0: Prefer [class] over ngClass\n '@angular-eslint/template/prefer-static-string-properties': 'error', // Reduce change detection\n '@angular-eslint/template/no-non-null-assertion': 'error', // Forbid `!` assertions in templates\n '@angular-eslint/template/no-inline-styles': 'error', // Forbid inline style=\"...\" attributes\n '@angular-eslint/template/conditional-complexity': [\n 'warn',\n { maxComplexity: 5 }\n ], // Template readability\n '@angular-eslint/template/attributes-order': [\n 'error',\n {\n alphabetical: true,\n order: [\n 'STRUCTURAL_DIRECTIVE', // e.g. `*ngIf=\"true\"`, `*ngFor=\"let item of items\"`\n 'TEMPLATE_REFERENCE', // e.g. `<input #inputRef>`\n 'INPUT_BINDING', // e.g. `[id]=\"3\"`, `[attr.colspan]=\"colspan\"`, [style.width.%]=\"100\", [@triggerName]=\"expression\", `bind-id=\"handleChange()\"`\n 'TWO_WAY_BINDING', // e.g. `[(id)]=\"id\"`, `bindon-id=\"id\"\n 'ATTRIBUTE_BINDING', // e.g. `<input required>`, `id=\"3\"`\n 'OUTPUT_BINDING' // e.g. `(idChange)=\"handleChange()\"`, `on-id=\"handleChange()\"`\n ]\n }\n ]\n }\n }\n]);\n", "import globals from 'globals';\nimport { configs, processInlineTemplates } from 'angular-eslint';\nimport { defineConfig } from 'eslint/config';\nimport type { Config } from 'eslint/config';\n\nexport const angular = defineConfig([\n {\n files: ['**/*.ts'],\n extends: [...(configs.tsRecommended as Config[])],\n languageOptions: {\n globals: {\n ...globals.browser,\n ...globals.es2025,\n ...globals.node\n }\n },\n processor: processInlineTemplates,\n rules: {\n '@angular-eslint/prefer-on-push-component-change-detection': 'error',\n '@angular-eslint/prefer-signals': 'error',\n '@angular-eslint/use-injectable-provided-in': 'error',\n '@angular-eslint/prefer-signal-model': 'error',\n '@angular-eslint/no-uncalled-signals': 'error',\n '@angular-eslint/prefer-host-metadata-property': 'error',\n '@angular-eslint/no-implicit-take-until-destroyed': 'error', // v21.2.0: Enforce explicit DestroyRef\n '@angular-eslint/no-async-lifecycle-method': 'error', // Prevent async lifecycle hooks\n '@angular-eslint/prefer-output-readonly': 'warn', // Prevent accidental reassignment\n '@angular-eslint/prefer-output-emitter-ref': 'warn', // Modern output() function over @Output()\n '@angular-eslint/sort-lifecycle-methods': 'warn', // Consistent lifecycle method ordering\n '@angular-eslint/computed-must-return': 'error', // Catch silent computed() bugs missing a return\n '@angular-eslint/no-conflicting-lifecycle': 'error', // Block incompatible hook combinations (OnChanges + DoCheck)\n '@angular-eslint/no-duplicates-in-metadata-arrays': 'error', // Catch duplicate imports/providers in @Component/@NgModule\n '@angular-eslint/no-lifecycle-call': 'error', // Forbid manual this.ngOnInit() calls\n '@angular-eslint/require-lifecycle-on-prototype': 'error', // Lifecycle hooks must be methods, not arrow-fn fields\n '@angular-eslint/relative-url-prefix': 'error', // Require ./ in templateUrl/styleUrl for portability\n '@angular-eslint/use-component-selector': 'error', // All components must declare a selector\n '@angular-eslint/no-developer-preview': 'warn', // Flag APIs marked @developerPreview (no breaking-change policy)\n '@angular-eslint/no-experimental': 'warn' // Flag APIs marked @experimental\n }\n }\n]);\n", "import { configs } from '@nx/eslint-plugin';\nimport stylistic from '@stylistic/eslint-plugin';\nimport importPluginX from 'eslint-plugin-import-x';\nimport { defineConfig } from 'eslint/config';\n\nexport const base = defineConfig([\n { extends: [...configs['flat/base']] },\n {\n files: [\n '**/*.js',\n '**/*.jsx',\n '**/*.cjs',\n '**/*.mjs',\n '**/*.ts',\n '**/*.tsx',\n '**/*.cts',\n '**/*.mts'\n ],\n extends: [importPluginX.flatConfigs.recommended]\n },\n {\n files: [\n '**/*.js',\n '**/*.jsx',\n '**/*.cjs',\n '**/*.mjs',\n '**/*.ts',\n '**/*.tsx',\n '**/*.cts',\n '**/*.mts'\n ],\n extends: [stylistic.configs.recommended]\n },\n {\n files: [\n '**/*.js',\n '**/*.jsx',\n '**/*.cjs',\n '**/*.mjs',\n '**/*.ts',\n '**/*.tsx',\n '**/*.cts',\n '**/*.mts'\n ],\n rules: {\n 'no-param-reassign': 'error',\n 'no-alert': 'error',\n 'no-console': ['warn', { allow: ['warn', 'error'] }],\n 'no-debugger': 'error',\n eqeqeq: ['error', 'always', { null: 'ignore' }],\n curly: ['error', 'multi'],\n 'prefer-const': ['error', { destructuring: 'all' }],\n 'no-var': 'error',\n 'object-shorthand': 'error',\n 'prefer-arrow-callback': 'error',\n 'no-useless-concat': 'error',\n 'prefer-template': 'error',\n 'no-nested-ternary': 'error',\n 'no-useless-assignment': 'error', // NEW: Catch unused assignments (ESLint v9)\n 'no-object-constructor': 'error', // Disallow new Object() without arguments\n 'no-else-return': ['error', { allowElseIf: false }], // Prefer early returns\n 'no-multi-assign': 'error', // Disallow chaining assignments\n radix: 'error', // Require radix parameter for parseInt()\n yoda: 'error', // Disallow yoda conditions (`if (\"red\" === color)`)\n complexity: ['warn', 10], // Warn if function complexity is high\n 'max-depth': ['warn', 4], // Warn on deeply nested blocks\n 'max-lines-per-function': [\n 'warn',\n { max: 50, skipBlankLines: true, skipComments: true }\n ], // Warn on long functions\n 'max-params': ['warn', 4], // Warn on functions with many parameters\n 'no-lonely-if': 'error', // Disallow if statements as the only statement in an else block\n 'grouped-accessor-pairs': ['error', 'getBeforeSet'], // Enforce consistency for getters/setters\n 'class-methods-use-this': 'error',\n 'no-underscore-dangle': 'error',\n 'max-len': [\n 'error',\n {\n code: 135,\n ignoreComments: true\n }\n ],\n 'spaced-comment': [\n 2,\n 'always',\n {\n block: {\n exceptions: ['*']\n }\n }\n ],\n '@stylistic/padding-line-between-statements': [\n 'error',\n {\n blankLine: 'always',\n prev: 'export',\n next: ['export', 'const']\n },\n {\n blankLine: 'always',\n prev: ['const', 'let', 'var'],\n next: '*'\n },\n {\n blankLine: 'any',\n prev: ['const', 'let', 'var'],\n next: ['const', 'let', 'var']\n },\n {\n blankLine: 'always',\n prev: '*',\n next: [\n 'for',\n 'if',\n 'return',\n 'throw',\n 'switch',\n 'try',\n 'class',\n 'function'\n ]\n }\n ],\n '@stylistic/comma-dangle': ['error', 'never'],\n '@stylistic/indent': [\n 'error',\n 2,\n {\n offsetTernaryExpressions: true,\n SwitchCase: 1,\n ignoredNodes: [\n 'TSTypeParameterInstantiation',\n 'FunctionExpression > .params > :matches(Decorator, :not(:first-child))'\n ]\n }\n ],\n 'sort-imports': [\n 'error',\n {\n ignoreCase: false,\n ignoreDeclarationSort: true,\n ignoreMemberSort: false,\n memberSyntaxSortOrder: ['none', 'all', 'multiple', 'single'],\n allowSeparatedGroups: true\n }\n ]\n }\n },\n {\n files: [\n '**/*.js',\n '**/*.jsx',\n '**/*.cjs',\n '**/*.mjs',\n '**/*.ts',\n '**/*.tsx',\n '**/*.cts',\n '**/*.mts',\n '**/*.html'\n ],\n rules: {\n 'max-lines': [\n 'error',\n {\n max: 150,\n skipBlankLines: true,\n skipComments: true\n }\n ]\n }\n },\n {\n files: [\n '**/*.spec.ts',\n '**/*.test.ts',\n '**/*.spec.js',\n '**/*.test.js',\n '**/*.e2e.ts',\n '**/*.e2e.js'\n ],\n rules: {\n 'max-lines-per-function': 'off',\n complexity: ['warn', { max: 3 }],\n 'max-lines': [\n 'error',\n {\n max: 300,\n skipBlankLines: true,\n skipComments: true\n }\n ]\n }\n },\n {\n files: ['**/*.action.ts'],\n rules: {\n 'max-classes-per-file': 'off'\n }\n },\n {\n files: ['**/*.state.ts'],\n rules: {\n 'class-methods-use-this': 'off'\n }\n }\n]);\n", "import { configs } from '@nx/eslint-plugin';\nimport { defineConfig } from 'eslint/config';\nimport type { Config } from 'eslint/config';\n\nexport const javascript = defineConfig({\n files: ['**/*.js', '**/*.jsx', '**/*.cjs', '**/*.mjs'],\n extends: [...(configs['flat/javascript'] as Config[])]\n});\n", "import jsonPlugin from '@eslint/json';\nimport { defineConfig } from 'eslint/config';\n\nexport const json = defineConfig([\n {\n plugins: { json: jsonPlugin }\n },\n {\n files: ['**/*.json'],\n language: 'json/json',\n extends: [jsonPlugin.configs.recommended]\n }\n]);\n", "import eslintConfigPrettier from 'eslint-config-prettier';\nimport { defineConfig } from 'eslint/config';\n\nexport const prettier = defineConfig([eslintConfigPrettier]);\n", "import rxjsEslint from '@smarttools/eslint-plugin-rxjs';\nimport { defineConfig } from 'eslint/config';\n\nexport const rxjs = defineConfig([\n {\n files: [\n '**/*.js',\n '**/*.jsx',\n '**/*.cjs',\n '**/*.mjs',\n '**/*.ts',\n '**/*.tsx',\n '**/*.cts',\n '**/*.mts'\n ],\n languageOptions: {\n parserOptions: {\n projectService: true\n }\n },\n extends: [rxjsEslint.configs.recommended]\n },\n {\n files: [\n '**/*.js',\n '**/*.jsx',\n '**/*.cjs',\n '**/*.mjs',\n '**/*.ts',\n '**/*.tsx',\n '**/*.cts',\n '**/*.mts'\n ],\n plugins: {\n rxjs: rxjsEslint\n }\n },\n {\n files: [\n '**/*.js',\n '**/*.jsx',\n '**/*.cjs',\n '**/*.mjs',\n '**/*.ts',\n '**/*.tsx',\n '**/*.cts',\n '**/*.mts'\n ],\n rules: {\n 'rxjs/prefer-observer': 'error',\n 'rxjs/finnish': 'warn',\n 'rxjs/no-ignored-subscription': 'warn',\n 'rxjs/no-ignored-error': 'warn',\n 'rxjs/no-unsafe-switchmap': 'error',\n 'rxjs/no-unsafe-takeuntil': 'error',\n 'rxjs/no-unsafe-catch': 'error',\n 'rxjs/no-unsafe-first': 'error',\n 'rxjs/no-topromise': 'error',\n 'rxjs/throw-error': 'error',\n 'rxjs/no-async-subscribe': 'off',\n 'rxjs/no-exposed-subjects': 'error', // Enforce subject encapsulation\n 'rxjs/no-cyclic-action': 'error', // Prevent infinite loops in NgRx effects\n 'rxjs/no-subscribe-handlers': 'warn' // Prefer observer objects (complements prefer-observer)\n }\n },\n {\n files: ['**/*.spec.ts', '**/*.test.ts', '**/*.spec.js', '**/*.test.js'],\n rules: {\n 'rxjs/no-ignored-subscription': 'off',\n 'rxjs/no-subscribe-handlers': 'off'\n }\n }\n]);\n", "import storybookEslint from 'eslint-plugin-storybook';\nimport { defineConfig } from 'eslint/config';\n\nexport const storybook = defineConfig([\n {\n ignores: ['!.storybook'],\n files: ['**/*.stories.ts'],\n extends: [storybookEslint.configs['flat/recommended']],\n rules: {\n 'storybook/csf-component': 'warn', // Ensure component property is set\n 'storybook/no-stories-of': 'error' // Prevent deprecated storiesOf API\n }\n }\n]);\n", "import { configs } from '@nx/eslint-plugin';\nimport { createTypeScriptImportResolver } from 'eslint-import-resolver-typescript';\nimport importPluginX from 'eslint-plugin-import-x';\nimport { defineConfig } from 'eslint/config';\nimport type { Config } from 'eslint/config';\n\nimport explicitAccessibilityRule from './rules/explicit-accessibility.js';\n\nconst localTypescriptRules: Record<string, unknown> = {\n rules: {\n 'explicit-accessibility': explicitAccessibilityRule\n }\n};\n\nexport const typescript = defineConfig([\n // NOTE: Checks for 'prettier' and 'eslint-plugin-prettier'\n {\n files: ['**/*.ts', '**/*.tsx', '**/*.cts', '**/*.mts'],\n extends: [\n importPluginX.flatConfigs.typescript,\n ...(configs['flat/typescript'] as Config[])\n ]\n },\n {\n files: ['**/*.ts', '**/*.tsx', '**/*.cts', '**/*.mts'],\n plugins: { local: localTypescriptRules },\n rules: {\n 'local/explicit-accessibility': 'error',\n '@typescript-eslint/explicit-member-accessibility': 'error',\n '@typescript-eslint/explicit-function-return-type': 'error',\n '@typescript-eslint/no-empty-function': 'error',\n '@typescript-eslint/no-unused-vars': 'error',\n '@typescript-eslint/no-use-before-define': 'error',\n\n // A. Eliminating `any` (already covered by strict-type-checked, but explicit for clarity)\n '@typescript-eslint/no-explicit-any': 'error',\n '@typescript-eslint/no-unsafe-assignment': 'error',\n '@typescript-eslint/no-unsafe-call': 'error',\n '@typescript-eslint/no-unsafe-member-access': 'error',\n '@typescript-eslint/no-unsafe-return': 'error',\n '@typescript-eslint/no-unsafe-argument': 'error',\n\n // New v8 type-safety rules (replacements for deprecated ban-types)\n '@typescript-eslint/no-empty-object-type': 'error', // Bans confusing {} type\n '@typescript-eslint/no-unsafe-function-type': 'error', // Bans Function type\n '@typescript-eslint/no-wrapper-object-types': 'error', // Bans Number, String, Boolean wrappers\n\n // B. Explicit Annotations (partially covered, explicit module boundaries is key)\n '@typescript-eslint/explicit-module-boundary-types': 'error',\n // Consider enabling if maximum explicitness is desired, even if verbose:\n\n // C. Null/Undefined Safety (Requires strictNullChecks)\n '@typescript-eslint/no-non-null-assertion': 'error',\n '@typescript-eslint/prefer-nullish-coalescing': 'error',\n '@typescript-eslint/prefer-optional-chain': 'error',\n\n // D. Promise Handling (Supplementing plugin:promise/recommended)\n '@typescript-eslint/no-floating-promises': [\n 'error',\n { ignoreVoid: true }\n ],\n '@typescript-eslint/no-misused-promises': 'warn', // Already in recommended-type-checked\n '@typescript-eslint/promise-function-async': 'error',\n '@typescript-eslint/await-thenable': 'error', // Already in recommended-type-checked\n\n // E. Best Practices & Potential Errors (Some covered by presets, fine-tuning here)\n '@typescript-eslint/no-inferrable-types': 'warn', // Keep as warn or disable if inference is preferred\n '@typescript-eslint/no-require-imports': 'error', // Use ES modules (replaces deprecated no-var-requires)\n '@typescript-eslint/only-throw-error': 'error', // Replaces deprecated no-throw-literal\n '@typescript-eslint/no-array-delete': 'error', // Prevents delete arr[0]\n '@typescript-eslint/return-await': ['error', 'in-try-catch'], // Better stack traces in try/catch\n '@typescript-eslint/require-await': 'error',\n '@typescript-eslint/restrict-template-expressions': [\n 'error',\n { allowNumber: true, allowBoolean: true }\n ], // Allow numbers/booleans in templates\n '@typescript-eslint/restrict-plus-operands': 'error', // Enforce consistent types for '+'\n '@typescript-eslint/prefer-as-const': 'error',\n '@typescript-eslint/no-shadow': 'error',\n '@typescript-eslint/switch-exhaustiveness-check': 'error', // Ensure switch on unions is exhaustive\n '@typescript-eslint/no-unused-expressions': [\n 'error',\n { allowShortCircuit: true, allowTernary: true }\n ],\n '@typescript-eslint/no-useless-constructor': 'error',\n '@typescript-eslint/dot-notation': ['error', { allowKeywords: true }], // Prefer dot notation where possible\n\n // Strict type-checked rules\n '@typescript-eslint/no-unnecessary-condition': 'error', // Catches always-true/false conditions\n '@typescript-eslint/no-confusing-void-expression': [\n 'error',\n { ignoreArrowShorthand: true, ignoreVoidOperator: true }\n ], // Prevent confusing void usage\n '@typescript-eslint/no-dynamic-delete': 'error', // Use Map instead of delete obj[key]\n '@typescript-eslint/no-extraneous-class': [\n 'error',\n { allowWithDecorator: true }\n ], // Allow Angular classes\n '@typescript-eslint/no-invalid-void-type': 'error', // Restrict void to return types\n '@typescript-eslint/unified-signatures': 'error', // Merge overloads where possible\n '@typescript-eslint/no-non-null-asserted-nullish-coalescing': 'error', // Forbids foo! ?? bar\n\n // Stylistic type-checked rules\n '@typescript-eslint/prefer-find': 'error', // Use find() instead of filter()[0]\n '@typescript-eslint/prefer-for-of': 'error', // Modern iteration\n '@typescript-eslint/prefer-includes': 'error', // indexOf() \u2192 includes()\n '@typescript-eslint/prefer-string-starts-ends-with': 'error', // Modern string methods\n '@typescript-eslint/prefer-regexp-exec': 'error', // Better regex performance\n\n // F. Consistency & Style (Some covered by stylistic-type-checked)\n '@typescript-eslint/consistent-type-assertions': [\n 'error',\n { assertionStyle: 'as', objectLiteralTypeAssertions: 'never' }\n ],\n '@typescript-eslint/consistent-type-definitions': ['error', 'type'],\n '@typescript-eslint/consistent-type-imports': [\n 'error',\n { prefer: 'type-imports', fixStyle: 'separate-type-imports' }\n ],\n '@typescript-eslint/naming-convention': [\n 'error',\n {\n selector: 'objectLiteralProperty',\n modifiers: ['requiresQuotes'],\n format: null\n },\n {\n selector: 'objectLiteralProperty',\n format: ['camelCase', 'snake_case', 'PascalCase']\n },\n {\n selector: 'parameter',\n format: ['camelCase'],\n leadingUnderscore: 'allow'\n },\n { selector: 'default', format: ['camelCase'] },\n { selector: 'variable', format: ['camelCase', 'UPPER_CASE'] },\n { selector: 'function', format: ['camelCase'] },\n { selector: 'typeLike', format: ['PascalCase'] },\n {\n selector: 'property',\n modifiers: ['requiresQuotes'],\n format: null\n },\n {\n selector: 'property',\n format: ['camelCase', 'PascalCase', 'snake_case']\n }\n ],\n 'import-x/order': [\n 'error',\n {\n groups: [\n 'builtin',\n 'external',\n 'internal',\n ['parent', 'sibling'],\n 'index',\n 'unknown'\n ],\n pathGroups: [\n {\n pattern: '@angular/**',\n group: 'builtin',\n position: 'before'\n },\n {\n pattern: '@nestjs/**',\n group: 'builtin',\n position: 'before'\n },\n {\n pattern: '@shared/**',\n group: 'internal',\n position: 'before'\n },\n {\n pattern: '@backend/**',\n group: 'internal',\n position: 'before'\n },\n {\n pattern: '@frontend/**',\n group: 'internal',\n position: 'before'\n },\n {\n pattern: '@*/shared/**',\n group: 'internal',\n position: 'before'\n },\n {\n pattern: '@*/frontend/**',\n group: 'internal',\n position: 'after'\n },\n {\n pattern: '@*/backend/**',\n group: 'internal',\n position: 'after'\n }\n ],\n pathGroupsExcludedImportTypes: ['builtin'],\n 'newlines-between': 'always',\n alphabetize: { order: 'asc', caseInsensitive: true }\n }\n ],\n 'import-x/no-unresolved': 'error',\n 'import-x/no-duplicates': 'error',\n 'import-x/prefer-default-export': 'off',\n 'import-x/no-useless-path-segments': ['error', { noUselessIndex: true }],\n 'import-x/newline-after-import': 'error',\n 'import-x/first': 'error',\n 'import-x/no-mutable-exports': 'error',\n 'import-x/no-self-import': 'error', // Prevents modules importing themselves\n 'import-x/no-cycle': ['error', { maxDepth: 2, ignoreExternal: true }], // Prevents circular dependencies\n 'import-x/consistent-type-specifier-style': ['error', 'prefer-top-level'], // Consistent type imports\n 'import-x/no-anonymous-default-export': 'error' // Improve code searchability\n },\n settings: {\n 'import-x/resolver-next': [\n createTypeScriptImportResolver({\n alwaysTryTypes: true\n })\n ]\n }\n },\n {\n files: ['**/*.ts', '**/*.tsx', '**/*.cts', '**/*.mts'],\n languageOptions: {\n parserOptions: {\n projectService: true\n }\n },\n rules: {\n '@typescript-eslint/prefer-readonly': 'error'\n }\n },\n {\n files: ['**/*.action.ts'],\n rules: {\n '@typescript-eslint/no-namespace': 'off',\n '@typescript-eslint/no-extraneous-class': 'off'\n }\n },\n {\n files: [\n '**/*.spec.ts',\n '**/*.test.ts',\n '**/*.spec.js',\n '**/*.test.js',\n '**/*.e2e.ts',\n '**/*.e2e.js'\n ],\n rules: {\n '@typescript-eslint/no-empty-function': 'off',\n '@typescript-eslint/no-unbound-method': 'off',\n '@typescript-eslint/consistent-type-assertions': 'off'\n }\n },\n {\n files: ['**/*.stories.ts'],\n rules: {\n '@typescript-eslint/consistent-type-assertions': 'off',\n '@typescript-eslint/naming-convention': 'off'\n }\n }\n]);\n", "import { ESLintUtils, TSESTree } from '@typescript-eslint/utils';\n\nconst createRule = ESLintUtils.RuleCreator(\n () => 'https://eslint.org/docs/latest/rules/no-unused-private-class-members'\n);\n\ntype AccessibilityLevel = 'public' | 'private' | 'protected';\n\ntype Options = [\n {\n defaultAccessibility?: AccessibilityLevel;\n }\n];\n\nconst defaultOptions: Options[0] = {\n defaultAccessibility: 'private'\n};\n\nconst getNodeName = (\n node: TSESTree.Node | TSESTree.Token | null | undefined\n): string => {\n if (!node) {\n return '<unknown>';\n }\n\n /*\n * MethodDefinition or PropertyDefinition (check 'key' first)\n * Note: Check 'key' before 'kind' because MethodDefinition has both\n */\n if ('key' in node && node.key) {\n if (node.key.type === TSESTree.AST_NODE_TYPES.Identifier) {\n return node.key.name;\n }\n // Handle computed property names, private identifiers (#name), etc. if needed\n if (node.key.type === TSESTree.AST_NODE_TYPES.PrivateIdentifier) {\n return `#${node.key.name}`;\n }\n return '<computed/complex key>';\n }\n\n // Constructor specific check (if key check didn't catch it - unlikely for MethodDefinition)\n if ('kind' in node && node.kind === 'constructor') {\n return 'constructor';\n }\n\n // TSParameterProperty - handle its 'parameter' property\n if (node.type === TSESTree.AST_NODE_TYPES.TSParameterProperty) {\n const param = node.parameter; // Assign to variable for clarity & potentially better inference\n\n // Handle different parameter kinds:\n if (param.type === TSESTree.AST_NODE_TYPES.Identifier) {\n return param.name;\n }\n if (param.type === TSESTree.AST_NODE_TYPES.AssignmentPattern) {\n // Check the left side of the assignment\n if (param.left.type === TSESTree.AST_NODE_TYPES.Identifier) {\n return param.left.name; // Name is on the identifier being assigned to\n }\n /*\n * Parameter is an assignment pattern with destructuring (ArrayPattern/ObjectPattern)\n * You might want more sophisticated logic here to extract a name\n */\n return '<destructured parameter>';\n }\n return '<complex parameter>';\n }\n\n return '<unknown>';\n};\n\nexport default createRule<Options, 'missingAccessibility'>({\n name: 'explicit-accessibility',\n meta: {\n type: 'suggestion',\n docs: {\n description: 'Require explicit accessibility modifiers on class members'\n },\n fixable: 'code',\n schema: [\n {\n type: 'object',\n properties: {\n defaultAccessibility: {\n type: 'string',\n enum: ['public', 'private', 'protected'],\n description: 'The accessibility modifier to add if one is missing.'\n }\n },\n additionalProperties: false\n }\n ],\n messages: {\n missingAccessibility:\n \"Class member '{{ name }}' is missing an explicit accessibility modifier (public/private/protected).\"\n }\n },\n defaultOptions: [defaultOptions],\n\n create(context, [options]) {\n const { defaultAccessibility } = { ...defaultOptions, ...options };\n const sourceCode = context.sourceCode;\n\n function checkNode(\n node:\n | TSESTree.MethodDefinition\n | TSESTree.PropertyDefinition\n | TSESTree.TSParameterProperty\n ): void {\n if (node.accessibility) {\n return; // Already has modifier\n }\n\n let reportNode: TSESTree.Node | TSESTree.Token = node;\n const name = getNodeName(node);\n // Adjust report node for better highlighting\n if (\n node.type === TSESTree.AST_NODE_TYPES.MethodDefinition ||\n node.type === TSESTree.AST_NODE_TYPES.PropertyDefinition\n ) {\n reportNode = node.key;\n } else {\n const param = node.parameter;\n if (param.type === TSESTree.AST_NODE_TYPES.Identifier) {\n reportNode = param;\n } else if (\n param.type === TSESTree.AST_NODE_TYPES.AssignmentPattern &&\n param.left.type === TSESTree.AST_NODE_TYPES.Identifier\n ) {\n reportNode = param.left;\n }\n // Keep reportNode as the TSParameterProperty node itself if param isn't simple identifier\n }\n\n context.report({\n node: reportNode ?? node,\n messageId: 'missingAccessibility',\n data: { name },\n fix(fixer) {\n let insertText = `${defaultAccessibility} `;\n\n let tokenToInsertBefore: TSESTree.Token | null;\n if (node.decorators.length > 0) {\n const lastDecorator = node.decorators[node.decorators.length - 1];\n tokenToInsertBefore = sourceCode.getTokenAfter(lastDecorator);\n } else {\n tokenToInsertBefore = sourceCode.getFirstToken(node);\n }\n\n // Parameter properties need special handling if they also have 'readonly'\n if (\n node.type === TSESTree.AST_NODE_TYPES.TSParameterProperty &&\n node.readonly\n ) {\n // If readonly exists without accessibility, insert accessibility *before* readonly\n const firstToken = sourceCode.getFirstToken(node);\n if (firstToken?.value === 'readonly') {\n // double check it's the readonly token\n tokenToInsertBefore = firstToken;\n }\n // If insertion point wasn't decorators, use first token (which should be readonly)\n }\n\n if (!tokenToInsertBefore) return null;\n\n /*\n * If the token immediately after the insertion point isn't whitespace, add a space.\n * (Handles case where tokenToInsertBefore is the last decorator token)\n */\n const tokenAfterInsertion = sourceCode.getTokenAfter(\n tokenToInsertBefore,\n { includeComments: false }\n );\n const textBetween = sourceCode.text.slice(\n tokenToInsertBefore.range[1],\n tokenAfterInsertion?.range[0]\n );\n if (!/^\\s/.test(textBetween)) {\n insertText = ` ${insertText}`; // Add leading space if needed after decorator\n }\n\n return fixer.insertTextBefore(tokenToInsertBefore, insertText);\n }\n });\n }\n\n return {\n MethodDefinition(node: TSESTree.MethodDefinition): void {\n checkNode(node);\n },\n\n PropertyDefinition(node: TSESTree.PropertyDefinition): void {\n checkNode(node);\n },\n\n TSParameterProperty(node: TSESTree.TSParameterProperty): void {\n checkNode(node);\n }\n };\n }\n});\n", "import vitestEslint from '@vitest/eslint-plugin';\nimport { defineConfig } from 'eslint/config';\n\nconst vitestPlugin: Record<string, object> = {\n vitest: vitestEslint\n};\n\nexport const vitest = defineConfig([\n {\n files: ['**/*.spec.ts', '**/*.spec.js', '**/*.test.ts', '**/*.test.js'],\n plugins: vitestPlugin,\n rules: {\n ...vitestEslint.configs.recommended.rules,\n 'vitest/max-nested-describe': ['error', { max: 3 }],\n // Matcher improvements\n 'vitest/prefer-to-be': 'error',\n 'vitest/prefer-to-contain': 'error',\n 'vitest/prefer-to-have-length': 'error',\n 'vitest/prefer-comparison-matcher': 'error',\n 'vitest/prefer-strict-equal': 'warn',\n // Test quality\n 'vitest/prefer-spy-on': 'error',\n 'vitest/prefer-hooks-on-top': 'error',\n 'vitest/prefer-each': 'warn',\n 'vitest/no-test-return-statement': 'error',\n 'vitest/prefer-mock-promise-shorthand': 'error'\n }\n }\n]);\n", "import playwrightEslint from 'eslint-plugin-playwright';\nimport { defineConfig } from 'eslint/config';\n\nexport const playwright = defineConfig([\n {\n ...playwrightEslint.configs['flat/recommended'],\n files: ['**/*.e2e.ts', '**/*.e2e.js'],\n rules: {\n ...playwrightEslint.configs['flat/recommended'].rules,\n // Locator best practices\n 'playwright/prefer-locator': 'error',\n 'playwright/prefer-native-locators': 'error',\n 'playwright/no-nth-methods': 'warn',\n // Matcher improvements\n 'playwright/prefer-to-be': 'error',\n 'playwright/prefer-to-have-count': 'error',\n 'playwright/prefer-to-have-length': 'error',\n 'playwright/prefer-comparison-matcher': 'error',\n // Test structure\n 'playwright/prefer-hooks-on-top': 'error',\n 'playwright/require-top-level-describe': 'warn'\n }\n }\n]);\n", "import boundariesPlugin from 'eslint-plugin-boundaries';\nimport { defineConfig } from 'eslint/config';\n\nexport const boundaries = defineConfig([\n {\n files: [\n '**/*.js',\n '**/*.jsx',\n '**/*.ts',\n '**/*.tsx',\n '**/*.cts',\n '**/*.mts'\n ],\n plugins: {\n boundaries: boundariesPlugin\n },\n settings: {\n 'boundaries/elements': [\n {\n type: 'feature',\n pattern: '**/feature/**'\n },\n {\n type: 'data-access',\n pattern: '**/data-access/**'\n },\n {\n type: 'domain-logic',\n pattern: '**/domain-logic/**'\n },\n {\n type: 'ui',\n pattern: '**/ui/**'\n },\n {\n type: 'common',\n pattern: '**/common/**'\n },\n {\n type: 'utils',\n pattern: '**/utils/**'\n }\n ],\n 'import/resolver': {\n typescript: {\n alwaysTryTypes: true\n }\n }\n },\n rules: {\n ...boundariesPlugin.configs.recommended.rules,\n 'boundaries/dependencies': [\n 'error',\n {\n default: 'disallow',\n message:\n '${dependency.type} is not allowed to be imported in ${file.type}',\n rules: [\n {\n from: { type: 'feature' },\n allow: [\n { to: { type: 'feature' } },\n { to: { type: 'ui' } },\n { to: { type: 'domain-logic' } },\n { to: { type: 'utils' } },\n { to: { type: 'common' } }\n ]\n },\n {\n from: { type: 'domain-logic' },\n allow: [\n { to: { type: 'domain-logic' } },\n { to: { type: 'data-access' } },\n { to: { type: 'utils' } },\n { to: { type: 'common' } }\n ]\n },\n {\n from: { type: 'data-access' },\n allow: [\n { to: { type: 'data-access' } },\n { to: { type: 'utils' } },\n { to: { type: 'common' } }\n ]\n },\n {\n from: { type: 'ui' },\n allow: [\n { to: { type: 'ui' } },\n { to: { type: 'utils' } },\n { to: { type: 'common' } }\n ]\n },\n {\n from: { type: 'utils' },\n allow: [\n { to: { type: 'utils' } },\n { to: { type: 'common' } }\n ]\n },\n {\n from: { type: 'common' },\n allow: [{ to: { type: 'common' } }]\n }\n ]\n }\n ]\n }\n },\n {\n files: ['**/*.stories.ts'],\n rules: {\n 'boundaries/dependencies': 'off'\n }\n }\n]);\n", "import { ConfigArray } from 'typescript-eslint';\nimport { angularTemplate } from './lib/angular-template.js';\nimport { angular } from './lib/angular.js';\nimport { base } from './lib/base.js';\nimport { javascript } from './lib/javascript.js';\nimport { json } from './lib/json.js';\nimport { prettier } from './lib/prettier.js';\nimport { rxjs } from './lib/rxjs.js';\nimport { storybook } from './lib/storybook.js';\nimport { typescript } from './lib/typescript.js';\nimport { vitest } from './lib/vitest.js';\nimport { playwright } from './lib/playwright.js';\nimport { boundaries } from './lib/boundaries.js';\n\nexport const recommended: ConfigArray = [\n ...base,\n ...javascript,\n ...typescript,\n ...json,\n ...boundaries,\n ...prettier // Must be last to disable formatting rules that conflict with Prettier\n];\n\nexport {\n base,\n javascript,\n typescript,\n angular,\n angularTemplate,\n rxjs,\n json,\n boundaries,\n storybook,\n vitest,\n playwright,\n prettier\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["configs", "defineConfig", "configs", "defineConfig", "configs", "defineConfig", "defineConfig", "defineConfig", "defineConfig", "defineConfig", "configs", "importPluginX", "defineConfig", "defineConfig", "importPluginX", "configs", "defineConfig", "defineConfig", "defineConfig"]
7
+ }
package/lib/base.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../../../packages/lint-suite/src/lib/base.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,IAAI,kCAkNf,CAAC"}
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../../../packages/lint-suite/src/lib/base.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,IAAI,kCAwMf,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"boundaries.d.ts","sourceRoot":"","sources":["../../../../../packages/lint-suite/src/lib/boundaries.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,UAAU,kCA0FrB,CAAC"}
1
+ {"version":3,"file":"boundaries.d.ts","sourceRoot":"","sources":["../../../../../packages/lint-suite/src/lib/boundaries.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,UAAU,kCAgHrB,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "lint-suite",
3
- "version": "1.3.10",
4
- "description": "Reusable ESLint configurations",
3
+ "version": "1.4.0",
4
+ "description": "Reusable ESLint, Stylelint, and Prettier configurations",
5
5
  "repository": {
6
6
  "type": "git",
7
7
  "url": "git+https://github.com/F0rty-Tw0/lint-suite.git",
@@ -12,46 +12,62 @@
12
12
  "eslintconfig",
13
13
  "lint",
14
14
  "typescript",
15
- "jest",
16
15
  "angular",
17
16
  "storybook",
18
17
  "json",
19
18
  "rxjs",
20
19
  "vitest",
21
- "playwright"
20
+ "playwright",
21
+ "stylelint",
22
+ "prettier"
22
23
  ],
23
24
  "license": "MIT",
24
25
  "author": "Artiom Tofan artiomtofancv@gmail.com",
25
26
  "type": "module",
26
- "main": "./index.cjs",
27
- "module": "./index.js",
28
- "types": "./index.d.ts",
29
27
  "dependencies": {
30
28
  "@eslint/js": "^10.0.1",
31
29
  "@eslint/json": "^1.2.0",
32
- "@nx/eslint-plugin": "22.7.1",
30
+ "@nx/eslint-plugin": "22.7.3",
33
31
  "@smarttools/eslint-plugin-rxjs": "1.0.22",
34
32
  "@stylistic/eslint-plugin": "5.10.0",
35
- "@typescript-eslint/utils": "8.59.2",
36
- "@vitest/eslint-plugin": "1.6.16",
37
- "angular-eslint": "^21.3.1",
38
- "eslint": "^10.3.0",
33
+ "@typescript-eslint/utils": "8.59.4",
34
+ "@vitest/eslint-plugin": "1.6.18",
35
+ "angular-eslint": "^21.4.0",
36
+ "eslint": "^10.4.0",
39
37
  "eslint-config-prettier": "^10.1.8",
40
38
  "eslint-import-resolver-typescript": "4.4.4",
41
39
  "eslint-plugin-boundaries": "6.0.2",
42
40
  "eslint-plugin-import-x": "4.16.2",
43
- "eslint-plugin-jest": "29.15.2",
44
- "eslint-plugin-playwright": "2.10.2",
45
- "eslint-plugin-storybook": "10.3.6",
41
+ "eslint-plugin-playwright": "2.10.4",
42
+ "eslint-plugin-storybook": "10.4.1",
46
43
  "globals": "17.6.0",
47
- "typescript-eslint": "8.59.2"
44
+ "stylelint": "17.12.0",
45
+ "stylelint-config-recess-order": "7.7.0",
46
+ "stylelint-config-standard": "40.0.0",
47
+ "stylelint-config-standard-scss": "17.0.0",
48
+ "stylelint-scss": "7.1.1",
49
+ "stylelint-selector-bem-pattern": "5.0.0",
50
+ "typescript-eslint": "8.59.4"
51
+ },
52
+ "peerDependencies": {
53
+ "prettier": "^3.8.3"
48
54
  },
49
55
  "exports": {
50
56
  "./package.json": "./package.json",
51
- ".": {
52
- "types": "./index.d.ts",
53
- "import": "./index.js",
54
- "require": "./index.cjs"
57
+ "./eslint": {
58
+ "types": "./eslint.d.ts",
59
+ "import": "./eslint.js",
60
+ "require": "./eslint.cjs"
61
+ },
62
+ "./stylelint": {
63
+ "types": "./stylelint.d.ts",
64
+ "import": "./stylelint.js",
65
+ "require": "./stylelint.cjs"
66
+ },
67
+ "./prettier": {
68
+ "types": "./prettier.d.ts",
69
+ "import": "./prettier.js",
70
+ "require": "./prettier.cjs"
55
71
  }
56
72
  },
57
73
  "files": [
package/prettier.cjs ADDED
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // packages/lint-suite/src/prettier.ts
21
+ var prettier_exports = {};
22
+ __export(prettier_exports, {
23
+ prettier: () => prettier
24
+ });
25
+ module.exports = __toCommonJS(prettier_exports);
26
+ var prettier = {
27
+ singleQuote: true,
28
+ semi: true,
29
+ tabWidth: 2,
30
+ printWidth: 135,
31
+ trailingComma: "none",
32
+ bracketSpacing: true,
33
+ bracketSameLine: true,
34
+ arrowParens: "always",
35
+ endOfLine: "lf",
36
+ overrides: [
37
+ { files: "*.html", options: { parser: "html" } },
38
+ { files: "*.component.html", options: { parser: "angular" } }
39
+ ]
40
+ };
41
+ // Annotate the CommonJS export names for ESM import in node:
42
+ 0 && (module.exports = {
43
+ prettier
44
+ });
45
+ //# sourceMappingURL=prettier.cjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../packages/lint-suite/src/prettier.ts"],
4
+ "sourcesContent": ["import type { Config } from 'prettier';\n\nexport const prettier: Config = {\n singleQuote: true,\n semi: true,\n tabWidth: 2,\n printWidth: 135,\n trailingComma: 'none',\n bracketSpacing: true,\n bracketSameLine: true,\n arrowParens: 'always',\n endOfLine: 'lf',\n overrides: [\n { files: '*.html', options: { parser: 'html' } },\n { files: '*.component.html', options: { parser: 'angular' } }\n ]\n};\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEO,IAAM,WAAmB;AAAA,EAC9B,aAAa;AAAA,EACb,MAAM;AAAA,EACN,UAAU;AAAA,EACV,YAAY;AAAA,EACZ,eAAe;AAAA,EACf,gBAAgB;AAAA,EAChB,iBAAiB;AAAA,EACjB,aAAa;AAAA,EACb,WAAW;AAAA,EACX,WAAW;AAAA,IACT,EAAE,OAAO,UAAU,SAAS,EAAE,QAAQ,OAAO,EAAE;AAAA,IAC/C,EAAE,OAAO,oBAAoB,SAAS,EAAE,QAAQ,UAAU,EAAE;AAAA,EAC9D;AACF;",
6
+ "names": []
7
+ }
package/prettier.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ import type { Config } from 'prettier';
2
+ export declare const prettier: Config;
3
+ //# sourceMappingURL=prettier.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prettier.d.ts","sourceRoot":"","sources":["../../../../packages/lint-suite/src/prettier.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAEvC,eAAO,MAAM,QAAQ,EAAE,MActB,CAAC"}
package/prettier.js ADDED
@@ -0,0 +1,20 @@
1
+ // packages/lint-suite/src/prettier.ts
2
+ var prettier = {
3
+ singleQuote: true,
4
+ semi: true,
5
+ tabWidth: 2,
6
+ printWidth: 135,
7
+ trailingComma: "none",
8
+ bracketSpacing: true,
9
+ bracketSameLine: true,
10
+ arrowParens: "always",
11
+ endOfLine: "lf",
12
+ overrides: [
13
+ { files: "*.html", options: { parser: "html" } },
14
+ { files: "*.component.html", options: { parser: "angular" } }
15
+ ]
16
+ };
17
+ export {
18
+ prettier
19
+ };
20
+ //# sourceMappingURL=prettier.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../packages/lint-suite/src/prettier.ts"],
4
+ "sourcesContent": ["import type { Config } from 'prettier';\n\nexport const prettier: Config = {\n singleQuote: true,\n semi: true,\n tabWidth: 2,\n printWidth: 135,\n trailingComma: 'none',\n bracketSpacing: true,\n bracketSameLine: true,\n arrowParens: 'always',\n endOfLine: 'lf',\n overrides: [\n { files: '*.html', options: { parser: 'html' } },\n { files: '*.component.html', options: { parser: 'angular' } }\n ]\n};\n"],
5
+ "mappings": ";AAEO,IAAM,WAAmB;AAAA,EAC9B,aAAa;AAAA,EACb,MAAM;AAAA,EACN,UAAU;AAAA,EACV,YAAY;AAAA,EACZ,eAAe;AAAA,EACf,gBAAgB;AAAA,EAChB,iBAAiB;AAAA,EACjB,aAAa;AAAA,EACb,WAAW;AAAA,EACX,WAAW;AAAA,IACT,EAAE,OAAO,UAAU,SAAS,EAAE,QAAQ,OAAO,EAAE;AAAA,IAC/C,EAAE,OAAO,oBAAoB,SAAS,EAAE,QAAQ,UAAU,EAAE;AAAA,EAC9D;AACF;",
6
+ "names": []
7
+ }