skannr 0.1.5 → 0.1.6
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PythonAdapter.d.ts","sourceRoot":"","sources":["../../src/languages/PythonAdapter.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"PythonAdapter.d.ts","sourceRoot":"","sources":["../../src/languages/PythonAdapter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAmQ5E,qBAAa,aAAc,YAAW,eAAe;IACnD,IAAI,SAAY;IAChB,UAAU,WAAmB;IAE7B,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAIpC,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,cAAc;IAQvF,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE;IAazC,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE;CAY1C"}
|
|
@@ -35,16 +35,33 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
36
|
exports.PythonAdapter = void 0;
|
|
37
37
|
const path = __importStar(require("path"));
|
|
38
|
-
|
|
38
|
+
let Parser;
|
|
39
39
|
let pythonLanguage;
|
|
40
|
+
let treeSitterAvailable = true;
|
|
41
|
+
try {
|
|
42
|
+
Parser = require('tree-sitter');
|
|
43
|
+
}
|
|
44
|
+
catch {
|
|
45
|
+
treeSitterAvailable = false;
|
|
46
|
+
}
|
|
40
47
|
function ensureParserLoaded() {
|
|
48
|
+
if (!treeSitterAvailable)
|
|
49
|
+
return false;
|
|
41
50
|
if (!pythonLanguage) {
|
|
42
|
-
|
|
43
|
-
|
|
51
|
+
try {
|
|
52
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
53
|
+
pythonLanguage = require('tree-sitter-python');
|
|
54
|
+
}
|
|
55
|
+
catch {
|
|
56
|
+
treeSitterAvailable = false;
|
|
57
|
+
return false;
|
|
58
|
+
}
|
|
44
59
|
}
|
|
60
|
+
return true;
|
|
45
61
|
}
|
|
46
62
|
function getParser() {
|
|
47
|
-
ensureParserLoaded()
|
|
63
|
+
if (!ensureParserLoaded())
|
|
64
|
+
return null;
|
|
48
65
|
const parser = new Parser();
|
|
49
66
|
parser.setLanguage(pythonLanguage);
|
|
50
67
|
return parser;
|
|
@@ -157,6 +174,8 @@ function processStatement(state, node) {
|
|
|
157
174
|
}
|
|
158
175
|
function buildSkeletonAst(content) {
|
|
159
176
|
const parser = getParser();
|
|
177
|
+
if (!parser)
|
|
178
|
+
return content.split('\n').slice(0, 50).join('\n');
|
|
160
179
|
const tree = parser.parse(content);
|
|
161
180
|
const lines = content.split(/\r?\n/);
|
|
162
181
|
const state = {
|
|
@@ -272,6 +291,8 @@ class PythonAdapter {
|
|
|
272
291
|
extractSymbols(content) {
|
|
273
292
|
try {
|
|
274
293
|
const parser = getParser();
|
|
294
|
+
if (!parser)
|
|
295
|
+
return [];
|
|
275
296
|
const tree = parser.parse(content);
|
|
276
297
|
const symbols = [];
|
|
277
298
|
walkSymbols(tree.rootNode, symbols);
|
|
@@ -284,6 +305,8 @@ class PythonAdapter {
|
|
|
284
305
|
extractImports(content) {
|
|
285
306
|
try {
|
|
286
307
|
const parser = getParser();
|
|
308
|
+
if (!parser)
|
|
309
|
+
return [];
|
|
287
310
|
const tree = parser.parse(content);
|
|
288
311
|
const mods = new Set();
|
|
289
312
|
walkImports(tree.rootNode, mods);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PythonAdapter.js","sourceRoot":"","sources":["../../src/languages/PythonAdapter.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2CAA6B;
|
|
1
|
+
{"version":3,"file":"PythonAdapter.js","sourceRoot":"","sources":["../../src/languages/PythonAdapter.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "skannr",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.6",
|
|
4
4
|
"description": "A universal tool to analyze any codebase and generate semantic skeletons for AI agents",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -34,10 +34,12 @@
|
|
|
34
34
|
"commander": "^12.1.0",
|
|
35
35
|
"ignore": "^7.0.5",
|
|
36
36
|
"parse-diff": "0.12.0",
|
|
37
|
-
"tree-sitter": "^0.25.0",
|
|
38
|
-
"tree-sitter-python": "^0.25.0",
|
|
39
37
|
"ts-morph": "^21.0.1"
|
|
40
38
|
},
|
|
39
|
+
"optionalDependencies": {
|
|
40
|
+
"tree-sitter": "^0.25.0",
|
|
41
|
+
"tree-sitter-python": "^0.25.0"
|
|
42
|
+
},
|
|
41
43
|
"devDependencies": {
|
|
42
44
|
"@types/jest": "^29.5.11",
|
|
43
45
|
"@types/node": "^20.11.0",
|
|
@@ -1,20 +1,34 @@
|
|
|
1
1
|
import * as path from 'path';
|
|
2
|
-
import Parser = require('tree-sitter');
|
|
3
2
|
import { LanguageAdapter, SkeletonResult, Symbol } from './LanguageAdapter';
|
|
4
3
|
|
|
5
|
-
|
|
4
|
+
let Parser: any;
|
|
5
|
+
let pythonLanguage: any;
|
|
6
|
+
let treeSitterAvailable = true;
|
|
6
7
|
|
|
7
|
-
|
|
8
|
+
try {
|
|
9
|
+
Parser = require('tree-sitter');
|
|
10
|
+
} catch {
|
|
11
|
+
treeSitterAvailable = false;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
type SyntaxNode = any;
|
|
8
15
|
|
|
9
|
-
function ensureParserLoaded():
|
|
16
|
+
function ensureParserLoaded(): boolean {
|
|
17
|
+
if (!treeSitterAvailable) return false;
|
|
10
18
|
if (!pythonLanguage) {
|
|
11
|
-
|
|
12
|
-
|
|
19
|
+
try {
|
|
20
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
21
|
+
pythonLanguage = require('tree-sitter-python');
|
|
22
|
+
} catch {
|
|
23
|
+
treeSitterAvailable = false;
|
|
24
|
+
return false;
|
|
25
|
+
}
|
|
13
26
|
}
|
|
27
|
+
return true;
|
|
14
28
|
}
|
|
15
29
|
|
|
16
|
-
function getParser():
|
|
17
|
-
ensureParserLoaded();
|
|
30
|
+
function getParser(): any | null {
|
|
31
|
+
if (!ensureParserLoaded()) return null;
|
|
18
32
|
const parser = new Parser();
|
|
19
33
|
parser.setLanguage(pythonLanguage!);
|
|
20
34
|
return parser;
|
|
@@ -144,6 +158,7 @@ function processStatement(state: SkeletonState, node: SyntaxNode): void {
|
|
|
144
158
|
|
|
145
159
|
function buildSkeletonAst(content: string): string {
|
|
146
160
|
const parser = getParser();
|
|
161
|
+
if (!parser) return content.split('\n').slice(0, 50).join('\n');
|
|
147
162
|
const tree = parser.parse(content);
|
|
148
163
|
const lines = content.split(/\r?\n/);
|
|
149
164
|
const state: SkeletonState = {
|
|
@@ -262,6 +277,7 @@ export class PythonAdapter implements LanguageAdapter {
|
|
|
262
277
|
extractSymbols(content: string): Symbol[] {
|
|
263
278
|
try {
|
|
264
279
|
const parser = getParser();
|
|
280
|
+
if (!parser) return [];
|
|
265
281
|
const tree = parser.parse(content);
|
|
266
282
|
const symbols: Symbol[] = [];
|
|
267
283
|
walkSymbols(tree.rootNode, symbols);
|
|
@@ -274,6 +290,7 @@ export class PythonAdapter implements LanguageAdapter {
|
|
|
274
290
|
extractImports(content: string): string[] {
|
|
275
291
|
try {
|
|
276
292
|
const parser = getParser();
|
|
293
|
+
if (!parser) return [];
|
|
277
294
|
const tree = parser.parse(content);
|
|
278
295
|
const mods = new Set<string>();
|
|
279
296
|
walkImports(tree.rootNode, mods);
|