@gulibs/safe-coder 0.0.25 → 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 (188) hide show
  1. package/README.md +682 -902
  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 -22
  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/cache.d.ts +0 -13
  50. package/dist/documentation/cache.d.ts.map +0 -1
  51. package/dist/documentation/cache.js +0 -48
  52. package/dist/documentation/cache.js.map +0 -1
  53. package/dist/documentation/checkpoint-manager.d.ts +0 -38
  54. package/dist/documentation/checkpoint-manager.d.ts.map +0 -1
  55. package/dist/documentation/checkpoint-manager.js +0 -101
  56. package/dist/documentation/checkpoint-manager.js.map +0 -1
  57. package/dist/documentation/doc-crawler.d.ts +0 -185
  58. package/dist/documentation/doc-crawler.d.ts.map +0 -1
  59. package/dist/documentation/doc-crawler.js +0 -1162
  60. package/dist/documentation/doc-crawler.js.map +0 -1
  61. package/dist/documentation/github-client.d.ts +0 -13
  62. package/dist/documentation/github-client.d.ts.map +0 -1
  63. package/dist/documentation/github-client.js +0 -90
  64. package/dist/documentation/github-client.js.map +0 -1
  65. package/dist/documentation/http-fetcher.d.ts +0 -8
  66. package/dist/documentation/http-fetcher.d.ts.map +0 -1
  67. package/dist/documentation/http-fetcher.js +0 -31
  68. package/dist/documentation/http-fetcher.js.map +0 -1
  69. package/dist/documentation/index.d.ts +0 -16
  70. package/dist/documentation/index.d.ts.map +0 -1
  71. package/dist/documentation/index.js +0 -159
  72. package/dist/documentation/index.js.map +0 -1
  73. package/dist/documentation/llms-txt/detector.d.ts +0 -31
  74. package/dist/documentation/llms-txt/detector.d.ts.map +0 -1
  75. package/dist/documentation/llms-txt/detector.js +0 -77
  76. package/dist/documentation/llms-txt/detector.js.map +0 -1
  77. package/dist/documentation/llms-txt/downloader.d.ts +0 -30
  78. package/dist/documentation/llms-txt/downloader.d.ts.map +0 -1
  79. package/dist/documentation/llms-txt/downloader.js +0 -84
  80. package/dist/documentation/llms-txt/downloader.js.map +0 -1
  81. package/dist/documentation/llms-txt/index.d.ts +0 -4
  82. package/dist/documentation/llms-txt/index.d.ts.map +0 -1
  83. package/dist/documentation/llms-txt/index.js +0 -4
  84. package/dist/documentation/llms-txt/index.js.map +0 -1
  85. package/dist/documentation/llms-txt/parser.d.ts +0 -43
  86. package/dist/documentation/llms-txt/parser.d.ts.map +0 -1
  87. package/dist/documentation/llms-txt/parser.js +0 -177
  88. package/dist/documentation/llms-txt/parser.js.map +0 -1
  89. package/dist/documentation/normalizer.d.ts +0 -6
  90. package/dist/documentation/normalizer.d.ts.map +0 -1
  91. package/dist/documentation/normalizer.js +0 -38
  92. package/dist/documentation/normalizer.js.map +0 -1
  93. package/dist/documentation/npm-client.d.ts +0 -19
  94. package/dist/documentation/npm-client.d.ts.map +0 -1
  95. package/dist/documentation/npm-client.js +0 -182
  96. package/dist/documentation/npm-client.js.map +0 -1
  97. package/dist/documentation/skill-generator.d.ts +0 -108
  98. package/dist/documentation/skill-generator.d.ts.map +0 -1
  99. package/dist/documentation/skill-generator.js +0 -642
  100. package/dist/documentation/skill-generator.js.map +0 -1
  101. package/dist/documentation/web-doc-browser.d.ts +0 -67
  102. package/dist/documentation/web-doc-browser.d.ts.map +0 -1
  103. package/dist/documentation/web-doc-browser.js +0 -555
  104. package/dist/documentation/web-doc-browser.js.map +0 -1
  105. package/dist/errors/api-validator.d.ts +0 -9
  106. package/dist/errors/api-validator.d.ts.map +0 -1
  107. package/dist/errors/api-validator.js +0 -57
  108. package/dist/errors/api-validator.js.map +0 -1
  109. package/dist/errors/contextual-analysis.d.ts +0 -14
  110. package/dist/errors/contextual-analysis.d.ts.map +0 -1
  111. package/dist/errors/contextual-analysis.js +0 -173
  112. package/dist/errors/contextual-analysis.js.map +0 -1
  113. package/dist/errors/cross-file-analyzer.d.ts +0 -16
  114. package/dist/errors/cross-file-analyzer.d.ts.map +0 -1
  115. package/dist/errors/cross-file-analyzer.js +0 -172
  116. package/dist/errors/cross-file-analyzer.js.map +0 -1
  117. package/dist/errors/eslint-integration.d.ts +0 -9
  118. package/dist/errors/eslint-integration.d.ts.map +0 -1
  119. package/dist/errors/eslint-integration.js +0 -131
  120. package/dist/errors/eslint-integration.js.map +0 -1
  121. package/dist/errors/framework-detector.d.ts +0 -10
  122. package/dist/errors/framework-detector.d.ts.map +0 -1
  123. package/dist/errors/framework-detector.js +0 -126
  124. package/dist/errors/framework-detector.js.map +0 -1
  125. package/dist/errors/index.d.ts +0 -18
  126. package/dist/errors/index.d.ts.map +0 -1
  127. package/dist/errors/index.js +0 -134
  128. package/dist/errors/index.js.map +0 -1
  129. package/dist/errors/pattern-matcher.d.ts +0 -25
  130. package/dist/errors/pattern-matcher.d.ts.map +0 -1
  131. package/dist/errors/pattern-matcher.js +0 -44
  132. package/dist/errors/pattern-matcher.js.map +0 -1
  133. package/dist/errors/patterns.d.ts +0 -11
  134. package/dist/errors/patterns.d.ts.map +0 -1
  135. package/dist/errors/patterns.js +0 -351
  136. package/dist/errors/patterns.js.map +0 -1
  137. package/dist/errors/performance-detector.d.ts +0 -11
  138. package/dist/errors/performance-detector.d.ts.map +0 -1
  139. package/dist/errors/performance-detector.js +0 -119
  140. package/dist/errors/performance-detector.js.map +0 -1
  141. package/dist/errors/runtime-detector.d.ts +0 -7
  142. package/dist/errors/runtime-detector.d.ts.map +0 -1
  143. package/dist/errors/runtime-detector.js +0 -86
  144. package/dist/errors/runtime-detector.js.map +0 -1
  145. package/dist/errors/security-detector.d.ts +0 -6
  146. package/dist/errors/security-detector.d.ts.map +0 -1
  147. package/dist/errors/security-detector.js +0 -75
  148. package/dist/errors/security-detector.js.map +0 -1
  149. package/dist/errors/typescript-integration.d.ts +0 -6
  150. package/dist/errors/typescript-integration.d.ts.map +0 -1
  151. package/dist/errors/typescript-integration.js +0 -46
  152. package/dist/errors/typescript-integration.js.map +0 -1
  153. package/dist/server/mcp-server.d.ts +0 -14
  154. package/dist/server/mcp-server.d.ts.map +0 -1
  155. package/dist/server/mcp-server.js +0 -776
  156. package/dist/server/mcp-server.js.map +0 -1
  157. package/dist/types/documentation.d.ts +0 -26
  158. package/dist/types/documentation.d.ts.map +0 -1
  159. package/dist/types/documentation.js +0 -2
  160. package/dist/types/documentation.js.map +0 -1
  161. package/dist/utils/config.d.ts +0 -21
  162. package/dist/utils/config.d.ts.map +0 -1
  163. package/dist/utils/config.js +0 -34
  164. package/dist/utils/config.js.map +0 -1
  165. package/dist/utils/http-client.d.ts +0 -17
  166. package/dist/utils/http-client.d.ts.map +0 -1
  167. package/dist/utils/http-client.js +0 -62
  168. package/dist/utils/http-client.js.map +0 -1
  169. package/dist/utils/logger.d.ts +0 -36
  170. package/dist/utils/logger.d.ts.map +0 -1
  171. package/dist/utils/logger.js +0 -128
  172. package/dist/utils/logger.js.map +0 -1
  173. package/dist/utils/rate-limiter.d.ts +0 -9
  174. package/dist/utils/rate-limiter.d.ts.map +0 -1
  175. package/dist/utils/rate-limiter.js +0 -26
  176. package/dist/utils/rate-limiter.js.map +0 -1
  177. package/dist/validation/auto-fix.d.ts +0 -15
  178. package/dist/validation/auto-fix.d.ts.map +0 -1
  179. package/dist/validation/auto-fix.js +0 -49
  180. package/dist/validation/auto-fix.js.map +0 -1
  181. package/dist/validation/index.d.ts +0 -21
  182. package/dist/validation/index.d.ts.map +0 -1
  183. package/dist/validation/index.js +0 -45
  184. package/dist/validation/index.js.map +0 -1
  185. package/dist/validation/resolution-db.d.ts +0 -15
  186. package/dist/validation/resolution-db.d.ts.map +0 -1
  187. package/dist/validation/resolution-db.js +0 -62
  188. package/dist/validation/resolution-db.js.map +0 -1
