mcp-code-context 3.0.6 → 3.4.0

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 (75) hide show
  1. package/CHANGELOG.md +84 -1
  2. package/CHANGELOG_v3.2.0.md +196 -0
  3. package/CHANGELOG_v3.3.0.md +266 -0
  4. package/README.md +1 -1
  5. package/SECURITY.md +177 -0
  6. package/dist/src/core/engine.d.ts +2 -2
  7. package/dist/src/core/engine.js +14 -8
  8. package/dist/src/core/engine.js.map +1 -1
  9. package/dist/src/core/validator.d.ts +2 -2
  10. package/dist/src/core/validator.js +8 -7
  11. package/dist/src/core/validator.js.map +1 -1
  12. package/dist/src/index.d.ts +6 -6
  13. package/dist/src/index.js +499 -158
  14. package/dist/src/index.js.map +1 -1
  15. package/dist/src/operations/compress.d.ts +18 -0
  16. package/dist/src/operations/compress.js +89 -0
  17. package/dist/src/operations/compress.js.map +1 -0
  18. package/dist/src/operations/confirmationStore.d.ts +53 -0
  19. package/dist/src/operations/confirmationStore.js +91 -0
  20. package/dist/src/operations/confirmationStore.js.map +1 -0
  21. package/dist/src/operations/read.d.ts +50 -0
  22. package/dist/src/operations/read.js +228 -0
  23. package/dist/src/operations/read.js.map +1 -0
  24. package/dist/src/operations/write.d.ts +16 -4
  25. package/dist/src/operations/write.js +142 -48
  26. package/dist/src/operations/write.js.map +1 -1
  27. package/dist/src/parsers/base.d.ts +7 -2
  28. package/dist/src/parsers/base.js +18 -1
  29. package/dist/src/parsers/base.js.map +1 -1
  30. package/dist/src/parsers/dartTreeSitter.d.ts +3 -3
  31. package/dist/src/parsers/dartTreeSitter.js +6 -11
  32. package/dist/src/parsers/dartTreeSitter.js.map +1 -1
  33. package/dist/src/parsers/php.d.ts +2 -2
  34. package/dist/src/parsers/php.js +5 -10
  35. package/dist/src/parsers/php.js.map +1 -1
  36. package/dist/src/parsers/python.d.ts +2 -2
  37. package/dist/src/parsers/python.js +5 -10
  38. package/dist/src/parsers/python.js.map +1 -1
  39. package/dist/src/parsers/registry.d.ts +1 -1
  40. package/dist/src/parsers/registry.js +2 -2
  41. package/dist/src/parsers/registry.js.map +1 -1
  42. package/dist/src/parsers/typescript.d.ts +2 -2
  43. package/dist/src/parsers/typescript.js +8 -13
  44. package/dist/src/parsers/typescript.js.map +1 -1
  45. package/dist/src/utils/auditLogger.d.ts +90 -0
  46. package/dist/src/utils/auditLogger.js +271 -0
  47. package/dist/src/utils/auditLogger.js.map +1 -0
  48. package/dist/src/utils/backupManager.d.ts +33 -0
  49. package/dist/src/utils/backupManager.js +130 -0
  50. package/dist/src/utils/backupManager.js.map +1 -0
  51. package/dist/src/utils/constants.d.ts +12 -0
  52. package/dist/src/utils/constants.js +33 -0
  53. package/dist/src/utils/constants.js.map +1 -0
  54. package/dist/src/utils/diff.d.ts +13 -0
  55. package/dist/src/utils/diff.js +124 -0
  56. package/dist/src/utils/diff.js.map +1 -0
  57. package/dist/src/utils/fileLock.d.ts +63 -0
  58. package/dist/src/utils/fileLock.js +123 -0
  59. package/dist/src/utils/fileLock.js.map +1 -0
  60. package/dist/src/utils/rateLimiter.d.ts +61 -0
  61. package/dist/src/utils/rateLimiter.js +114 -0
  62. package/dist/src/utils/rateLimiter.js.map +1 -0
  63. package/dist/src/utils/safeRegex.d.ts +41 -0
  64. package/dist/src/utils/safeRegex.js +137 -0
  65. package/dist/src/utils/safeRegex.js.map +1 -0
  66. package/dist/src/utils/streaming.d.ts +43 -0
  67. package/dist/src/utils/streaming.js +175 -0
  68. package/dist/src/utils/streaming.js.map +1 -0
  69. package/dist/src/utils/telemetry.d.ts +91 -0
  70. package/dist/src/utils/telemetry.js +185 -0
  71. package/dist/src/utils/telemetry.js.map +1 -0
  72. package/llms.txt +46 -28
  73. package/package.json +5 -5
  74. package/mcp-code-context-3.0.2.tgz +0 -0
  75. package/tsconfig.tests.json +0 -27
