@sun-asterisk/sunlint 1.2.2 โ†’ 1.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (124) hide show
  1. package/CHANGELOG.md +107 -1
  2. package/CONTRIBUTING.md +1654 -66
  3. package/README.md +19 -6
  4. package/config/ci-cd.json +54 -0
  5. package/config/development.json +56 -0
  6. package/config/engines/engines-enhanced.json +86 -0
  7. package/config/engines/semantic-config.json +114 -0
  8. package/config/eslint-rule-mapping.json +50 -38
  9. package/config/large-project.json +143 -0
  10. package/config/presets/all.json +0 -1
  11. package/config/release.json +70 -0
  12. package/config/rule-analysis-strategies.js +23 -4
  13. package/config/rules/S027-categories.json +122 -0
  14. package/config/rules/enhanced-rules-registry.json +2564 -0
  15. package/config/rules/rules-registry-generated.json +785 -837
  16. package/config/rules/rules-registry.json +13 -1
  17. package/core/adapters/sunlint-rule-adapter.js +25 -30
  18. package/core/analysis-orchestrator.js +42 -2
  19. package/core/categories.js +52 -0
  20. package/core/category-constants.js +39 -0
  21. package/core/cli-action-handler.js +53 -32
  22. package/core/cli-program.js +11 -3
  23. package/core/config-manager.js +111 -0
  24. package/core/config-merger.js +88 -0
  25. package/core/constants/categories.js +168 -0
  26. package/core/constants/defaults.js +165 -0
  27. package/core/constants/engines.js +185 -0
  28. package/core/constants/index.js +30 -0
  29. package/core/constants/rules.js +215 -0
  30. package/core/enhanced-rules-registry.js +3 -3
  31. package/core/file-targeting-service.js +128 -7
  32. package/core/interfaces/rule-plugin.interface.js +207 -0
  33. package/core/plugin-manager.js +448 -0
  34. package/core/rule-selection-service.js +42 -15
  35. package/core/semantic-engine.js +658 -0
  36. package/core/semantic-rule-base.js +433 -0
  37. package/core/unified-rule-registry.js +484 -0
  38. package/docs/COMMAND-EXAMPLES.md +134 -0
  39. package/docs/CONSTANTS-ARCHITECTURE.md +288 -0
  40. package/docs/LARGE-PROJECT-GUIDE.md +324 -0
  41. package/engines/core/base-engine.js +249 -0
  42. package/engines/engine-factory.js +275 -0
  43. package/engines/eslint-engine.js +171 -19
  44. package/engines/heuristic-engine.js +569 -78
  45. package/integrations/eslint/plugin/index.js +26 -28
  46. package/origin-rules/common-en.md +8 -8
  47. package/package.json +10 -6
  48. package/rules/common/C003_no_vague_abbreviations/analyzer.js +1 -1
  49. package/rules/common/C017_constructor_logic/analyzer.js +254 -17
  50. package/rules/common/C017_constructor_logic/semantic-analyzer.js +340 -0
  51. package/rules/common/C029_catch_block_logging/analyzer.js +17 -5
  52. package/rules/common/C033_separate_service_repository/README.md +78 -0
  53. package/rules/common/C033_separate_service_repository/analyzer.js +160 -0
  54. package/rules/common/C033_separate_service_repository/config.json +50 -0
  55. package/rules/common/C033_separate_service_repository/regex-based-analyzer.js +585 -0
  56. package/rules/common/C033_separate_service_repository/symbol-based-analyzer.js +368 -0
  57. package/rules/common/C035_error_logging_context/STRATEGY.md +99 -0
  58. package/rules/common/C035_error_logging_context/analyzer.js +230 -0
  59. package/rules/common/C035_error_logging_context/config.json +54 -0
  60. package/rules/common/C035_error_logging_context/regex-based-analyzer.js +299 -0
  61. package/rules/common/C035_error_logging_context/symbol-based-analyzer.js +454 -0
  62. package/rules/common/C040_centralized_validation/analyzer.js +165 -0
  63. package/rules/common/C040_centralized_validation/config.json +46 -0
  64. package/rules/common/C040_centralized_validation/regex-based-analyzer.js +243 -0
  65. package/rules/common/C040_centralized_validation/symbol-based-analyzer.js +416 -0
  66. package/rules/common/C047_no_duplicate_retry_logic/c047-semantic-rule.js +278 -0
  67. package/rules/common/C047_no_duplicate_retry_logic/symbol-analyzer-enhanced.js +968 -0
  68. package/rules/common/C047_no_duplicate_retry_logic/symbol-config.json +71 -0
  69. package/rules/common/{C076_single_test_behavior โ†’ C072_single_test_behavior}/analyzer.js +6 -6
  70. package/rules/common/C076_explicit_function_types/README.md +30 -0
  71. package/rules/common/C076_explicit_function_types/analyzer.js +172 -0
  72. package/rules/common/C076_explicit_function_types/config.json +15 -0
  73. package/rules/common/C076_explicit_function_types/semantic-analyzer.js +341 -0
  74. package/rules/index.js +8 -0
  75. package/rules/parser/rule-parser.js +13 -2
  76. package/rules/security/S005_no_origin_auth/README.md +226 -0
  77. package/rules/security/S005_no_origin_auth/analyzer.js +184 -0
  78. package/rules/security/S005_no_origin_auth/ast-analyzer.js +406 -0
  79. package/rules/security/S005_no_origin_auth/config.json +85 -0
  80. package/rules/security/S006_no_plaintext_recovery_codes/README.md +139 -0
  81. package/rules/security/S006_no_plaintext_recovery_codes/analyzer.js +306 -0
  82. package/rules/security/S006_no_plaintext_recovery_codes/config.json +48 -0
  83. package/rules/security/S007_no_plaintext_otp/README.md +198 -0
  84. package/rules/security/S007_no_plaintext_otp/analyzer.js +406 -0
  85. package/rules/security/S007_no_plaintext_otp/config.json +79 -0
  86. package/rules/security/S007_no_plaintext_otp/semantic-analyzer.js +609 -0
  87. package/rules/security/S007_no_plaintext_otp/semantic-config.json +195 -0
  88. package/rules/security/S007_no_plaintext_otp/semantic-wrapper.js +280 -0
  89. package/rules/security/S027_no_hardcoded_secrets/analyzer.js +180 -366
  90. package/rules/security/S027_no_hardcoded_secrets/categories.json +153 -0
  91. package/rules/security/S027_no_hardcoded_secrets/categorized-analyzer.js +250 -0
  92. package/scripts/category-manager.js +150 -0
  93. package/scripts/generate-rules-registry.js +88 -0
  94. package/scripts/migrate-rule-registry.js +157 -0
  95. package/scripts/prepare-release.sh +1 -1
  96. package/scripts/validate-system.js +48 -0
  97. package/.sunlint.json +0 -35
  98. package/config/README.md +0 -88
  99. package/config/engines/eslint-rule-mapping.json +0 -74
  100. package/config/schemas/sunlint-schema.json +0 -0
  101. package/config/testing/test-s005-working.ts +0 -22
  102. package/core/multi-rule-runner.js +0 -0
  103. package/docs/ESLINT-INTEGRATION-STRATEGY.md +0 -392
  104. package/docs/FUTURE_PACKAGES.md +0 -83
  105. package/docs/HEURISTIC_VS_AI.md +0 -113
  106. package/docs/PRODUCTION_DEPLOYMENT_ANALYSIS.md +0 -112
  107. package/docs/PRODUCTION_SIZE_IMPACT.md +0 -183
  108. package/docs/RELEASE_GUIDE.md +0 -230
  109. package/docs/STANDARDIZED-CATEGORY-FILTERING.md +0 -156
  110. package/engines/tree-sitter-parser.js +0 -0
  111. package/engines/universal-ast-engine.js +0 -0
  112. package/integrations/eslint/plugin/rules/common/c076-single-behavior-per-test.js +0 -254
  113. package/rules/common/C029_catch_block_logging/analyzer-backup.js +0 -426
  114. package/rules/common/C029_catch_block_logging/analyzer-fixed.js +0 -130
  115. package/rules/common/C029_catch_block_logging/analyzer-multi-tech.js +0 -487
  116. package/rules/common/C029_catch_block_logging/analyzer-simple.js +0 -110
  117. package/rules/common/C029_catch_block_logging/ast-analyzer-backup.js +0 -441
  118. package/rules/common/C029_catch_block_logging/ast-analyzer-new.js +0 -127
  119. package/rules/common/C029_catch_block_logging/ast-analyzer.js +0 -133
  120. package/rules/common/C029_catch_block_logging/cfg-analyzer.js +0 -408
  121. package/rules/common/C029_catch_block_logging/dataflow-analyzer.js +0 -454
  122. package/rules/common/C029_catch_block_logging/multi-language-ast-engine.js +0 -700
  123. package/rules/common/C029_catch_block_logging/pattern-learning-analyzer.js +0 -568
  124. package/rules/common/C029_catch_block_logging/semantic-analyzer.js +0 -459
