@know-graph/core 0.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.
- package/LICENSE +21 -0
- package/README.md +47 -0
- package/dist/connectors/cache.d.ts +25 -0
- package/dist/connectors/cache.d.ts.map +1 -0
- package/dist/connectors/cache.js +73 -0
- package/dist/connectors/cache.js.map +1 -0
- package/dist/connectors/index.d.ts +12 -0
- package/dist/connectors/index.d.ts.map +1 -0
- package/dist/connectors/index.js +7 -0
- package/dist/connectors/index.js.map +1 -0
- package/dist/connectors/jira-connector.d.ts +26 -0
- package/dist/connectors/jira-connector.d.ts.map +1 -0
- package/dist/connectors/jira-connector.js +234 -0
- package/dist/connectors/jira-connector.js.map +1 -0
- package/dist/connectors/notion-connector.d.ts +24 -0
- package/dist/connectors/notion-connector.d.ts.map +1 -0
- package/dist/connectors/notion-connector.js +246 -0
- package/dist/connectors/notion-connector.js.map +1 -0
- package/dist/connectors/rate-limiter.d.ts +23 -0
- package/dist/connectors/rate-limiter.d.ts.map +1 -0
- package/dist/connectors/rate-limiter.js +54 -0
- package/dist/connectors/rate-limiter.js.map +1 -0
- package/dist/connectors/registry.d.ts +15 -0
- package/dist/connectors/registry.d.ts.map +1 -0
- package/dist/connectors/registry.js +72 -0
- package/dist/connectors/registry.js.map +1 -0
- package/dist/connectors/types.d.ts +142 -0
- package/dist/connectors/types.d.ts.map +1 -0
- package/dist/connectors/types.js +35 -0
- package/dist/connectors/types.js.map +1 -0
- package/dist/coverage/__tests__/fixtures/mixed-project/annotated.d.ts +9 -0
- package/dist/coverage/__tests__/fixtures/mixed-project/annotated.d.ts.map +1 -0
- package/dist/coverage/__tests__/fixtures/mixed-project/annotated.js +11 -0
- package/dist/coverage/__tests__/fixtures/mixed-project/annotated.js.map +1 -0
- package/dist/coverage/__tests__/fixtures/mixed-project/unannotated.d.ts +2 -0
- package/dist/coverage/__tests__/fixtures/mixed-project/unannotated.d.ts.map +1 -0
- package/dist/coverage/__tests__/fixtures/mixed-project/unannotated.js +4 -0
- package/dist/coverage/__tests__/fixtures/mixed-project/unannotated.js.map +1 -0
- package/dist/coverage/coverage-calculator.d.ts +3 -0
- package/dist/coverage/coverage-calculator.d.ts.map +1 -0
- package/dist/coverage/coverage-calculator.js +204 -0
- package/dist/coverage/coverage-calculator.js.map +1 -0
- package/dist/coverage/index.d.ts +3 -0
- package/dist/coverage/index.d.ts.map +1 -0
- package/dist/coverage/index.js +2 -0
- package/dist/coverage/index.js.map +1 -0
- package/dist/coverage/types.d.ts +38 -0
- package/dist/coverage/types.d.ts.map +1 -0
- package/dist/coverage/types.js +13 -0
- package/dist/coverage/types.js.map +1 -0
- package/dist/index.d.ts +17 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +16 -0
- package/dist/index.js.map +1 -0
- package/dist/indexer/database.d.ts +32 -0
- package/dist/indexer/database.d.ts.map +1 -0
- package/dist/indexer/database.js +242 -0
- package/dist/indexer/database.js.map +1 -0
- package/dist/indexer/index.d.ts +7 -0
- package/dist/indexer/index.d.ts.map +1 -0
- package/dist/indexer/index.js +4 -0
- package/dist/indexer/index.js.map +1 -0
- package/dist/indexer/indexer.d.ts +12 -0
- package/dist/indexer/indexer.d.ts.map +1 -0
- package/dist/indexer/indexer.js +145 -0
- package/dist/indexer/indexer.js.map +1 -0
- package/dist/indexer/schema.d.ts +21 -0
- package/dist/indexer/schema.d.ts.map +1 -0
- package/dist/indexer/schema.js +122 -0
- package/dist/indexer/schema.js.map +1 -0
- package/dist/indexer/types.d.ts +85 -0
- package/dist/indexer/types.d.ts.map +1 -0
- package/dist/indexer/types.js +2 -0
- package/dist/indexer/types.js.map +1 -0
- package/dist/parsers/generic-parser.d.ts +3 -0
- package/dist/parsers/generic-parser.d.ts.map +1 -0
- package/dist/parsers/generic-parser.js +150 -0
- package/dist/parsers/generic-parser.js.map +1 -0
- package/dist/parsers/go-parser.d.ts +3 -0
- package/dist/parsers/go-parser.d.ts.map +1 -0
- package/dist/parsers/go-parser.js +437 -0
- package/dist/parsers/go-parser.js.map +1 -0
- package/dist/parsers/index.d.ts +10 -0
- package/dist/parsers/index.d.ts.map +1 -0
- package/dist/parsers/index.js +8 -0
- package/dist/parsers/index.js.map +1 -0
- package/dist/parsers/java-parser.d.ts +3 -0
- package/dist/parsers/java-parser.d.ts.map +1 -0
- package/dist/parsers/java-parser.js +321 -0
- package/dist/parsers/java-parser.js.map +1 -0
- package/dist/parsers/metadata-extractor.d.ts +25 -0
- package/dist/parsers/metadata-extractor.d.ts.map +1 -0
- package/dist/parsers/metadata-extractor.js +137 -0
- package/dist/parsers/metadata-extractor.js.map +1 -0
- package/dist/parsers/python-parser.d.ts +3 -0
- package/dist/parsers/python-parser.d.ts.map +1 -0
- package/dist/parsers/python-parser.js +226 -0
- package/dist/parsers/python-parser.js.map +1 -0
- package/dist/parsers/registry.d.ts +3 -0
- package/dist/parsers/registry.d.ts.map +1 -0
- package/dist/parsers/registry.js +41 -0
- package/dist/parsers/registry.js.map +1 -0
- package/dist/parsers/types.d.ts +23 -0
- package/dist/parsers/types.d.ts.map +1 -0
- package/dist/parsers/types.js +2 -0
- package/dist/parsers/types.js.map +1 -0
- package/dist/parsers/typescript-parser.d.ts +3 -0
- package/dist/parsers/typescript-parser.d.ts.map +1 -0
- package/dist/parsers/typescript-parser.js +321 -0
- package/dist/parsers/typescript-parser.js.map +1 -0
- package/dist/query/index.d.ts +3 -0
- package/dist/query/index.d.ts.map +1 -0
- package/dist/query/index.js +2 -0
- package/dist/query/index.js.map +1 -0
- package/dist/query/query-engine.d.ts +40 -0
- package/dist/query/query-engine.d.ts.map +1 -0
- package/dist/query/query-engine.js +126 -0
- package/dist/query/query-engine.js.map +1 -0
- package/dist/suggest/index.d.ts +3 -0
- package/dist/suggest/index.d.ts.map +1 -0
- package/dist/suggest/index.js +2 -0
- package/dist/suggest/index.js.map +1 -0
- package/dist/suggest/suggestion-engine.d.ts +7 -0
- package/dist/suggest/suggestion-engine.d.ts.map +1 -0
- package/dist/suggest/suggestion-engine.js +239 -0
- package/dist/suggest/suggestion-engine.js.map +1 -0
- package/dist/suggest/types.d.ts +29 -0
- package/dist/suggest/types.d.ts.map +1 -0
- package/dist/suggest/types.js +13 -0
- package/dist/suggest/types.js.map +1 -0
- package/dist/types/entity.d.ts +336 -0
- package/dist/types/entity.d.ts.map +1 -0
- package/dist/types/entity.js +99 -0
- package/dist/types/entity.js.map +1 -0
- package/dist/types/index.d.ts +6 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +3 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/manifest.d.ts +488 -0
- package/dist/types/manifest.d.ts.map +1 -0
- package/dist/types/manifest.js +66 -0
- package/dist/types/manifest.js.map +1 -0
- package/dist/types/parse-result.d.ts +25 -0
- package/dist/types/parse-result.d.ts.map +1 -0
- package/dist/types/parse-result.js +2 -0
- package/dist/types/parse-result.js.map +1 -0
- package/dist/validation/index.d.ts +5 -0
- package/dist/validation/index.d.ts.map +1 -0
- package/dist/validation/index.js +3 -0
- package/dist/validation/index.js.map +1 -0
- package/dist/validation/rules.d.ts +9 -0
- package/dist/validation/rules.d.ts.map +1 -0
- package/dist/validation/rules.js +119 -0
- package/dist/validation/rules.js.map +1 -0
- package/dist/validation/types.d.ts +34 -0
- package/dist/validation/types.d.ts.map +1 -0
- package/dist/validation/types.js +2 -0
- package/dist/validation/types.js.map +1 -0
- package/dist/validation/validator.d.ts +10 -0
- package/dist/validation/validator.d.ts.map +1 -0
- package/dist/validation/validator.js +111 -0
- package/dist/validation/validator.js.map +1 -0
- package/package.json +58 -0
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { CREATE_TABLES_SQL } from './schema.js';
|
|
2
|
+
export { createDatabaseManager, generateEntityId } from './database.js';
|
|
3
|
+
export type { DatabaseManager } from './database.js';
|
|
4
|
+
export { createIndexer } from './indexer.js';
|
|
5
|
+
export type { ParserRegistry, ParserFn } from './indexer.js';
|
|
6
|
+
export type { StoredEntity, EntityInsert, IndexStats, IndexerOptions, IndexProgress, IndexResult, IndexError, } from './types.js';
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/indexer/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACxE,YAAY,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,YAAY,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAC7D,YAAY,EACV,YAAY,EACZ,YAAY,EACZ,UAAU,EACV,cAAc,EACd,aAAa,EACb,WAAW,EACX,UAAU,GACX,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/indexer/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAExE,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { ParseResult } from '../types/index.js';
|
|
2
|
+
import { type DatabaseManager } from './database.js';
|
|
3
|
+
import type { IndexerOptions, IndexResult } from './types.js';
|
|
4
|
+
export type ParserFn = (filePath: string, content: string) => readonly ParseResult[];
|
|
5
|
+
export interface ParserRegistry {
|
|
6
|
+
readonly parse: (filePath: string, content: string) => readonly ParseResult[];
|
|
7
|
+
readonly canParse: (filePath: string) => boolean;
|
|
8
|
+
}
|
|
9
|
+
export declare function createIndexer(parserRegistry: ParserRegistry, dbManager: DatabaseManager): {
|
|
10
|
+
readonly index: (options: IndexerOptions) => IndexResult;
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=indexer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"indexer.d.ts","sourceRoot":"","sources":["../../src/indexer/indexer.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,KAAK,EAAc,cAAc,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE1E,MAAM,MAAM,QAAQ,GAAG,CACrB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,KACZ,SAAS,WAAW,EAAE,CAAC;AAE5B,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,SAAS,WAAW,EAAE,CAAC;IAC9E,QAAQ,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC;CAClD;AAoCD,wBAAgB,aAAa,CAC3B,cAAc,EAAE,cAAc,EAC9B,SAAS,EAAE,eAAe,GACzB;IACD,QAAQ,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,WAAW,CAAC;CAC1D,CAwHA"}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @knowgraph
|
|
3
|
+
* type: module
|
|
4
|
+
* description: File system scanner and indexer with incremental updates and .gitignore support
|
|
5
|
+
* owner: knowgraph-core
|
|
6
|
+
* status: stable
|
|
7
|
+
* tags: [indexer, scanner, incremental, filesystem]
|
|
8
|
+
* context:
|
|
9
|
+
* business_goal: Efficiently scan and index codebases with minimal re-processing
|
|
10
|
+
* domain: indexer-engine
|
|
11
|
+
*/
|
|
12
|
+
import { createHash } from 'node:crypto';
|
|
13
|
+
import { readFileSync } from 'node:fs';
|
|
14
|
+
import { join } from 'node:path';
|
|
15
|
+
import { globSync } from 'glob';
|
|
16
|
+
import ignore from 'ignore';
|
|
17
|
+
function computeFileHash(content) {
|
|
18
|
+
return createHash('md5').update(content).digest('hex');
|
|
19
|
+
}
|
|
20
|
+
function loadGitignorePatterns(rootDir) {
|
|
21
|
+
const ig = ignore();
|
|
22
|
+
try {
|
|
23
|
+
const gitignoreContent = readFileSync(join(rootDir, '.gitignore'), 'utf-8');
|
|
24
|
+
ig.add(gitignoreContent);
|
|
25
|
+
}
|
|
26
|
+
catch {
|
|
27
|
+
// No .gitignore file, that's fine
|
|
28
|
+
}
|
|
29
|
+
return ig;
|
|
30
|
+
}
|
|
31
|
+
function collectFiles(rootDir, excludePatterns) {
|
|
32
|
+
const ig = loadGitignorePatterns(rootDir);
|
|
33
|
+
for (const pattern of excludePatterns) {
|
|
34
|
+
ig.add(pattern);
|
|
35
|
+
}
|
|
36
|
+
const allFiles = globSync('**/*', {
|
|
37
|
+
cwd: rootDir,
|
|
38
|
+
nodir: true,
|
|
39
|
+
dot: false,
|
|
40
|
+
absolute: false,
|
|
41
|
+
});
|
|
42
|
+
return allFiles.filter((f) => !ig.ignores(f));
|
|
43
|
+
}
|
|
44
|
+
export function createIndexer(parserRegistry, dbManager) {
|
|
45
|
+
function index(options) {
|
|
46
|
+
const { rootDir, exclude = ['node_modules', '.git', 'dist', 'build'], incremental = false, onProgress, } = options;
|
|
47
|
+
const startTime = Date.now();
|
|
48
|
+
const errors = [];
|
|
49
|
+
let totalEntities = 0;
|
|
50
|
+
let totalRelationships = 0;
|
|
51
|
+
const files = collectFiles(rootDir, exclude);
|
|
52
|
+
const parsableFiles = files.filter((f) => parserRegistry.canParse(f));
|
|
53
|
+
for (let i = 0; i < parsableFiles.length; i++) {
|
|
54
|
+
const relPath = parsableFiles[i];
|
|
55
|
+
const absPath = join(rootDir, relPath);
|
|
56
|
+
if (onProgress) {
|
|
57
|
+
onProgress({
|
|
58
|
+
totalFiles: parsableFiles.length,
|
|
59
|
+
processedFiles: i,
|
|
60
|
+
currentFile: relPath,
|
|
61
|
+
entitiesFound: totalEntities,
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
try {
|
|
65
|
+
const content = readFileSync(absPath, 'utf-8');
|
|
66
|
+
const fileHash = computeFileHash(content);
|
|
67
|
+
if (incremental) {
|
|
68
|
+
const existingHash = dbManager.getFileHash(relPath);
|
|
69
|
+
if (existingHash === fileHash) {
|
|
70
|
+
continue;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
// Remove old entities for this file path
|
|
74
|
+
dbManager.deleteEntitiesByFilePath(relPath);
|
|
75
|
+
const results = parserRegistry.parse(absPath, content);
|
|
76
|
+
for (const result of results) {
|
|
77
|
+
const entityId = dbManager.insertEntity({
|
|
78
|
+
filePath: relPath,
|
|
79
|
+
name: result.name,
|
|
80
|
+
entityType: result.entityType,
|
|
81
|
+
description: result.metadata.description,
|
|
82
|
+
rawDocstring: result.rawDocstring,
|
|
83
|
+
signature: result.signature,
|
|
84
|
+
parent: result.parent,
|
|
85
|
+
language: result.language,
|
|
86
|
+
line: result.line,
|
|
87
|
+
column: result.column,
|
|
88
|
+
owner: result.metadata.owner,
|
|
89
|
+
status: result.metadata.status,
|
|
90
|
+
metadata: result.metadata,
|
|
91
|
+
tags: result.metadata.tags,
|
|
92
|
+
links: result.metadata.links,
|
|
93
|
+
fileHash,
|
|
94
|
+
});
|
|
95
|
+
// Handle dependency relationships from extended metadata
|
|
96
|
+
if ('dependencies' in result.metadata &&
|
|
97
|
+
result.metadata.dependencies) {
|
|
98
|
+
const deps = result.metadata.dependencies;
|
|
99
|
+
const allDeps = [
|
|
100
|
+
...(deps.services ?? []),
|
|
101
|
+
...(deps.external_apis ?? []),
|
|
102
|
+
...(deps.databases ?? []),
|
|
103
|
+
];
|
|
104
|
+
for (const dep of allDeps) {
|
|
105
|
+
// Store relationship by name - target may not exist yet
|
|
106
|
+
try {
|
|
107
|
+
dbManager.insertRelationship(entityId, dep, 'depends_on');
|
|
108
|
+
}
|
|
109
|
+
catch {
|
|
110
|
+
// Target may not exist, skip
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
totalRelationships += allDeps.length;
|
|
114
|
+
}
|
|
115
|
+
totalEntities++;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
catch (err) {
|
|
119
|
+
errors.push({
|
|
120
|
+
filePath: relPath,
|
|
121
|
+
message: err instanceof Error ? err.message : String(err),
|
|
122
|
+
error: err,
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
if (onProgress) {
|
|
127
|
+
onProgress({
|
|
128
|
+
totalFiles: parsableFiles.length,
|
|
129
|
+
processedFiles: parsableFiles.length,
|
|
130
|
+
currentFile: '',
|
|
131
|
+
entitiesFound: totalEntities,
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
const duration = Date.now() - startTime;
|
|
135
|
+
return {
|
|
136
|
+
totalFiles: parsableFiles.length,
|
|
137
|
+
totalEntities,
|
|
138
|
+
totalRelationships,
|
|
139
|
+
errors,
|
|
140
|
+
duration,
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
return { index };
|
|
144
|
+
}
|
|
145
|
+
//# sourceMappingURL=indexer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"indexer.js","sourceRoot":"","sources":["../../src/indexer/indexer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @knowgraph
|
|
3
|
+
* type: module
|
|
4
|
+
* description: SQLite schema definitions with FTS5 full-text search and relationship tables
|
|
5
|
+
* owner: knowgraph-core
|
|
6
|
+
* status: stable
|
|
7
|
+
* tags: [database, schema, sqlite, fts5]
|
|
8
|
+
* context:
|
|
9
|
+
* business_goal: Provide persistent storage schema for the code knowledge graph
|
|
10
|
+
* domain: indexer-engine
|
|
11
|
+
*/
|
|
12
|
+
export declare const CREATE_TABLES_SQL = "\n CREATE TABLE IF NOT EXISTS entities (\n id TEXT PRIMARY KEY,\n file_path TEXT NOT NULL,\n name TEXT NOT NULL,\n entity_type TEXT NOT NULL,\n description TEXT NOT NULL,\n raw_docstring TEXT,\n signature TEXT,\n parent TEXT,\n language TEXT NOT NULL,\n line INTEGER NOT NULL,\n column_num INTEGER NOT NULL DEFAULT 0,\n owner TEXT,\n status TEXT,\n metadata_json TEXT NOT NULL,\n file_hash TEXT,\n created_at TEXT NOT NULL DEFAULT (datetime('now')),\n updated_at TEXT NOT NULL DEFAULT (datetime('now'))\n );\n\n CREATE TABLE IF NOT EXISTS relationships (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n source_id TEXT NOT NULL REFERENCES entities(id) ON DELETE CASCADE,\n target_id TEXT NOT NULL REFERENCES entities(id) ON DELETE CASCADE,\n relationship_type TEXT NOT NULL,\n UNIQUE(source_id, target_id, relationship_type)\n );\n\n CREATE TABLE IF NOT EXISTS tags (\n entity_id TEXT NOT NULL REFERENCES entities(id) ON DELETE CASCADE,\n tag TEXT NOT NULL,\n PRIMARY KEY (entity_id, tag)\n );\n\n CREATE TABLE IF NOT EXISTS links (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n entity_id TEXT NOT NULL REFERENCES entities(id) ON DELETE CASCADE,\n link_type TEXT,\n url TEXT NOT NULL,\n title TEXT\n );\n\n CREATE VIRTUAL TABLE IF NOT EXISTS entities_fts USING fts5(\n entity_id UNINDEXED,\n name, description, tags_text, owner\n );\n\n CREATE INDEX IF NOT EXISTS idx_entities_file_path ON entities(file_path);\n CREATE INDEX IF NOT EXISTS idx_entities_type ON entities(entity_type);\n CREATE INDEX IF NOT EXISTS idx_entities_owner ON entities(owner);\n CREATE INDEX IF NOT EXISTS idx_entities_status ON entities(status);\n CREATE INDEX IF NOT EXISTS idx_tags_tag ON tags(tag);\n CREATE INDEX IF NOT EXISTS idx_links_entity ON links(entity_id);\n CREATE INDEX IF NOT EXISTS idx_relationships_source ON relationships(source_id);\n CREATE INDEX IF NOT EXISTS idx_relationships_target ON relationships(target_id);\n";
|
|
13
|
+
export declare const INSERT_ENTITY_SQL = "\n INSERT INTO entities (\n id, file_path, name, entity_type, description, raw_docstring,\n signature, parent, language, line, column_num, owner, status,\n metadata_json, file_hash\n ) VALUES (\n @id, @file_path, @name, @entity_type, @description, @raw_docstring,\n @signature, @parent, @language, @line, @column_num, @owner, @status,\n @metadata_json, @file_hash\n )\n";
|
|
14
|
+
export declare const UPDATE_ENTITY_SQL = "\n UPDATE entities SET\n file_path = @file_path,\n name = @name,\n entity_type = @entity_type,\n description = @description,\n raw_docstring = @raw_docstring,\n signature = @signature,\n parent = @parent,\n language = @language,\n line = @line,\n column_num = @column_num,\n owner = @owner,\n status = @status,\n metadata_json = @metadata_json,\n file_hash = @file_hash,\n updated_at = datetime('now')\n WHERE id = @id\n";
|
|
15
|
+
export declare const INSERT_FTS_SQL = "\n INSERT INTO entities_fts (entity_id, name, description, tags_text, owner)\n VALUES (@entity_id, @name, @description, @tags_text, @owner)\n";
|
|
16
|
+
export declare const DELETE_FTS_BY_ENTITY_SQL = "\n DELETE FROM entities_fts WHERE entity_id = @entity_id\n";
|
|
17
|
+
export declare const DELETE_FTS_BY_FILE_SQL = "\n DELETE FROM entities_fts WHERE entity_id IN (\n SELECT id FROM entities WHERE file_path = @file_path\n )\n";
|
|
18
|
+
export declare const INSERT_RELATIONSHIP_SQL = "\n INSERT OR IGNORE INTO relationships (source_id, target_id, relationship_type)\n VALUES (@source_id, @target_id, @relationship_type)\n";
|
|
19
|
+
export declare const INSERT_TAG_SQL = "\n INSERT OR IGNORE INTO tags (entity_id, tag) VALUES (@entity_id, @tag)\n";
|
|
20
|
+
export declare const INSERT_LINK_SQL = "\n INSERT INTO links (entity_id, link_type, url, title)\n VALUES (@entity_id, @link_type, @url, @title)\n";
|
|
21
|
+
//# sourceMappingURL=schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/indexer/schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,eAAO,MAAM,iBAAiB,o+DAwD7B,CAAC;AAEF,eAAO,MAAM,iBAAiB,2YAU7B,CAAC;AAEF,eAAO,MAAM,iBAAiB,wdAkB7B,CAAC;AAEF,eAAO,MAAM,cAAc,oJAG1B,CAAC;AAEF,eAAO,MAAM,wBAAwB,gEAEpC,CAAC;AAEF,eAAO,MAAM,sBAAsB,uHAIlC,CAAC;AAEF,eAAO,MAAM,uBAAuB,+IAGnC,CAAC;AAEF,eAAO,MAAM,cAAc,gFAE1B,CAAC;AAEF,eAAO,MAAM,eAAe,gHAG3B,CAAC"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @knowgraph
|
|
3
|
+
* type: module
|
|
4
|
+
* description: SQLite schema definitions with FTS5 full-text search and relationship tables
|
|
5
|
+
* owner: knowgraph-core
|
|
6
|
+
* status: stable
|
|
7
|
+
* tags: [database, schema, sqlite, fts5]
|
|
8
|
+
* context:
|
|
9
|
+
* business_goal: Provide persistent storage schema for the code knowledge graph
|
|
10
|
+
* domain: indexer-engine
|
|
11
|
+
*/
|
|
12
|
+
export const CREATE_TABLES_SQL = `
|
|
13
|
+
CREATE TABLE IF NOT EXISTS entities (
|
|
14
|
+
id TEXT PRIMARY KEY,
|
|
15
|
+
file_path TEXT NOT NULL,
|
|
16
|
+
name TEXT NOT NULL,
|
|
17
|
+
entity_type TEXT NOT NULL,
|
|
18
|
+
description TEXT NOT NULL,
|
|
19
|
+
raw_docstring TEXT,
|
|
20
|
+
signature TEXT,
|
|
21
|
+
parent TEXT,
|
|
22
|
+
language TEXT NOT NULL,
|
|
23
|
+
line INTEGER NOT NULL,
|
|
24
|
+
column_num INTEGER NOT NULL DEFAULT 0,
|
|
25
|
+
owner TEXT,
|
|
26
|
+
status TEXT,
|
|
27
|
+
metadata_json TEXT NOT NULL,
|
|
28
|
+
file_hash TEXT,
|
|
29
|
+
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
30
|
+
updated_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
31
|
+
);
|
|
32
|
+
|
|
33
|
+
CREATE TABLE IF NOT EXISTS relationships (
|
|
34
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
35
|
+
source_id TEXT NOT NULL REFERENCES entities(id) ON DELETE CASCADE,
|
|
36
|
+
target_id TEXT NOT NULL REFERENCES entities(id) ON DELETE CASCADE,
|
|
37
|
+
relationship_type TEXT NOT NULL,
|
|
38
|
+
UNIQUE(source_id, target_id, relationship_type)
|
|
39
|
+
);
|
|
40
|
+
|
|
41
|
+
CREATE TABLE IF NOT EXISTS tags (
|
|
42
|
+
entity_id TEXT NOT NULL REFERENCES entities(id) ON DELETE CASCADE,
|
|
43
|
+
tag TEXT NOT NULL,
|
|
44
|
+
PRIMARY KEY (entity_id, tag)
|
|
45
|
+
);
|
|
46
|
+
|
|
47
|
+
CREATE TABLE IF NOT EXISTS links (
|
|
48
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
49
|
+
entity_id TEXT NOT NULL REFERENCES entities(id) ON DELETE CASCADE,
|
|
50
|
+
link_type TEXT,
|
|
51
|
+
url TEXT NOT NULL,
|
|
52
|
+
title TEXT
|
|
53
|
+
);
|
|
54
|
+
|
|
55
|
+
CREATE VIRTUAL TABLE IF NOT EXISTS entities_fts USING fts5(
|
|
56
|
+
entity_id UNINDEXED,
|
|
57
|
+
name, description, tags_text, owner
|
|
58
|
+
);
|
|
59
|
+
|
|
60
|
+
CREATE INDEX IF NOT EXISTS idx_entities_file_path ON entities(file_path);
|
|
61
|
+
CREATE INDEX IF NOT EXISTS idx_entities_type ON entities(entity_type);
|
|
62
|
+
CREATE INDEX IF NOT EXISTS idx_entities_owner ON entities(owner);
|
|
63
|
+
CREATE INDEX IF NOT EXISTS idx_entities_status ON entities(status);
|
|
64
|
+
CREATE INDEX IF NOT EXISTS idx_tags_tag ON tags(tag);
|
|
65
|
+
CREATE INDEX IF NOT EXISTS idx_links_entity ON links(entity_id);
|
|
66
|
+
CREATE INDEX IF NOT EXISTS idx_relationships_source ON relationships(source_id);
|
|
67
|
+
CREATE INDEX IF NOT EXISTS idx_relationships_target ON relationships(target_id);
|
|
68
|
+
`;
|
|
69
|
+
export const INSERT_ENTITY_SQL = `
|
|
70
|
+
INSERT INTO entities (
|
|
71
|
+
id, file_path, name, entity_type, description, raw_docstring,
|
|
72
|
+
signature, parent, language, line, column_num, owner, status,
|
|
73
|
+
metadata_json, file_hash
|
|
74
|
+
) VALUES (
|
|
75
|
+
@id, @file_path, @name, @entity_type, @description, @raw_docstring,
|
|
76
|
+
@signature, @parent, @language, @line, @column_num, @owner, @status,
|
|
77
|
+
@metadata_json, @file_hash
|
|
78
|
+
)
|
|
79
|
+
`;
|
|
80
|
+
export const UPDATE_ENTITY_SQL = `
|
|
81
|
+
UPDATE entities SET
|
|
82
|
+
file_path = @file_path,
|
|
83
|
+
name = @name,
|
|
84
|
+
entity_type = @entity_type,
|
|
85
|
+
description = @description,
|
|
86
|
+
raw_docstring = @raw_docstring,
|
|
87
|
+
signature = @signature,
|
|
88
|
+
parent = @parent,
|
|
89
|
+
language = @language,
|
|
90
|
+
line = @line,
|
|
91
|
+
column_num = @column_num,
|
|
92
|
+
owner = @owner,
|
|
93
|
+
status = @status,
|
|
94
|
+
metadata_json = @metadata_json,
|
|
95
|
+
file_hash = @file_hash,
|
|
96
|
+
updated_at = datetime('now')
|
|
97
|
+
WHERE id = @id
|
|
98
|
+
`;
|
|
99
|
+
export const INSERT_FTS_SQL = `
|
|
100
|
+
INSERT INTO entities_fts (entity_id, name, description, tags_text, owner)
|
|
101
|
+
VALUES (@entity_id, @name, @description, @tags_text, @owner)
|
|
102
|
+
`;
|
|
103
|
+
export const DELETE_FTS_BY_ENTITY_SQL = `
|
|
104
|
+
DELETE FROM entities_fts WHERE entity_id = @entity_id
|
|
105
|
+
`;
|
|
106
|
+
export const DELETE_FTS_BY_FILE_SQL = `
|
|
107
|
+
DELETE FROM entities_fts WHERE entity_id IN (
|
|
108
|
+
SELECT id FROM entities WHERE file_path = @file_path
|
|
109
|
+
)
|
|
110
|
+
`;
|
|
111
|
+
export const INSERT_RELATIONSHIP_SQL = `
|
|
112
|
+
INSERT OR IGNORE INTO relationships (source_id, target_id, relationship_type)
|
|
113
|
+
VALUES (@source_id, @target_id, @relationship_type)
|
|
114
|
+
`;
|
|
115
|
+
export const INSERT_TAG_SQL = `
|
|
116
|
+
INSERT OR IGNORE INTO tags (entity_id, tag) VALUES (@entity_id, @tag)
|
|
117
|
+
`;
|
|
118
|
+
export const INSERT_LINK_SQL = `
|
|
119
|
+
INSERT INTO links (entity_id, link_type, url, title)
|
|
120
|
+
VALUES (@entity_id, @link_type, @url, @title)
|
|
121
|
+
`;
|
|
122
|
+
//# sourceMappingURL=schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/indexer/schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwDhC,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG;;;;;;;;;;CAUhC,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG;;;;;;;;;;;;;;;;;;CAkBhC,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG;;;CAG7B,CAAC;AAEF,MAAM,CAAC,MAAM,wBAAwB,GAAG;;CAEvC,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAG;;;;CAIrC,CAAC;AAEF,MAAM,CAAC,MAAM,uBAAuB,GAAG;;;CAGtC,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG;;CAE7B,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG;;;CAG9B,CAAC"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @knowgraph
|
|
3
|
+
* type: interface
|
|
4
|
+
* description: Type definitions for stored entities, index operations, and progress tracking
|
|
5
|
+
* owner: knowgraph-core
|
|
6
|
+
* status: stable
|
|
7
|
+
* tags: [indexer, types, interface, storage]
|
|
8
|
+
* context:
|
|
9
|
+
* business_goal: Define contracts for the indexing and storage layer
|
|
10
|
+
* domain: indexer-engine
|
|
11
|
+
*/
|
|
12
|
+
import type { CoreMetadata, EntityType, ExtendedMetadata, Link, Status } from '../types/index.js';
|
|
13
|
+
export interface StoredEntity {
|
|
14
|
+
readonly id: string;
|
|
15
|
+
readonly filePath: string;
|
|
16
|
+
readonly name: string;
|
|
17
|
+
readonly entityType: EntityType;
|
|
18
|
+
readonly description: string;
|
|
19
|
+
readonly rawDocstring: string | null;
|
|
20
|
+
readonly signature: string | null;
|
|
21
|
+
readonly parent: string | null;
|
|
22
|
+
readonly language: string;
|
|
23
|
+
readonly line: number;
|
|
24
|
+
readonly column: number;
|
|
25
|
+
readonly owner: string | null;
|
|
26
|
+
readonly status: Status | null;
|
|
27
|
+
readonly metadata: CoreMetadata | ExtendedMetadata;
|
|
28
|
+
readonly tags: readonly string[];
|
|
29
|
+
readonly links: readonly Link[];
|
|
30
|
+
readonly fileHash: string | null;
|
|
31
|
+
readonly createdAt: string;
|
|
32
|
+
readonly updatedAt: string;
|
|
33
|
+
}
|
|
34
|
+
export interface EntityInsert {
|
|
35
|
+
readonly filePath: string;
|
|
36
|
+
readonly name: string;
|
|
37
|
+
readonly entityType: EntityType;
|
|
38
|
+
readonly description: string;
|
|
39
|
+
readonly rawDocstring?: string;
|
|
40
|
+
readonly signature?: string;
|
|
41
|
+
readonly parent?: string;
|
|
42
|
+
readonly language: string;
|
|
43
|
+
readonly line: number;
|
|
44
|
+
readonly column: number;
|
|
45
|
+
readonly owner?: string;
|
|
46
|
+
readonly status?: Status;
|
|
47
|
+
readonly metadata: CoreMetadata | ExtendedMetadata;
|
|
48
|
+
readonly tags?: readonly string[];
|
|
49
|
+
readonly links?: readonly Link[];
|
|
50
|
+
readonly fileHash?: string;
|
|
51
|
+
}
|
|
52
|
+
export interface IndexStats {
|
|
53
|
+
readonly totalEntities: number;
|
|
54
|
+
readonly totalRelationships: number;
|
|
55
|
+
readonly totalTags: number;
|
|
56
|
+
readonly totalLinks: number;
|
|
57
|
+
readonly entitiesByType: Readonly<Record<string, number>>;
|
|
58
|
+
readonly entitiesByLanguage: Readonly<Record<string, number>>;
|
|
59
|
+
}
|
|
60
|
+
export interface IndexerOptions {
|
|
61
|
+
readonly rootDir: string;
|
|
62
|
+
readonly outputDir?: string;
|
|
63
|
+
readonly exclude?: readonly string[];
|
|
64
|
+
readonly incremental?: boolean;
|
|
65
|
+
readonly onProgress?: (progress: IndexProgress) => void;
|
|
66
|
+
}
|
|
67
|
+
export interface IndexProgress {
|
|
68
|
+
readonly totalFiles: number;
|
|
69
|
+
readonly processedFiles: number;
|
|
70
|
+
readonly currentFile: string;
|
|
71
|
+
readonly entitiesFound: number;
|
|
72
|
+
}
|
|
73
|
+
export interface IndexResult {
|
|
74
|
+
readonly totalFiles: number;
|
|
75
|
+
readonly totalEntities: number;
|
|
76
|
+
readonly totalRelationships: number;
|
|
77
|
+
readonly errors: readonly IndexError[];
|
|
78
|
+
readonly duration: number;
|
|
79
|
+
}
|
|
80
|
+
export interface IndexError {
|
|
81
|
+
readonly filePath: string;
|
|
82
|
+
readonly message: string;
|
|
83
|
+
readonly error?: unknown;
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/indexer/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/indexer/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generic-parser.d.ts","sourceRoot":"","sources":["../../src/parsers/generic-parser.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAsGzC,wBAAgB,mBAAmB,IAAI,MAAM,CA0E5C"}
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
import { extractMetadata } from './metadata-extractor.js';
|
|
2
|
+
/**
|
|
3
|
+
* Regex for block comments: /* ... * / or """ ... """
|
|
4
|
+
*/
|
|
5
|
+
const BLOCK_COMMENT_REGEX = /\/\*[\s\S]*?\*\/|"""[\s\S]*?"""|'''[\s\S]*?'''/g;
|
|
6
|
+
/**
|
|
7
|
+
* Regex for consecutive single-line comments (# or //)
|
|
8
|
+
*/
|
|
9
|
+
const SINGLE_LINE_COMMENT_GROUP_REGEX = /(?:^[ \t]*(?:\/\/|#).*\n?)+/gm;
|
|
10
|
+
function getLineNumber(source, charIndex) {
|
|
11
|
+
let line = 1;
|
|
12
|
+
for (let i = 0; i < charIndex && i < source.length; i++) {
|
|
13
|
+
if (source[i] === '\n') {
|
|
14
|
+
line++;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
return line;
|
|
18
|
+
}
|
|
19
|
+
function stripBlockComment(raw) {
|
|
20
|
+
// Handle /* ... */
|
|
21
|
+
if (raw.startsWith('/*') && raw.endsWith('*/')) {
|
|
22
|
+
const inner = raw.slice(2, -2);
|
|
23
|
+
return inner
|
|
24
|
+
.split('\n')
|
|
25
|
+
.map((line) => line.replace(/^\s*\*\s?/, ''))
|
|
26
|
+
.join('\n')
|
|
27
|
+
.trim();
|
|
28
|
+
}
|
|
29
|
+
// Handle """ ... """ or ''' ... '''
|
|
30
|
+
if ((raw.startsWith('"""') && raw.endsWith('"""')) ||
|
|
31
|
+
(raw.startsWith("'''") && raw.endsWith("'''"))) {
|
|
32
|
+
return raw.slice(3, -3).trim();
|
|
33
|
+
}
|
|
34
|
+
return raw;
|
|
35
|
+
}
|
|
36
|
+
function stripLineComments(raw) {
|
|
37
|
+
return raw
|
|
38
|
+
.split('\n')
|
|
39
|
+
.map((line) => {
|
|
40
|
+
const trimmed = line.trimStart();
|
|
41
|
+
if (trimmed.startsWith('//')) {
|
|
42
|
+
return trimmed.slice(2).trimStart();
|
|
43
|
+
}
|
|
44
|
+
if (trimmed.startsWith('#')) {
|
|
45
|
+
return trimmed.slice(1).trimStart();
|
|
46
|
+
}
|
|
47
|
+
return trimmed;
|
|
48
|
+
})
|
|
49
|
+
.join('\n')
|
|
50
|
+
.trim();
|
|
51
|
+
}
|
|
52
|
+
function getModuleName(filePath) {
|
|
53
|
+
const parts = filePath.split('/');
|
|
54
|
+
const fileName = parts[parts.length - 1] ?? '';
|
|
55
|
+
// Remove any extension
|
|
56
|
+
const dotIndex = fileName.lastIndexOf('.');
|
|
57
|
+
return dotIndex > 0 ? fileName.slice(0, dotIndex) : fileName;
|
|
58
|
+
}
|
|
59
|
+
function getLanguageFromPath(filePath) {
|
|
60
|
+
const ext = filePath.slice(filePath.lastIndexOf('.'));
|
|
61
|
+
const languageMap = {
|
|
62
|
+
'.py': 'python',
|
|
63
|
+
'.pyi': 'python',
|
|
64
|
+
'.ts': 'typescript',
|
|
65
|
+
'.tsx': 'typescript',
|
|
66
|
+
'.js': 'javascript',
|
|
67
|
+
'.jsx': 'javascript',
|
|
68
|
+
'.rb': 'ruby',
|
|
69
|
+
'.go': 'go',
|
|
70
|
+
'.rs': 'rust',
|
|
71
|
+
'.java': 'java',
|
|
72
|
+
'.kt': 'kotlin',
|
|
73
|
+
'.swift': 'swift',
|
|
74
|
+
'.c': 'c',
|
|
75
|
+
'.cpp': 'cpp',
|
|
76
|
+
'.h': 'c',
|
|
77
|
+
'.hpp': 'cpp',
|
|
78
|
+
'.cs': 'csharp',
|
|
79
|
+
'.php': 'php',
|
|
80
|
+
'.sh': 'shell',
|
|
81
|
+
'.bash': 'shell',
|
|
82
|
+
'.zsh': 'shell',
|
|
83
|
+
'.lua': 'lua',
|
|
84
|
+
'.r': 'r',
|
|
85
|
+
'.R': 'r',
|
|
86
|
+
'.scala': 'scala',
|
|
87
|
+
'.ex': 'elixir',
|
|
88
|
+
'.exs': 'elixir',
|
|
89
|
+
};
|
|
90
|
+
return languageMap[ext] ?? 'unknown';
|
|
91
|
+
}
|
|
92
|
+
export function createGenericParser() {
|
|
93
|
+
return {
|
|
94
|
+
name: 'generic',
|
|
95
|
+
supportedExtensions: [],
|
|
96
|
+
parse(content, filePath) {
|
|
97
|
+
const results = [];
|
|
98
|
+
const language = getLanguageFromPath(filePath);
|
|
99
|
+
// Find block comments
|
|
100
|
+
const blockRegex = new RegExp(BLOCK_COMMENT_REGEX.source, 'g');
|
|
101
|
+
let match;
|
|
102
|
+
while ((match = blockRegex.exec(content)) !== null) {
|
|
103
|
+
const stripped = stripBlockComment(match[0]);
|
|
104
|
+
if (!stripped.includes('@knowgraph') &&
|
|
105
|
+
!stripped.includes('knowgraph:')) {
|
|
106
|
+
continue;
|
|
107
|
+
}
|
|
108
|
+
const startLine = getLineNumber(content, match.index);
|
|
109
|
+
const extraction = extractMetadata(stripped, startLine);
|
|
110
|
+
if (extraction.metadata) {
|
|
111
|
+
results.push({
|
|
112
|
+
name: getModuleName(filePath),
|
|
113
|
+
filePath,
|
|
114
|
+
line: startLine,
|
|
115
|
+
column: 1,
|
|
116
|
+
language,
|
|
117
|
+
entityType: extraction.metadata.type,
|
|
118
|
+
metadata: extraction.metadata,
|
|
119
|
+
rawDocstring: stripped,
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
// Find groups of single-line comments
|
|
124
|
+
const lineRegex = new RegExp(SINGLE_LINE_COMMENT_GROUP_REGEX.source, 'gm');
|
|
125
|
+
while ((match = lineRegex.exec(content)) !== null) {
|
|
126
|
+
const stripped = stripLineComments(match[0]);
|
|
127
|
+
if (!stripped.includes('@knowgraph') &&
|
|
128
|
+
!stripped.includes('knowgraph:')) {
|
|
129
|
+
continue;
|
|
130
|
+
}
|
|
131
|
+
const startLine = getLineNumber(content, match.index);
|
|
132
|
+
const extraction = extractMetadata(stripped, startLine);
|
|
133
|
+
if (extraction.metadata) {
|
|
134
|
+
results.push({
|
|
135
|
+
name: getModuleName(filePath),
|
|
136
|
+
filePath,
|
|
137
|
+
line: startLine,
|
|
138
|
+
column: 1,
|
|
139
|
+
language,
|
|
140
|
+
entityType: extraction.metadata.type,
|
|
141
|
+
metadata: extraction.metadata,
|
|
142
|
+
rawDocstring: stripped,
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
return results;
|
|
147
|
+
},
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
//# sourceMappingURL=generic-parser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generic-parser.js","sourceRoot":"","sources":["../../src/parsers/generic-parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"go-parser.d.ts","sourceRoot":"","sources":["../../src/parsers/go-parser.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAyTzC,wBAAgB,cAAc,IAAI,MAAM,CAuOvC"}
|