@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,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"}