driftdetect-core 0.4.0 → 0.4.2
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/dist/boundaries/boundary-scanner.d.ts +76 -0
- package/dist/boundaries/boundary-scanner.d.ts.map +1 -0
- package/dist/boundaries/boundary-scanner.js +801 -0
- package/dist/boundaries/boundary-scanner.js.map +1 -0
- package/dist/boundaries/data-access-learner.d.ts +126 -0
- package/dist/boundaries/data-access-learner.d.ts.map +1 -0
- package/dist/boundaries/data-access-learner.js +486 -0
- package/dist/boundaries/data-access-learner.js.map +1 -0
- package/dist/boundaries/index.d.ts +6 -0
- package/dist/boundaries/index.d.ts.map +1 -1
- package/dist/boundaries/index.js +6 -0
- package/dist/boundaries/index.js.map +1 -1
- package/dist/boundaries/security-prioritizer.d.ts +118 -0
- package/dist/boundaries/security-prioritizer.d.ts.map +1 -0
- package/dist/boundaries/security-prioritizer.js +316 -0
- package/dist/boundaries/security-prioritizer.js.map +1 -0
- package/dist/call-graph/analysis/coverage-analyzer.d.ts +201 -0
- package/dist/call-graph/analysis/coverage-analyzer.d.ts.map +1 -0
- package/dist/call-graph/analysis/coverage-analyzer.js +553 -0
- package/dist/call-graph/analysis/coverage-analyzer.js.map +1 -0
- package/dist/call-graph/analysis/dead-code-detector.d.ts +145 -0
- package/dist/call-graph/analysis/dead-code-detector.d.ts.map +1 -0
- package/dist/call-graph/analysis/dead-code-detector.js +391 -0
- package/dist/call-graph/analysis/dead-code-detector.js.map +1 -0
- package/dist/call-graph/analysis/graph-builder.d.ts +142 -0
- package/dist/call-graph/analysis/graph-builder.d.ts.map +1 -0
- package/dist/call-graph/analysis/graph-builder.js +624 -0
- package/dist/call-graph/analysis/graph-builder.js.map +1 -0
- package/dist/call-graph/analysis/impact-analyzer.d.ts +150 -0
- package/dist/call-graph/analysis/impact-analyzer.d.ts.map +1 -0
- package/dist/call-graph/analysis/impact-analyzer.js +329 -0
- package/dist/call-graph/analysis/impact-analyzer.js.map +1 -0
- package/dist/call-graph/analysis/index.d.ts +11 -0
- package/dist/call-graph/analysis/index.d.ts.map +1 -0
- package/dist/call-graph/analysis/index.js +9 -0
- package/dist/call-graph/analysis/index.js.map +1 -0
- package/dist/call-graph/analysis/path-finder.d.ts +117 -0
- package/dist/call-graph/analysis/path-finder.d.ts.map +1 -0
- package/dist/call-graph/analysis/path-finder.js +360 -0
- package/dist/call-graph/analysis/path-finder.js.map +1 -0
- package/dist/call-graph/analysis/reachability.d.ts +56 -0
- package/dist/call-graph/analysis/reachability.d.ts.map +1 -0
- package/dist/call-graph/analysis/reachability.js +357 -0
- package/dist/call-graph/analysis/reachability.js.map +1 -0
- package/dist/call-graph/demo.d.ts +11 -0
- package/dist/call-graph/demo.d.ts.map +1 -0
- package/dist/call-graph/demo.js +339 -0
- package/dist/call-graph/demo.js.map +1 -0
- package/dist/call-graph/enrichment/enrichment-engine.d.ts +126 -0
- package/dist/call-graph/enrichment/enrichment-engine.d.ts.map +1 -0
- package/dist/call-graph/enrichment/enrichment-engine.js +760 -0
- package/dist/call-graph/enrichment/enrichment-engine.js.map +1 -0
- package/dist/call-graph/enrichment/impact-scorer.d.ts +59 -0
- package/dist/call-graph/enrichment/impact-scorer.d.ts.map +1 -0
- package/dist/call-graph/enrichment/impact-scorer.js +328 -0
- package/dist/call-graph/enrichment/impact-scorer.js.map +1 -0
- package/dist/call-graph/enrichment/index.d.ts +12 -0
- package/dist/call-graph/enrichment/index.d.ts.map +1 -0
- package/dist/call-graph/enrichment/index.js +15 -0
- package/dist/call-graph/enrichment/index.js.map +1 -0
- package/dist/call-graph/enrichment/remediation-generator.d.ts +41 -0
- package/dist/call-graph/enrichment/remediation-generator.d.ts.map +1 -0
- package/dist/call-graph/enrichment/remediation-generator.js +609 -0
- package/dist/call-graph/enrichment/remediation-generator.js.map +1 -0
- package/dist/call-graph/enrichment/sensitivity-classifier.d.ts +71 -0
- package/dist/call-graph/enrichment/sensitivity-classifier.d.ts.map +1 -0
- package/dist/call-graph/enrichment/sensitivity-classifier.js +454 -0
- package/dist/call-graph/enrichment/sensitivity-classifier.js.map +1 -0
- package/dist/call-graph/enrichment/types.d.ts +402 -0
- package/dist/call-graph/enrichment/types.d.ts.map +1 -0
- package/dist/call-graph/enrichment/types.js +9 -0
- package/dist/call-graph/enrichment/types.js.map +1 -0
- package/dist/call-graph/extractors/base-extractor.d.ts +112 -0
- package/dist/call-graph/extractors/base-extractor.d.ts.map +1 -0
- package/dist/call-graph/extractors/base-extractor.js +140 -0
- package/dist/call-graph/extractors/base-extractor.js.map +1 -0
- package/dist/call-graph/extractors/csharp-data-access-extractor.d.ts +76 -0
- package/dist/call-graph/extractors/csharp-data-access-extractor.d.ts.map +1 -0
- package/dist/call-graph/extractors/csharp-data-access-extractor.js +387 -0
- package/dist/call-graph/extractors/csharp-data-access-extractor.js.map +1 -0
- package/dist/call-graph/extractors/csharp-extractor.d.ts +87 -0
- package/dist/call-graph/extractors/csharp-extractor.d.ts.map +1 -0
- package/dist/call-graph/extractors/csharp-extractor.js +470 -0
- package/dist/call-graph/extractors/csharp-extractor.js.map +1 -0
- package/dist/call-graph/extractors/data-access-extractor.d.ts +76 -0
- package/dist/call-graph/extractors/data-access-extractor.d.ts.map +1 -0
- package/dist/call-graph/extractors/data-access-extractor.js +234 -0
- package/dist/call-graph/extractors/data-access-extractor.js.map +1 -0
- package/dist/call-graph/extractors/index.d.ts +26 -0
- package/dist/call-graph/extractors/index.d.ts.map +1 -0
- package/dist/call-graph/extractors/index.js +36 -0
- package/dist/call-graph/extractors/index.js.map +1 -0
- package/dist/call-graph/extractors/java-data-access-extractor.d.ts +101 -0
- package/dist/call-graph/extractors/java-data-access-extractor.d.ts.map +1 -0
- package/dist/call-graph/extractors/java-data-access-extractor.js +611 -0
- package/dist/call-graph/extractors/java-data-access-extractor.js.map +1 -0
- package/dist/call-graph/extractors/java-extractor.d.ts +87 -0
- package/dist/call-graph/extractors/java-extractor.d.ts.map +1 -0
- package/dist/call-graph/extractors/java-extractor.js +510 -0
- package/dist/call-graph/extractors/java-extractor.js.map +1 -0
- package/dist/call-graph/extractors/php-data-access-extractor.d.ts +93 -0
- package/dist/call-graph/extractors/php-data-access-extractor.d.ts.map +1 -0
- package/dist/call-graph/extractors/php-data-access-extractor.js +589 -0
- package/dist/call-graph/extractors/php-data-access-extractor.js.map +1 -0
- package/dist/call-graph/extractors/php-extractor.d.ts +104 -0
- package/dist/call-graph/extractors/php-extractor.d.ts.map +1 -0
- package/dist/call-graph/extractors/php-extractor.js +619 -0
- package/dist/call-graph/extractors/php-extractor.js.map +1 -0
- package/dist/call-graph/extractors/python-data-access-extractor.d.ts +90 -0
- package/dist/call-graph/extractors/python-data-access-extractor.d.ts.map +1 -0
- package/dist/call-graph/extractors/python-data-access-extractor.js +537 -0
- package/dist/call-graph/extractors/python-data-access-extractor.js.map +1 -0
- package/dist/call-graph/extractors/python-extractor.d.ts +98 -0
- package/dist/call-graph/extractors/python-extractor.d.ts.map +1 -0
- package/dist/call-graph/extractors/python-extractor.js +681 -0
- package/dist/call-graph/extractors/python-extractor.js.map +1 -0
- package/dist/call-graph/extractors/semantic-data-access-scanner.d.ts +91 -0
- package/dist/call-graph/extractors/semantic-data-access-scanner.d.ts.map +1 -0
- package/dist/call-graph/extractors/semantic-data-access-scanner.js +498 -0
- package/dist/call-graph/extractors/semantic-data-access-scanner.js.map +1 -0
- package/dist/call-graph/extractors/typescript-data-access-extractor.d.ts +122 -0
- package/dist/call-graph/extractors/typescript-data-access-extractor.d.ts.map +1 -0
- package/dist/call-graph/extractors/typescript-data-access-extractor.js +788 -0
- package/dist/call-graph/extractors/typescript-data-access-extractor.js.map +1 -0
- package/dist/call-graph/extractors/typescript-extractor.d.ts +145 -0
- package/dist/call-graph/extractors/typescript-extractor.d.ts.map +1 -0
- package/dist/call-graph/extractors/typescript-extractor.js +904 -0
- package/dist/call-graph/extractors/typescript-extractor.js.map +1 -0
- package/dist/call-graph/index.d.ts +127 -0
- package/dist/call-graph/index.d.ts.map +1 -0
- package/dist/call-graph/index.js +247 -0
- package/dist/call-graph/index.js.map +1 -0
- package/dist/call-graph/store/call-graph-store.d.ts +70 -0
- package/dist/call-graph/store/call-graph-store.d.ts.map +1 -0
- package/dist/call-graph/store/call-graph-store.js +210 -0
- package/dist/call-graph/store/call-graph-store.js.map +1 -0
- package/dist/call-graph/store/index.d.ts +7 -0
- package/dist/call-graph/store/index.d.ts.map +1 -0
- package/dist/call-graph/store/index.js +7 -0
- package/dist/call-graph/store/index.js.map +1 -0
- package/dist/call-graph/types.d.ts +376 -0
- package/dist/call-graph/types.d.ts.map +1 -0
- package/dist/call-graph/types.js +8 -0
- package/dist/call-graph/types.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -0
- package/dist/index.js.map +1 -1
- package/dist/lake/callgraph-shard-store.d.ts +168 -0
- package/dist/lake/callgraph-shard-store.d.ts.map +1 -0
- package/dist/lake/callgraph-shard-store.js +466 -0
- package/dist/lake/callgraph-shard-store.js.map +1 -0
- package/dist/lake/examples-store.d.ts +127 -0
- package/dist/lake/examples-store.d.ts.map +1 -0
- package/dist/lake/examples-store.js +389 -0
- package/dist/lake/examples-store.js.map +1 -0
- package/dist/lake/index-store.d.ts +82 -0
- package/dist/lake/index-store.d.ts.map +1 -0
- package/dist/lake/index-store.js +359 -0
- package/dist/lake/index-store.js.map +1 -0
- package/dist/lake/index.d.ts +93 -0
- package/dist/lake/index.d.ts.map +1 -0
- package/dist/lake/index.js +138 -0
- package/dist/lake/index.js.map +1 -0
- package/dist/lake/lake.bak/index-store.d.ts +82 -0
- package/dist/lake/lake.bak/index-store.d.ts.map +1 -0
- package/dist/lake/lake.bak/index-store.js +357 -0
- package/dist/lake/lake.bak/index-store.js.map +1 -0
- package/dist/lake/lake.bak/index.d.ts +81 -0
- package/dist/lake/lake.bak/index.d.ts.map +1 -0
- package/dist/lake/lake.bak/index.js +114 -0
- package/dist/lake/lake.bak/index.js.map +1 -0
- package/dist/lake/lake.bak/manifest-store.d.ts +51 -0
- package/dist/lake/lake.bak/manifest-store.d.ts.map +1 -0
- package/dist/lake/lake.bak/manifest-store.js +347 -0
- package/dist/lake/lake.bak/manifest-store.js.map +1 -0
- package/dist/lake/lake.bak/query-engine.d.ts +112 -0
- package/dist/lake/lake.bak/query-engine.d.ts.map +1 -0
- package/dist/lake/lake.bak/query-engine.js +370 -0
- package/dist/lake/lake.bak/query-engine.js.map +1 -0
- package/dist/lake/lake.bak/types.d.ts +428 -0
- package/dist/lake/lake.bak/types.d.ts.map +1 -0
- package/dist/lake/lake.bak/types.js +46 -0
- package/dist/lake/lake.bak/types.js.map +1 -0
- package/dist/lake/lake.bak/view-materializer.d.ts +70 -0
- package/dist/lake/lake.bak/view-materializer.d.ts.map +1 -0
- package/dist/lake/lake.bak/view-materializer.js +314 -0
- package/dist/lake/lake.bak/view-materializer.js.map +1 -0
- package/dist/lake/lake.bak/view-store.d.ts +57 -0
- package/dist/lake/lake.bak/view-store.d.ts.map +1 -0
- package/dist/lake/lake.bak/view-store.js +348 -0
- package/dist/lake/lake.bak/view-store.js.map +1 -0
- package/dist/lake/manifest-store.d.ts +51 -0
- package/dist/lake/manifest-store.d.ts.map +1 -0
- package/dist/lake/manifest-store.js +348 -0
- package/dist/lake/manifest-store.js.map +1 -0
- package/dist/lake/pattern-shard-store.d.ts +87 -0
- package/dist/lake/pattern-shard-store.d.ts.map +1 -0
- package/dist/lake/pattern-shard-store.js +347 -0
- package/dist/lake/pattern-shard-store.js.map +1 -0
- package/dist/lake/query-engine.d.ts +124 -0
- package/dist/lake/query-engine.d.ts.map +1 -0
- package/dist/lake/query-engine.js +453 -0
- package/dist/lake/query-engine.js.map +1 -0
- package/dist/lake/security-shard-store.d.ts +156 -0
- package/dist/lake/security-shard-store.d.ts.map +1 -0
- package/dist/lake/security-shard-store.js +498 -0
- package/dist/lake/security-shard-store.js.map +1 -0
- package/dist/lake/types.d.ts +428 -0
- package/dist/lake/types.d.ts.map +1 -0
- package/dist/lake/types.js +46 -0
- package/dist/lake/types.js.map +1 -0
- package/dist/lake/view-materializer.d.ts +70 -0
- package/dist/lake/view-materializer.d.ts.map +1 -0
- package/dist/lake/view-materializer.js +314 -0
- package/dist/lake/view-materializer.js.map +1 -0
- package/dist/lake/view-store.d.ts +57 -0
- package/dist/lake/view-store.d.ts.map +1 -0
- package/dist/lake/view-store.js +348 -0
- package/dist/lake/view-store.js.map +1 -0
- package/dist/parsers/tree-sitter/index.d.ts +1 -0
- package/dist/parsers/tree-sitter/index.d.ts.map +1 -1
- package/dist/parsers/tree-sitter/index.js +4 -0
- package/dist/parsers/tree-sitter/index.js.map +1 -1
- package/dist/parsers/tree-sitter/typescript-loader.d.ts +58 -0
- package/dist/parsers/tree-sitter/typescript-loader.d.ts.map +1 -0
- package/dist/parsers/tree-sitter/typescript-loader.js +250 -0
- package/dist/parsers/tree-sitter/typescript-loader.js.map +1 -0
- package/dist/store/project-config.d.ts +154 -0
- package/dist/store/project-config.d.ts.map +1 -0
- package/dist/store/project-config.js +235 -0
- package/dist/store/project-config.js.map +1 -0
- package/dist/store/project-registry.d.ts +241 -0
- package/dist/store/project-registry.d.ts.map +1 -0
- package/dist/store/project-registry.js +557 -0
- package/dist/store/project-registry.js.map +1 -0
- package/package.json +7 -7
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Index Store
|
|
3
|
+
*
|
|
4
|
+
* Manages pre-built indexes for fast lookups.
|
|
5
|
+
* Indexes map common query dimensions to IDs for O(1) access.
|
|
6
|
+
*
|
|
7
|
+
* Key indexes:
|
|
8
|
+
* - by-file: file path → pattern/function/access IDs
|
|
9
|
+
* - by-category: category → pattern IDs
|
|
10
|
+
* - by-table: table name → access point/function IDs
|
|
11
|
+
* - by-entry-point: entry point → reachable function IDs
|
|
12
|
+
*/
|
|
13
|
+
import { EventEmitter } from 'node:events';
|
|
14
|
+
import type { FileIndex, CategoryIndex, TableIndex, EntryPointIndex, DataLakeConfig, IndexType } from './types.js';
|
|
15
|
+
import type { Pattern, PatternCategory } from '../store/types.js';
|
|
16
|
+
export declare class IndexStore extends EventEmitter {
|
|
17
|
+
private readonly config;
|
|
18
|
+
private readonly indexesDir;
|
|
19
|
+
private fileIndexCache;
|
|
20
|
+
private categoryIndexCache;
|
|
21
|
+
private tableIndexCache;
|
|
22
|
+
private entryPointIndexCache;
|
|
23
|
+
constructor(config?: Partial<DataLakeConfig>);
|
|
24
|
+
initialize(): Promise<void>;
|
|
25
|
+
getFileIndex(): Promise<FileIndex | null>;
|
|
26
|
+
saveFileIndex(index: FileIndex): Promise<void>;
|
|
27
|
+
/**
|
|
28
|
+
* Build file index from patterns
|
|
29
|
+
*/
|
|
30
|
+
buildFileIndex(patterns: Pattern[]): FileIndex;
|
|
31
|
+
/**
|
|
32
|
+
* Get pattern IDs for a specific file
|
|
33
|
+
*/
|
|
34
|
+
getPatternIdsForFile(file: string): Promise<string[]>;
|
|
35
|
+
/**
|
|
36
|
+
* Update file index for specific files (incremental)
|
|
37
|
+
*/
|
|
38
|
+
updateFileIndex(file: string, patternIds: string[], accessPointIds?: string[], functionIds?: string[]): Promise<void>;
|
|
39
|
+
getCategoryIndex(): Promise<CategoryIndex | null>;
|
|
40
|
+
saveCategoryIndex(index: CategoryIndex): Promise<void>;
|
|
41
|
+
/**
|
|
42
|
+
* Build category index from patterns
|
|
43
|
+
*/
|
|
44
|
+
buildCategoryIndex(patterns: Pattern[]): CategoryIndex;
|
|
45
|
+
/**
|
|
46
|
+
* Get pattern IDs for a specific category
|
|
47
|
+
*/
|
|
48
|
+
getPatternIdsForCategory(category: PatternCategory): Promise<string[]>;
|
|
49
|
+
getTableIndex(): Promise<TableIndex | null>;
|
|
50
|
+
saveTableIndex(index: TableIndex): Promise<void>;
|
|
51
|
+
/**
|
|
52
|
+
* Get access point IDs for a specific table
|
|
53
|
+
*/
|
|
54
|
+
getAccessPointIdsForTable(table: string): Promise<string[]>;
|
|
55
|
+
/**
|
|
56
|
+
* Get function IDs that access a specific table
|
|
57
|
+
*/
|
|
58
|
+
getAccessorIdsForTable(table: string): Promise<string[]>;
|
|
59
|
+
getEntryPointIndex(): Promise<EntryPointIndex | null>;
|
|
60
|
+
saveEntryPointIndex(index: EntryPointIndex): Promise<void>;
|
|
61
|
+
/**
|
|
62
|
+
* Get reachable function IDs from an entry point
|
|
63
|
+
*/
|
|
64
|
+
getReachableFunctions(entryPointId: string): Promise<string[]>;
|
|
65
|
+
/**
|
|
66
|
+
* Get tables reachable from an entry point
|
|
67
|
+
*/
|
|
68
|
+
getReachableTables(entryPointId: string): Promise<string[]>;
|
|
69
|
+
/**
|
|
70
|
+
* Get sensitive data reachable from an entry point
|
|
71
|
+
*/
|
|
72
|
+
getReachableSensitiveData(entryPointId: string): Promise<string[]>;
|
|
73
|
+
invalidateCache(index?: IndexType): void;
|
|
74
|
+
hasIndex(index: IndexType): Promise<boolean>;
|
|
75
|
+
deleteIndex(index: IndexType): Promise<void>;
|
|
76
|
+
/**
|
|
77
|
+
* Rebuild all indexes from patterns
|
|
78
|
+
*/
|
|
79
|
+
rebuildAllIndexes(patterns: Pattern[]): Promise<void>;
|
|
80
|
+
}
|
|
81
|
+
export declare function createIndexStore(config?: Partial<DataLakeConfig>): IndexStore;
|
|
82
|
+
//# sourceMappingURL=index-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-store.d.ts","sourceRoot":"","sources":["../../../src/lake/lake.bak/index-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,KAAK,EACV,SAAS,EACT,aAAa,EACb,UAAU,EACV,eAAe,EACf,cAAc,EACd,SAAS,EACV,MAAM,YAAY,CAAC;AAQpB,OAAO,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAuBlE,qBAAa,UAAW,SAAQ,YAAY;IAC1C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiB;IACxC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IAGpC,OAAO,CAAC,cAAc,CAA0B;IAChD,OAAO,CAAC,kBAAkB,CAA8B;IACxD,OAAO,CAAC,eAAe,CAA2B;IAClD,OAAO,CAAC,oBAAoB,CAAgC;gBAEhD,MAAM,GAAE,OAAO,CAAC,cAAc,CAAM;IAc1C,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ3B,YAAY,IAAI,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IAmBzC,aAAa,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAQpD;;OAEG;IACH,cAAc,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,SAAS;IA8B9C;;OAEG;IACG,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAK3D;;OAEG;IACG,eAAe,CACnB,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAAE,EACpB,cAAc,CAAC,EAAE,MAAM,EAAE,EACzB,WAAW,CAAC,EAAE,MAAM,EAAE,GACrB,OAAO,CAAC,IAAI,CAAC;IA2BV,gBAAgB,IAAI,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAmBjD,iBAAiB,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ5D;;OAEG;IACH,kBAAkB,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,aAAa;IAoBtD;;OAEG;IACG,wBAAwB,CAAC,QAAQ,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAStE,aAAa,IAAI,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAmB3C,cAAc,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAQtD;;OAEG;IACG,yBAAyB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAKjE;;OAEG;IACG,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IASxD,kBAAkB,IAAI,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;IAmBrD,mBAAmB,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAQhE;;OAEG;IACG,qBAAqB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAKpE;;OAEG;IACG,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAKjE;;OAEG;IACG,yBAAyB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IASxE,eAAe,CAAC,KAAK,CAAC,EAAE,SAAS,GAAG,IAAI;IA6BlC,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC;IAY5C,WAAW,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBlD;;OAEG;IACG,iBAAiB,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;CAS5D;AAMD,wBAAgB,gBAAgB,CAAC,MAAM,GAAE,OAAO,CAAC,cAAc,CAAM,GAAG,UAAU,CAEjF"}
|
|
@@ -0,0 +1,357 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Index Store
|
|
3
|
+
*
|
|
4
|
+
* Manages pre-built indexes for fast lookups.
|
|
5
|
+
* Indexes map common query dimensions to IDs for O(1) access.
|
|
6
|
+
*
|
|
7
|
+
* Key indexes:
|
|
8
|
+
* - by-file: file path → pattern/function/access IDs
|
|
9
|
+
* - by-category: category → pattern IDs
|
|
10
|
+
* - by-table: table name → access point/function IDs
|
|
11
|
+
* - by-entry-point: entry point → reachable function IDs
|
|
12
|
+
*/
|
|
13
|
+
import * as fs from 'node:fs/promises';
|
|
14
|
+
import * as path from 'node:path';
|
|
15
|
+
import { EventEmitter } from 'node:events';
|
|
16
|
+
import { LAKE_DIRS, INDEX_FILES, DEFAULT_DATA_LAKE_CONFIG, } from './types.js';
|
|
17
|
+
// ============================================================================
|
|
18
|
+
// Helper Functions
|
|
19
|
+
// ============================================================================
|
|
20
|
+
async function fileExists(filePath) {
|
|
21
|
+
try {
|
|
22
|
+
await fs.access(filePath);
|
|
23
|
+
return true;
|
|
24
|
+
}
|
|
25
|
+
catch {
|
|
26
|
+
return false;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
async function ensureDir(dirPath) {
|
|
30
|
+
await fs.mkdir(dirPath, { recursive: true });
|
|
31
|
+
}
|
|
32
|
+
// ============================================================================
|
|
33
|
+
// Index Store Class
|
|
34
|
+
// ============================================================================
|
|
35
|
+
export class IndexStore extends EventEmitter {
|
|
36
|
+
config;
|
|
37
|
+
indexesDir;
|
|
38
|
+
// In-memory cache
|
|
39
|
+
fileIndexCache = null;
|
|
40
|
+
categoryIndexCache = null;
|
|
41
|
+
tableIndexCache = null;
|
|
42
|
+
entryPointIndexCache = null;
|
|
43
|
+
constructor(config = {}) {
|
|
44
|
+
super();
|
|
45
|
+
this.config = { ...DEFAULT_DATA_LAKE_CONFIG, ...config };
|
|
46
|
+
this.indexesDir = path.join(this.config.rootDir, LAKE_DIRS.root, LAKE_DIRS.indexes);
|
|
47
|
+
}
|
|
48
|
+
// ==========================================================================
|
|
49
|
+
// Initialization
|
|
50
|
+
// ==========================================================================
|
|
51
|
+
async initialize() {
|
|
52
|
+
await ensureDir(this.indexesDir);
|
|
53
|
+
}
|
|
54
|
+
// ==========================================================================
|
|
55
|
+
// File Index
|
|
56
|
+
// ==========================================================================
|
|
57
|
+
async getFileIndex() {
|
|
58
|
+
if (this.fileIndexCache) {
|
|
59
|
+
return this.fileIndexCache;
|
|
60
|
+
}
|
|
61
|
+
const filePath = path.join(this.indexesDir, INDEX_FILES.byFile);
|
|
62
|
+
if (!(await fileExists(filePath))) {
|
|
63
|
+
return null;
|
|
64
|
+
}
|
|
65
|
+
try {
|
|
66
|
+
const content = await fs.readFile(filePath, 'utf-8');
|
|
67
|
+
this.fileIndexCache = JSON.parse(content);
|
|
68
|
+
return this.fileIndexCache;
|
|
69
|
+
}
|
|
70
|
+
catch {
|
|
71
|
+
return null;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
async saveFileIndex(index) {
|
|
75
|
+
await ensureDir(this.indexesDir);
|
|
76
|
+
const filePath = path.join(this.indexesDir, INDEX_FILES.byFile);
|
|
77
|
+
await fs.writeFile(filePath, JSON.stringify(index, null, 2));
|
|
78
|
+
this.fileIndexCache = index;
|
|
79
|
+
this.emit('index:saved', 'byFile', index);
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Build file index from patterns
|
|
83
|
+
*/
|
|
84
|
+
buildFileIndex(patterns) {
|
|
85
|
+
const patternsByFile = {};
|
|
86
|
+
for (const pattern of patterns) {
|
|
87
|
+
for (const location of pattern.locations) {
|
|
88
|
+
if (!patternsByFile[location.file]) {
|
|
89
|
+
patternsByFile[location.file] = [];
|
|
90
|
+
}
|
|
91
|
+
if (!patternsByFile[location.file].includes(pattern.id)) {
|
|
92
|
+
patternsByFile[location.file].push(pattern.id);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
for (const outlier of pattern.outliers) {
|
|
96
|
+
if (!patternsByFile[outlier.file]) {
|
|
97
|
+
patternsByFile[outlier.file] = [];
|
|
98
|
+
}
|
|
99
|
+
if (!patternsByFile[outlier.file].includes(pattern.id)) {
|
|
100
|
+
patternsByFile[outlier.file].push(pattern.id);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
return {
|
|
105
|
+
generatedAt: new Date().toISOString(),
|
|
106
|
+
patterns: patternsByFile,
|
|
107
|
+
accessPoints: {}, // Populated by boundary scanner
|
|
108
|
+
functions: {}, // Populated by call graph builder
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Get pattern IDs for a specific file
|
|
113
|
+
*/
|
|
114
|
+
async getPatternIdsForFile(file) {
|
|
115
|
+
const index = await this.getFileIndex();
|
|
116
|
+
return index?.patterns[file] ?? [];
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Update file index for specific files (incremental)
|
|
120
|
+
*/
|
|
121
|
+
async updateFileIndex(file, patternIds, accessPointIds, functionIds) {
|
|
122
|
+
let index = await this.getFileIndex();
|
|
123
|
+
if (!index) {
|
|
124
|
+
index = {
|
|
125
|
+
generatedAt: new Date().toISOString(),
|
|
126
|
+
patterns: {},
|
|
127
|
+
accessPoints: {},
|
|
128
|
+
functions: {},
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
index.patterns[file] = patternIds;
|
|
132
|
+
if (accessPointIds) {
|
|
133
|
+
index.accessPoints[file] = accessPointIds;
|
|
134
|
+
}
|
|
135
|
+
if (functionIds) {
|
|
136
|
+
index.functions[file] = functionIds;
|
|
137
|
+
}
|
|
138
|
+
index.generatedAt = new Date().toISOString();
|
|
139
|
+
await this.saveFileIndex(index);
|
|
140
|
+
}
|
|
141
|
+
// ==========================================================================
|
|
142
|
+
// Category Index
|
|
143
|
+
// ==========================================================================
|
|
144
|
+
async getCategoryIndex() {
|
|
145
|
+
if (this.categoryIndexCache) {
|
|
146
|
+
return this.categoryIndexCache;
|
|
147
|
+
}
|
|
148
|
+
const filePath = path.join(this.indexesDir, INDEX_FILES.byCategory);
|
|
149
|
+
if (!(await fileExists(filePath))) {
|
|
150
|
+
return null;
|
|
151
|
+
}
|
|
152
|
+
try {
|
|
153
|
+
const content = await fs.readFile(filePath, 'utf-8');
|
|
154
|
+
this.categoryIndexCache = JSON.parse(content);
|
|
155
|
+
return this.categoryIndexCache;
|
|
156
|
+
}
|
|
157
|
+
catch {
|
|
158
|
+
return null;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
async saveCategoryIndex(index) {
|
|
162
|
+
await ensureDir(this.indexesDir);
|
|
163
|
+
const filePath = path.join(this.indexesDir, INDEX_FILES.byCategory);
|
|
164
|
+
await fs.writeFile(filePath, JSON.stringify(index, null, 2));
|
|
165
|
+
this.categoryIndexCache = index;
|
|
166
|
+
this.emit('index:saved', 'byCategory', index);
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Build category index from patterns
|
|
170
|
+
*/
|
|
171
|
+
buildCategoryIndex(patterns) {
|
|
172
|
+
const patternsByCategory = {};
|
|
173
|
+
const counts = {};
|
|
174
|
+
for (const pattern of patterns) {
|
|
175
|
+
if (!patternsByCategory[pattern.category]) {
|
|
176
|
+
patternsByCategory[pattern.category] = [];
|
|
177
|
+
counts[pattern.category] = 0;
|
|
178
|
+
}
|
|
179
|
+
patternsByCategory[pattern.category].push(pattern.id);
|
|
180
|
+
counts[pattern.category]++;
|
|
181
|
+
}
|
|
182
|
+
return {
|
|
183
|
+
generatedAt: new Date().toISOString(),
|
|
184
|
+
patterns: patternsByCategory,
|
|
185
|
+
counts,
|
|
186
|
+
};
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Get pattern IDs for a specific category
|
|
190
|
+
*/
|
|
191
|
+
async getPatternIdsForCategory(category) {
|
|
192
|
+
const index = await this.getCategoryIndex();
|
|
193
|
+
return index?.patterns[category] ?? [];
|
|
194
|
+
}
|
|
195
|
+
// ==========================================================================
|
|
196
|
+
// Table Index
|
|
197
|
+
// ==========================================================================
|
|
198
|
+
async getTableIndex() {
|
|
199
|
+
if (this.tableIndexCache) {
|
|
200
|
+
return this.tableIndexCache;
|
|
201
|
+
}
|
|
202
|
+
const filePath = path.join(this.indexesDir, INDEX_FILES.byTable);
|
|
203
|
+
if (!(await fileExists(filePath))) {
|
|
204
|
+
return null;
|
|
205
|
+
}
|
|
206
|
+
try {
|
|
207
|
+
const content = await fs.readFile(filePath, 'utf-8');
|
|
208
|
+
this.tableIndexCache = JSON.parse(content);
|
|
209
|
+
return this.tableIndexCache;
|
|
210
|
+
}
|
|
211
|
+
catch {
|
|
212
|
+
return null;
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
async saveTableIndex(index) {
|
|
216
|
+
await ensureDir(this.indexesDir);
|
|
217
|
+
const filePath = path.join(this.indexesDir, INDEX_FILES.byTable);
|
|
218
|
+
await fs.writeFile(filePath, JSON.stringify(index, null, 2));
|
|
219
|
+
this.tableIndexCache = index;
|
|
220
|
+
this.emit('index:saved', 'byTable', index);
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* Get access point IDs for a specific table
|
|
224
|
+
*/
|
|
225
|
+
async getAccessPointIdsForTable(table) {
|
|
226
|
+
const index = await this.getTableIndex();
|
|
227
|
+
return index?.accessPoints[table] ?? [];
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* Get function IDs that access a specific table
|
|
231
|
+
*/
|
|
232
|
+
async getAccessorIdsForTable(table) {
|
|
233
|
+
const index = await this.getTableIndex();
|
|
234
|
+
return index?.accessors[table] ?? [];
|
|
235
|
+
}
|
|
236
|
+
// ==========================================================================
|
|
237
|
+
// Entry Point Index
|
|
238
|
+
// ==========================================================================
|
|
239
|
+
async getEntryPointIndex() {
|
|
240
|
+
if (this.entryPointIndexCache) {
|
|
241
|
+
return this.entryPointIndexCache;
|
|
242
|
+
}
|
|
243
|
+
const filePath = path.join(this.indexesDir, INDEX_FILES.byEntryPoint);
|
|
244
|
+
if (!(await fileExists(filePath))) {
|
|
245
|
+
return null;
|
|
246
|
+
}
|
|
247
|
+
try {
|
|
248
|
+
const content = await fs.readFile(filePath, 'utf-8');
|
|
249
|
+
this.entryPointIndexCache = JSON.parse(content);
|
|
250
|
+
return this.entryPointIndexCache;
|
|
251
|
+
}
|
|
252
|
+
catch {
|
|
253
|
+
return null;
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
async saveEntryPointIndex(index) {
|
|
257
|
+
await ensureDir(this.indexesDir);
|
|
258
|
+
const filePath = path.join(this.indexesDir, INDEX_FILES.byEntryPoint);
|
|
259
|
+
await fs.writeFile(filePath, JSON.stringify(index, null, 2));
|
|
260
|
+
this.entryPointIndexCache = index;
|
|
261
|
+
this.emit('index:saved', 'byEntryPoint', index);
|
|
262
|
+
}
|
|
263
|
+
/**
|
|
264
|
+
* Get reachable function IDs from an entry point
|
|
265
|
+
*/
|
|
266
|
+
async getReachableFunctions(entryPointId) {
|
|
267
|
+
const index = await this.getEntryPointIndex();
|
|
268
|
+
return index?.reachable[entryPointId] ?? [];
|
|
269
|
+
}
|
|
270
|
+
/**
|
|
271
|
+
* Get tables reachable from an entry point
|
|
272
|
+
*/
|
|
273
|
+
async getReachableTables(entryPointId) {
|
|
274
|
+
const index = await this.getEntryPointIndex();
|
|
275
|
+
return index?.tables[entryPointId] ?? [];
|
|
276
|
+
}
|
|
277
|
+
/**
|
|
278
|
+
* Get sensitive data reachable from an entry point
|
|
279
|
+
*/
|
|
280
|
+
async getReachableSensitiveData(entryPointId) {
|
|
281
|
+
const index = await this.getEntryPointIndex();
|
|
282
|
+
return index?.sensitiveData[entryPointId] ?? [];
|
|
283
|
+
}
|
|
284
|
+
// ==========================================================================
|
|
285
|
+
// Cache Management
|
|
286
|
+
// ==========================================================================
|
|
287
|
+
invalidateCache(index) {
|
|
288
|
+
if (!index) {
|
|
289
|
+
this.fileIndexCache = null;
|
|
290
|
+
this.categoryIndexCache = null;
|
|
291
|
+
this.tableIndexCache = null;
|
|
292
|
+
this.entryPointIndexCache = null;
|
|
293
|
+
return;
|
|
294
|
+
}
|
|
295
|
+
switch (index) {
|
|
296
|
+
case 'byFile':
|
|
297
|
+
this.fileIndexCache = null;
|
|
298
|
+
break;
|
|
299
|
+
case 'byCategory':
|
|
300
|
+
this.categoryIndexCache = null;
|
|
301
|
+
break;
|
|
302
|
+
case 'byTable':
|
|
303
|
+
this.tableIndexCache = null;
|
|
304
|
+
break;
|
|
305
|
+
case 'byEntryPoint':
|
|
306
|
+
this.entryPointIndexCache = null;
|
|
307
|
+
break;
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
// ==========================================================================
|
|
311
|
+
// Bulk Operations
|
|
312
|
+
// ==========================================================================
|
|
313
|
+
async hasIndex(index) {
|
|
314
|
+
const files = {
|
|
315
|
+
byFile: INDEX_FILES.byFile,
|
|
316
|
+
byCategory: INDEX_FILES.byCategory,
|
|
317
|
+
byTable: INDEX_FILES.byTable,
|
|
318
|
+
byEntryPoint: INDEX_FILES.byEntryPoint,
|
|
319
|
+
};
|
|
320
|
+
const filePath = path.join(this.indexesDir, files[index]);
|
|
321
|
+
return fileExists(filePath);
|
|
322
|
+
}
|
|
323
|
+
async deleteIndex(index) {
|
|
324
|
+
const files = {
|
|
325
|
+
byFile: INDEX_FILES.byFile,
|
|
326
|
+
byCategory: INDEX_FILES.byCategory,
|
|
327
|
+
byTable: INDEX_FILES.byTable,
|
|
328
|
+
byEntryPoint: INDEX_FILES.byEntryPoint,
|
|
329
|
+
};
|
|
330
|
+
const filePath = path.join(this.indexesDir, files[index]);
|
|
331
|
+
try {
|
|
332
|
+
await fs.unlink(filePath);
|
|
333
|
+
}
|
|
334
|
+
catch {
|
|
335
|
+
// Ignore if doesn't exist
|
|
336
|
+
}
|
|
337
|
+
this.invalidateCache(index);
|
|
338
|
+
}
|
|
339
|
+
/**
|
|
340
|
+
* Rebuild all indexes from patterns
|
|
341
|
+
*/
|
|
342
|
+
async rebuildAllIndexes(patterns) {
|
|
343
|
+
const fileIndex = this.buildFileIndex(patterns);
|
|
344
|
+
const categoryIndex = this.buildCategoryIndex(patterns);
|
|
345
|
+
await Promise.all([
|
|
346
|
+
this.saveFileIndex(fileIndex),
|
|
347
|
+
this.saveCategoryIndex(categoryIndex),
|
|
348
|
+
]);
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
// ============================================================================
|
|
352
|
+
// Factory Function
|
|
353
|
+
// ============================================================================
|
|
354
|
+
export function createIndexStore(config = {}) {
|
|
355
|
+
return new IndexStore(config);
|
|
356
|
+
}
|
|
357
|
+
//# sourceMappingURL=index-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-store.js","sourceRoot":"","sources":["../../../src/lake/lake.bak/index-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Data Lake Module
|
|
3
|
+
*
|
|
4
|
+
* Enterprise-grade data storage with materialized views, indexes, and query optimization.
|
|
5
|
+
*
|
|
6
|
+
* Architecture:
|
|
7
|
+
* - ManifestStore: Quick-load index of everything (instant drift_status)
|
|
8
|
+
* - ViewStore: Pre-computed views for common queries
|
|
9
|
+
* - IndexStore: Fast lookups by file, category, table, entry point
|
|
10
|
+
* - QueryEngine: Unified query API with automatic view/index selection
|
|
11
|
+
* - ViewMaterializer: Rebuilds views after scans
|
|
12
|
+
*
|
|
13
|
+
* Usage:
|
|
14
|
+
* ```typescript
|
|
15
|
+
* import { createDataLake } from './lake';
|
|
16
|
+
*
|
|
17
|
+
* const lake = createDataLake({ rootDir: '/path/to/project' });
|
|
18
|
+
* await lake.initialize();
|
|
19
|
+
*
|
|
20
|
+
* // Instant status (reads pre-computed view)
|
|
21
|
+
* const status = await lake.query.getStatus();
|
|
22
|
+
*
|
|
23
|
+
* // Fast pattern listing (uses index + view)
|
|
24
|
+
* const patterns = await lake.query.getPatterns({ categories: ['api'] });
|
|
25
|
+
*
|
|
26
|
+
* // After scan, materialize views
|
|
27
|
+
* await lake.materializer.materialize(patterns, {}, { lastScan: scanInfo });
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
30
|
+
export type { DriftManifest, ManifestStats, PatternStats, SecurityStats, CallGraphStats, ContractStats, DNAStats, LastScanInfo, ViewFreshness, ViewMeta, StatusView, PatternIndexView, PatternSummary, SecuritySummaryView, TrendsView, HealthFactor, TopIssue, SensitiveTableSummary, ViolationSummary, TrendItem, CategoryTrend, FileIndex, CategoryIndex, TableIndex, EntryPointIndex, Shard, PatternShard, PatternShardEntry, PatternLocation, PatternMetadata, AccessMapShard, SensitiveFieldInfo, AccessPointEntry, CallGraphShard, FunctionEntry, DataAccessRef, PatternExamples, CodeExample, IncrementalUpdate, ViewType, IndexType, DataLakeConfig, } from './types.js';
|
|
31
|
+
export { LAKE_VERSION, LAKE_DIRS, VIEW_FILES, INDEX_FILES, DEFAULT_DATA_LAKE_CONFIG, } from './types.js';
|
|
32
|
+
export { ManifestStore, createManifestStore } from './manifest-store.js';
|
|
33
|
+
export { ViewStore, createViewStore } from './view-store.js';
|
|
34
|
+
export { IndexStore, createIndexStore } from './index-store.js';
|
|
35
|
+
export { QueryEngine, createQueryEngine, type PaginationOptions, type PaginatedResult, type PatternQueryOptions, type QueryStats, } from './query-engine.js';
|
|
36
|
+
export { ViewMaterializer, createViewMaterializer, type MaterializeOptions, type MaterializeResult, } from './view-materializer.js';
|
|
37
|
+
import type { DataLakeConfig } from './types.js';
|
|
38
|
+
import { ManifestStore } from './manifest-store.js';
|
|
39
|
+
import { ViewStore } from './view-store.js';
|
|
40
|
+
import { IndexStore } from './index-store.js';
|
|
41
|
+
import { QueryEngine } from './query-engine.js';
|
|
42
|
+
import { ViewMaterializer } from './view-materializer.js';
|
|
43
|
+
import type { Pattern } from '../store/types.js';
|
|
44
|
+
/**
|
|
45
|
+
* Data Lake - Unified interface for all data lake operations
|
|
46
|
+
*/
|
|
47
|
+
export declare class DataLake {
|
|
48
|
+
readonly config: DataLakeConfig;
|
|
49
|
+
readonly manifest: ManifestStore;
|
|
50
|
+
readonly views: ViewStore;
|
|
51
|
+
readonly indexes: IndexStore;
|
|
52
|
+
readonly query: QueryEngine;
|
|
53
|
+
readonly materializer: ViewMaterializer;
|
|
54
|
+
private initialized;
|
|
55
|
+
constructor(config?: Partial<DataLakeConfig>);
|
|
56
|
+
/**
|
|
57
|
+
* Initialize the data lake
|
|
58
|
+
*/
|
|
59
|
+
initialize(): Promise<void>;
|
|
60
|
+
/**
|
|
61
|
+
* Set the raw pattern loader for fallback queries
|
|
62
|
+
*/
|
|
63
|
+
setPatternLoader(loader: () => Promise<Pattern[]>): void;
|
|
64
|
+
/**
|
|
65
|
+
* Check if the data lake has been initialized with data
|
|
66
|
+
*/
|
|
67
|
+
hasData(): boolean;
|
|
68
|
+
/**
|
|
69
|
+
* Get quick stats (instant, from manifest)
|
|
70
|
+
*/
|
|
71
|
+
getQuickStats(): import("./types.js").ManifestStats;
|
|
72
|
+
/**
|
|
73
|
+
* Invalidate all caches and views
|
|
74
|
+
*/
|
|
75
|
+
invalidateAll(): void;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Create a new DataLake instance
|
|
79
|
+
*/
|
|
80
|
+
export declare function createDataLake(config?: Partial<DataLakeConfig>): DataLake;
|
|
81
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lake/lake.bak/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAGH,YAAY,EAEV,aAAa,EACb,aAAa,EACb,YAAY,EACZ,aAAa,EACb,cAAc,EACd,aAAa,EACb,QAAQ,EACR,YAAY,EACZ,aAAa,EACb,QAAQ,EAGR,UAAU,EACV,gBAAgB,EAChB,cAAc,EACd,mBAAmB,EACnB,UAAU,EACV,YAAY,EACZ,QAAQ,EACR,qBAAqB,EACrB,gBAAgB,EAChB,SAAS,EACT,aAAa,EAGb,SAAS,EACT,aAAa,EACb,UAAU,EACV,eAAe,EAGf,KAAK,EACL,YAAY,EACZ,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,cAAc,EACd,kBAAkB,EAClB,gBAAgB,EAChB,cAAc,EACd,aAAa,EACb,aAAa,EAGb,eAAe,EACf,WAAW,EAGX,iBAAiB,EACjB,QAAQ,EACR,SAAS,EAGT,cAAc,GACf,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,YAAY,EACZ,SAAS,EACT,UAAU,EACV,WAAW,EACX,wBAAwB,GACzB,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AACzE,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAGhE,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,KAAK,UAAU,GAChB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EACtB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,GACvB,MAAM,wBAAwB,CAAC;AAMhC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAEjD;;GAEG;AACH,qBAAa,QAAQ;IACnB,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;IACjC,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;IAC5B,QAAQ,CAAC,YAAY,EAAE,gBAAgB,CAAC;IAExC,OAAO,CAAC,WAAW,CAAS;gBAEhB,MAAM,GAAE,OAAO,CAAC,cAAc,CAAM;IAyBhD;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAYjC;;OAEG;IACH,gBAAgB,CAAC,MAAM,EAAE,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI;IAIxD;;OAEG;IACH,OAAO,IAAI,OAAO;IAKlB;;OAEG;IACH,aAAa;IAIb;;OAEG;IACH,aAAa,IAAI,IAAI;CAKtB;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,GAAE,OAAO,CAAC,cAAc,CAAM,GAAG,QAAQ,CAE7E"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Data Lake Module
|
|
3
|
+
*
|
|
4
|
+
* Enterprise-grade data storage with materialized views, indexes, and query optimization.
|
|
5
|
+
*
|
|
6
|
+
* Architecture:
|
|
7
|
+
* - ManifestStore: Quick-load index of everything (instant drift_status)
|
|
8
|
+
* - ViewStore: Pre-computed views for common queries
|
|
9
|
+
* - IndexStore: Fast lookups by file, category, table, entry point
|
|
10
|
+
* - QueryEngine: Unified query API with automatic view/index selection
|
|
11
|
+
* - ViewMaterializer: Rebuilds views after scans
|
|
12
|
+
*
|
|
13
|
+
* Usage:
|
|
14
|
+
* ```typescript
|
|
15
|
+
* import { createDataLake } from './lake';
|
|
16
|
+
*
|
|
17
|
+
* const lake = createDataLake({ rootDir: '/path/to/project' });
|
|
18
|
+
* await lake.initialize();
|
|
19
|
+
*
|
|
20
|
+
* // Instant status (reads pre-computed view)
|
|
21
|
+
* const status = await lake.query.getStatus();
|
|
22
|
+
*
|
|
23
|
+
* // Fast pattern listing (uses index + view)
|
|
24
|
+
* const patterns = await lake.query.getPatterns({ categories: ['api'] });
|
|
25
|
+
*
|
|
26
|
+
* // After scan, materialize views
|
|
27
|
+
* await lake.materializer.materialize(patterns, {}, { lastScan: scanInfo });
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
30
|
+
export { LAKE_VERSION, LAKE_DIRS, VIEW_FILES, INDEX_FILES, DEFAULT_DATA_LAKE_CONFIG, } from './types.js';
|
|
31
|
+
// Stores
|
|
32
|
+
export { ManifestStore, createManifestStore } from './manifest-store.js';
|
|
33
|
+
export { ViewStore, createViewStore } from './view-store.js';
|
|
34
|
+
export { IndexStore, createIndexStore } from './index-store.js';
|
|
35
|
+
// Query Engine
|
|
36
|
+
export { QueryEngine, createQueryEngine, } from './query-engine.js';
|
|
37
|
+
// View Materializer
|
|
38
|
+
export { ViewMaterializer, createViewMaterializer, } from './view-materializer.js';
|
|
39
|
+
import { DEFAULT_DATA_LAKE_CONFIG } from './types.js';
|
|
40
|
+
import { ManifestStore } from './manifest-store.js';
|
|
41
|
+
import { ViewStore } from './view-store.js';
|
|
42
|
+
import { IndexStore } from './index-store.js';
|
|
43
|
+
import { QueryEngine } from './query-engine.js';
|
|
44
|
+
import { ViewMaterializer } from './view-materializer.js';
|
|
45
|
+
/**
|
|
46
|
+
* Data Lake - Unified interface for all data lake operations
|
|
47
|
+
*/
|
|
48
|
+
export class DataLake {
|
|
49
|
+
config;
|
|
50
|
+
manifest;
|
|
51
|
+
views;
|
|
52
|
+
indexes;
|
|
53
|
+
query;
|
|
54
|
+
materializer;
|
|
55
|
+
initialized = false;
|
|
56
|
+
constructor(config = {}) {
|
|
57
|
+
this.config = { ...DEFAULT_DATA_LAKE_CONFIG, ...config };
|
|
58
|
+
// Create stores
|
|
59
|
+
this.manifest = new ManifestStore(this.config);
|
|
60
|
+
this.views = new ViewStore(this.config);
|
|
61
|
+
this.indexes = new IndexStore(this.config);
|
|
62
|
+
// Create query engine with stores
|
|
63
|
+
this.query = new QueryEngine(this.config, this.manifest, this.views, this.indexes);
|
|
64
|
+
// Create materializer with stores
|
|
65
|
+
this.materializer = new ViewMaterializer(this.config, this.manifest, this.views, this.indexes);
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Initialize the data lake
|
|
69
|
+
*/
|
|
70
|
+
async initialize() {
|
|
71
|
+
if (this.initialized)
|
|
72
|
+
return;
|
|
73
|
+
await Promise.all([
|
|
74
|
+
this.manifest.initialize(),
|
|
75
|
+
this.views.initialize(),
|
|
76
|
+
this.indexes.initialize(),
|
|
77
|
+
]);
|
|
78
|
+
this.initialized = true;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Set the raw pattern loader for fallback queries
|
|
82
|
+
*/
|
|
83
|
+
setPatternLoader(loader) {
|
|
84
|
+
this.query.setRawPatternLoader(loader);
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Check if the data lake has been initialized with data
|
|
88
|
+
*/
|
|
89
|
+
hasData() {
|
|
90
|
+
const stats = this.manifest.getStats();
|
|
91
|
+
return stats.patterns.total > 0;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Get quick stats (instant, from manifest)
|
|
95
|
+
*/
|
|
96
|
+
getQuickStats() {
|
|
97
|
+
return this.manifest.getStats();
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Invalidate all caches and views
|
|
101
|
+
*/
|
|
102
|
+
invalidateAll() {
|
|
103
|
+
this.manifest.markAllViewsStale('full invalidation');
|
|
104
|
+
this.views.invalidateCache();
|
|
105
|
+
this.indexes.invalidateCache();
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Create a new DataLake instance
|
|
110
|
+
*/
|
|
111
|
+
export function createDataLake(config = {}) {
|
|
112
|
+
return new DataLake(config);
|
|
113
|
+
}
|
|
114
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lake/lake.bak/index.ts"],"names":[],"mappings":"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"}
|