Skip to content

Commit 27c1d7a

Browse files
changes
1 parent 090252f commit 27c1d7a

File tree

6 files changed

+178
-128
lines changed

6 files changed

+178
-128
lines changed

.DS_Store

6 KB
Binary file not shown.

modules/codeutils.js

Lines changed: 87 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,36 @@
11
"use strict";
2+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3+
if (k2 === undefined) k2 = k;
4+
var desc = Object.getOwnPropertyDescriptor(m, k);
5+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6+
desc = { enumerable: true, get: function() { return m[k]; } };
7+
}
8+
Object.defineProperty(o, k2, desc);
9+
}) : (function(o, m, k, k2) {
10+
if (k2 === undefined) k2 = k;
11+
o[k2] = m[k];
12+
}));
13+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14+
Object.defineProperty(o, "default", { enumerable: true, value: v });
15+
}) : function(o, v) {
16+
o["default"] = v;
17+
});
18+
var __importStar = (this && this.__importStar) || function (mod) {
19+
if (mod && mod.__esModule) return mod;
20+
var result = {};
21+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22+
__setModuleDefault(result, mod);
23+
return result;
24+
};
225
var __importDefault = (this && this.__importDefault) || function (mod) {
326
return (mod && mod.__esModule) ? mod : { "default": mod };
427
};
528
Object.defineProperty(exports, "__esModule", { value: true });
629
const websocket_1 = __importDefault(require("./websocket"));
30+
const fs = __importStar(require("fs"));
31+
const path_1 = __importDefault(require("path"));
32+
const tree_sitter_1 = __importDefault(require("tree-sitter"));
33+
const tree_sitter_javascript_1 = __importDefault(require("tree-sitter-javascript"));
734
/**
835
* A utility module for working with code.
936
*/
@@ -14,72 +41,74 @@ const cbcodeutils = {
1441
* @returns {Promise<GetJsTreeResponse>} A promise that resolves with the JS tree response.
1542
*/
1643
getJsTree: (filePath) => {
17-
// return new Promise( async (resolve, reject) => {
18-
// cbws.getWebsocket.send(JSON.stringify({
19-
// "type": "settingEvent",
20-
// "action": "getProjectPath"
21-
// }));
22-
// cbws.getWebsocket.on('message', (data: string) => {
23-
// const response = JSON.parse(data);
24-
// if (response.type === "getProjectPathResponse") {
25-
// // resolve(response);
26-
// try {
27-
// let pathInput= response.projectPath;
28-
// let parser= new Parser();
29-
// // Initialize the parser with the JavaScript language
30-
// parser.setLanguage(JavaScript);
31-
// const trees = [];
32-
// const functionNodes = [];
33-
// const processDirectory = (directory:any) => {
34-
// console.log("isdir")
35-
// // Read all files in the directory
36-
// const files = fs.readdirSync(directory, { withFileTypes: true });
37-
// files.forEach(file => {
38-
// if (file.isDirectory()) {
39-
// if (file.name !== 'node_modules') { // Ignore node_modules directory
40-
// processDirectory(path.join(directory, file.name)); // Recursive call for subdirectories
41-
// }
42-
// } else if (path.extname(file.name) === '.js') {
43-
// const code = fs.readFileSync(path.join(directory, file.name), 'utf-8');
44-
// console.log(code);
45-
// let tree:any = parser.parse(code);
46-
// tree.rootNode.path = path.join(directory, file.name); // Set file path for t
47-
// trees.push(tree);
48-
// }
49-
// });
50-
// };
51-
// if (fs.lstatSync(pathInput).isDirectory()) {
52-
// processDirectory(pathInput);
53-
// } else if (path.extname(pathInput) === '.js') {
54-
// // Read a single JavaScript file
55-
// const code = fs.readFileSync(pathInput, 'utf-8');
56-
// let tree:any = parser.parse(code);
57-
// tree.rootNode.path = pathInput; // Set file path for t
58-
// trees.push(tree);
59-
// }
60-
// resolve({ event: 'GetJsTreeResponse',payload:trees}); // Return an array of abstract syntax trees (ASTs)
61-
// } catch (error) {
62-
// console.error('An error occurred:', error);
63-
// return { event: 'GetJsTreeResponse',payload:null}; // Return null in case of error
64-
// }
65-
// }
66-
// });
67-
// });
6844
return new Promise(async (resolve, reject) => {
6945
websocket_1.default.getWebsocket.send(JSON.stringify({
70-
"type": "codeEvent",
71-
"action": "getJsTree",
72-
payload: {
73-
filePath
74-
}
46+
"type": "settingEvent",
47+
"action": "getProjectPath"
7548
}));
7649
websocket_1.default.getWebsocket.on('message', (data) => {
7750
const response = JSON.parse(data);
78-
if (response.type === "getJsTreeResponse") {
79-
resolve(response); // Resolve the Promise with the response data
51+
if (response.type === "getProjectPathResponse") {
52+
// resolve(response);
53+
try {
54+
let pathInput = filePath || response.projectPath;
55+
let parser = new tree_sitter_1.default();
56+
// Initialize the parser with the JavaScript language
57+
parser.setLanguage(tree_sitter_javascript_1.default);
58+
const trees = [];
59+
const functionNodes = [];
60+
const processDirectory = (directory) => {
61+
// Read all files in the directory
62+
const files = fs.readdirSync(directory, { withFileTypes: true });
63+
files.forEach(file => {
64+
if (file.isDirectory()) {
65+
if (file.name !== 'node_modules') { // Ignore node_modules directory
66+
processDirectory(path_1.default.join(directory, file.name)); // Recursive call for subdirectories
67+
}
68+
}
69+
else if (path_1.default.extname(file.name) === '.js') {
70+
const code = fs.readFileSync(path_1.default.join(directory, file.name), 'utf-8');
71+
console.log(code);
72+
let tree = parser.parse(code);
73+
tree.rootNode.path = path_1.default.join(directory, file.name); // Set file path for t
74+
trees.push(tree);
75+
}
76+
});
77+
};
78+
if (fs.lstatSync(pathInput).isDirectory()) {
79+
processDirectory(pathInput);
80+
}
81+
else if (path_1.default.extname(pathInput) === '.js') {
82+
// Read a single JavaScript file
83+
const code = fs.readFileSync(pathInput, 'utf-8');
84+
let tree = parser.parse(code);
85+
tree.rootNode.path = pathInput; // Set file path for t
86+
trees.push(tree);
87+
}
88+
resolve({ event: 'GetJsTreeResponse', payload: trees }); // Return an array of abstract syntax trees (ASTs)
89+
}
90+
catch (error) {
91+
console.error('An error occurred:', error);
92+
return { event: 'GetJsTreeResponse', payload: null }; // Return null in case of error
93+
}
8094
}
8195
});
8296
});
97+
// return new Promise(async (resolve, reject) => {
98+
// cbws.getWebsocket.send(JSON.stringify({
99+
// "type": "codeEvent",
100+
// "action": "getJsTree",
101+
// payload: {
102+
// filePath
103+
// }
104+
// }));
105+
// cbws.getWebsocket.on('message', (data: string) => {
106+
// const response = JSON.parse(data);
107+
// if (response.type === "getJsTreeResponse") {
108+
// resolve(response); // Resolve the Promise with the response data
109+
// }
110+
// });
111+
// });
83112
},
84113
/**
85114
* Retrieves all files as Markdown.

package-lock.json

Lines changed: 23 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@codebolt/codeboltjs",
3-
"version": "1.1.80",
3+
"version": "1.1.81",
44
"description": "",
55
"keywords": [],
66
"author": "",
@@ -22,6 +22,7 @@
2222
"js-yaml": "^4.1.0",
2323
"tree-sitter": "^0.21.1",
2424
"tree-sitter-javascript": "^0.23.1",
25+
"tree-sitter-typescript": "^0.23.2",
2526
"typedoc-plugin-missing-exports": "^2.2.0",
2627
"ws": "^8.17.0"
2728
},

src/.DS_Store

6 KB
Binary file not shown.

src/modules/codeutils.ts

Lines changed: 66 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
import cbws from './websocket';
22
import * as fs from 'fs';
33
import path from 'path';
4-
import Parser from 'tree-sitter';
5-
import JavaScript from 'tree-sitter-javascript';
4+
import Parser from 'tree-sitter';
5+
import JavaScript from 'tree-sitter-javascript';
6+
import typescript from "tree-sitter-typescript"; // TypeScript and TSX grammar
67

78
import { GetJsTreeResponse, MatchProblemResponse, GetMatcherListTreeResponse, getMatchDetail } from '@codebolt/types';
89

@@ -17,79 +18,77 @@ const cbcodeutils = {
1718
* @returns {Promise<GetJsTreeResponse>} A promise that resolves with the JS tree response.
1819
*/
1920
getJsTree: (filePath?: string) => {
20-
// return new Promise( async (resolve, reject) => {
21-
// cbws.getWebsocket.send(JSON.stringify({
22-
// "type": "settingEvent",
23-
// "action": "getProjectPath"
24-
// }));
25-
// cbws.getWebsocket.on('message', (data: string) => {
26-
// const response = JSON.parse(data);
27-
// if (response.type === "getProjectPathResponse") {
28-
// // resolve(response);
29-
// try {
30-
// let pathInput= response.projectPath;
31-
// let parser= new Parser();
32-
// // Initialize the parser with the JavaScript language
33-
// parser.setLanguage(JavaScript);
34-
// const trees = [];
35-
// const functionNodes = [];
36-
37-
// const processDirectory = (directory:any) => {
38-
// console.log("isdir")
39-
// // Read all files in the directory
40-
// const files = fs.readdirSync(directory, { withFileTypes: true });
41-
42-
// files.forEach(file => {
43-
// if (file.isDirectory()) {
44-
// if (file.name !== 'node_modules') { // Ignore node_modules directory
45-
// processDirectory(path.join(directory, file.name)); // Recursive call for subdirectories
46-
// }
47-
// } else if (path.extname(file.name) === '.js') {
48-
// const code = fs.readFileSync(path.join(directory, file.name), 'utf-8');
49-
// console.log(code);
50-
// let tree:any = parser.parse(code);
51-
// tree.rootNode.path = path.join(directory, file.name); // Set file path for t
52-
// trees.push(tree);
53-
// }
54-
// });
55-
// };
56-
57-
// if (fs.lstatSync(pathInput).isDirectory()) {
58-
// processDirectory(pathInput);
59-
// } else if (path.extname(pathInput) === '.js') {
60-
// // Read a single JavaScript file
61-
// const code = fs.readFileSync(pathInput, 'utf-8');
62-
// let tree:any = parser.parse(code);
63-
// tree.rootNode.path = pathInput; // Set file path for t
64-
65-
// trees.push(tree);
66-
// }
67-
68-
// resolve({ event: 'GetJsTreeResponse',payload:trees}); // Return an array of abstract syntax trees (ASTs)
69-
// } catch (error) {
70-
// console.error('An error occurred:', error);
71-
// return { event: 'GetJsTreeResponse',payload:null}; // Return null in case of error
72-
// }
73-
// }
74-
// });
75-
76-
77-
// });
7821
return new Promise(async (resolve, reject) => {
7922
cbws.getWebsocket.send(JSON.stringify({
80-
"type": "codeEvent",
81-
"action": "getJsTree",
82-
payload: {
83-
filePath
84-
}
23+
"type": "settingEvent",
24+
"action": "getProjectPath"
8525
}));
8626
cbws.getWebsocket.on('message', (data: string) => {
8727
const response = JSON.parse(data);
88-
if (response.type === "getJsTreeResponse") {
89-
resolve(response); // Resolve the Promise with the response data
28+
if (response.type === "getProjectPathResponse") {
29+
// resolve(response);
30+
try {
31+
let pathInput = filePath || response.projectPath;
32+
let parser = new Parser();
33+
// Initialize the parser with the JavaScript language
34+
parser.setLanguage(JavaScript);
35+
const trees = [];
36+
const functionNodes = [];
37+
const processDirectory = (directory: any) => {
38+
// Read all files in the directory
39+
const files = fs.readdirSync(directory, { withFileTypes: true });
40+
41+
files.forEach(file => {
42+
if (file.isDirectory()) {
43+
if (file.name !== 'node_modules') { // Ignore node_modules directory
44+
processDirectory(path.join(directory, file.name)); // Recursive call for subdirectories
45+
}
46+
} else if (path.extname(file.name) === '.js') {
47+
const code = fs.readFileSync(path.join(directory, file.name), 'utf-8');
48+
console.log(code);
49+
let tree: any = parser.parse(code);
50+
tree.rootNode.path = path.join(directory, file.name); // Set file path for t
51+
trees.push(tree);
52+
}
53+
});
54+
};
55+
56+
if (fs.lstatSync(pathInput).isDirectory()) {
57+
processDirectory(pathInput);
58+
} else if (path.extname(pathInput) === '.js') {
59+
// Read a single JavaScript file
60+
const code = fs.readFileSync(pathInput, 'utf-8');
61+
let tree: any = parser.parse(code);
62+
tree.rootNode.path = pathInput; // Set file path for t
63+
64+
trees.push(tree);
65+
}
66+
67+
resolve({ event: 'GetJsTreeResponse', payload: trees }); // Return an array of abstract syntax trees (ASTs)
68+
} catch (error) {
69+
console.error('An error occurred:', error);
70+
return { event: 'GetJsTreeResponse', payload: null }; // Return null in case of error
71+
}
9072
}
9173
});
74+
75+
9276
});
77+
// return new Promise(async (resolve, reject) => {
78+
// cbws.getWebsocket.send(JSON.stringify({
79+
// "type": "codeEvent",
80+
// "action": "getJsTree",
81+
// payload: {
82+
// filePath
83+
// }
84+
// }));
85+
// cbws.getWebsocket.on('message', (data: string) => {
86+
// const response = JSON.parse(data);
87+
// if (response.type === "getJsTreeResponse") {
88+
// resolve(response); // Resolve the Promise with the response data
89+
// }
90+
// });
91+
// });
9392
},
9493

9594
/**

0 commit comments

Comments
 (0)