package/CHANGELOG.md CHANGED
@@ -2,7 +2,113 @@
2
2
 
3
3
  ---
4
4
 
5
- ## ๐Ÿ”ฅ **v1.2.0 - Architecture Refactor (In Development)**
5
+ ## ๐Ÿš€ **v1.3.1 - Advanced Rules & Performance Optimization (August 18, 2025)**
6
+
7
+ **Release Date**: August 18, 2025
8
+ **Type**: Feature Enhancement & Performance Optimization
9
+
10
+ ### ๐ŸŽฏ **New Rules Added**
11
+ - **NEW**: Rule **C076** - Explicit Function Argument Types (Semantic-only)
12
+ - Enforces explicit type annotations on all public function parameters
13
+ - Detects `any`, `unknown`, and missing type annotations
14
+ - Semantic-only analysis (no regex fallback) for maximum accuracy
15
+ - Config-driven with customizable allowed/disallowed types
16
+
17
+ ### ๐Ÿ”ง **Rules Enhanced**
18
+ - **ENHANCED**: Rule **C033** - Separate Service and Repository Logic
19
+ - Improved symbol-based analysis with regex fallback
20
+ - Better business logic pattern detection
21
+ - Enhanced service/repository boundary enforcement
22
+
23
+ - **ENHANCED**: Rule **C035** - Error Logging Context
24
+ - Advanced semantic analysis for error handling patterns
25
+ - Better context detection in catch blocks
26
+ - Improved logging recommendation accuracy
27
+
28
+ - **ENHANCED**: Rule **C040** - Centralized Validation
29
+ - Symbol-based validation pattern detection
30
+ - Enhanced inline validation detection
31
+ - Better configuration options
32
+
33
+ - **ENHANCED**: Rule **C017** - Consistent Error Response Format
34
+ - Improved semantic analysis capabilities
35
+ - Better error response format detection
36
+ - Enhanced cross-file analysis
37
+
38
+ ### ๐ŸŽฏ **Semantic Rules Added**
39
+ - **NEW**: Rule **S005** - AST-based analysis capabilities
40
+ - **NEW**: Rule **S006** - Advanced regex pattern matching
41
+ - **NEW**: Rule **S007** - Semantic analysis with symbol resolution
42
+
43
+ ### โšก **Performance Improvements**
44
+ - **OPTIMIZED**: Lazy initialization for semantic rules
45
+ - Rules only initialize when actually needed
46
+ - Reduced startup time and memory usage
47
+ - Eliminated unnecessary rule initialization logs
48
+
49
+ - **IMPROVED**: Semantic engine memory optimization
50
+ - Better handling of large projects (1000+ files)
51
+ - Optimized ts-morph project loading
52
+ - Enhanced file targeting for semantic analysis
53
+
54
+ ### ๐Ÿ› **Bug Fixes**
55
+ - **FIXED**: Rule ID confusion between C072 and C076
56
+ - **FIXED**: Verbose logging only shows when `--verbose` flag is used
57
+ - **FIXED**: Semantic rules initialization spam in logs
58
+ - **FIXED**: File ignore patterns for ESLint integration rules
59
+
60
+ ### ๐Ÿ“ฆ **Packaging Improvements**
61
+ - **UPDATED**: .npmignore to preserve important ESLint rule implementations
62
+ - **IMPROVED**: Package size optimization while maintaining functionality
63
+ - **ENHANCED**: Build process to include all necessary rule files
64
+
65
+ ### ๐Ÿ”„ **Backward Compatibility**
66
+ - **MAINTAINED**: Full backward compatibility with existing configurations
67
+ - **PRESERVED**: All existing rule IDs and behavior
68
+ - **ENSURED**: ESLint integration continues to work seamlessly
69
+
70
+ ---
71
+
72
+ ## ๐ŸŒŸ **v1.3.0 - Enhanced Engine Architecture (August 13, 2025)**
73
+
74
+ **Release Date**: August 13, 2025
75
+ **Type**: Major Engine Enhancement & Rule Mapping Improvements
76
+
77
+ ### ๐Ÿ—๏ธ **Engine Architecture Enhancements**
78
+
79
+ #### **Strict Engine Mode vs Fallback Mode**
80
+ - **NEW**: `--engine=eslint` strict mode - only runs specified engine, skips unsupported rules
81
+ - **NEW**: Auto fallback mode when no engine specified (ESLint โ†’ Heuristic โ†’ OpenAI)
82
+ - **IMPROVED**: Enhanced orchestrator with requestedEngine support
83
+ - **FIXED**: TypeScript ESLint rules requiring type information removed from mapping
84
+
85
+ #### **ESLint Integration Improvements**
86
+ - **FIXED**: Removed type-dependent rules: `@typescript-eslint/strict-boolean-expressions`, `@typescript-eslint/no-floating-promises`, `@typescript-eslint/prefer-readonly`
87
+ - **UPDATED**: ESLint rule mapping cleanup for better stability
88
+ - **ENHANCED**: Graceful handling of missing ESLint plugins
89
+ - **ADDED**: Support for `eslint-plugin-import` in dependencies documentation
90
+
91
+ #### **Rule System Enhancements**
92
+ - **IMPROVED**: Rule skip logic with detailed reporting
93
+ - **ENHANCED**: Engine-specific rule filtering and compatibility
94
+ - **FIXED**: ESLint engine stability issues with TypeScript projects
95
+ - **UPDATED**: Documentation to reflect current architecture
96
+
97
+ ### ๐Ÿ“š **Documentation Updates**
98
+ - **UPDATED**: README.md with complete dependency information
99
+ - **UPDATED**: CONTRIBUTING.md to match current architecture
100
+ - **REMOVED**: Outdated documentation files (REFACTOR_PLAN.md, RULE_MIGRATION_SUMMARY.md, etc.)
101
+ - **ENHANCED**: Clear setup instructions for TypeScript projects
102
+
103
+ ### ๐Ÿงน **Cleanup & Maintenance**
104
+ - **REMOVED**: Deprecated documentation files
105
+ - **REMOVED**: Temporary test files and cache files
106
+ - **UPDATED**: Package version to 1.3.0
107
+ - **IMPROVED**: File structure organization
108
+
109
+ ---
110
+
111
+ ## ๐Ÿ”ฅ **v1.2.0 - Architecture Refactor (July 30, 2025)**
6
112
 
7
113
  **Release Date**: July 30, 2025
8
114
  **Type**: Major Architecture Update (Adapter Pattern Implementation)