@@ -1,6 +1,6 @@
1
1
  /**
2
- * Write Operations - v3.0.0
3
- * Surgical code modifications with Tree-sitter
2
+ * Write Operations - v3.4.0
3
+ * FIXES: SecurityValidator in renameSymbol, atomic writes, AST-based positioning
4
4
  */
5
5
  import { BaseParser } from "../parsers/base.js";
6
6
  export interface WriteResult {
@@ -38,7 +38,7 @@ export interface RemoveOptions {
38
38
  */
39
39
  export declare function replaceSymbol(options: ReplaceOptions): Promise<WriteResult>;
40
40
  /**
41
- * Insert code at a specific location
41
+ * Insert code at a specific location using AST positioning
42
42
  */
43
43
  export declare function insertCode(options: InsertOptions): Promise<WriteResult>;
44
44
  /**
@@ -46,6 +46,18 @@ export declare function insertCode(options: InsertOptions): Promise<WriteResult>
46
46
  */
47
47
  export declare function removeSymbol(options: RemoveOptions): Promise<WriteResult>;
48
48
  /**
49
- * Write content to file (atomic)
49
+ * Rename symbol using AST-aware replacement
50
+ * v3.4.0 - SECURITY FIX: Validates all paths + uses atomic writes
51
+ */
52
+ export declare function renameSymbol(params: {
53
+ filePath: string;
54
+ projectRoot: string;
55
+ oldName: string;
56
+ newName: string;
57
+ rootDir: string;
58
+ parser: BaseParser;
59
+ }): Promise<WriteResult>;
60
+ /**
61
+ * Atomic file write: write to .tmp then rename
50
62
  */
51
63
  export declare function writeFile(filePath: string, content: string): Promise<void>;
@@ -1,28 +1,49 @@
1
1
  /**
2
- * Write Operations - v3.0.0
3
- * Surgical code modifications with Tree-sitter
2
+ * Write Operations - v3.4.0
3
+ * FIXES: SecurityValidator in renameSymbol, atomic writes, AST-based positioning
4
4
  */
5
5
  import * as fs from "node:fs/promises";
6
+ import * as path from "node:path";
6
7
  import { SecurityValidator } from "../core/validator.js";
8
+ import { EXCLUDE_DIRS, SUPPORTED_EXTENSIONS } from "../utils/constants.js";
9
+ import { generateUnifiedDiff } from "../utils/diff.js";
10
+ import { sanitizeRegexPattern } from "../utils/safeRegex.js";
11
+ /**
12
+ * Validate syntax of generated code
13
+ */
14
+ function validateSyntax(content, parser) {
15
+ try {
16
+ const tree = parser.parse(content);
17
+ if (tree.rootNode.hasError) {
18
+ return { valid: false, error: "Generated code has syntax errors" };
19
+ }
20
+ return { valid: true };
21
+ }
22
+ catch (error) {
23
+ return { valid: false, error: `Syntax validation failed: ${error}` };
24
+ }
25
+ }
7
26
  /**
8
27
  * Replace a symbol with new content
9
28
  */
10
29
  export async function replaceSymbol(options) {
11
30
  const { filePath, projectRoot, symbolName, newContent, className, parser } = options;
12
- // Validate
31
+ // Validate path boundary
13
32
  const validator = new SecurityValidator(projectRoot);
14
33
  const validation = await validator.validateFilePath(filePath);
15
34
  if (!validation.valid) {
16
35
  return { success: false, error: validation.error };
17
36
  }
18
37
  try {
19
- // Read file
20
38
  const content = await fs.readFile(validation.resolvedPath, "utf-8");
21
- // Parse
22
39
  const tree = parser.parse(content);
23
- // Replace
40
+ // Use AST-based replacement
24
41
  const result = parser.replaceSymbol(content, tree, symbolName, newContent, className);
25
- // Generate diff
42
+ // Validate syntax of generated code
43
+ const syntaxCheck = validateSyntax(result, parser);
44
+ if (!syntaxCheck.valid) {
45
+ return { success: false, error: syntaxCheck.error };
46
+ }
26
47
  const diff = generateDiff(content, result);
27
48
  return {
28
49
  success: true,
@@ -38,7 +59,7 @@ export async function replaceSymbol(options) {
38
59
  }
39
60
  }
40
61
  /**
41
- * Insert code at a specific location
62
+ * Insert code at a specific location using AST positioning
42
63
  */
43
64
  export async function insertCode(options) {
44
65
  const { filePath, projectRoot, code, anchorSymbol, position = "after", className, parser } = options;
@@ -56,35 +77,36 @@ export async function insertCode(options) {
56
77
  insertIndex = content.length;
57
78
  }
58
79
  else {
59
- // Find anchor
60
- const extracted = parser.extractSymbol(tree, anchorSymbol, className);
61
- if (!extracted) {
80
+ // Find anchor using AST
81
+ const symbols = parser.findSymbols(tree);
82
+ const anchorNode = symbols.find(s => s.name === anchorSymbol && (!className || s.className === className));
83
+ if (!anchorNode) {
62
84
  return { success: false, error: `Anchor symbol "${anchorSymbol}" not found` };
63
85
  }
64
- const anchorIndex = content.indexOf(extracted);
65
- if (anchorIndex === -1) {
66
- return { success: false, error: "Could not locate anchor in content" };
67
- }
86
+ // Use AST indices for positioning
68
87
  switch (position) {
69
88
  case "before":
70
- insertIndex = anchorIndex;
89
+ insertIndex = anchorNode.startIndex;
71
90
  break;
72
91
  case "after":
73
- insertIndex = anchorIndex + extracted.length;
92
+ insertIndex = anchorNode.endIndex;
74
93
  break;
75
94
  case "inside_start":
76
- // Find first { after anchor
77
- insertIndex = content.indexOf("{", anchorIndex) + 1;
95
+ insertIndex = content.indexOf("{", anchorNode.startIndex) + 1;
78
96
  break;
79
97
  case "inside_end":
80
- // Find last } of anchor
81
- insertIndex = anchorIndex + extracted.lastIndexOf("}");
98
+ insertIndex = content.lastIndexOf("}", anchorNode.endIndex);
82
99
  break;
83
100
  default:
84
- insertIndex = anchorIndex + extracted.length;
101
+ insertIndex = anchorNode.endIndex;
85
102
  }
86
103
  }
87
104
  const result = content.substring(0, insertIndex) + "\n" + code + "\n" + content.substring(insertIndex);
105
+ // Validate syntax
106
+ const syntaxCheck = validateSyntax(result, parser);
107
+ if (!syntaxCheck.valid) {
108
+ return { success: false, error: syntaxCheck.error };
109
+ }
88
110
  const diff = generateDiff(content, result);
89
111
  return {
90
112
  success: true,
@@ -112,15 +134,19 @@ export async function removeSymbol(options) {
112
134
  try {
113
135
  const content = await fs.readFile(validation.resolvedPath, "utf-8");
114
136
  const tree = parser.parse(content);
115
- const extracted = parser.extractSymbol(tree, symbolName, className);
116
- if (!extracted) {
137
+ // Use findSymbols for AST-based location
138
+ const symbols = parser.findSymbols(tree);
139
+ const target = symbols.find(s => s.name === symbolName && (!className || s.className === className));
140
+ if (!target) {
117
141
  return { success: false, error: `Symbol "${symbolName}" not found` };
118
142
  }
119
- const index = content.indexOf(extracted);
120
- if (index === -1) {
121
- return { success: false, error: "Could not locate symbol in content" };
143
+ // Use AST startIndex/endIndex instead of indexOf
144
+ const result = content.substring(0, target.startIndex) + content.substring(target.endIndex);
145
+ // Validate syntax
146
+ const syntaxCheck = validateSyntax(result, parser);
147
+ if (!syntaxCheck.valid) {
148
+ return { success: false, error: syntaxCheck.error };
122
149
  }
123
- const result = content.substring(0, index) + content.substring(index + extracted.length);
124
150
  const diff = generateDiff(content, result);
125
151
  return {
126
152
  success: true,
@@ -136,7 +162,92 @@ export async function removeSymbol(options) {
136
162
  }
137
163
  }
138
164
  /**
139
- * Write content to file (atomic)
165
+ * Rename symbol using AST-aware replacement
166
+ * v3.4.0 - SECURITY FIX: Validates all paths + uses atomic writes
167
+ */
168
+ export async function renameSymbol(params) {
169
+ try {
170
+ const validator = new SecurityValidator(params.projectRoot);
171
+ // Validate definition file path
172
+ const defValidation = await validator.validateFilePath(params.filePath);
173
+ if (!defValidation.valid) {
174
+ return { success: false, error: defValidation.error };
175
+ }
176
+ // Sanitize to prevent regex injection
177
+ const sanitizedOld = sanitizeRegexPattern(params.oldName);
178
+ // Step 1: Rename in definition file using AST
179
+ const content = await fs.readFile(defValidation.resolvedPath, "utf-8");
180
+ const tree = params.parser.parse(content);
181
+ const symbols = params.parser.findSymbols(tree);
182
+ const targetSymbol = symbols.find(s => s.name === params.oldName);
183
+ if (!targetSymbol) {
184
+ return {
185
+ success: false,
186
+ error: `Symbol "${params.oldName}" not found in ${params.filePath}`,
187
+ };
188
+ }
189
+ // Replace only in symbol definition (AST-based)
190
+ let newContent = content.substring(0, targetSymbol.startIndex) +
191
+ content.substring(targetSymbol.startIndex, targetSymbol.endIndex)
192
+ .replace(new RegExp(`\\b${sanitizedOld}\\b`, "g"), params.newName) +
193
+ content.substring(targetSymbol.endIndex);
194
+ // Step 2: Find dependent files (within project boundary)
195
+ const dependents = [];
196
+ async function walkDir(dir) {
197
+ const entries = await fs.readdir(dir, { withFileTypes: true });
198
+ for (const entry of entries) {
199
+ const fullPath = path.join(dir, entry.name);
200
+ if (entry.isDirectory()) {
201
+ if (!EXCLUDE_DIRS.includes(entry.name)) {
202
+ await walkDir(fullPath);
203
+ }
204
+ }
205
+ else if (entry.isFile()) {
206
+ const ext = path.extname(entry.name);
207
+ if (SUPPORTED_EXTENSIONS.includes(ext)) {
208
+ // SECURITY FIX: Validate each dependent file path
209
+ const depValidation = await validator.validateFilePath(fullPath);
210
+ if (!depValidation.valid)
211
+ continue;
212
+ const fileContent = await fs.readFile(fullPath, "utf-8");
213
+ const importPatterns = [
214
+ new RegExp(`import.*\\b${sanitizedOld}\\b`, "g"),
215
+ new RegExp(`from.*\\b${sanitizedOld}\\b`, "g"),
216
+ new RegExp(`require.*\\b${sanitizedOld}\\b`, "g"),
217
+ new RegExp(`use.*\\b${sanitizedOld}\\b`, "g"),
218
+ ];
219
+ if (importPatterns.some(p => p.test(fileContent))) {
220
+ dependents.push(fullPath);
221
+ }
222
+ }
223
+ }
224
+ }
225
+ }
226
+ await walkDir(params.rootDir);
227
+ // Step 3: Rename in dependent files using atomic writes
228
+ for (const depFile of dependents) {
229
+ const depContent = await fs.readFile(depFile, "utf-8");
230
+ const depNewContent = depContent.replace(new RegExp(`\\b${sanitizedOld}\\b`, "g"), params.newName);
231
+ // SECURITY FIX: Use atomic write
232
+ await writeFile(depFile, depNewContent);
233
+ }
234
+ // Step 4: Write definition file atomically
235
+ await writeFile(defValidation.resolvedPath, newContent);
236
+ return {
237
+ success: true,
238
+ newContent,
239
+ diff: `Renamed "${params.oldName}" → "${params.newName}" in ${dependents.length + 1} files`,
240
+ };
241
+ }
242
+ catch (error) {
243
+ return {
244
+ success: false,
245
+ error: error instanceof Error ? error.message : String(error),
246
+ };
247
+ }
248
+ }
249
+ /**
250
+ * Atomic file write: write to .tmp then rename
140
251
  */
141
252
  export async function writeFile(filePath, content) {
142
253
  const tmpPath = filePath + ".tmp";
@@ -144,26 +255,9 @@ export async function writeFile(filePath, content) {
144
255
  await fs.rename(tmpPath, filePath);
145
256
  }
146
257
  /**
147
- * Generate unified diff (simple line-by-line)
258
+ * Generate unified diff
148
259
  */
149
260
  function generateDiff(oldContent, newContent) {
150
- const oldLines = oldContent.split("\n");
151
- const newLines = newContent.split("\n");
152
- const diff = [];
153
- const maxLen = Math.max(oldLines.length, newLines.length);
154
- for (let i = 0; i < maxLen; i++) {
155
- const oldLine = oldLines[i];
156
- const newLine = newLines[i];
157
- if (oldLine === newLine) {
158
- diff.push(` ${oldLine || ""}`);
159
- }
160
- else {
161
- if (oldLine !== undefined)
162
- diff.push(`- ${oldLine}`);
163
- if (newLine !== undefined)
164
- diff.push(`+ ${newLine}`);
165
- }
166
- }
167
- return diff.join("\n");
261
+ return generateUnifiedDiff(oldContent, newContent, 3);
168
262
  }
169
263
  //# sourceMappingURL=write.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"write.js","sourceRoot":"","sources":["../../../src/operations/write.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"write.js","sourceRoot":"","sources":["../../../src/operations/write.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  /**
2
- * Base Parser - v3.0.0
2
+ * Base Parser - v3.4.0
3
3
  * Abstract base for all language parsers
4
+ * IMPROVEMENT: replaceSymbol moved here using AST indices (eliminates indexOf fragility)
4
5
  */
5
6
  import { Parser, Tree, Language } from "web-tree-sitter";
6
7
  export interface ParseResult {
@@ -22,7 +23,11 @@ export declare abstract class BaseParser {
22
23
  init(parser: Parser, language: Language): Promise<void>;
23
24
  parse(content: string, oldTree?: Tree): Tree;
24
25
  abstract extractSymbol(tree: Tree, symbolName: string, className?: string): string | null;
25
- abstract replaceSymbol(content: string, tree: Tree, symbolName: string, newContent: string, className?: string): string;
26
+ /**
27
+ * Replace a symbol using AST startIndex/endIndex (no indexOf fragility)
28
+ * Concrete implementation — subclasses inherit this.
29
+ */
30
+ replaceSymbol(content: string, tree: Tree, symbolName: string, newContent: string, className?: string): string;
26
31
  abstract findSymbols(tree: Tree): SymbolInfo[];
27
32
  getName(): string;
28
33
  }
@@ -1,6 +1,7 @@
1
1
  /**
2
- * Base Parser - v3.0.0
2
+ * Base Parser - v3.4.0
3
3
  * Abstract base for all language parsers
4
+ * IMPROVEMENT: replaceSymbol moved here using AST indices (eliminates indexOf fragility)
4
5
  */
5
6
  export class BaseParser {
6
7
  parser;
@@ -20,6 +21,22 @@ export class BaseParser {
20
21
  throw new Error(`${this.languageName} parsing failed`);
21
22
  return tree;
22
23
  }
24
+ /**
25
+ * Replace a symbol using AST startIndex/endIndex (no indexOf fragility)
26
+ * Concrete implementation — subclasses inherit this.
27
+ */
28
+ replaceSymbol(content, tree, symbolName, newContent, className) {
29
+ // Find symbol via AST
30
+ const symbols = this.findSymbols(tree);
31
+ const target = symbols.find(s => s.name === symbolName && (!className || s.className === className));
32
+ if (!target) {
33
+ throw new Error(`Symbol "${symbolName}" not found`);
34
+ }
35
+ // Use AST indices for precise replacement (no indexOf false-match)
36
+ return content.substring(0, target.startIndex) +
37
+ newContent +
38
+ content.substring(target.endIndex);
39
+ }
23
40
  getName() {
24
41
  return this.languageName;
25
42
  }
@@ -1 +1 @@
1
- {"version":3,"file":"base.js","sourceRoot":"","sources":["../../../src/parsers/base.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAiBH,MAAM,OAAgB,UAAU;IACpB,MAAM,CAAU;IAChB,QAAQ,CAAY;IACpB,YAAY,CAAS;IAE/B,YAAY,YAAoB;QAC9B,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,MAAc,EAAE,QAAkB;QAC3C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,OAAe,EAAE,OAAc;QACnC,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACjD,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,YAAY,iBAAiB,CAAC,CAAC;QAClE,OAAO,IAAI,CAAC;IACd,CAAC;IAkBD,OAAO;QACL,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;CACF"}
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../../src/parsers/base.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAiBH,MAAM,OAAgB,UAAU;IACpB,MAAM,CAAU;IAChB,QAAQ,CAAY;IACpB,YAAY,CAAS;IAE/B,YAAY,YAAoB;QAC9B,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,MAAc,EAAE,QAAkB;QAC3C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,OAAe,EAAE,OAAc;QACnC,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACjD,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,YAAY,iBAAiB,CAAC,CAAC;QAClE,OAAO,IAAI,CAAC;IACd,CAAC;IAQD;;;OAGG;IACH,aAAa,CACX,OAAe,EACf,IAAU,EACV,UAAkB,EAClB,UAAkB,EAClB,SAAkB;QAElB,sBAAsB;QACtB,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACvC,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAC9B,CAAC,CAAC,IAAI,KAAK,UAAU,IAAI,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,CACnE,CAAC;QAEF,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,WAAW,UAAU,aAAa,CAAC,CAAC;QACtD,CAAC;QAED,mEAAmE;QACnE,OAAO,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;YAC5C,UAAU;YACV,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACvC,CAAC;IAID,OAAO;QACL,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;CACF"}
@@ -1,13 +1,13 @@
1
1
  /**
2
- * Dart Tree-sitter Parser - v3.0.0
3
- * 100% AST accuracy (requires tree-sitter-dart installed)
2
+ * Dart Tree-sitter Parser - v3.4.0
3
+ * 100% AST accuracy via WASM
4
+ * CLEANUP: replaceSymbol removed (inherited from BaseParser)
4
5
  */
5
6
  import { Tree } from "web-tree-sitter";
6
7
  import { BaseParser, SymbolInfo } from "./base.js";
7
8
  export declare class DartTreeSitterParser extends BaseParser {
8
9
  constructor();
9
10
  extractSymbol(tree: Tree, symbolName: string, className?: string): string | null;
10
- replaceSymbol(content: string, tree: Tree, symbolName: string, newContent: string, className?: string): string;
11
11
  findSymbols(tree: Tree): SymbolInfo[];
12
12
  private findParentClass;
13
13
  }
@@ -1,6 +1,7 @@
1
1
  /**
2
- * Dart Tree-sitter Parser - v3.0.0
3
- * 100% AST accuracy (requires tree-sitter-dart installed)
2
+ * Dart Tree-sitter Parser - v3.4.0
3
+ * 100% AST accuracy via WASM
4
+ * CLEANUP: replaceSymbol removed (inherited from BaseParser)
4
5
  */
5
6
  import { BaseParser } from "./base.js";
6
7
  export class DartTreeSitterParser extends BaseParser {
@@ -19,6 +20,7 @@ export class DartTreeSitterParser extends BaseParser {
19
20
  if (className) {
20
21
  const classNode = this.findParentClass(node);
21
22
  if (!classNode || classNode.childForFieldName("name")?.text !== className) {
23
+ // Continue searching
22
24
  }
23
25
  else {
24
26
  return tree.rootNode.text.substring(node.startIndex, node.endIndex);
@@ -41,15 +43,6 @@ export class DartTreeSitterParser extends BaseParser {
41
43
  };
42
44
  return search();
43
45
  }
44
- replaceSymbol(content, tree, symbolName, newContent, className) {
45
- const extracted = this.extractSymbol(tree, symbolName, className);
46
- if (!extracted)
47
- throw new Error(`Symbol "${symbolName}" not found`);
48
- const index = content.indexOf(extracted);
49
- if (index === -1)
50
- throw new Error("Could not locate symbol in content");
51
- return content.substring(0, index) + newContent + content.substring(index + extracted.length);
52
- }
53
46
  findSymbols(tree) {
54
47
  const symbols = [];
55
48
  const cursor = tree.walk();
@@ -60,11 +53,13 @@ export class DartTreeSitterParser extends BaseParser {
60
53
  node.type === "method_signature") {
61
54
  const nameNode = node.childForFieldName("name");
62
55
  if (nameNode) {
56
+ const parentClass = this.findParentClass(node);
63
57
  symbols.push({
64
58
  name: nameNode.text,
65
59
  type: node.type,
66
60
  startIndex: node.startIndex,
67
61
  endIndex: node.endIndex,
62
+ className: parentClass?.childForFieldName("name")?.text,
68
63
  });
69
64
  }
70
65
  }
@@ -1 +1 @@
1
- {"version":3,"file":"dartTreeSitter.js","sourceRoot":"","sources":["../../../src/parsers/dartTreeSitter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dartTreeSitter.js","sourceRoot":"","sources":["../../../src/parsers/dartTreeSitter.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,12 @@
1
1
  /**
2
- * PHP Parser - v3.0.0
2
+ * PHP Parser - v3.4.0
3
+ * CLEANUP: replaceSymbol removed (inherited from BaseParser)
3
4
  */
4
5
  import { Tree } from "web-tree-sitter";
5
6
  import { BaseParser, SymbolInfo } from "./base.js";
6
7
  export declare class PHPParser extends BaseParser {
7
8
  constructor();
8
9
  extractSymbol(tree: Tree, symbolName: string, className?: string): string | null;
9
- replaceSymbol(content: string, tree: Tree, symbolName: string, newContent: string, className?: string): string;
10
10
  findSymbols(tree: Tree): SymbolInfo[];
11
11
  private findParentClass;
12
12
  }
@@ -1,5 +1,6 @@
1
1
  /**
2
- * PHP Parser - v3.0.0
2
+ * PHP Parser - v3.4.0
3
+ * CLEANUP: replaceSymbol removed (inherited from BaseParser)
3
4
  */
4
5
  import { BaseParser } from "./base.js";
5
6
  export class PHPParser extends BaseParser {
@@ -16,6 +17,7 @@ export class PHPParser extends BaseParser {
16
17
  if (className) {
17
18
  const classNode = this.findParentClass(node);
18
19
  if (!classNode || classNode.childForFieldName("name")?.text !== className) {
20
+ // Continue searching
19
21
  }
20
22
  else {
21
23
  return tree.rootNode.text.substring(node.startIndex, node.endIndex);
@@ -38,15 +40,6 @@ export class PHPParser extends BaseParser {
38
40
  };
39
41
  return search();
40
42
  }
41
- replaceSymbol(content, tree, symbolName, newContent, className) {
42
- const extracted = this.extractSymbol(tree, symbolName, className);
43
- if (!extracted)
44
- throw new Error(`Symbol "${symbolName}" not found`);
45
- const index = content.indexOf(extracted);
46
- if (index === -1)
47
- throw new Error("Could not locate symbol in content");
48
- return content.substring(0, index) + newContent + content.substring(index + extracted.length);
49
- }
50
43
  findSymbols(tree) {
51
44
  const symbols = [];
52
45
  const cursor = tree.walk();
@@ -55,11 +48,13 @@ export class PHPParser extends BaseParser {
55
48
  if (node.type === "function_definition" || node.type === "class_declaration" || node.type === "method_declaration") {
56
49
  const nameNode = node.childForFieldName("name");
57
50
  if (nameNode) {
51
+ const parentClass = this.findParentClass(node);
58
52
  symbols.push({
59
53
  name: nameNode.text,
60
54
  type: node.type,
61
55
  startIndex: node.startIndex,
62
56
  endIndex: node.endIndex,
57
+ className: parentClass?.childForFieldName("name")?.text,
63
58
  });
64
59
  }
65
60
  }
@@ -1 +1 @@
1
- {"version":3,"file":"php.js","sourceRoot":"","sources":["../../../src/parsers/php.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"php.js","sourceRoot":"","sources":["../../../src/parsers/php.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,UAAU,EAAc,MAAM,WAAW,CAAC;AAEnD,MAAM,OAAO,SAAU,SAAQ,UAAU;IACvC;QACE,KAAK,CAAC,KAAK,CAAC,CAAC;IACf,CAAC;IAED,aAAa,CAAC,IAAU,EAAE,UAAkB,EAAE,SAAkB;QAC9D,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAE3B,MAAM,MAAM,GAAG,GAAkB,EAAE;YACjC,MAAM,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC;YAEhC,IAAI,IAAI,CAAC,IAAI,KAAK,qBAAqB,IAAI,IAAI,CAAC,IAAI,KAAK,mBAAmB,IAAI,IAAI,CAAC,IAAI,KAAK,oBAAoB,EAAE,CAAC;gBACnH,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;gBAChD,IAAI,QAAQ,IAAI,QAAQ,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;oBAC7C,IAAI,SAAS,EAAE,CAAC;wBACd,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;wBAC7C,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,IAAI,KAAK,SAAS,EAAE,CAAC;4BAC1E,qBAAqB;wBACvB,CAAC;6BAAM,CAAC;4BACN,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;wBACtE,CAAC;oBACH,CAAC;yBAAM,CAAC;wBACN,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;oBACtE,CAAC;gBACH,CAAC;YACH,CAAC;YAED,IAAI,MAAM,CAAC,cAAc,EAAE,EAAE,CAAC;gBAC5B,GAAG,CAAC;oBACF,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC;oBACxB,IAAI,MAAM;wBAAE,OAAO,MAAM,CAAC;gBAC5B,CAAC,QAAQ,MAAM,CAAC,eAAe,EAAE,EAAE;gBACnC,MAAM,CAAC,UAAU,EAAE,CAAC;YACtB,CAAC;YAED,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;QAEF,OAAO,MAAM,EAAE,CAAC;IAClB,CAAC;IAED,WAAW,CAAC,IAAU;QACpB,MAAM,OAAO,GAAiB,EAAE,CAAC;QACjC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAE3B,MAAM,KAAK,GAAG,GAAG,EAAE;YACjB,MAAM,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC;YAEhC,IAAI,IAAI,CAAC,IAAI,KAAK,qBAAqB,IAAI,IAAI,CAAC,IAAI,KAAK,mBAAmB,IAAI,IAAI,CAAC,IAAI,KAAK,oBAAoB,EAAE,CAAC;gBACnH,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;gBAChD,IAAI,QAAQ,EAAE,CAAC;oBACb,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;oBAC/C,OAAO,CAAC,IAAI,CAAC;wBACX,IAAI,EAAE,QAAQ,CAAC,IAAI;wBACnB,IAAI,EAAE,IAAI,CAAC,IAAI;wBACf,UAAU,EAAE,IAAI,CAAC,UAAU;wBAC3B,QAAQ,EAAE,IAAI,CAAC,QAAQ;wBACvB,SAAS,EAAE,WAAW,EAAE,iBAAiB,CAAC,MAAM,CAAC,EAAE,IAAI;qBACxD,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAED,IAAI,MAAM,CAAC,cAAc,EAAE,EAAE,CAAC;gBAC5B,GAAG,CAAC;oBACF,KAAK,EAAE,CAAC;gBACV,CAAC,QAAQ,MAAM,CAAC,eAAe,EAAE,EAAE;gBACnC,MAAM,CAAC,UAAU,EAAE,CAAC;YACtB,CAAC;QACH,CAAC,CAAC;QAEF,KAAK,EAAE,CAAC;QACR,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,eAAe,CAAC,IAAU;QAChC,IAAI,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,OAAO,OAAO,EAAE,CAAC;YACf,IAAI,OAAO,CAAC,IAAI,KAAK,mBAAmB;gBAAE,OAAO,OAAO,CAAC;YACzD,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;QAC3B,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
@@ -1,12 +1,12 @@
1
1
  /**
2
- * Python Parser - v3.0.0
2
+ * Python Parser - v3.4.0
3
+ * CLEANUP: replaceSymbol removed (inherited from BaseParser)
3
4
  */
4
5
  import { Tree } from "web-tree-sitter";
5
6
  import { BaseParser, SymbolInfo } from "./base.js";
6
7
  export declare class PythonParser extends BaseParser {
7
8
  constructor();
8
9
  extractSymbol(tree: Tree, symbolName: string, className?: string): string | null;
9
- replaceSymbol(content: string, tree: Tree, symbolName: string, newContent: string, className?: string): string;
10
10
  findSymbols(tree: Tree): SymbolInfo[];
11
11
  private findParentClass;
12
12
  }
@@ -1,5 +1,6 @@
1
1
  /**
2
- * Python Parser - v3.0.0
2
+ * Python Parser - v3.4.0
3
+ * CLEANUP: replaceSymbol removed (inherited from BaseParser)
3
4
  */
4
5
  import { BaseParser } from "./base.js";
5
6
  export class PythonParser extends BaseParser {
@@ -16,6 +17,7 @@ export class PythonParser extends BaseParser {
16
17
  if (className) {
17
18
  const classNode = this.findParentClass(node);
18
19
  if (!classNode || classNode.childForFieldName("name")?.text !== className) {
20
+ // Continue searching
19
21
  }
20
22
  else {
21
23
  return tree.rootNode.text.substring(node.startIndex, node.endIndex);
@@ -38,15 +40,6 @@ export class PythonParser extends BaseParser {
38
40
  };
39
41
  return search();
40
42
  }
41
- replaceSymbol(content, tree, symbolName, newContent, className) {
42
- const extracted = this.extractSymbol(tree, symbolName, className);
43
- if (!extracted)
44
- throw new Error(`Symbol "${symbolName}" not found`);
45
- const index = content.indexOf(extracted);
46
- if (index === -1)
47
- throw new Error("Could not locate symbol in content");
48
- return content.substring(0, index) + newContent + content.substring(index + extracted.length);
49
- }
50
43
  findSymbols(tree) {
51
44
  const symbols = [];
52
45
  const cursor = tree.walk();
@@ -55,11 +48,13 @@ export class PythonParser extends BaseParser {
55
48
  if (node.type === "function_definition" || node.type === "class_definition") {
56
49
  const nameNode = node.childForFieldName("name");
57
50
  if (nameNode) {
51
+ const parentClass = this.findParentClass(node);
58
52
  symbols.push({
59
53
  name: nameNode.text,
60
54
  type: node.type,
61
55
  startIndex: node.startIndex,
62
56
  endIndex: node.endIndex,
57
+ className: parentClass?.childForFieldName("name")?.text,
63
58
  });
64
59
  }
65
60
  }
@@ -1 +1 @@
1
- {"version":3,"file":"python.js","sourceRoot":"","sources":["../../../src/parsers/python.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"python.js","sourceRoot":"","sources":["../../../src/parsers/python.ts"],"names":[],"mappings":"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"}