lint-suite 1.0.4 → 1.0.5

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.
package/index.cjs CHANGED
@@ -32,10 +32,10 @@ var src_exports = {};
32
32
  __export(src_exports, {
33
33
  angular: () => angular,
34
34
  angularTemplate: () => angularTemplate,
35
- base: () => base,
36
35
  javascript: () => javascript,
37
36
  jest: () => jest,
38
37
  json: () => json,
38
+ recommended: () => recommended,
39
39
  rxjs: () => rxjs,
40
40
  storybook: () => storybook,
41
41
  typescript: () => typescript
@@ -49,6 +49,8 @@ var angularTemplate = [
49
49
  {
50
50
  files: ["**/*.html"],
51
51
  rules: {
52
+ "@angular-eslint/template/no-any": "error",
53
+ "@angular-eslint/template/no-duplicate-attributes": "error",
52
54
  "@angular-eslint/template/button-has-type": "error",
53
55
  "@angular-eslint/template/no-positive-tabindex": "error",
54
56
  "@angular-eslint/template/valid-aria": "error",
@@ -100,8 +102,8 @@ var angular = [
100
102
 
101
103
  // packages/lint-suite/src/lib/base.ts
102
104
  var import_eslint_plugin3 = __toESM(require("@nx/eslint-plugin"), 1);
103
- var import_eslint_plugin_import = __toESM(require("eslint-plugin-import"), 1);
104
105
  var import_eslint_plugin4 = __toESM(require("@stylistic/eslint-plugin"), 1);
106
+ var import_eslint_plugin_import_x = __toESM(require("eslint-plugin-import-x"), 1);
105
107
  var base = [
106
108
  ...import_eslint_plugin3.default.configs["flat/base"],
107
109
  {
@@ -115,7 +117,7 @@ var base = [
115
117
  "**/*.cts",
116
118
  "**/*.mts"
117
119
  ],
118
- ...import_eslint_plugin_import.default.flatConfigs.recommended
120
+ ...import_eslint_plugin_import_x.default.flatConfigs.recommended
119
121
  },
120
122
  {
121
123
  files: [
@@ -142,8 +144,43 @@ var base = [
142
144
  "**/*.mts"
143
145
  ],
144
146
  rules: {
145
- "no-console": "warn",
147
+ "no-param-reassign": "error",
148
+ "no-alert": "error",
149
+ "no-console": ["warn", { allow: ["warn", "error"] }],
150
+ "no-debugger": "error",
151
+ eqeqeq: ["error", "always", { null: "ignore" }],
152
+ curly: ["error", "all"],
153
+ "prefer-const": ["error", { destructuring: "all" }],
154
+ "no-var": "error",
155
+ "object-shorthand": "error",
156
+ "prefer-arrow-callback": "error",
157
+ "no-useless-concat": "error",
158
+ "prefer-template": "error",
159
+ "no-nested-ternary": "error",
160
+ "no-return-await": "error",
161
+ "no-else-return": ["error", { allowElseIf: false }],
162
+ // Prefer early returns
163
+ "no-multi-assign": "error",
164
+ // Disallow chaining assignments
165
+ radix: "error",
166
+ // Require radix parameter for parseInt()
167
+ yoda: "error",
168
+ // Disallow yoda conditions (`if ("red" === color)`)
169
+ complexity: ["warn", 10],
170
+ // Warn if function complexity is high
171
+ "max-depth": ["warn", 4],
172
+ // Warn on deeply nested blocks
173
+ "max-lines-per-function": ["warn", 50],
174
+ // Warn on long functions
175
+ "max-params": ["warn", 4],
176
+ // Warn on functions with many parameters
177
+ "no-lonely-if": "error",
178
+ // Disallow if statements as the only statement in an else block
179
+ "grouped-accessor-pairs": ["error", "getBeforeSet"],
180
+ // Enforce consistency for getters/setters
146
181
  "class-methods-use-this": "error",
182
+ "no-void": "error",
183
+ "no-underscore-dangle": "error",
147
184
  "max-len": [
148
185
  "error",
149
186
  {
@@ -221,6 +258,8 @@ var base = [
221
258
  {
222
259
  files: ["**/*.spec.ts", "**/*.test.ts", "**/*.spec.js", "**/*.test.js"],
223
260
  rules: {
261
+ "max-line-per-function": "off",
262
+ complexity: ["warn", { max: 1 }],
224
263
  "max-lines": [
225
264
  "error",
226
265
  {
@@ -230,35 +269,6 @@ var base = [
230
269
  }
231
270
  ]
232
271
  }
233
- }
234
- ];
235
-
236
- // packages/lint-suite/src/lib/typescript.ts
237
- var import_eslint_plugin5 = __toESM(require("@nx/eslint-plugin"), 1);
238
- var import_eslint_plugin_import2 = __toESM(require("eslint-plugin-import"), 1);
239
- var typescript = [
240
- // NOTE: Checks for 'prettier' and 'eslint-plugin-prettier'
241
- import_eslint_plugin_import2.default.flatConfigs.typescript,
242
- ...import_eslint_plugin5.default.configs["flat/typescript"],
243
- {
244
- files: ["**/*.ts", "**/*.tsx", "**/*.cts", "**/*.mts"],
245
- rules: {
246
- "@typescript-eslint/explicit-member-accessibility": "error",
247
- "@typescript-eslint/consistent-type-imports": "error",
248
- "@typescript-eslint/explicit-function-return-type": "warn",
249
- "@typescript-eslint/no-empty-function": "error"
250
- }
251
- },
252
- {
253
- files: ["**/*.ts", "**/*.tsx", "**/*.cts", "**/*.mts"],
254
- languageOptions: {
255
- parserOptions: {
256
- projectService: true
257
- }
258
- },
259
- rules: {
260
- "@typescript-eslint/prefer-readonly": "error"
261
- }
262
272
  },
263
273
  {
264
274
  files: ["**/*.action.ts"],
@@ -274,16 +284,19 @@ var typescript = [
274
284
  }
275
285
  ];
276
286
 
287
+ // packages/lint-suite/src/lib/javascript.ts
288
+ var import_eslint_plugin5 = __toESM(require("@nx/eslint-plugin"), 1);
289
+ var javascript = import_eslint_plugin5.default.configs["flat/javascript"];
290
+
277
291
  // packages/lint-suite/src/lib/jest.ts
278
292
  var import_eslint_plugin_jest = __toESM(require("eslint-plugin-jest"), 1);
279
293
  var jest = [
280
294
  {
281
295
  files: ["**/*.spec.ts", "**/*.test.ts", "**/*.spec.js", "**/*.test.js"],
282
- ...import_eslint_plugin_jest.default.configs["flat/recommended"],
296
+ ...import_eslint_plugin_jest.default.configs["flat/all"],
283
297
  rules: {
284
- ...import_eslint_plugin_jest.default.configs["flat/recommended"].rules,
285
- ...import_eslint_plugin_jest.default.configs["flat/style"].rules,
286
- "jest/no-done-callback": "off"
298
+ "jest/no-done-callback": "off",
299
+ "jest/no-unbound-method": "error"
287
300
  }
288
301
  }
289
302
  ];
@@ -375,17 +388,351 @@ var storybook = [
375
388
  }
376
389
  ];
377
390
 
378
- // packages/lint-suite/src/lib/javascript.ts
391
+ // packages/lint-suite/src/lib/typescript.ts
379
392
  var import_eslint_plugin6 = __toESM(require("@nx/eslint-plugin"), 1);
380
- var javascript = [...import_eslint_plugin6.default.configs["flat/javascript"]];
393
+ var import_eslint_import_resolver_typescript = require("eslint-import-resolver-typescript");
394
+ var import_eslint_plugin_import_x2 = __toESM(require("eslint-plugin-import-x"), 1);
395
+
396
+ // packages/lint-suite/src/lib/rules/explicit-accessibility.ts
397
+ var import_utils = require("@typescript-eslint/utils");
398
+ var createRule = import_utils.ESLintUtils.RuleCreator(
399
+ () => "https://eslint.org/docs/latest/rules/no-unused-private-class-members"
400
+ );
401
+ var defaultOptions = {
402
+ defaultAccessibility: "private"
403
+ };
404
+ var getNodeName = (node) => {
405
+ if (!node) {
406
+ return "<unknown>";
407
+ }
408
+ if ("key" in node && node.key) {
409
+ if (node.key.type === import_utils.TSESTree.AST_NODE_TYPES.Identifier) {
410
+ return node.key.name;
411
+ }
412
+ if (node.key.type === import_utils.TSESTree.AST_NODE_TYPES.PrivateIdentifier) {
413
+ return `#${node.key.name}`;
414
+ }
415
+ return "<computed/complex key>";
416
+ }
417
+ if ("kind" in node && node.kind === "constructor") {
418
+ return "constructor";
419
+ }
420
+ if (node.type === import_utils.TSESTree.AST_NODE_TYPES.TSParameterProperty) {
421
+ const param = node.parameter;
422
+ if (param.type === import_utils.TSESTree.AST_NODE_TYPES.Identifier) {
423
+ return param.name;
424
+ }
425
+ if (param.type === import_utils.TSESTree.AST_NODE_TYPES.AssignmentPattern) {
426
+ if (param.left.type === import_utils.TSESTree.AST_NODE_TYPES.Identifier) {
427
+ return param.left.name;
428
+ }
429
+ return "<destructured parameter>";
430
+ }
431
+ if (param.type === import_utils.TSESTree.AST_NODE_TYPES.RestElement && param.argument.type === import_utils.TSESTree.AST_NODE_TYPES.Identifier) {
432
+ return `...${param.argument.name}`;
433
+ }
434
+ return "<complex parameter>";
435
+ }
436
+ return "<unknown>";
437
+ };
438
+ var explicit_accessibility_default = createRule({
439
+ name: "explicit-accessibility",
440
+ meta: {
441
+ type: "suggestion",
442
+ docs: {
443
+ description: "Require explicit accessibility modifiers on class members"
444
+ },
445
+ fixable: "code",
446
+ schema: [
447
+ {
448
+ type: "object",
449
+ properties: {
450
+ defaultAccessibility: {
451
+ type: "string",
452
+ enum: ["public", "private", "protected"],
453
+ description: "The accessibility modifier to add if one is missing."
454
+ }
455
+ },
456
+ additionalProperties: false
457
+ }
458
+ ],
459
+ messages: {
460
+ missingAccessibility: "Class member '{{ name }}' is missing an explicit accessibility modifier (public/private/protected)."
461
+ }
462
+ },
463
+ defaultOptions: [defaultOptions],
464
+ create(context, [options]) {
465
+ const { defaultAccessibility } = { ...defaultOptions, ...options };
466
+ const sourceCode = context.sourceCode;
467
+ function checkNode(node) {
468
+ if (node.accessibility) {
469
+ return;
470
+ }
471
+ let reportNode = node;
472
+ const name = getNodeName(node);
473
+ if (node.type === import_utils.TSESTree.AST_NODE_TYPES.MethodDefinition || node.type === import_utils.TSESTree.AST_NODE_TYPES.PropertyDefinition) {
474
+ reportNode = node.key;
475
+ } else {
476
+ const param = node.parameter;
477
+ if (param.type === import_utils.TSESTree.AST_NODE_TYPES.Identifier) {
478
+ reportNode = param;
479
+ } else if (param.type === import_utils.TSESTree.AST_NODE_TYPES.AssignmentPattern && param.left.type === import_utils.TSESTree.AST_NODE_TYPES.Identifier) {
480
+ reportNode = param.left;
481
+ }
482
+ }
483
+ context.report({
484
+ node: reportNode,
485
+ messageId: "missingAccessibility",
486
+ data: { name },
487
+ fix(fixer) {
488
+ let tokenToInsertBefore = null;
489
+ let insertText = `${defaultAccessibility} `;
490
+ if (node.decorators.length > 0) {
491
+ const lastDecorator = node.decorators[node.decorators.length - 1];
492
+ tokenToInsertBefore = sourceCode.getTokenAfter(lastDecorator);
493
+ } else {
494
+ tokenToInsertBefore = sourceCode.getFirstToken(node);
495
+ }
496
+ if (node.type === import_utils.TSESTree.AST_NODE_TYPES.TSParameterProperty && node.readonly) {
497
+ const firstToken = sourceCode.getFirstToken(node);
498
+ if (firstToken?.value === "readonly") {
499
+ tokenToInsertBefore = firstToken;
500
+ }
501
+ }
502
+ if (!tokenToInsertBefore)
503
+ return null;
504
+ const tokenAfterInsertion = sourceCode.getTokenAfter(
505
+ tokenToInsertBefore,
506
+ { includeComments: false }
507
+ );
508
+ const textBetween = sourceCode.text.slice(
509
+ tokenToInsertBefore.range[1],
510
+ tokenAfterInsertion?.range[0]
511
+ );
512
+ if (!/^\s/.test(textBetween)) {
513
+ insertText = ` ${insertText}`;
514
+ }
515
+ return fixer.insertTextBefore(tokenToInsertBefore, insertText);
516
+ }
517
+ });
518
+ }
519
+ return {
520
+ MethodDefinition(node) {
521
+ checkNode(node);
522
+ },
523
+ PropertyDefinition(node) {
524
+ checkNode(node);
525
+ },
526
+ TSParameterProperty(node) {
527
+ checkNode(node);
528
+ }
529
+ };
530
+ }
531
+ });
532
+
533
+ // packages/lint-suite/src/lib/typescript.ts
534
+ var localTypescriptRules = {
535
+ rules: {
536
+ "explicit-accessibility": explicit_accessibility_default
537
+ }
538
+ };
539
+ var typescript = [
540
+ // NOTE: Checks for 'prettier' and 'eslint-plugin-prettier'
541
+ import_eslint_plugin_import_x2.default.flatConfigs.typescript,
542
+ ...import_eslint_plugin6.default.configs["flat/typescript"],
543
+ {
544
+ files: ["**/*.ts", "**/*.tsx", "**/*.cts", "**/*.mts"],
545
+ plugins: { local: localTypescriptRules },
546
+ rules: {
547
+ "local/explicit-accessibility": "error",
548
+ "@typescript-eslint/explicit-member-accessibility": "error",
549
+ "@typescript-eslint/explicit-function-return-type": "error",
550
+ "@typescript-eslint/no-empty-function": "error",
551
+ "@typescript-eslint/no-unused-vars": "error",
552
+ "@typescript-eslint/no-use-before-define": "error",
553
+ // A. Eliminating `any` (already covered by strict-type-checked, but explicit for clarity)
554
+ "@typescript-eslint/no-explicit-any": "error",
555
+ "@typescript-eslint/no-unsafe-assignment": "error",
556
+ "@typescript-eslint/no-unsafe-call": "error",
557
+ "@typescript-eslint/no-unsafe-member-access": "error",
558
+ "@typescript-eslint/no-unsafe-return": "error",
559
+ "@typescript-eslint/no-unsafe-argument": "error",
560
+ // B. Explicit Annotations (partially covered, explicit module boundaries is key)
561
+ "@typescript-eslint/explicit-module-boundary-types": "error",
562
+ // Consider enabling if maximum explicitness is desired, even if verbose:
563
+ // C. Null/Undefined Safety (Requires strictNullChecks)
564
+ "@typescript-eslint/no-non-null-assertion": "error",
565
+ // D. Promise Handling (Supplementing plugin:promise/recommended)
566
+ "@typescript-eslint/no-floating-promises": [
567
+ "error",
568
+ { ignoreVoid: true }
569
+ ],
570
+ "@typescript-eslint/no-misused-promises": "error",
571
+ // Already in recommended-type-checked
572
+ "@typescript-eslint/promise-function-async": "error",
573
+ "@typescript-eslint/await-thenable": "error",
574
+ // Already in recommended-type-checked
575
+ // E. Best Practices & Potential Errors (Some covered by presets, fine-tuning here)
576
+ "@typescript-eslint/no-inferrable-types": "warn",
577
+ // Keep as warn or disable if inference is preferred
578
+ "@typescript-eslint/no-var-requires": "error",
579
+ // Use ES modules
580
+ "@typescript-eslint/require-await": "error",
581
+ "@typescript-eslint/restrict-template-expressions": [
582
+ "error",
583
+ { allowNumber: true, allowBoolean: true }
584
+ ],
585
+ // Allow numbers/booleans in templates
586
+ "@typescript-eslint/restrict-plus-operands": "error",
587
+ // Enforce consistent types for '+'
588
+ "@typescript-eslint/prefer-as-const": "error",
589
+ "@typescript-eslint/no-shadow": "error",
590
+ "@typescript-eslint/switch-exhaustiveness-check": "error",
591
+ // Ensure switch on unions is exhaustive
592
+ "@typescript-eslint/no-unused-expressions": [
593
+ "error",
594
+ { allowShortCircuit: true, allowTernary: true }
595
+ ],
596
+ "@typescript-eslint/no-useless-constructor": "error",
597
+ "@typescript-eslint/dot-notation": ["error", { allowKeywords: true }],
598
+ // Prefer dot notation where possible
599
+ // F. Consistency & Style (Some covered by stylistic-type-checked)
600
+ "@typescript-eslint/consistent-type-assertions": [
601
+ "error",
602
+ { assertionStyle: "as", objectLiteralTypeAssertions: "never" }
603
+ ],
604
+ "@typescript-eslint/consistent-type-definitions": ["error", "type"],
605
+ "@typescript-eslint/consistent-type-imports": [
606
+ "error",
607
+ { prefer: "type-imports", fixStyle: "separate-type-imports" }
608
+ ],
609
+ "@typescript-eslint/naming-convention": [
610
+ "error",
611
+ {
612
+ selector: "objectLiteralProperty",
613
+ modifiers: ["requiresQuotes"],
614
+ format: null
615
+ },
616
+ {
617
+ selector: "objectLiteralProperty",
618
+ format: ["camelCase", "snake_case", "PascalCase"]
619
+ },
620
+ {
621
+ selector: "parameter",
622
+ format: ["camelCase"],
623
+ leadingUnderscore: "allow"
624
+ },
625
+ { selector: "default", format: ["camelCase"] },
626
+ { selector: "variable", format: ["camelCase", "UPPER_CASE"] },
627
+ { selector: "function", format: ["camelCase"] },
628
+ { selector: "typeLike", format: ["PascalCase"] },
629
+ {
630
+ selector: "property",
631
+ modifiers: ["requiresQuotes"],
632
+ format: null
633
+ },
634
+ {
635
+ selector: "property",
636
+ format: ["camelCase", "PascalCase", "snake_case"]
637
+ }
638
+ ],
639
+ "import-x/order": [
640
+ "error",
641
+ {
642
+ groups: [
643
+ "builtin",
644
+ "external",
645
+ "internal",
646
+ ["parent", "sibling"],
647
+ "index",
648
+ "unknown"
649
+ ],
650
+ pathGroups: [
651
+ { group: "external", pattern: "@angular/**", position: "before" },
652
+ {
653
+ pattern: "@*/shared/**",
654
+ group: "internal",
655
+ position: "before"
656
+ },
657
+ {
658
+ pattern: "@*/frontend/**",
659
+ group: "internal",
660
+ position: "after"
661
+ },
662
+ {
663
+ pattern: "@*/backend/**",
664
+ group: "internal",
665
+ position: "after"
666
+ }
667
+ ],
668
+ pathGroupsExcludedImportTypes: ["@angular/**"],
669
+ "newlines-between": "always",
670
+ alphabetize: { order: "asc", caseInsensitive: true }
671
+ }
672
+ ],
673
+ "import-x/no-unresolved": "error",
674
+ "import-x/no-duplicates": "error",
675
+ "import-x/prefer-default-export": "off",
676
+ "import-x/no-useless-path-segments": "error",
677
+ "import-x/newline-after-import": "error",
678
+ "import-x/first": "error",
679
+ "import-x/no-mutable-exports": "error"
680
+ },
681
+ settings: {
682
+ "import-x/resolver-next": [
683
+ (0, import_eslint_import_resolver_typescript.createTypeScriptImportResolver)({
684
+ alwaysTryTypes: true,
685
+ project: "tsconfig.base.json"
686
+ })
687
+ ]
688
+ }
689
+ },
690
+ {
691
+ files: ["**/*.ts", "**/*.tsx", "**/*.cts", "**/*.mts"],
692
+ languageOptions: {
693
+ parserOptions: {
694
+ projectService: true
695
+ }
696
+ },
697
+ rules: {
698
+ "@typescript-eslint/prefer-readonly": "error"
699
+ }
700
+ },
701
+ {
702
+ files: ["**/*.action.ts"],
703
+ rules: {
704
+ "@typescript-eslint/no-namespace": "off"
705
+ }
706
+ },
707
+ {
708
+ files: ["**/*.spec.ts", "**/*.test.ts", "**/*.spec.js", "**/*.test.js"],
709
+ rules: {
710
+ "@typescript-eslint/no-empty-function": "off",
711
+ "@typescript-eslint/no-unbound-method": "off"
712
+ }
713
+ }
714
+ ];
715
+
716
+ // packages/lint-suite/src/index.ts
717
+ var recommended = [
718
+ ...base,
719
+ ...javascript,
720
+ ...typescript,
721
+ ...angular,
722
+ ...angularTemplate,
723
+ ...rxjs,
724
+ ...jest,
725
+ ...json,
726
+ ...storybook
727
+ ];
381
728
  // Annotate the CommonJS export names for ESM import in node:
382
729
  0 && (module.exports = {
383
730
  angular,
384
731
  angularTemplate,
385
- base,
386
732
  javascript,
387
733
  jest,
388
734
  json,
735
+ recommended,
389
736
  rxjs,
390
737
  storybook,
391
738
  typescript
package/index.cjs.map CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../../packages/lint-suite/src/index.ts", "../../../../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/typescript.ts", "../../../../packages/lint-suite/src/lib/jest.ts", "../../../../packages/lint-suite/src/lib/json.ts", "../../../../packages/lint-suite/src/lib/rxjs.ts", "../../../../packages/lint-suite/src/lib/storybook.ts", "../../../../packages/lint-suite/src/lib/javascript.ts"],
4
- "sourcesContent": ["export { angularTemplate } from './lib/angular-template.js';\r\nexport { angular } from './lib/angular.js';\r\nexport { base } from './lib/base.js';\r\nexport { typescript } from './lib/typescript.js';\r\nexport { jest } from './lib/jest.js';\r\nexport { json } from './lib/json.js';\r\nexport { rxjs } from './lib/rxjs.js';\r\nexport { storybook } from './lib/storybook.js';\r\nexport { javascript } from './lib/javascript.js';\r\n", "import nx from '@nx/eslint-plugin';\r\n\r\nexport const angularTemplate = [\r\n ...nx.configs['flat/angular-template'],\r\n {\r\n files: ['**/*.html'],\r\n rules: {\r\n '@angular-eslint/template/button-has-type': 'error',\r\n '@angular-eslint/template/no-positive-tabindex': 'error',\r\n '@angular-eslint/template/valid-aria': 'error',\r\n '@angular-eslint/template/alt-text': 'error',\r\n '@angular-eslint/template/elements-content': 'error',\r\n '@angular-eslint/template/click-events-have-key-events': 'error',\r\n '@angular-eslint/template/mouse-events-have-key-events': 'error',\r\n '@angular-eslint/template/table-scope': 'error',\r\n '@angular-eslint/template/no-autofocus': 'error',\r\n '@angular-eslint/template/no-distracting-elements': 'error',\r\n '@angular-eslint/template/prefer-control-flow': 'error',\r\n '@angular-eslint/template/prefer-self-closing-tags': 'error',\r\n '@angular-eslint/template/prefer-ngsrc': 'error',\r\n '@angular-eslint/template/attributes-order': [\r\n 'error',\r\n {\r\n alphabetical: true,\r\n order: [\r\n 'STRUCTURAL_DIRECTIVE', // e.g. `*ngIf=\"true\"`, `*ngFor=\"let item of items\"`\r\n 'TEMPLATE_REFERENCE', // e.g. `<input #inputRef>`\r\n 'INPUT_BINDING', // e.g. `[id]=\"3\"`, `[attr.colspan]=\"colspan\"`, [style.width.%]=\"100\", [@triggerName]=\"expression\", `bind-id=\"handleChange()\"`\r\n 'TWO_WAY_BINDING', // e.g. `[(id)]=\"id\"`, `bindon-id=\"id\"\r\n 'ATTRIBUTE_BINDING', // e.g. `<input required>`, `id=\"3\"`\r\n 'OUTPUT_BINDING', // e.g. `(idChange)=\"handleChange()\"`, `on-id=\"handleChange()\"`\r\n ],\r\n },\r\n ],\r\n },\r\n },\r\n];\r\n", "import nx from '@nx/eslint-plugin';\r\n\r\nexport const angular = [\r\n ...nx.configs['flat/angular'],\r\n {\r\n files: ['**/*.ts'],\r\n rules: {\r\n '@angular-eslint/prefer-on-push-component-change-detection': 'error',\r\n },\r\n },\r\n];\r\n", "import nx from '@nx/eslint-plugin';\r\nimport importPlugin from 'eslint-plugin-import';\r\nimport stylistic from '@stylistic/eslint-plugin';\r\n\r\nimport type { Linter } from 'eslint';\r\n\r\nexport const base: Linter.Config[] = [\r\n ...nx.configs['flat/base'],\r\n {\r\n files: [\r\n '**/*.js',\r\n '**/*.jsx',\r\n '**/*.cjs',\r\n '**/*.mjs',\r\n '**/*.ts',\r\n '**/*.tsx',\r\n '**/*.cts',\r\n '**/*.mts',\r\n ],\r\n ...importPlugin.flatConfigs.recommended,\r\n },\r\n {\r\n files: [\r\n '**/*.js',\r\n '**/*.jsx',\r\n '**/*.cjs',\r\n '**/*.mjs',\r\n '**/*.ts',\r\n '**/*.tsx',\r\n '**/*.cts',\r\n '**/*.mts',\r\n ],\r\n ...stylistic.configs.recommended,\r\n },\r\n {\r\n files: [\r\n '**/*.js',\r\n '**/*.jsx',\r\n '**/*.cjs',\r\n '**/*.mjs',\r\n '**/*.ts',\r\n '**/*.tsx',\r\n '**/*.cts',\r\n '**/*.mts',\r\n ],\r\n rules: {\r\n 'no-console': 'warn',\r\n 'class-methods-use-this': 'error',\r\n 'max-len': [\r\n 'error',\r\n {\r\n code: 135,\r\n ignoreComments: true,\r\n },\r\n ],\r\n 'spaced-comment': [\r\n 2,\r\n 'always',\r\n {\r\n block: {\r\n exceptions: ['*'],\r\n },\r\n },\r\n ],\r\n '@stylistic/comma-dangle': [\r\n 'error',\r\n {\r\n functions: 'never',\r\n arrays: 'always-multiline',\r\n exports: 'always-multiline',\r\n imports: 'always-multiline',\r\n objects: 'always-multiline',\r\n enums: 'always-multiline',\r\n },\r\n ],\r\n '@stylistic/indent': [\r\n 'error',\r\n 2,\r\n {\r\n offsetTernaryExpressions: true,\r\n SwitchCase: 1,\r\n ignoredNodes: [\r\n 'TSTypeParameterInstantiation',\r\n 'FunctionExpression > .params > :matches(Decorator, :not(:first-child))',\r\n ],\r\n },\r\n ],\r\n 'sort-imports': [\r\n 'error',\r\n {\r\n ignoreCase: false,\r\n ignoreDeclarationSort: true,\r\n ignoreMemberSort: false,\r\n memberSyntaxSortOrder: ['none', 'all', 'multiple', 'single'],\r\n allowSeparatedGroups: true,\r\n },\r\n ],\r\n },\r\n },\r\n {\r\n files: [\r\n '**/*.js',\r\n '**/*.jsx',\r\n '**/*.cjs',\r\n '**/*.mjs',\r\n '**/*.ts',\r\n '**/*.tsx',\r\n '**/*.cts',\r\n '**/*.mts',\r\n '**/*.html',\r\n ],\r\n rules: {\r\n 'max-lines': [\r\n 'error',\r\n {\r\n max: 150,\r\n skipBlankLines: true,\r\n skipComments: true,\r\n },\r\n ],\r\n },\r\n },\r\n {\r\n files: ['**/*.spec.ts', '**/*.test.ts', '**/*.spec.js', '**/*.test.js'],\r\n rules: {\r\n 'max-lines': [\r\n 'error',\r\n {\r\n max: 300,\r\n skipBlankLines: true,\r\n skipComments: true,\r\n },\r\n ],\r\n },\r\n },\r\n];\r\n", "import nx from '@nx/eslint-plugin';\r\nimport importPlugin from 'eslint-plugin-import';\r\n\r\nexport const typescript = [\r\n // NOTE: Checks for 'prettier' and 'eslint-plugin-prettier'\r\n importPlugin.flatConfigs.typescript,\r\n ...nx.configs['flat/typescript'],\r\n {\r\n files: ['**/*.ts', '**/*.tsx', '**/*.cts', '**/*.mts'],\r\n rules: {\r\n '@typescript-eslint/explicit-member-accessibility': 'error',\r\n '@typescript-eslint/consistent-type-imports': 'error',\r\n '@typescript-eslint/explicit-function-return-type': 'warn',\r\n '@typescript-eslint/no-empty-function': 'error',\r\n },\r\n },\r\n {\r\n files: ['**/*.ts', '**/*.tsx', '**/*.cts', '**/*.mts'],\r\n languageOptions: {\r\n parserOptions: {\r\n projectService: true,\r\n },\r\n },\r\n rules: {\r\n '@typescript-eslint/prefer-readonly': 'error',\r\n },\r\n },\r\n {\r\n files: ['**/*.action.ts'],\r\n rules: {\r\n 'max-classes-per-file': 'off',\r\n },\r\n },\r\n {\r\n files: ['**/*.state.ts'],\r\n rules: {\r\n 'class-methods-use-this': 'off',\r\n },\r\n },\r\n];\r\n", "import jestEslint from 'eslint-plugin-jest';\r\nimport type { Linter } from 'eslint';\r\n\r\nexport const jest: Linter.Config[] = [\r\n {\r\n files: ['**/*.spec.ts', '**/*.test.ts', '**/*.spec.js', '**/*.test.js'],\r\n ...jestEslint.configs['flat/recommended'],\r\n rules: {\r\n ...jestEslint.configs['flat/recommended'].rules,\r\n ...jestEslint.configs['flat/style'].rules,\r\n 'jest/no-done-callback': 'off',\r\n },\r\n },\r\n];\r\n", "import jsonEslint from 'eslint-plugin-json';\r\nimport type { Linter } from 'eslint';\r\n\r\nexport const json: Linter.Config[] = [\r\n {\r\n files: ['**/*.json'],\r\n ...jsonEslint.configs.recommended,\r\n },\r\n];\r\n", "import rxjsEslint from '@smarttools/eslint-plugin-rxjs';\r\nimport type { Linter } from 'eslint';\r\n\r\nexport const rxjs: Linter.Config[] = [\r\n {\r\n files: [\r\n '**/*.js',\r\n '**/*.jsx',\r\n '**/*.cjs',\r\n '**/*.mjs',\r\n '**/*.ts',\r\n '**/*.tsx',\r\n '**/*.cts',\r\n '**/*.mts',\r\n ],\r\n languageOptions: {\r\n parserOptions: {\r\n projectService: true,\r\n },\r\n },\r\n ...rxjsEslint.configs.recommended,\r\n },\r\n {\r\n files: [\r\n '**/*.js',\r\n '**/*.jsx',\r\n '**/*.cjs',\r\n '**/*.mjs',\r\n '**/*.ts',\r\n '**/*.tsx',\r\n '**/*.cts',\r\n '**/*.mts',\r\n ],\r\n plugins: {\r\n rxjs: rxjsEslint,\r\n },\r\n },\r\n {\r\n files: [\r\n '**/*.js',\r\n '**/*.jsx',\r\n '**/*.cjs',\r\n '**/*.mjs',\r\n '**/*.ts',\r\n '**/*.tsx',\r\n '**/*.cts',\r\n '**/*.mts',\r\n ],\r\n rules: {\r\n 'rxjs/prefer-observer': 'error',\r\n 'rxjs/finnish': 'warn',\r\n 'rxjs/no-ignored-error': 'warn',\r\n 'rxjs/no-unsafe-switchmap': 'error',\r\n 'rxjs/no-unsafe-takeuntil': 'error',\r\n 'rxjs/no-unsafe-catch': 'error',\r\n 'rxjs/no-unsafe-first': 'error',\r\n 'rxjs/no-topromise': 'error',\r\n 'rxjs/throw-error': 'error',\r\n 'rxjs/no-async-subscribe': 'off',\r\n },\r\n },\r\n {\r\n files: ['**/*.spec.ts', '**/*.test.ts', '**/*.spec.js', '**/*.test.js'],\r\n rules: {\r\n 'rxjs/no-ignored-subscription': 'off',\r\n },\r\n },\r\n];\r\n", "import storybookEslint from 'eslint-plugin-storybook';\r\nimport type { Linter } from 'eslint';\r\n\r\nexport const storybook: Linter.Config[] = [\r\n ...storybookEslint.configs['flat/recommended'],\r\n {\r\n ignores: ['!.storybook'],\r\n files: ['**/*.stories.ts'],\r\n },\r\n];\r\n", "import nx from '@nx/eslint-plugin';\r\n\r\nexport const javascript = [...nx.configs['flat/javascript']];\r\n"],
5
- "mappings": "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",
6
- "names": ["nx", "import_eslint_plugin", "nx", "import_eslint_plugin", "nx", "importPlugin", "stylistic", "import_eslint_plugin", "import_eslint_plugin_import", "importPlugin", "nx", "jestEslint", "jsonEslint", "rxjsEslint", "storybookEslint", "import_eslint_plugin", "nx"]
3
+ "sources": ["../../../../packages/lint-suite/src/index.ts", "../../../../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/jest.ts", "../../../../packages/lint-suite/src/lib/json.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"],
4
+ "sourcesContent": ["import { angularTemplate } from './lib/angular-template.js';\r\nimport { angular } from './lib/angular.js';\r\nimport { base } from './lib/base.js';\r\nimport { javascript } from './lib/javascript.js';\r\nimport { jest } from './lib/jest.js';\r\nimport { json } from './lib/json.js';\r\nimport { rxjs } from './lib/rxjs.js';\r\nimport { storybook } from './lib/storybook.js';\r\nimport { typescript } from './lib/typescript.js';\r\n\r\nexport const recommended = [\r\n ...base,\r\n ...javascript,\r\n ...typescript,\r\n ...angular,\r\n ...angularTemplate,\r\n ...rxjs,\r\n ...jest,\r\n ...json,\r\n ...storybook\r\n];\r\n\r\nexport {\r\n typescript,\r\n angularTemplate,\r\n angular,\r\n javascript,\r\n rxjs,\r\n jest,\r\n json,\r\n storybook\r\n};\r\n", "import nx from '@nx/eslint-plugin';\r\n\r\nexport const angularTemplate = [\r\n ...nx.configs['flat/angular-template'],\r\n {\r\n files: ['**/*.html'],\r\n rules: {\r\n '@angular-eslint/template/no-any': 'error',\r\n '@angular-eslint/template/no-duplicate-attributes': 'error',\r\n '@angular-eslint/template/button-has-type': 'error',\r\n '@angular-eslint/template/no-positive-tabindex': 'error',\r\n '@angular-eslint/template/valid-aria': 'error',\r\n '@angular-eslint/template/alt-text': 'error',\r\n '@angular-eslint/template/elements-content': 'error',\r\n '@angular-eslint/template/click-events-have-key-events': 'error',\r\n '@angular-eslint/template/mouse-events-have-key-events': 'error',\r\n '@angular-eslint/template/table-scope': 'error',\r\n '@angular-eslint/template/no-autofocus': 'error',\r\n '@angular-eslint/template/no-distracting-elements': 'error',\r\n '@angular-eslint/template/prefer-control-flow': 'error',\r\n '@angular-eslint/template/prefer-self-closing-tags': 'error',\r\n '@angular-eslint/template/prefer-ngsrc': 'error',\r\n '@angular-eslint/template/attributes-order': [\r\n 'error',\r\n {\r\n alphabetical: true,\r\n order: [\r\n 'STRUCTURAL_DIRECTIVE', // e.g. `*ngIf=\"true\"`, `*ngFor=\"let item of items\"`\r\n 'TEMPLATE_REFERENCE', // e.g. `<input #inputRef>`\r\n 'INPUT_BINDING', // e.g. `[id]=\"3\"`, `[attr.colspan]=\"colspan\"`, [style.width.%]=\"100\", [@triggerName]=\"expression\", `bind-id=\"handleChange()\"`\r\n 'TWO_WAY_BINDING', // e.g. `[(id)]=\"id\"`, `bindon-id=\"id\"\r\n 'ATTRIBUTE_BINDING', // e.g. `<input required>`, `id=\"3\"`\r\n 'OUTPUT_BINDING', // e.g. `(idChange)=\"handleChange()\"`, `on-id=\"handleChange()\"`\r\n ],\r\n },\r\n ],\r\n },\r\n },\r\n];\r\n", "import nx from '@nx/eslint-plugin';\r\n\r\nexport const angular = [\r\n ...nx.configs['flat/angular'],\r\n {\r\n files: ['**/*.ts'],\r\n rules: {\r\n '@angular-eslint/prefer-on-push-component-change-detection': 'error',\r\n },\r\n },\r\n];\r\n", "import nx from '@nx/eslint-plugin';\r\nimport stylistic from '@stylistic/eslint-plugin';\r\nimport type { Linter } from 'eslint';\r\nimport importPluginX from 'eslint-plugin-import-x';\r\n\r\nexport const base: Linter.Config[] = [\r\n ...nx.configs['flat/base'],\r\n {\r\n files: [\r\n '**/*.js',\r\n '**/*.jsx',\r\n '**/*.cjs',\r\n '**/*.mjs',\r\n '**/*.ts',\r\n '**/*.tsx',\r\n '**/*.cts',\r\n '**/*.mts'\r\n ],\r\n ...importPluginX.flatConfigs.recommended\r\n },\r\n {\r\n files: [\r\n '**/*.js',\r\n '**/*.jsx',\r\n '**/*.cjs',\r\n '**/*.mjs',\r\n '**/*.ts',\r\n '**/*.tsx',\r\n '**/*.cts',\r\n '**/*.mts'\r\n ],\r\n ...stylistic.configs.recommended\r\n },\r\n {\r\n files: [\r\n '**/*.js',\r\n '**/*.jsx',\r\n '**/*.cjs',\r\n '**/*.mjs',\r\n '**/*.ts',\r\n '**/*.tsx',\r\n '**/*.cts',\r\n '**/*.mts'\r\n ],\r\n rules: {\r\n 'no-param-reassign': 'error',\r\n 'no-alert': 'error',\r\n 'no-console': ['warn', { allow: ['warn', 'error'] }],\r\n 'no-debugger': 'error',\r\n eqeqeq: ['error', 'always', { null: 'ignore' }],\r\n curly: ['error', 'all'],\r\n 'prefer-const': ['error', { destructuring: 'all' }],\r\n 'no-var': 'error',\r\n 'object-shorthand': 'error',\r\n 'prefer-arrow-callback': 'error',\r\n 'no-useless-concat': 'error',\r\n 'prefer-template': 'error',\r\n 'no-nested-ternary': 'error',\r\n 'no-return-await': 'error',\r\n 'no-else-return': ['error', { allowElseIf: false }], // Prefer early returns\r\n 'no-multi-assign': 'error', // Disallow chaining assignments\r\n radix: 'error', // Require radix parameter for parseInt()\r\n yoda: 'error', // Disallow yoda conditions (`if (\"red\" === color)`)\r\n complexity: ['warn', 10], // Warn if function complexity is high\r\n 'max-depth': ['warn', 4], // Warn on deeply nested blocks\r\n 'max-lines-per-function': ['warn', 50], // Warn on long functions\r\n 'max-params': ['warn', 4], // Warn on functions with many parameters\r\n 'no-lonely-if': 'error', // Disallow if statements as the only statement in an else block\r\n 'grouped-accessor-pairs': ['error', 'getBeforeSet'], // Enforce consistency for getters/setters\r\n 'class-methods-use-this': 'error',\r\n 'no-void': 'error',\r\n 'no-underscore-dangle': 'error',\r\n 'max-len': [\r\n 'error',\r\n {\r\n code: 135,\r\n ignoreComments: true\r\n }\r\n ],\r\n 'spaced-comment': [\r\n 2,\r\n 'always',\r\n {\r\n block: {\r\n exceptions: ['*']\r\n }\r\n }\r\n ],\r\n '@stylistic/comma-dangle': [\r\n 'error',\r\n {\r\n functions: 'never',\r\n arrays: 'always-multiline',\r\n exports: 'always-multiline',\r\n imports: 'always-multiline',\r\n objects: 'always-multiline',\r\n enums: 'always-multiline'\r\n }\r\n ],\r\n '@stylistic/indent': [\r\n 'error',\r\n 2,\r\n {\r\n offsetTernaryExpressions: true,\r\n SwitchCase: 1,\r\n ignoredNodes: [\r\n 'TSTypeParameterInstantiation',\r\n 'FunctionExpression > .params > :matches(Decorator, :not(:first-child))'\r\n ]\r\n }\r\n ],\r\n 'sort-imports': [\r\n 'error',\r\n {\r\n ignoreCase: false,\r\n ignoreDeclarationSort: true,\r\n ignoreMemberSort: false,\r\n memberSyntaxSortOrder: ['none', 'all', 'multiple', 'single'],\r\n allowSeparatedGroups: true\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n files: [\r\n '**/*.js',\r\n '**/*.jsx',\r\n '**/*.cjs',\r\n '**/*.mjs',\r\n '**/*.ts',\r\n '**/*.tsx',\r\n '**/*.cts',\r\n '**/*.mts',\r\n '**/*.html'\r\n ],\r\n rules: {\r\n 'max-lines': [\r\n 'error',\r\n {\r\n max: 150,\r\n skipBlankLines: true,\r\n skipComments: true\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n files: ['**/*.spec.ts', '**/*.test.ts', '**/*.spec.js', '**/*.test.js'],\r\n rules: {\r\n 'max-line-per-function': 'off',\r\n complexity: ['warn', { max: 1 }],\r\n 'max-lines': [\r\n 'error',\r\n {\r\n max: 300,\r\n skipBlankLines: true,\r\n skipComments: true\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n files: ['**/*.action.ts'],\r\n rules: {\r\n 'max-classes-per-file': 'off'\r\n }\r\n },\r\n {\r\n files: ['**/*.state.ts'],\r\n rules: {\r\n 'class-methods-use-this': 'off'\r\n }\r\n }\r\n];\r\n", "import nx from '@nx/eslint-plugin';\r\n\r\nexport const javascript = nx.configs['flat/javascript'];\r\n", "import type { Linter } from 'eslint';\r\nimport jestEslint from 'eslint-plugin-jest';\r\n\r\nexport const jest: Linter.Config[] = [\r\n {\r\n files: ['**/*.spec.ts', '**/*.test.ts', '**/*.spec.js', '**/*.test.js'],\r\n ...jestEslint.configs['flat/all'],\r\n rules: {\r\n 'jest/no-done-callback': 'off',\r\n 'jest/no-unbound-method': 'error'\r\n }\r\n }\r\n];\r\n", "import type { Linter } from 'eslint';\r\nimport jsonEslint from 'eslint-plugin-json';\r\n\r\nexport const json: Linter.Config[] = [\r\n {\r\n files: ['**/*.json'],\r\n ...jsonEslint.configs.recommended\r\n }\r\n];\r\n", "import rxjsEslint from '@smarttools/eslint-plugin-rxjs';\r\nimport type { Linter } from 'eslint';\r\n\r\nexport const rxjs: Linter.Config[] = [\r\n {\r\n files: [\r\n '**/*.js',\r\n '**/*.jsx',\r\n '**/*.cjs',\r\n '**/*.mjs',\r\n '**/*.ts',\r\n '**/*.tsx',\r\n '**/*.cts',\r\n '**/*.mts'\r\n ],\r\n languageOptions: {\r\n parserOptions: {\r\n projectService: true\r\n }\r\n },\r\n ...rxjsEslint.configs.recommended\r\n },\r\n {\r\n files: [\r\n '**/*.js',\r\n '**/*.jsx',\r\n '**/*.cjs',\r\n '**/*.mjs',\r\n '**/*.ts',\r\n '**/*.tsx',\r\n '**/*.cts',\r\n '**/*.mts'\r\n ],\r\n plugins: {\r\n rxjs: rxjsEslint\r\n }\r\n },\r\n {\r\n files: [\r\n '**/*.js',\r\n '**/*.jsx',\r\n '**/*.cjs',\r\n '**/*.mjs',\r\n '**/*.ts',\r\n '**/*.tsx',\r\n '**/*.cts',\r\n '**/*.mts'\r\n ],\r\n rules: {\r\n 'rxjs/prefer-observer': 'error',\r\n 'rxjs/finnish': 'warn',\r\n 'rxjs/no-ignored-error': 'warn',\r\n 'rxjs/no-unsafe-switchmap': 'error',\r\n 'rxjs/no-unsafe-takeuntil': 'error',\r\n 'rxjs/no-unsafe-catch': 'error',\r\n 'rxjs/no-unsafe-first': 'error',\r\n 'rxjs/no-topromise': 'error',\r\n 'rxjs/throw-error': 'error',\r\n 'rxjs/no-async-subscribe': 'off'\r\n }\r\n },\r\n {\r\n files: ['**/*.spec.ts', '**/*.test.ts', '**/*.spec.js', '**/*.test.js'],\r\n rules: {\r\n 'rxjs/no-ignored-subscription': 'off'\r\n }\r\n }\r\n];\r\n", "import type { Linter } from 'eslint';\r\nimport storybookEslint from 'eslint-plugin-storybook';\r\n\r\nexport const storybook: Linter.Config[] = [\r\n ...storybookEslint.configs['flat/recommended'],\r\n {\r\n ignores: ['!.storybook'],\r\n files: ['**/*.stories.ts']\r\n }\r\n];\r\n", "import nx from '@nx/eslint-plugin';\r\nimport { createTypeScriptImportResolver } from 'eslint-import-resolver-typescript';\r\nimport importPluginX from 'eslint-plugin-import-x';\r\n\r\nimport explicitAccessibilityRule from './rules/explicit-accessibility.js';\r\n\r\nconst localTypescriptRules = {\r\n rules: {\r\n 'explicit-accessibility': explicitAccessibilityRule\r\n }\r\n};\r\n\r\nexport const typescript = [\r\n // NOTE: Checks for 'prettier' and 'eslint-plugin-prettier'\r\n importPluginX.flatConfigs.typescript,\r\n ...nx.configs['flat/typescript'],\r\n {\r\n files: ['**/*.ts', '**/*.tsx', '**/*.cts', '**/*.mts'],\r\n plugins: { local: localTypescriptRules },\r\n rules: {\r\n 'local/explicit-accessibility': 'error',\r\n '@typescript-eslint/explicit-member-accessibility': 'error',\r\n '@typescript-eslint/explicit-function-return-type': 'error',\r\n '@typescript-eslint/no-empty-function': 'error',\r\n '@typescript-eslint/no-unused-vars': 'error',\r\n '@typescript-eslint/no-use-before-define': 'error',\r\n\r\n // A. Eliminating `any` (already covered by strict-type-checked, but explicit for clarity)\r\n '@typescript-eslint/no-explicit-any': 'error',\r\n '@typescript-eslint/no-unsafe-assignment': 'error',\r\n '@typescript-eslint/no-unsafe-call': 'error',\r\n '@typescript-eslint/no-unsafe-member-access': 'error',\r\n '@typescript-eslint/no-unsafe-return': 'error',\r\n '@typescript-eslint/no-unsafe-argument': 'error',\r\n\r\n // B. Explicit Annotations (partially covered, explicit module boundaries is key)\r\n '@typescript-eslint/explicit-module-boundary-types': 'error',\r\n // Consider enabling if maximum explicitness is desired, even if verbose:\r\n\r\n // C. Null/Undefined Safety (Requires strictNullChecks)\r\n '@typescript-eslint/no-non-null-assertion': 'error',\r\n\r\n // D. Promise Handling (Supplementing plugin:promise/recommended)\r\n '@typescript-eslint/no-floating-promises': [\r\n 'error',\r\n { ignoreVoid: true }\r\n ],\r\n '@typescript-eslint/no-misused-promises': 'error', // Already in recommended-type-checked\r\n '@typescript-eslint/promise-function-async': 'error',\r\n '@typescript-eslint/await-thenable': 'error', // Already in recommended-type-checked\r\n\r\n // E. Best Practices & Potential Errors (Some covered by presets, fine-tuning here)\r\n '@typescript-eslint/no-inferrable-types': 'warn', // Keep as warn or disable if inference is preferred\r\n '@typescript-eslint/no-var-requires': 'error', // Use ES modules\r\n '@typescript-eslint/require-await': 'error',\r\n '@typescript-eslint/restrict-template-expressions': [\r\n 'error',\r\n { allowNumber: true, allowBoolean: true }\r\n ], // Allow numbers/booleans in templates\r\n '@typescript-eslint/restrict-plus-operands': 'error', // Enforce consistent types for '+'\r\n '@typescript-eslint/prefer-as-const': 'error',\r\n '@typescript-eslint/no-shadow': 'error',\r\n '@typescript-eslint/switch-exhaustiveness-check': 'error', // Ensure switch on unions is exhaustive\r\n '@typescript-eslint/no-unused-expressions': [\r\n 'error',\r\n { allowShortCircuit: true, allowTernary: true }\r\n ],\r\n '@typescript-eslint/no-useless-constructor': 'error',\r\n '@typescript-eslint/dot-notation': ['error', { allowKeywords: true }], // Prefer dot notation where possible\r\n\r\n // F. Consistency & Style (Some covered by stylistic-type-checked)\r\n '@typescript-eslint/consistent-type-assertions': [\r\n 'error',\r\n { assertionStyle: 'as', objectLiteralTypeAssertions: 'never' }\r\n ],\r\n '@typescript-eslint/consistent-type-definitions': ['error', 'type'],\r\n '@typescript-eslint/consistent-type-imports': [\r\n 'error',\r\n { prefer: 'type-imports', fixStyle: 'separate-type-imports' }\r\n ],\r\n '@typescript-eslint/naming-convention': [\r\n 'error',\r\n {\r\n selector: 'objectLiteralProperty',\r\n modifiers: ['requiresQuotes'],\r\n format: null\r\n },\r\n {\r\n selector: 'objectLiteralProperty',\r\n format: ['camelCase', 'snake_case', 'PascalCase']\r\n },\r\n {\r\n selector: 'parameter',\r\n format: ['camelCase'],\r\n leadingUnderscore: 'allow'\r\n },\r\n { selector: 'default', format: ['camelCase'] },\r\n { selector: 'variable', format: ['camelCase', 'UPPER_CASE'] },\r\n { selector: 'function', format: ['camelCase'] },\r\n { selector: 'typeLike', format: ['PascalCase'] },\r\n {\r\n selector: 'property',\r\n modifiers: ['requiresQuotes'],\r\n format: null\r\n },\r\n {\r\n selector: 'property',\r\n format: ['camelCase', 'PascalCase', 'snake_case']\r\n }\r\n ],\r\n 'import-x/order': [\r\n 'error',\r\n {\r\n groups: [\r\n 'builtin',\r\n 'external',\r\n 'internal',\r\n ['parent', 'sibling'],\r\n 'index',\r\n 'unknown'\r\n ],\r\n pathGroups: [\r\n { group: 'external', pattern: '@angular/**', position: 'before' },\r\n {\r\n pattern: '@*/shared/**',\r\n group: 'internal',\r\n position: 'before'\r\n },\r\n {\r\n pattern: '@*/frontend/**',\r\n group: 'internal',\r\n position: 'after'\r\n },\r\n {\r\n pattern: '@*/backend/**',\r\n group: 'internal',\r\n position: 'after'\r\n }\r\n ],\r\n pathGroupsExcludedImportTypes: ['@angular/**'],\r\n 'newlines-between': 'always',\r\n alphabetize: { order: 'asc', caseInsensitive: true }\r\n }\r\n ],\r\n 'import-x/no-unresolved': 'error',\r\n 'import-x/no-duplicates': 'error',\r\n 'import-x/prefer-default-export': 'off',\r\n 'import-x/no-useless-path-segments': 'error',\r\n 'import-x/newline-after-import': 'error',\r\n 'import-x/first': 'error',\r\n 'import-x/no-mutable-exports': 'error'\r\n },\r\n settings: {\r\n 'import-x/resolver-next': [\r\n createTypeScriptImportResolver({\r\n alwaysTryTypes: true,\r\n project: 'tsconfig.base.json'\r\n })\r\n ]\r\n }\r\n },\r\n {\r\n files: ['**/*.ts', '**/*.tsx', '**/*.cts', '**/*.mts'],\r\n languageOptions: {\r\n parserOptions: {\r\n projectService: true\r\n }\r\n },\r\n rules: {\r\n '@typescript-eslint/prefer-readonly': 'error'\r\n }\r\n },\r\n {\r\n files: ['**/*.action.ts'],\r\n rules: {\r\n '@typescript-eslint/no-namespace': 'off'\r\n }\r\n },\r\n {\r\n files: ['**/*.spec.ts', '**/*.test.ts', '**/*.spec.js', '**/*.test.js'],\r\n rules: {\r\n '@typescript-eslint/no-empty-function': 'off',\r\n '@typescript-eslint/no-unbound-method': 'off'\r\n }\r\n }\r\n];\r\n", "import { ESLintUtils, TSESTree } from '@typescript-eslint/utils';\r\n\r\nconst createRule = ESLintUtils.RuleCreator(\r\n () => 'https://eslint.org/docs/latest/rules/no-unused-private-class-members'\r\n);\r\n\r\ntype AccessibilityLevel = 'public' | 'private' | 'protected';\r\n\r\ntype Options = [\r\n {\r\n defaultAccessibility?: AccessibilityLevel;\r\n }\r\n];\r\n\r\nconst defaultOptions: Options[0] = {\r\n defaultAccessibility: 'private'\r\n};\r\n\r\nconst getNodeName = (\r\n node: TSESTree.Node | TSESTree.Token | null | undefined\r\n): string => {\r\n if (!node) {\r\n return '<unknown>';\r\n }\r\n\r\n /*\r\n * MethodDefinition or PropertyDefinition (check 'key' first)\r\n * Note: Check 'key' before 'kind' because MethodDefinition has both\r\n */\r\n if ('key' in node && node.key) {\r\n if (node.key.type === TSESTree.AST_NODE_TYPES.Identifier) {\r\n return node.key.name;\r\n }\r\n // Handle computed property names, private identifiers (#name), etc. if needed\r\n if (node.key.type === TSESTree.AST_NODE_TYPES.PrivateIdentifier) {\r\n return `#${node.key.name}`;\r\n }\r\n return '<computed/complex key>';\r\n }\r\n\r\n // Constructor specific check (if key check didn't catch it - unlikely for MethodDefinition)\r\n if ('kind' in node && node.kind === 'constructor') {\r\n return 'constructor';\r\n }\r\n\r\n // TSParameterProperty - handle its 'parameter' property\r\n if (node.type === TSESTree.AST_NODE_TYPES.TSParameterProperty) {\r\n const param = node.parameter; // Assign to variable for clarity & potentially better inference\r\n\r\n // Handle different parameter kinds:\r\n if (param.type === TSESTree.AST_NODE_TYPES.Identifier) {\r\n return param.name;\r\n }\r\n if (param.type === TSESTree.AST_NODE_TYPES.AssignmentPattern) {\r\n // Check the left side of the assignment\r\n if (param.left.type === TSESTree.AST_NODE_TYPES.Identifier) {\r\n return param.left.name; // Name is on the identifier being assigned to\r\n }\r\n /*\r\n * Parameter is an assignment pattern with destructuring (ArrayPattern/ObjectPattern)\r\n * You might want more sophisticated logic here to extract a name\r\n */\r\n return '<destructured parameter>';\r\n }\r\n // Handle other potential kinds like RestElement ([...args]), ArrayPattern, ObjectPattern\r\n if (\r\n param.type === TSESTree.AST_NODE_TYPES.RestElement &&\r\n param.argument.type === TSESTree.AST_NODE_TYPES.Identifier\r\n ) {\r\n return `...${param.argument.name}`;\r\n }\r\n\r\n return '<complex parameter>';\r\n }\r\n\r\n return '<unknown>';\r\n};\r\n\r\nexport default createRule<Options, 'missingAccessibility'>({\r\n name: 'explicit-accessibility',\r\n meta: {\r\n type: 'suggestion',\r\n docs: {\r\n description: 'Require explicit accessibility modifiers on class members'\r\n },\r\n fixable: 'code',\r\n schema: [\r\n {\r\n type: 'object',\r\n properties: {\r\n defaultAccessibility: {\r\n type: 'string',\r\n enum: ['public', 'private', 'protected'],\r\n description: 'The accessibility modifier to add if one is missing.'\r\n }\r\n },\r\n additionalProperties: false\r\n }\r\n ],\r\n messages: {\r\n missingAccessibility:\r\n \"Class member '{{ name }}' is missing an explicit accessibility modifier (public/private/protected).\"\r\n }\r\n },\r\n defaultOptions: [defaultOptions],\r\n\r\n create(context, [options]) {\r\n const { defaultAccessibility } = { ...defaultOptions, ...options };\r\n const sourceCode = context.sourceCode;\r\n\r\n function checkNode(\r\n node:\r\n | TSESTree.MethodDefinition\r\n | TSESTree.PropertyDefinition\r\n | TSESTree.TSParameterProperty\r\n ): void {\r\n if (node.accessibility) {\r\n return; // Already has modifier\r\n }\r\n\r\n let reportNode: TSESTree.Node | TSESTree.Token | undefined = node;\r\n const name = getNodeName(node);\r\n // Adjust report node for better highlighting\r\n if (\r\n node.type === TSESTree.AST_NODE_TYPES.MethodDefinition ||\r\n node.type === TSESTree.AST_NODE_TYPES.PropertyDefinition\r\n ) {\r\n reportNode = node.key;\r\n } else {\r\n const param = node.parameter;\r\n if (param.type === TSESTree.AST_NODE_TYPES.Identifier) {\r\n reportNode = param;\r\n } else if (\r\n param.type === TSESTree.AST_NODE_TYPES.AssignmentPattern &&\r\n param.left.type === TSESTree.AST_NODE_TYPES.Identifier\r\n ) {\r\n reportNode = param.left;\r\n }\r\n // Keep reportNode as the TSParameterProperty node itself if param isn't simple identifier\r\n }\r\n\r\n context.report({\r\n node: reportNode,\r\n messageId: 'missingAccessibility',\r\n data: { name },\r\n fix(fixer) {\r\n let tokenToInsertBefore: TSESTree.Token | null = null;\r\n let insertText = `${defaultAccessibility} `;\r\n\r\n if (node.decorators.length > 0) {\r\n const lastDecorator = node.decorators[node.decorators.length - 1];\r\n tokenToInsertBefore = sourceCode.getTokenAfter(lastDecorator);\r\n } else {\r\n tokenToInsertBefore = sourceCode.getFirstToken(node);\r\n }\r\n\r\n // Parameter properties need special handling if they also have 'readonly'\r\n if (\r\n node.type === TSESTree.AST_NODE_TYPES.TSParameterProperty &&\r\n node.readonly\r\n ) {\r\n // If readonly exists without accessibility, insert accessibility *before* readonly\r\n const firstToken = sourceCode.getFirstToken(node);\r\n if (firstToken?.value === 'readonly') {\r\n // double check it's the readonly token\r\n tokenToInsertBefore = firstToken;\r\n }\r\n // If insertion point wasn't decorators, use first token (which should be readonly)\r\n }\r\n\r\n if (!tokenToInsertBefore) return null;\r\n\r\n /*\r\n * If the token immediately after the insertion point isn't whitespace, add a space.\r\n * (Handles case where tokenToInsertBefore is the last decorator token)\r\n */\r\n const tokenAfterInsertion = sourceCode.getTokenAfter(\r\n tokenToInsertBefore,\r\n { includeComments: false }\r\n );\r\n const textBetween = sourceCode.text.slice(\r\n tokenToInsertBefore.range[1],\r\n tokenAfterInsertion?.range[0]\r\n );\r\n if (!/^\\s/.test(textBetween)) {\r\n insertText = ` ${insertText}`; // Add leading space if needed after decorator\r\n }\r\n\r\n return fixer.insertTextBefore(tokenToInsertBefore, insertText);\r\n }\r\n });\r\n }\r\n\r\n return {\r\n MethodDefinition(node: TSESTree.MethodDefinition): void {\r\n checkNode(node);\r\n },\r\n\r\n PropertyDefinition(node: TSESTree.PropertyDefinition): void {\r\n checkNode(node);\r\n },\r\n\r\n TSParameterProperty(node: TSESTree.TSParameterProperty): void {\r\n checkNode(node);\r\n }\r\n };\r\n }\r\n});\r\n"],
5
+ "mappings": "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",
6
+ "names": ["nx", "import_eslint_plugin", "nx", "import_eslint_plugin", "nx", "importPluginX", "stylistic", "import_eslint_plugin", "nx", "jestEslint", "jsonEslint", "rxjsEslint", "storybookEslint", "import_eslint_plugin", "import_eslint_plugin_import_x", "importPluginX", "nx"]
7
7
  }