@@ -1,57 +0,0 @@
1
- import * as ts from 'typescript';
2
- export class ApiValidator {
3
- detectErrors(code, filename = 'code.ts') {
4
- const errors = [];
5
- try {
6
- // Use TypeScript compiler to analyze API calls
7
- const sourceFile = ts.createSourceFile(filename, code, ts.ScriptTarget.ES2022, true);
8
- // Basic API validation using AST
9
- this.visitNode(sourceFile, errors, code);
10
- }
11
- catch (error) {
12
- // TypeScript parsing failed, continue without API validation
13
- }
14
- return this.prioritize(errors);
15
- }
16
- visitNode(node, errors, code) {
17
- // Detect async function calls without await
18
- if (ts.isCallExpression(node)) {
19
- const expression = node.expression;
20
- if (ts.isIdentifier(expression)) {
21
- const funcName = expression.text;
22
- const isAsyncFunction = this.looksLikeAsyncFunction(funcName);
23
- if (isAsyncFunction) {
24
- const parent = node.parent;
25
- // Check if not awaited
26
- if (!ts.isAwaitExpression(parent)) {
27
- const { line, character } = this.getLineAndChar(node, code);
28
- errors.push({
29
- type: 'api',
30
- message: `Async function '${funcName}' called without await`,
31
- line: line + 1,
32
- column: character + 1,
33
- priority: 2,
34
- fix: 'Add await keyword before async function call',
35
- });
36
- }
37
- }
38
- }
39
- }
40
- // Recursively visit child nodes
41
- ts.forEachChild(node, (child) => this.visitNode(child, errors, code));
42
- }
43
- looksLikeAsyncFunction(name) {
44
- const asyncPatterns = ['fetch', 'request', 'get', 'post', 'put', 'delete', 'query', 'execute'];
45
- return asyncPatterns.some(pattern => name.toLowerCase().includes(pattern));
46
- }
47
- getLineAndChar(node, code) {
48
- const sourceFile = node.getSourceFile();
49
- const pos = node.getStart(sourceFile);
50
- const { line, character } = sourceFile.getLineAndCharacterOfPosition(pos);
51
- return { line, character };
52
- }
53
- prioritize(errors) {
54
- return errors.sort((a, b) => a.priority - b.priority);
55
- }
56
- }
57
- //# sourceMappingURL=api-validator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"api-validator.js","sourceRoot":"","sources":["../../src/errors/api-validator.ts"],"names":[],"mappings":"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"}
@@ -1,14 +0,0 @@
1
- import type { DetectedError } from './pattern-matcher.js';
2
- export declare class ContextualAnalysis {
3
- detectErrors(code: string): DetectedError[];
4
- private detectUnreachableCode;
5
- private detectFunctionCallIssues;
6
- private extractDefinedFunctions;
7
- private extractDefinedVariables;
8
- private extractUsedVariables;
9
- private isKeyword;
10
- private isBuiltIn;
11
- private isGlobal;
12
- private prioritize;
13
- }
14
- //# sourceMappingURL=contextual-analysis.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"contextual-analysis.d.ts","sourceRoot":"","sources":["../../src/errors/contextual-analysis.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D,qBAAa,kBAAkB;IAC7B,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,EAAE;IAgC3C,OAAO,CAAC,qBAAqB;IA2B7B,OAAO,CAAC,wBAAwB;IAkChC,OAAO,CAAC,uBAAuB;IA2B/B,OAAO,CAAC,uBAAuB;IA0C/B,OAAO,CAAC,oBAAoB;IAwB5B,OAAO,CAAC,SAAS;IAKjB,OAAO,CAAC,SAAS;IAKjB,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,UAAU;CAGnB"}
@@ -1,173 +0,0 @@
1
- export class ContextualAnalysis {
2
- detectErrors(code) {
3
- const errors = [];
4
- const lines = code.split('\n');
5
- // Detect undefined variables
6
- const definedVars = this.extractDefinedVariables(code);
7
- const usedVars = this.extractUsedVariables(code);
8
- for (const usedVar of usedVars) {
9
- if (!definedVars.has(usedVar.name) && !this.isGlobal(usedVar.name)) {
10
- errors.push({
11
- type: 'contextual',
12
- message: `Variable '${usedVar.name}' is used but not defined`,
13
- line: usedVar.line,
14
- column: usedVar.column,
15
- priority: 3,
16
- fix: `Define '${usedVar.name}' before use or import it`,
17
- });
18
- }
19
- }
20
- // Detect unreachable code
21
- const unreachableErrors = this.detectUnreachableCode(code);
22
- errors.push(...unreachableErrors);
23
- // Detect function call issues
24
- const functionCallErrors = this.detectFunctionCallIssues(code);
25
- errors.push(...functionCallErrors);
26
- return this.prioritize(errors);
27
- }
28
- detectUnreachableCode(code) {
29
- const errors = [];
30
- const lines = code.split('\n');
31
- for (let i = 0; i < lines.length - 1; i++) {
32
- const line = lines[i];
33
- // Check for return/throw/break/continue followed by code
34
- if (/^\s*(return|throw|break|continue)\s*[;}]?\s*$/.test(line.trim())) {
35
- const nextLine = lines[i + 1];
36
- // If next line is not a closing brace or comment, it's unreachable
37
- if (nextLine && !/^\s*[}\]]/.test(nextLine) && !/^\s*\/\//.test(nextLine) && nextLine.trim()) {
38
- errors.push({
39
- type: 'contextual',
40
- message: 'Unreachable code after return/throw/break',
41
- line: i + 2,
42
- column: 1,
43
- priority: 3,
44
- fix: 'Remove unreachable code or move it before the return statement',
45
- });
46
- }
47
- }
48
- }
49
- return errors;
50
- }
51
- detectFunctionCallIssues(code) {
52
- const errors = [];
53
- const lines = code.split('\n');
54
- const definedFunctions = this.extractDefinedFunctions(code);
55
- for (let i = 0; i < lines.length; i++) {
56
- const line = lines[i];
57
- // Match function calls
58
- const funcCallMatch = line.match(/\b(\w+)\s*\(/g);
59
- if (funcCallMatch) {
60
- for (const match of funcCallMatch) {
61
- const funcName = match.replace(/\s*\(/, '');
62
- if (!this.isKeyword(funcName) &&
63
- !this.isBuiltIn(funcName) &&
64
- !definedFunctions.has(funcName) &&
65
- !line.includes('import') &&
66
- !line.includes('export')) {
67
- errors.push({
68
- type: 'contextual',
69
- message: `Function '${funcName}' is called but not defined`,
70
- line: i + 1,
71
- column: line.indexOf(match) + 1,
72
- priority: 3,
73
- fix: `Define '${funcName}' function or import it`,
74
- });
75
- }
76
- }
77
- }
78
- }
79
- return errors;
80
- }
81
- extractDefinedFunctions(code) {
82
- const functions = new Set();
83
- const lines = code.split('\n');
84
- for (const line of lines) {
85
- // Match function declarations
86
- const funcDeclMatch = line.match(/(?:function|async\s+function)\s+(\w+)/);
87
- if (funcDeclMatch) {
88
- functions.add(funcDeclMatch[1]);
89
- }
90
- // Match arrow function assignments
91
- const arrowMatch = line.match(/(?:const|let|var)\s+(\w+)\s*=\s*(?:async\s*)?\([^)]*\)\s*=>/);
92
- if (arrowMatch) {
93
- functions.add(arrowMatch[1]);
94
- }
95
- // Match method definitions
96
- const methodMatch = line.match(/(\w+)\s*\([^)]*\)\s*\{/);
97
- if (methodMatch && !line.includes('function') && !line.includes('=>')) {
98
- functions.add(methodMatch[1]);
99
- }
100
- }
101
- return functions;
102
- }
103
- extractDefinedVariables(code) {
104
- const defined = new Set();
105
- const lines = code.split('\n');
106
- for (const line of lines) {
107
- // Match variable declarations (const, let, var)
108
- const constMatch = line.match(/\b(const|let|var)\s+(\w+)/);
109
- if (constMatch) {
110
- defined.add(constMatch[2]);
111
- }
112
- // Match destructuring assignments
113
- const destructureMatch = line.match(/\b(const|let|var)\s*\{([^}]+)\}/);
114
- if (destructureMatch) {
115
- const vars = destructureMatch[2].split(',').map(v => v.trim().split(':')[0].trim());
116
- vars.forEach(v => defined.add(v));
117
- }
118
- // Match function parameters (regular functions)
119
- const funcMatch = line.match(/(?:function\s+\w+|function)\s*\(([^)]*)\)/);
120
- if (funcMatch) {
121
- const params = funcMatch[1].split(',').map(p => p.trim().split(':')[0].split('=')[0].trim());
122
- params.forEach(p => defined.add(p));
123
- }
124
- // Match arrow function parameters
125
- const arrowMatch = line.match(/(?:const|let|var)\s+\w+\s*=\s*\(([^)]*)\)\s*=>/);
126
- if (arrowMatch) {
127
- const params = arrowMatch[1].split(',').map(p => p.trim().split(':')[0].split('=')[0].trim());
128
- params.forEach(p => defined.add(p));
129
- }
130
- // Match class properties
131
- const classPropMatch = line.match(/\b(public|private|protected)?\s*(readonly)?\s*(\w+)\s*[:=]/);
132
- if (classPropMatch) {
133
- defined.add(classPropMatch[3]);
134
- }
135
- }
136
- return defined;
137
- }
138
- extractUsedVariables(code) {
139
- const used = [];
140
- const lines = code.split('\n');
141
- for (let i = 0; i < lines.length; i++) {
142
- const line = lines[i];
143
- // Match variable usage (simple heuristic)
144
- const varMatch = line.matchAll(/\b([a-zA-Z_$][a-zA-Z0-9_$]*)\b/g);
145
- for (const match of varMatch) {
146
- const name = match[1];
147
- if (!this.isKeyword(name) && !this.isBuiltIn(name)) {
148
- used.push({
149
- name,
150
- line: i + 1,
151
- column: (match.index || 0) + 1,
152
- });
153
- }
154
- }
155
- }
156
- return used;
157
- }
158
- isKeyword(name) {
159
- const keywords = ['const', 'let', 'var', 'function', 'if', 'else', 'for', 'while', 'return', 'import', 'export', 'async', 'await', 'class', 'interface', 'type'];
160
- return keywords.includes(name);
161
- }
162
- isBuiltIn(name) {
163
- const builtins = ['console', 'window', 'document', 'process', 'Buffer', 'Array', 'Object', 'String', 'Number', 'Boolean', 'Date', 'Math', 'JSON', 'Promise'];
164
- return builtins.includes(name);
165
- }
166
- isGlobal(name) {
167
- return this.isBuiltIn(name);
168
- }
169
- prioritize(errors) {
170
- return errors.sort((a, b) => a.priority - b.priority);
171
- }
172
- }
173
- //# sourceMappingURL=contextual-analysis.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"contextual-analysis.js","sourceRoot":"","sources":["../../src/errors/contextual-analysis.ts"],"names":[],"mappings":"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"}
@@ -1,16 +0,0 @@
1
- import type { DetectedError } from './pattern-matcher.js';
2
- export interface FileContext {
3
- path: string;
4
- content: string;
5
- }
6
- export declare class CrossFileAnalyzer {
7
- private enabled;
8
- constructor(enabled?: boolean);
9
- detectErrors(code: string, filename?: string, files?: FileContext[]): DetectedError[];
10
- private extractImports;
11
- private extractExports;
12
- private detectCircularDependencies;
13
- private findCycle;
14
- private prioritize;
15
- }
16
- //# sourceMappingURL=cross-file-analyzer.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cross-file-analyzer.d.ts","sourceRoot":"","sources":["../../src/errors/cross-file-analyzer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,OAAO,CAAU;gBAEb,OAAO,GAAE,OAAe;IAIpC,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAkB,EAAE,KAAK,CAAC,EAAE,WAAW,EAAE,GAAG,aAAa,EAAE;IAwDhG,OAAO,CAAC,cAAc;IAkDtB,OAAO,CAAC,cAAc;IA2BtB,OAAO,CAAC,0BAA0B;IA0ClC,OAAO,CAAC,SAAS;IA6BjB,OAAO,CAAC,UAAU;CAGnB"}
@@ -1,172 +0,0 @@
1
- export class CrossFileAnalyzer {
2
- enabled;
3
- constructor(enabled = false) {
4
- this.enabled = enabled;
5
- }
6
- detectErrors(code, filename = 'code.ts', files) {
7
- if (!this.enabled || !files || files.length === 0) {
8
- return []; // Cross-file analysis disabled or no files provided
9
- }
10
- const errors = [];
11
- const lines = code.split('\n');
12
- // Extract imports from current file
13
- const imports = this.extractImports(code);
14
- // Check if imported symbols exist in other files
15
- for (const importItem of imports) {
16
- const sourceFile = files.find(f => f.path === importItem.source ||
17
- f.path.endsWith(importItem.source.replace(/^\.\//, '')));
18
- if (sourceFile) {
19
- const exportedSymbols = this.extractExports(sourceFile.content);
20
- for (const symbol of importItem.symbols) {
21
- if (!exportedSymbols.has(symbol) && symbol !== '*') {
22
- errors.push({
23
- type: 'cross-file',
24
- message: `Symbol '${symbol}' is imported from '${importItem.source}' but not exported`,
25
- line: importItem.line,
26
- column: importItem.column,
27
- priority: 2,
28
- fix: `Export '${symbol}' from '${importItem.source}' or remove the import`,
29
- });
30
- }
31
- }
32
- }
33
- else if (!importItem.source.startsWith('.')) {
34
- // External import, skip
35
- continue;
36
- }
37
- else {
38
- // File not found
39
- errors.push({
40
- type: 'cross-file',
41
- message: `Import source '${importItem.source}' not found in provided files`,
42
- line: importItem.line,
43
- column: importItem.column,
44
- priority: 2,
45
- fix: `Ensure '${importItem.source}' is included in file context`,
46
- });
47
- }
48
- }
49
- // Detect circular dependencies (basic)
50
- const circularDeps = this.detectCircularDependencies(files);
51
- errors.push(...circularDeps);
52
- return this.prioritize(errors);
53
- }
54
- extractImports(code) {
55
- const imports = [];
56
- const lines = code.split('\n');
57
- for (let i = 0; i < lines.length; i++) {
58
- const line = lines[i];
59
- // Match: import { a, b } from 'source'
60
- const namedMatch = line.match(/import\s+\{([^}]+)\}\s+from\s+['"]([^'"]+)['"]/);
61
- if (namedMatch) {
62
- const symbols = namedMatch[1].split(',').map(s => s.trim().split(' as ')[0].trim());
63
- imports.push({
64
- source: namedMatch[2],
65
- symbols,
66
- line: i + 1,
67
- column: line.indexOf('import') + 1,
68
- });
69
- }
70
- // Match: import * as name from 'source'
71
- const namespaceMatch = line.match(/import\s+\*\s+as\s+(\w+)\s+from\s+['"]([^'"]+)['"]/);
72
- if (namespaceMatch) {
73
- imports.push({
74
- source: namespaceMatch[2],
75
- symbols: ['*'],
76
- line: i + 1,
77
- column: line.indexOf('import') + 1,
78
- });
79
- }
80
- // Match: import default from 'source'
81
- const defaultMatch = line.match(/import\s+(\w+)\s+from\s+['"]([^'"]+)['"]/);
82
- if (defaultMatch && !defaultMatch[0].includes('{')) {
83
- imports.push({
84
- source: defaultMatch[2],
85
- symbols: ['default'],
86
- line: i + 1,
87
- column: line.indexOf('import') + 1,
88
- });
89
- }
90
- }
91
- return imports;
92
- }
93
- extractExports(code) {
94
- const exports = new Set();
95
- const lines = code.split('\n');
96
- for (const line of lines) {
97
- // Match: export const/let/var/function name
98
- const exportMatch = line.match(/export\s+(?:const|let|var|function|class|interface|type)\s+(\w+)/);
99
- if (exportMatch) {
100
- exports.add(exportMatch[1]);
101
- }
102
- // Match: export { a, b }
103
- const namedExportMatch = line.match(/export\s+\{([^}]+)\}/);
104
- if (namedExportMatch) {
105
- const symbols = namedExportMatch[1].split(',').map(s => s.trim().split(' as ')[0].trim());
106
- symbols.forEach(s => exports.add(s));
107
- }
108
- // Match: export default
109
- if (line.match(/export\s+default/)) {
110
- exports.add('default');
111
- }
112
- }
113
- return exports;
114
- }
115
- detectCircularDependencies(files) {
116
- const errors = [];
117
- const dependencyGraph = new Map();
118
- // Build dependency graph
119
- for (const file of files) {
120
- const imports = this.extractImports(file.content);
121
- const deps = new Set();
122
- for (const imp of imports) {
123
- if (imp.source.startsWith('.')) {
124
- // Resolve relative path (simplified)
125
- const depFile = files.find(f => f.path.includes(imp.source.replace(/^\.\//, '')));
126
- if (depFile) {
127
- deps.add(depFile.path);
128
- }
129
- }
130
- }
131
- dependencyGraph.set(file.path, deps);
132
- }
133
- // Detect cycles (simplified DFS)
134
- for (const [file, deps] of dependencyGraph.entries()) {
135
- const visited = new Set();
136
- const cycle = this.findCycle(file, file, dependencyGraph, visited, []);
137
- if (cycle) {
138
- errors.push({
139
- type: 'cross-file',
140
- message: `Circular dependency detected: ${cycle.join(' -> ')}`,
141
- line: 1,
142
- column: 1,
143
- priority: 4,
144
- fix: 'Refactor to break circular dependency',
145
- });
146
- }
147
- }
148
- return errors;
149
- }
150
- findCycle(start, current, graph, visited, path) {
151
- if (path.includes(current)) {
152
- return [...path, current];
153
- }
154
- if (visited.has(current)) {
155
- return null;
156
- }
157
- visited.add(current);
158
- path.push(current);
159
- const deps = graph.get(current) || new Set();
160
- for (const dep of deps) {
161
- const cycle = this.findCycle(start, dep, graph, visited, [...path]);
162
- if (cycle) {
163
- return cycle;
164
- }
165
- }
166
- return null;
167
- }
168
- prioritize(errors) {
169
- return errors.sort((a, b) => a.priority - b.priority);
170
- }
171
- }
172
- //# sourceMappingURL=cross-file-analyzer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cross-file-analyzer.js","sourceRoot":"","sources":["../../src/errors/cross-file-analyzer.ts"],"names":[],"mappings":"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"}
@@ -1,9 +0,0 @@
1
- import type { DetectedError } from './pattern-matcher.js';
2
- export declare class ESLintIntegration {
3
- private eslint;
4
- private reactESLint;
5
- constructor();
6
- detectErrors(code: string, filename?: string): Promise<DetectedError[]>;
7
- private prioritize;
8
- }
9
- //# sourceMappingURL=eslint-integration.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"eslint-integration.d.ts","sourceRoot":"","sources":["../../src/errors/eslint-integration.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,WAAW,CAAuB;;IAuEpC,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAkB,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IA4DxF,OAAO,CAAC,UAAU;CAGnB"}
@@ -1,131 +0,0 @@
1
- import { ESLint } from 'eslint';
2
- export class ESLintIntegration {
3
- eslint = null;
4
- reactESLint = null;
5
- constructor() {
6
- try {
7
- // Base ESLint with TypeScript support
8
- this.eslint = new ESLint({
9
- overrideConfig: {
10
- rules: {
11
- // Base rules
12
- 'no-unused-vars': 'off', // Use TypeScript version instead
13
- 'no-undef': 'error',
14
- 'no-console': 'off',
15
- // TypeScript ESLint rules
16
- '@typescript-eslint/no-unused-vars': ['warn', { argsIgnorePattern: '^_' }],
17
- '@typescript-eslint/no-explicit-any': 'warn',
18
- '@typescript-eslint/explicit-function-return-type': 'off', // Too strict for general use
19
- '@typescript-eslint/no-non-null-assertion': 'warn',
20
- '@typescript-eslint/prefer-nullish-coalescing': 'warn',
21
- '@typescript-eslint/prefer-optional-chain': 'warn',
22
- '@typescript-eslint/no-floating-promises': 'error',
23
- '@typescript-eslint/await-thenable': 'error',
24
- // Security rules
25
- 'security/detect-object-injection': 'warn',
26
- 'security/detect-non-literal-regexp': 'warn',
27
- 'security/detect-unsafe-regex': 'error',
28
- 'security/detect-buffer-noassert': 'warn',
29
- 'security/detect-child-process': 'warn',
30
- 'security/detect-disable-mustache-escape': 'warn',
31
- 'security/detect-eval-with-expression': 'error',
32
- 'security/detect-no-csrf-before-method-override': 'warn',
33
- 'security/detect-non-literal-fs-filename': 'warn',
34
- 'security/detect-non-literal-require': 'warn',
35
- 'security/detect-possible-timing-attacks': 'warn',
36
- 'security/detect-pseudoRandomBytes': 'warn',
37
- },
38
- },
39
- });
40
- // React ESLint (optional, only if React code detected)
41
- try {
42
- this.reactESLint = new ESLint({
43
- overrideConfig: {
44
- rules: {
45
- // React rules
46
- 'react/react-in-jsx-scope': 'off', // Not needed in React 17+
47
- 'react/prop-types': 'off', // Using TypeScript instead
48
- 'react-hooks/rules-of-hooks': 'error',
49
- 'react-hooks/exhaustive-deps': 'warn',
50
- 'react/jsx-uses-react': 'off',
51
- 'react/jsx-uses-vars': 'error',
52
- },
53
- settings: {
54
- react: {
55
- version: 'detect',
56
- },
57
- },
58
- },
59
- });
60
- }
61
- catch (error) {
62
- // React ESLint not available, continue without it
63
- this.reactESLint = null;
64
- }
65
- }
66
- catch (error) {
67
- // ESLint initialization failed, continue without it
68
- this.eslint = null;
69
- this.reactESLint = null;
70
- }
71
- }
72
- async detectErrors(code, filename = 'code.ts') {
73
- const errors = [];
74
- // Detect if this is React code
75
- const isReactCode = code.includes('import') && (code.includes('react') || code.includes('React')) ||
76
- filename.endsWith('.tsx') || filename.endsWith('.jsx');
77
- // Use base ESLint
78
- if (this.eslint) {
79
- try {
80
- const results = await this.eslint.lintText(code, { filePath: filename });
81
- for (const result of results) {
82
- for (const message of result.messages) {
83
- // Security errors get highest priority
84
- const isSecurity = message.ruleId?.startsWith('security/');
85
- const priority = isSecurity ? 1 : (message.severity === 2 ? 1 : 5);
86
- errors.push({
87
- type: isSecurity ? 'security' : 'eslint',
88
- message: message.message,
89
- line: message.line,
90
- column: message.column,
91
- priority,
92
- fix: message.fix ? 'Auto-fix available' : undefined,
93
- });
94
- }
95
- }
96
- }
97
- catch (error) {
98
- // ESLint might fail, continue
99
- }
100
- }
101
- // Use React ESLint if available and code is React
102
- if (isReactCode && this.reactESLint) {
103
- try {
104
- const results = await this.reactESLint.lintText(code, { filePath: filename });
105
- for (const result of results) {
106
- for (const message of result.messages) {
107
- // React Hooks violations are critical
108
- const isHooksError = message.ruleId?.startsWith('react-hooks/');
109
- const priority = isHooksError ? 1 : (message.severity === 2 ? 1 : 5);
110
- errors.push({
111
- type: 'react',
112
- message: message.message,
113
- line: message.line,
114
- column: message.column,
115
- priority,
116
- fix: message.fix ? 'Auto-fix available' : undefined,
117
- });
118
- }
119
- }
120
- }
121
- catch (error) {
122
- // React ESLint might fail, continue
123
- }
124
- }
125
- return this.prioritize(errors);
126
- }
127
- prioritize(errors) {
128
- return errors.sort((a, b) => a.priority - b.priority);
129
- }
130
- }
131
- //# sourceMappingURL=eslint-integration.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"eslint-integration.js","sourceRoot":"","sources":["../../src/errors/eslint-integration.ts"],"names":[],"mappings":"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"}
@@ -1,10 +0,0 @@
1
- import type { DetectedError } from './pattern-matcher.js';
2
- export declare class FrameworkDetector {
3
- detectErrors(code: string, filename?: string): DetectedError[];
4
- private detectReactErrors;
5
- private detectNextJsErrors;
6
- private detectVueErrors;
7
- private isInRenderFunction;
8
- private prioritize;
9
- }
10
- //# sourceMappingURL=framework-detector.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"framework-detector.d.ts","sourceRoot":"","sources":["../../src/errors/framework-detector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D,qBAAa,iBAAiB;IAC5B,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAkB,GAAG,aAAa,EAAE;IA2BzE,OAAO,CAAC,iBAAiB;IAsDzB,OAAO,CAAC,kBAAkB;IA0B1B,OAAO,CAAC,eAAe;IA4BvB,OAAO,CAAC,kBAAkB;IAM1B,OAAO,CAAC,UAAU;CAGnB"}