@gulibs/safe-coder 0.0.26 → 0.0.27

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 (192) hide show
  1. package/README.md +678 -994
  2. package/dist/cache/cache-manager.d.ts +71 -0
  3. package/dist/cache/cache-manager.d.ts.map +1 -0
  4. package/dist/cache/cache-manager.js +244 -0
  5. package/dist/cache/cache-manager.js.map +1 -0
  6. package/dist/executor/cli-executor.d.ts +106 -0
  7. package/dist/executor/cli-executor.d.ts.map +1 -0
  8. package/dist/executor/cli-executor.js +133 -0
  9. package/dist/executor/cli-executor.js.map +1 -0
  10. package/dist/executor/dependency-checker.d.ts +23 -0
  11. package/dist/executor/dependency-checker.d.ts.map +1 -0
  12. package/dist/executor/dependency-checker.js +62 -0
  13. package/dist/executor/dependency-checker.js.map +1 -0
  14. package/dist/index.js +3 -4
  15. package/dist/index.js.map +1 -1
  16. package/dist/processor/content-processor.d.ts +76 -0
  17. package/dist/processor/content-processor.d.ts.map +1 -0
  18. package/dist/processor/content-processor.js +182 -0
  19. package/dist/processor/content-processor.js.map +1 -0
  20. package/dist/processor/guide-generator.d.ts +68 -0
  21. package/dist/processor/guide-generator.d.ts.map +1 -0
  22. package/dist/processor/guide-generator.js +189 -0
  23. package/dist/processor/guide-generator.js.map +1 -0
  24. package/dist/server/safe-coder-mcp.d.ts +18 -0
  25. package/dist/server/safe-coder-mcp.d.ts.map +1 -0
  26. package/dist/server/safe-coder-mcp.js +164 -0
  27. package/dist/server/safe-coder-mcp.js.map +1 -0
  28. package/dist/tools/cache-tools.d.ts +42 -0
  29. package/dist/tools/cache-tools.d.ts.map +1 -0
  30. package/dist/tools/cache-tools.js +70 -0
  31. package/dist/tools/cache-tools.js.map +1 -0
  32. package/dist/tools/crawl-documentation.d.ts +57 -0
  33. package/dist/tools/crawl-documentation.d.ts.map +1 -0
  34. package/dist/tools/crawl-documentation.js +96 -0
  35. package/dist/tools/crawl-documentation.js.map +1 -0
  36. package/dist/tools/index.d.ts +4 -0
  37. package/dist/tools/index.d.ts.map +1 -0
  38. package/dist/tools/index.js +4 -0
  39. package/dist/tools/index.js.map +1 -0
  40. package/dist/tools/save-skill.d.ts +49 -0
  41. package/dist/tools/save-skill.d.ts.map +1 -0
  42. package/dist/tools/save-skill.js +207 -0
  43. package/dist/tools/save-skill.js.map +1 -0
  44. package/package.json +18 -28
  45. package/dist/documentation/browser-doc-browser.d.ts +0 -41
  46. package/dist/documentation/browser-doc-browser.d.ts.map +0 -1
  47. package/dist/documentation/browser-doc-browser.js +0 -357
  48. package/dist/documentation/browser-doc-browser.js.map +0 -1
  49. package/dist/documentation/browser-manager.d.ts +0 -51
  50. package/dist/documentation/browser-manager.d.ts.map +0 -1
  51. package/dist/documentation/browser-manager.js +0 -260
  52. package/dist/documentation/browser-manager.js.map +0 -1
  53. package/dist/documentation/cache.d.ts +0 -13
  54. package/dist/documentation/cache.d.ts.map +0 -1
  55. package/dist/documentation/cache.js +0 -48
  56. package/dist/documentation/cache.js.map +0 -1
  57. package/dist/documentation/checkpoint-manager.d.ts +0 -38
  58. package/dist/documentation/checkpoint-manager.d.ts.map +0 -1
  59. package/dist/documentation/checkpoint-manager.js +0 -101
  60. package/dist/documentation/checkpoint-manager.js.map +0 -1
  61. package/dist/documentation/doc-crawler.d.ts +0 -221
  62. package/dist/documentation/doc-crawler.d.ts.map +0 -1
  63. package/dist/documentation/doc-crawler.js +0 -1415
  64. package/dist/documentation/doc-crawler.js.map +0 -1
  65. package/dist/documentation/github-client.d.ts +0 -13
  66. package/dist/documentation/github-client.d.ts.map +0 -1
  67. package/dist/documentation/github-client.js +0 -90
  68. package/dist/documentation/github-client.js.map +0 -1
  69. package/dist/documentation/http-fetcher.d.ts +0 -8
  70. package/dist/documentation/http-fetcher.d.ts.map +0 -1
  71. package/dist/documentation/http-fetcher.js +0 -31
  72. package/dist/documentation/http-fetcher.js.map +0 -1
  73. package/dist/documentation/index.d.ts +0 -16
  74. package/dist/documentation/index.d.ts.map +0 -1
  75. package/dist/documentation/index.js +0 -159
  76. package/dist/documentation/index.js.map +0 -1
  77. package/dist/documentation/llms-txt/detector.d.ts +0 -31
  78. package/dist/documentation/llms-txt/detector.d.ts.map +0 -1
  79. package/dist/documentation/llms-txt/detector.js +0 -77
  80. package/dist/documentation/llms-txt/detector.js.map +0 -1
  81. package/dist/documentation/llms-txt/downloader.d.ts +0 -30
  82. package/dist/documentation/llms-txt/downloader.d.ts.map +0 -1
  83. package/dist/documentation/llms-txt/downloader.js +0 -84
  84. package/dist/documentation/llms-txt/downloader.js.map +0 -1
  85. package/dist/documentation/llms-txt/index.d.ts +0 -4
  86. package/dist/documentation/llms-txt/index.d.ts.map +0 -1
  87. package/dist/documentation/llms-txt/index.js +0 -4
  88. package/dist/documentation/llms-txt/index.js.map +0 -1
  89. package/dist/documentation/llms-txt/parser.d.ts +0 -43
  90. package/dist/documentation/llms-txt/parser.d.ts.map +0 -1
  91. package/dist/documentation/llms-txt/parser.js +0 -177
  92. package/dist/documentation/llms-txt/parser.js.map +0 -1
  93. package/dist/documentation/normalizer.d.ts +0 -6
  94. package/dist/documentation/normalizer.d.ts.map +0 -1
  95. package/dist/documentation/normalizer.js +0 -38
  96. package/dist/documentation/normalizer.js.map +0 -1
  97. package/dist/documentation/npm-client.d.ts +0 -19
  98. package/dist/documentation/npm-client.d.ts.map +0 -1
  99. package/dist/documentation/npm-client.js +0 -182
  100. package/dist/documentation/npm-client.js.map +0 -1
  101. package/dist/documentation/skill-generator.d.ts +0 -108
  102. package/dist/documentation/skill-generator.d.ts.map +0 -1
  103. package/dist/documentation/skill-generator.js +0 -642
  104. package/dist/documentation/skill-generator.js.map +0 -1
  105. package/dist/documentation/web-doc-browser.d.ts +0 -67
  106. package/dist/documentation/web-doc-browser.d.ts.map +0 -1
  107. package/dist/documentation/web-doc-browser.js +0 -555
  108. package/dist/documentation/web-doc-browser.js.map +0 -1
  109. package/dist/errors/api-validator.d.ts +0 -9
  110. package/dist/errors/api-validator.d.ts.map +0 -1
  111. package/dist/errors/api-validator.js +0 -57
  112. package/dist/errors/api-validator.js.map +0 -1
  113. package/dist/errors/contextual-analysis.d.ts +0 -14
  114. package/dist/errors/contextual-analysis.d.ts.map +0 -1
  115. package/dist/errors/contextual-analysis.js +0 -173
  116. package/dist/errors/contextual-analysis.js.map +0 -1
  117. package/dist/errors/cross-file-analyzer.d.ts +0 -16
  118. package/dist/errors/cross-file-analyzer.d.ts.map +0 -1
  119. package/dist/errors/cross-file-analyzer.js +0 -172
  120. package/dist/errors/cross-file-analyzer.js.map +0 -1
  121. package/dist/errors/eslint-integration.d.ts +0 -9
  122. package/dist/errors/eslint-integration.d.ts.map +0 -1
  123. package/dist/errors/eslint-integration.js +0 -131
  124. package/dist/errors/eslint-integration.js.map +0 -1
  125. package/dist/errors/framework-detector.d.ts +0 -10
  126. package/dist/errors/framework-detector.d.ts.map +0 -1
  127. package/dist/errors/framework-detector.js +0 -126
  128. package/dist/errors/framework-detector.js.map +0 -1
  129. package/dist/errors/index.d.ts +0 -18
  130. package/dist/errors/index.d.ts.map +0 -1
  131. package/dist/errors/index.js +0 -134
  132. package/dist/errors/index.js.map +0 -1
  133. package/dist/errors/pattern-matcher.d.ts +0 -25
  134. package/dist/errors/pattern-matcher.d.ts.map +0 -1
  135. package/dist/errors/pattern-matcher.js +0 -44
  136. package/dist/errors/pattern-matcher.js.map +0 -1
  137. package/dist/errors/patterns.d.ts +0 -11
  138. package/dist/errors/patterns.d.ts.map +0 -1
  139. package/dist/errors/patterns.js +0 -351
  140. package/dist/errors/patterns.js.map +0 -1
  141. package/dist/errors/performance-detector.d.ts +0 -11
  142. package/dist/errors/performance-detector.d.ts.map +0 -1
  143. package/dist/errors/performance-detector.js +0 -119
  144. package/dist/errors/performance-detector.js.map +0 -1
  145. package/dist/errors/runtime-detector.d.ts +0 -7
  146. package/dist/errors/runtime-detector.d.ts.map +0 -1
  147. package/dist/errors/runtime-detector.js +0 -86
  148. package/dist/errors/runtime-detector.js.map +0 -1
  149. package/dist/errors/security-detector.d.ts +0 -6
  150. package/dist/errors/security-detector.d.ts.map +0 -1
  151. package/dist/errors/security-detector.js +0 -75
  152. package/dist/errors/security-detector.js.map +0 -1
  153. package/dist/errors/typescript-integration.d.ts +0 -6
  154. package/dist/errors/typescript-integration.d.ts.map +0 -1
  155. package/dist/errors/typescript-integration.js +0 -46
  156. package/dist/errors/typescript-integration.js.map +0 -1
  157. package/dist/server/mcp-server.d.ts +0 -14
  158. package/dist/server/mcp-server.d.ts.map +0 -1
  159. package/dist/server/mcp-server.js +0 -793
  160. package/dist/server/mcp-server.js.map +0 -1
  161. package/dist/types/documentation.d.ts +0 -26
  162. package/dist/types/documentation.d.ts.map +0 -1
  163. package/dist/types/documentation.js +0 -2
  164. package/dist/types/documentation.js.map +0 -1
  165. package/dist/utils/config.d.ts +0 -21
  166. package/dist/utils/config.d.ts.map +0 -1
  167. package/dist/utils/config.js +0 -34
  168. package/dist/utils/config.js.map +0 -1
  169. package/dist/utils/http-client.d.ts +0 -17
  170. package/dist/utils/http-client.d.ts.map +0 -1
  171. package/dist/utils/http-client.js +0 -62
  172. package/dist/utils/http-client.js.map +0 -1
  173. package/dist/utils/logger.d.ts +0 -36
  174. package/dist/utils/logger.d.ts.map +0 -1
  175. package/dist/utils/logger.js +0 -128
  176. package/dist/utils/logger.js.map +0 -1
  177. package/dist/utils/rate-limiter.d.ts +0 -9
  178. package/dist/utils/rate-limiter.d.ts.map +0 -1
  179. package/dist/utils/rate-limiter.js +0 -26
  180. package/dist/utils/rate-limiter.js.map +0 -1
  181. package/dist/validation/auto-fix.d.ts +0 -15
  182. package/dist/validation/auto-fix.d.ts.map +0 -1
  183. package/dist/validation/auto-fix.js +0 -49
  184. package/dist/validation/auto-fix.js.map +0 -1
  185. package/dist/validation/index.d.ts +0 -21
  186. package/dist/validation/index.d.ts.map +0 -1
  187. package/dist/validation/index.js +0 -45
  188. package/dist/validation/index.js.map +0 -1
  189. package/dist/validation/resolution-db.d.ts +0 -15
  190. package/dist/validation/resolution-db.d.ts.map +0 -1
  191. package/dist/validation/resolution-db.js +0 -62
  192. package/dist/validation/resolution-db.js.map +0 -1
@@ -1,126 +0,0 @@
1
- export class FrameworkDetector {
2
- detectErrors(code, filename = 'code.ts') {
3
- const errors = [];
4
- const lines = code.split('\n');
5
- // Detect React code
6
- const isReact = code.includes('react') || filename.endsWith('.tsx') || filename.endsWith('.jsx');
7
- const isNextJs = code.includes('next/') || code.includes('getServerSideProps') || code.includes('getStaticProps');
8
- const isVue = code.includes('vue') || filename.endsWith('.vue');
9
- if (isReact) {
10
- const reactErrors = this.detectReactErrors(code, lines);
11
- errors.push(...reactErrors);
12
- }
13
- if (isNextJs) {
14
- const nextErrors = this.detectNextJsErrors(code, lines);
15
- errors.push(...nextErrors);
16
- }
17
- if (isVue) {
18
- const vueErrors = this.detectVueErrors(code, lines);
19
- errors.push(...vueErrors);
20
- }
21
- return this.prioritize(errors);
22
- }
23
- detectReactErrors(code, lines) {
24
- const errors = [];
25
- for (let i = 0; i < lines.length; i++) {
26
- const line = lines[i];
27
- const lineNumber = i + 1;
28
- // Detect conditional hooks (already handled by ESLint, but add pattern matching)
29
- const conditionalHookMatch = line.match(/(if|for|while|switch)\s*\([^)]*\)\s*\{[^}]*\b(use[A-Z]\w+)\s*\(/);
30
- if (conditionalHookMatch) {
31
- errors.push({
32
- type: 'react',
33
- message: `React Hook '${conditionalHookMatch[2]}' called conditionally violates Rules of Hooks`,
34
- line: lineNumber,
35
- column: line.indexOf(conditionalHookMatch[0]) + 1,
36
- priority: 1,
37
- fix: 'Move hook outside conditional or use early return',
38
- });
39
- }
40
- // Detect missing key in map
41
- const mapMatch = line.match(/\.map\s*\([^)]*\)\s*=>/);
42
- if (mapMatch) {
43
- // Check if next few lines have JSX without key
44
- const nextLines = lines.slice(i, Math.min(i + 5, lines.length)).join('\n');
45
- if (nextLines.includes('<') && !nextLines.includes('key=')) {
46
- errors.push({
47
- type: 'react',
48
- message: 'List item missing key prop',
49
- line: lineNumber,
50
- column: line.indexOf(mapMatch[0]) + 1,
51
- priority: 3,
52
- fix: 'Add unique key prop to list items',
53
- });
54
- }
55
- }
56
- // Detect setState in render
57
- const setStateMatch = line.match(/setState\s*\(/);
58
- if (setStateMatch && this.isInRenderFunction(code, i)) {
59
- errors.push({
60
- type: 'react',
61
- message: 'setState called during render may cause infinite loop',
62
- line: lineNumber,
63
- column: line.indexOf(setStateMatch[0]) + 1,
64
- priority: 2,
65
- fix: 'Move setState to useEffect or event handler',
66
- });
67
- }
68
- }
69
- return errors;
70
- }
71
- detectNextJsErrors(code, lines) {
72
- const errors = [];
73
- for (let i = 0; i < lines.length; i++) {
74
- const line = lines[i];
75
- const lineNumber = i + 1;
76
- // Detect server functions in client components
77
- if (code.includes("'use client'")) {
78
- const serverFuncMatch = line.match(/\b(getServerSideProps|getStaticProps|getStaticPaths)\s*\(/);
79
- if (serverFuncMatch) {
80
- errors.push({
81
- type: 'nextjs',
82
- message: `Server function '${serverFuncMatch[1]}' used in client component`,
83
- line: lineNumber,
84
- column: line.indexOf(serverFuncMatch[0]) + 1,
85
- priority: 2,
86
- fix: 'Remove server functions from client component',
87
- });
88
- }
89
- }
90
- }
91
- return errors;
92
- }
93
- detectVueErrors(code, lines) {
94
- const errors = [];
95
- // Basic Vue error detection
96
- for (let i = 0; i < lines.length; i++) {
97
- const line = lines[i];
98
- const lineNumber = i + 1;
99
- // Detect Vue lifecycle hook issues (basic)
100
- const lifecycleMatch = line.match(/\b(mounted|created|updated)\s*\([^)]*\)\s*\{/);
101
- if (lifecycleMatch) {
102
- // Check if async without proper handling
103
- if (line.includes('async') && !line.includes('await')) {
104
- errors.push({
105
- type: 'vue',
106
- message: `Vue lifecycle hook '${lifecycleMatch[1]}' is async but may not handle errors`,
107
- line: lineNumber,
108
- column: line.indexOf(lifecycleMatch[0]) + 1,
109
- priority: 3,
110
- fix: 'Add error handling for async lifecycle hooks',
111
- });
112
- }
113
- }
114
- }
115
- return errors;
116
- }
117
- isInRenderFunction(code, lineIndex) {
118
- const beforeCode = code.split('\n').slice(0, lineIndex + 1).join('\n');
119
- // Simple heuristic: check if we're in a function that returns JSX
120
- return beforeCode.includes('return') && (beforeCode.includes('<') || beforeCode.includes('React.createElement'));
121
- }
122
- prioritize(errors) {
123
- return errors.sort((a, b) => a.priority - b.priority);
124
- }
125
- }
126
- //# sourceMappingURL=framework-detector.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"framework-detector.js","sourceRoot":"","sources":["../../src/errors/framework-detector.ts"],"names":[],"mappings":"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"}
@@ -1,18 +0,0 @@
1
- import { type DetectedError } from './pattern-matcher.js';
2
- import { type FileContext } from './cross-file-analyzer.js';
3
- export declare class ErrorDetectionService {
4
- private patternMatcher;
5
- private eslint;
6
- private typescript;
7
- private contextual;
8
- private runtime;
9
- private performance;
10
- private security;
11
- private framework;
12
- private apiValidator;
13
- private crossFile;
14
- constructor(enableRuntime?: boolean, enablePerformance?: boolean, enableSecurity?: boolean, enableFramework?: boolean, enableApiValidation?: boolean, enableCrossFile?: boolean);
15
- detectErrors(code: string, filename?: string, files?: FileContext[]): Promise<DetectedError[]>;
16
- private deduplicateAndPrioritize;
17
- }
18
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,KAAK,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAS1E,OAAO,EAAqB,KAAK,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAE/E,qBAAa,qBAAqB;IAChC,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,UAAU,CAAwB;IAC1C,OAAO,CAAC,UAAU,CAAqB;IACvC,OAAO,CAAC,OAAO,CAAyB;IACxC,OAAO,CAAC,WAAW,CAA6B;IAChD,OAAO,CAAC,QAAQ,CAA0B;IAC1C,OAAO,CAAC,SAAS,CAA2B;IAC5C,OAAO,CAAC,YAAY,CAAsB;IAC1C,OAAO,CAAC,SAAS,CAAoB;gBAGnC,aAAa,GAAE,OAAc,EAC7B,iBAAiB,GAAE,OAAc,EACjC,cAAc,GAAE,OAAc,EAC9B,eAAe,GAAE,OAAc,EAC/B,mBAAmB,GAAE,OAAc,EACnC,eAAe,GAAE,OAAe;IAc5B,YAAY,CAChB,IAAI,EAAE,MAAM,EACZ,QAAQ,GAAE,MAAkB,EAC5B,KAAK,CAAC,EAAE,WAAW,EAAE,GACpB,OAAO,CAAC,aAAa,EAAE,CAAC;IAyF3B,OAAO,CAAC,wBAAwB;CAgBjC"}
@@ -1,134 +0,0 @@
1
- import { PatternMatcher } from './pattern-matcher.js';
2
- import { ESLintIntegration } from './eslint-integration.js';
3
- import { TypeScriptIntegration } from './typescript-integration.js';
4
- import { ContextualAnalysis } from './contextual-analysis.js';
5
- import { RuntimeDetector } from './runtime-detector.js';
6
- import { PerformanceDetector } from './performance-detector.js';
7
- import { SecurityDetector } from './security-detector.js';
8
- import { FrameworkDetector } from './framework-detector.js';
9
- import { ApiValidator } from './api-validator.js';
10
- import { CrossFileAnalyzer } from './cross-file-analyzer.js';
11
- export class ErrorDetectionService {
12
- patternMatcher;
13
- eslint;
14
- typescript;
15
- contextual;
16
- runtime;
17
- performance;
18
- security;
19
- framework;
20
- apiValidator;
21
- crossFile;
22
- constructor(enableRuntime = true, enablePerformance = true, enableSecurity = true, enableFramework = true, enableApiValidation = true, enableCrossFile = false) {
23
- this.patternMatcher = new PatternMatcher();
24
- this.eslint = new ESLintIntegration();
25
- this.typescript = new TypeScriptIntegration();
26
- this.contextual = new ContextualAnalysis();
27
- this.runtime = enableRuntime ? new RuntimeDetector() : null;
28
- this.performance = enablePerformance ? new PerformanceDetector() : null;
29
- this.security = enableSecurity ? new SecurityDetector() : null;
30
- this.framework = enableFramework ? new FrameworkDetector() : null;
31
- this.apiValidator = enableApiValidation ? new ApiValidator() : null;
32
- this.crossFile = new CrossFileAnalyzer(enableCrossFile);
33
- }
34
- async detectErrors(code, filename = 'code.ts', files) {
35
- const allErrors = [];
36
- // Layer 1: Static analysis (ESLint)
37
- try {
38
- const eslintErrors = await this.eslint.detectErrors(code, filename);
39
- allErrors.push(...eslintErrors);
40
- }
41
- catch (error) {
42
- // Continue if ESLint fails
43
- }
44
- // Layer 2: TypeScript compiler
45
- try {
46
- const tsErrors = await this.typescript.detectErrors(code, filename);
47
- allErrors.push(...tsErrors);
48
- }
49
- catch (error) {
50
- // Continue if TypeScript fails
51
- }
52
- // Layer 3: Pattern matching
53
- const patternErrors = this.patternMatcher.detect(code);
54
- allErrors.push(...patternErrors);
55
- // Layer 4: Contextual analysis
56
- const contextualErrors = this.contextual.detectErrors(code);
57
- allErrors.push(...contextualErrors);
58
- // Layer 5: Runtime error detection
59
- if (this.runtime) {
60
- try {
61
- const runtimeErrors = this.runtime.detectErrors(code);
62
- allErrors.push(...runtimeErrors);
63
- }
64
- catch (error) {
65
- // Continue if runtime detection fails
66
- }
67
- }
68
- // Layer 6: Performance issue detection
69
- if (this.performance) {
70
- try {
71
- const performanceErrors = this.performance.detectErrors(code);
72
- allErrors.push(...performanceErrors);
73
- }
74
- catch (error) {
75
- // Continue if performance detection fails
76
- }
77
- }
78
- // Layer 7: Security vulnerability detection
79
- if (this.security) {
80
- try {
81
- const securityErrors = this.security.detectErrors(code);
82
- allErrors.push(...securityErrors);
83
- }
84
- catch (error) {
85
- // Continue if security detection fails
86
- }
87
- }
88
- // Layer 8: Framework-specific detection
89
- if (this.framework) {
90
- try {
91
- const frameworkErrors = this.framework.detectErrors(code, filename);
92
- allErrors.push(...frameworkErrors);
93
- }
94
- catch (error) {
95
- // Continue if framework detection fails
96
- }
97
- }
98
- // Layer 9: API usage validation
99
- if (this.apiValidator) {
100
- try {
101
- const apiErrors = this.apiValidator.detectErrors(code, filename);
102
- allErrors.push(...apiErrors);
103
- }
104
- catch (error) {
105
- // Continue if API validation fails
106
- }
107
- }
108
- // Layer 10: Cross-file analysis (optional)
109
- try {
110
- const crossFileErrors = this.crossFile.detectErrors(code, filename, files);
111
- allErrors.push(...crossFileErrors);
112
- }
113
- catch (error) {
114
- // Continue if cross-file analysis fails
115
- }
116
- // Remove duplicates and prioritize
117
- return this.deduplicateAndPrioritize(allErrors);
118
- }
119
- deduplicateAndPrioritize(errors) {
120
- // Remove duplicates based on line, column, and type
121
- const seen = new Set();
122
- const unique = [];
123
- for (const error of errors) {
124
- const key = `${error.type}:${error.line}:${error.column}`;
125
- if (!seen.has(key)) {
126
- seen.add(key);
127
- unique.push(error);
128
- }
129
- }
130
- // Sort by priority (lower = more critical)
131
- return unique.sort((a, b) => a.priority - b.priority);
132
- }
133
- }
134
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"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"}
@@ -1,25 +0,0 @@
1
- export interface ErrorPattern {
2
- id: string;
3
- name: string;
4
- priority: number;
5
- pattern: string;
6
- description: string;
7
- fix: string;
8
- }
9
- export interface DetectedError {
10
- type: string;
11
- message: string;
12
- line?: number;
13
- column?: number;
14
- priority: number;
15
- fix?: string;
16
- pattern?: string;
17
- }
18
- export declare class PatternMatcher {
19
- private patterns;
20
- constructor();
21
- detect(code: string): DetectedError[];
22
- private prioritize;
23
- addPattern(pattern: ErrorPattern): void;
24
- }
25
- //# sourceMappingURL=pattern-matcher.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pattern-matcher.d.ts","sourceRoot":"","sources":["../../src/errors/pattern-matcher.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAiB;;IAMjC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,EAAE;IAkCrC,OAAO,CAAC,UAAU;IAIlB,UAAU,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI;CAGxC"}
@@ -1,44 +0,0 @@
1
- import { patterns as patternsData } from './patterns.js';
2
- export class PatternMatcher {
3
- patterns;
4
- constructor() {
5
- this.patterns = patternsData.patterns;
6
- }
7
- detect(code) {
8
- const errors = [];
9
- const lines = code.split('\n');
10
- for (let i = 0; i < lines.length; i++) {
11
- const line = lines[i];
12
- const lineNumber = i + 1;
13
- for (const pattern of this.patterns) {
14
- try {
15
- const regex = new RegExp(pattern.pattern, 'g');
16
- const matches = line.matchAll(regex);
17
- for (const match of matches) {
18
- errors.push({
19
- type: pattern.id,
20
- message: `${pattern.name}: ${pattern.description}`,
21
- line: lineNumber,
22
- column: match.index ? match.index + 1 : undefined,
23
- priority: pattern.priority,
24
- fix: pattern.fix,
25
- pattern: pattern.pattern,
26
- });
27
- }
28
- }
29
- catch (error) {
30
- // Invalid regex pattern, skip
31
- continue;
32
- }
33
- }
34
- }
35
- return this.prioritize(errors);
36
- }
37
- prioritize(errors) {
38
- return errors.sort((a, b) => a.priority - b.priority);
39
- }
40
- addPattern(pattern) {
41
- this.patterns.push(pattern);
42
- }
43
- }
44
- //# sourceMappingURL=pattern-matcher.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pattern-matcher.js","sourceRoot":"","sources":["../../src/errors/pattern-matcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,YAAY,EAAE,MAAM,eAAe,CAAC;AAqBzD,MAAM,OAAO,cAAc;IACjB,QAAQ,CAAiB;IAEjC;QACE,IAAI,CAAC,QAAQ,GAAG,YAAY,CAAC,QAA0B,CAAC;IAC1D,CAAC;IAED,MAAM,CAAC,IAAY;QACjB,MAAM,MAAM,GAAoB,EAAE,CAAC;QACnC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAE/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACtB,MAAM,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC;YAEzB,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACpC,IAAI,CAAC;oBACH,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;oBAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;oBAErC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;wBAC5B,MAAM,CAAC,IAAI,CAAC;4BACV,IAAI,EAAE,OAAO,CAAC,EAAE;4BAChB,OAAO,EAAE,GAAG,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,WAAW,EAAE;4BAClD,IAAI,EAAE,UAAU;4BAChB,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS;4BACjD,QAAQ,EAAE,OAAO,CAAC,QAAQ;4BAC1B,GAAG,EAAE,OAAO,CAAC,GAAG;4BAChB,OAAO,EAAE,OAAO,CAAC,OAAO;yBACzB,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,8BAA8B;oBAC9B,SAAS;gBACX,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IACjC,CAAC;IAEO,UAAU,CAAC,MAAuB;QACxC,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;IACxD,CAAC;IAED,UAAU,CAAC,OAAqB;QAC9B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;CACF"}
@@ -1,11 +0,0 @@
1
- export declare const patterns: {
2
- patterns: {
3
- id: string;
4
- name: string;
5
- priority: number;
6
- pattern: string;
7
- description: string;
8
- fix: string;
9
- }[];
10
- };
11
- //# sourceMappingURL=patterns.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"patterns.d.ts","sourceRoot":"","sources":["../../src/errors/patterns.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,QAAQ;;;;;;;;;CAsWpB,CAAC"}