@principal-ai/codebase-composition 0.1.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/README.md +67 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +23 -0
- package/dist/index.js.map +1 -0
- package/dist/modules/DependencyLayerModule.d.ts +44 -0
- package/dist/modules/DependencyLayerModule.d.ts.map +1 -0
- package/dist/modules/DependencyLayerModule.js +286 -0
- package/dist/modules/DependencyLayerModule.js.map +1 -0
- package/dist/modules/FileSystemModule.d.ts +30 -0
- package/dist/modules/FileSystemModule.d.ts.map +1 -0
- package/dist/modules/FileSystemModule.js +46 -0
- package/dist/modules/FileSystemModule.js.map +1 -0
- package/dist/modules/FileTypeLayerModule.d.ts +34 -0
- package/dist/modules/FileTypeLayerModule.d.ts.map +1 -0
- package/dist/modules/FileTypeLayerModule.js +169 -0
- package/dist/modules/FileTypeLayerModule.js.map +1 -0
- package/dist/modules/FrameworkLayerModule.d.ts +22 -0
- package/dist/modules/FrameworkLayerModule.d.ts.map +1 -0
- package/dist/modules/FrameworkLayerModule.js +388 -0
- package/dist/modules/FrameworkLayerModule.js.map +1 -0
- package/dist/modules/PackageLayerModule.d.ts +23 -0
- package/dist/modules/PackageLayerModule.d.ts.map +1 -0
- package/dist/modules/PackageLayerModule.js +810 -0
- package/dist/modules/PackageLayerModule.js.map +1 -0
- package/dist/modules/TypeExtractionModule.d.ts +37 -0
- package/dist/modules/TypeExtractionModule.d.ts.map +1 -0
- package/dist/modules/TypeExtractionModule.js +180 -0
- package/dist/modules/TypeExtractionModule.js.map +1 -0
- package/dist/modules/VersionControlLayerModule.d.ts +10 -0
- package/dist/modules/VersionControlLayerModule.d.ts.map +1 -0
- package/dist/modules/VersionControlLayerModule.js +32 -0
- package/dist/modules/VersionControlLayerModule.js.map +1 -0
- package/dist/modules/__fixtures__/typescript-packages/complex-types/src/index.d.ts +4 -0
- package/dist/modules/__fixtures__/typescript-packages/complex-types/src/index.d.ts.map +1 -0
- package/dist/modules/__fixtures__/typescript-packages/complex-types/src/index.js +7 -0
- package/dist/modules/__fixtures__/typescript-packages/complex-types/src/index.js.map +1 -0
- package/dist/modules/__fixtures__/typescript-packages/complex-types/src/models/category.d.ts +15 -0
- package/dist/modules/__fixtures__/typescript-packages/complex-types/src/models/category.d.ts.map +1 -0
- package/dist/modules/__fixtures__/typescript-packages/complex-types/src/models/category.js +3 -0
- package/dist/modules/__fixtures__/typescript-packages/complex-types/src/models/category.js.map +1 -0
- package/dist/modules/__fixtures__/typescript-packages/complex-types/src/models/product.d.ts +34 -0
- package/dist/modules/__fixtures__/typescript-packages/complex-types/src/models/product.d.ts.map +1 -0
- package/dist/modules/__fixtures__/typescript-packages/complex-types/src/models/product.js +23 -0
- package/dist/modules/__fixtures__/typescript-packages/complex-types/src/models/product.js.map +1 -0
- package/dist/modules/__fixtures__/typescript-packages/simple-types/index.d.ts +39 -0
- package/dist/modules/__fixtures__/typescript-packages/simple-types/index.d.ts.map +1 -0
- package/dist/modules/__fixtures__/typescript-packages/simple-types/index.js +39 -0
- package/dist/modules/__fixtures__/typescript-packages/simple-types/index.js.map +1 -0
- package/dist/modules/extractors/TypeScriptExtractor.d.ts +18 -0
- package/dist/modules/extractors/TypeScriptExtractor.d.ts.map +1 -0
- package/dist/modules/extractors/TypeScriptExtractor.js +361 -0
- package/dist/modules/extractors/TypeScriptExtractor.js.map +1 -0
- package/dist/modules/index.d.ts +13 -0
- package/dist/modules/index.d.ts.map +1 -0
- package/dist/modules/index.js +21 -0
- package/dist/modules/index.js.map +1 -0
- package/dist/providers/GitVersionControlProvider.d.ts +108 -0
- package/dist/providers/GitVersionControlProvider.d.ts.map +1 -0
- package/dist/providers/GitVersionControlProvider.js +380 -0
- package/dist/providers/GitVersionControlProvider.js.map +1 -0
- package/dist/providers/PackageManagerApiProvider.d.ts +78 -0
- package/dist/providers/PackageManagerApiProvider.d.ts.map +1 -0
- package/dist/providers/PackageManagerApiProvider.js +14 -0
- package/dist/providers/PackageManagerApiProvider.js.map +1 -0
- package/dist/providers/index.d.ts +4 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/index.js +10 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/services/FilesystemService.d.ts +59 -0
- package/dist/services/FilesystemService.d.ts.map +1 -0
- package/dist/services/FilesystemService.js +391 -0
- package/dist/services/FilesystemService.js.map +1 -0
- package/dist/services/index.d.ts +2 -0
- package/dist/services/index.d.ts.map +1 -0
- package/dist/services/index.js +7 -0
- package/dist/services/index.js.map +1 -0
- package/dist/types/file-system.d.ts +7 -0
- package/dist/types/file-system.d.ts.map +1 -0
- package/dist/types/file-system.js +7 -0
- package/dist/types/file-system.js.map +1 -0
- package/dist/types/index.d.ts +4 -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/layer-types.d.ts +187 -0
- package/dist/types/layer-types.d.ts.map +1 -0
- package/dist/types/layer-types.js +7 -0
- package/dist/types/layer-types.js.map +1 -0
- package/dist/types/version-control-layer.d.ts +53 -0
- package/dist/types/version-control-layer.d.ts.map +1 -0
- package/dist/types/version-control-layer.js +3 -0
- package/dist/types/version-control-layer.js.map +1 -0
- package/dist/types/workspace-boundaries.d.ts +17 -0
- package/dist/types/workspace-boundaries.d.ts.map +1 -0
- package/dist/types/workspace-boundaries.js +7 -0
- package/dist/types/workspace-boundaries.js.map +1 -0
- package/package.json +42 -0
- package/src/index.ts +62 -0
- package/src/modules/DependencyLayerModule.ts +329 -0
- package/src/modules/FileSystemModule.ts +65 -0
- package/src/modules/FileTypeLayerModule.ts +199 -0
- package/src/modules/FrameworkLayerModule.ts +437 -0
- package/src/modules/PackageLayerModule.ts +979 -0
- package/src/modules/TypeExtractionModule.test.ts +340 -0
- package/src/modules/TypeExtractionModule.ts +180 -0
- package/src/modules/VersionControlLayerModule.ts +31 -0
- package/src/modules/__fixtures__/typescript-packages/complex-types/package.json +6 -0
- package/src/modules/__fixtures__/typescript-packages/complex-types/src/index.ts +6 -0
- package/src/modules/__fixtures__/typescript-packages/complex-types/src/models/category.ts +15 -0
- package/src/modules/__fixtures__/typescript-packages/complex-types/src/models/product.ts +48 -0
- package/src/modules/__fixtures__/typescript-packages/javascript-only/index.js +18 -0
- package/src/modules/__fixtures__/typescript-packages/javascript-only/package.json +5 -0
- package/src/modules/__fixtures__/typescript-packages/simple-types/index.ts +53 -0
- package/src/modules/__fixtures__/typescript-packages/simple-types/package.json +6 -0
- package/src/modules/extractors/README.md +55 -0
- package/src/modules/extractors/TypeScriptExtractor.ts +409 -0
- package/src/modules/index.ts +13 -0
- package/src/providers/GitVersionControlProvider.ts +500 -0
- package/src/providers/PackageManagerApiProvider.ts +108 -0
- package/src/providers/README.md +88 -0
- package/src/providers/index.ts +17 -0
- package/src/services/FilesystemService.ts +530 -0
- package/src/services/index.ts +2 -0
- package/src/types/file-system.ts +11 -0
- package/src/types/index.ts +24 -0
- package/src/types/layer-types.ts +264 -0
- package/src/types/version-control-layer.ts +87 -0
- package/src/types/workspace-boundaries.ts +17 -0
package/README.md
ADDED
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# @principal-ai/codebase-composition
|
|
2
|
+
|
|
3
|
+
Codebase decomposition into semantic layers for the Principal AI ecosystem.
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
This package decomposes and composes codebases into structured semantic layers, enabling sophisticated analysis through layer-by-layer examination of project architecture.
|
|
8
|
+
|
|
9
|
+
## Key Features
|
|
10
|
+
|
|
11
|
+
- **Package Layer** - Discover and analyze package.json, requirements.txt, Cargo.toml, etc.
|
|
12
|
+
- **Framework Layer** - Identify React, Vue, Angular, and other frameworks
|
|
13
|
+
- **Type Layer** - Extract TypeScript types and interfaces
|
|
14
|
+
- **Version Control Layer** - Git integration for ignore patterns and file filtering
|
|
15
|
+
- **File Type Layer** - Categorize and analyze different file types
|
|
16
|
+
- **Dependency Layer** - Track and analyze project dependencies
|
|
17
|
+
|
|
18
|
+
## Installation
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
bun install @principal-ai/codebase-composition
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Usage
|
|
25
|
+
|
|
26
|
+
```typescript
|
|
27
|
+
import { PackageLayerModule, FrameworkLayerModule } from '@principal-ai/codebase-composition';
|
|
28
|
+
import { FileTree } from '@principal-ai/repository-abstraction';
|
|
29
|
+
|
|
30
|
+
// Use layer modules to analyze your codebase
|
|
31
|
+
const packageLayer = new PackageLayerModule();
|
|
32
|
+
const frameworkLayer = new FrameworkLayerModule();
|
|
33
|
+
|
|
34
|
+
// Analyze a file tree
|
|
35
|
+
const analysis = await packageLayer.analyze(fileTree);
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## Dependencies
|
|
39
|
+
|
|
40
|
+
- `@principal-ai/repository-abstraction` - For tree abstractions
|
|
41
|
+
- `ignore` - Gitignore pattern matching
|
|
42
|
+
- `js-toml` - TOML parsing
|
|
43
|
+
- `pip-requirements-js` - Python requirements parsing
|
|
44
|
+
- `typescript` - Type extraction
|
|
45
|
+
|
|
46
|
+
## Development
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
# Install dependencies
|
|
50
|
+
bun install
|
|
51
|
+
|
|
52
|
+
# Build the package
|
|
53
|
+
bun run build
|
|
54
|
+
|
|
55
|
+
# Run tests
|
|
56
|
+
bun test
|
|
57
|
+
|
|
58
|
+
# Type checking
|
|
59
|
+
bun run typecheck
|
|
60
|
+
|
|
61
|
+
# Watch mode for development
|
|
62
|
+
bun run dev
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
## License
|
|
66
|
+
|
|
67
|
+
Private package - not for public distribution.
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export type { FilePattern, FileSet, BaseLayer, PackageCommand, ConfigFile, PackageLayer, FileSystemFilterLayer, VersionControlLayer, VersionControlIgnorePattern, VersionControlProvider, FileInfo, DirectoryInfo, FileTree, FileSystemTree, // Alias for backward compatibility
|
|
2
|
+
ExtractedType, PackageTypes, TypeDefinitionLayer, TypeExtractor, } from './types';
|
|
3
|
+
export { FileTypeLayerModule, PackageLayerModule, VersionControlLayerFactory, DependencyLayerModule, FrameworkLayerModule, FileSystemModule, TypeExtractionModule, } from './modules';
|
|
4
|
+
export type { FileTypeInfo, FileSystemModuleConfig, FileSystemLoadResult, TypeExtractionOptions, TypeScriptExtractionOptions, } from './modules';
|
|
5
|
+
export { TypeScriptExtractor } from './modules';
|
|
6
|
+
export { FilesystemService } from './services';
|
|
7
|
+
export { GitVersionControlProvider, PackageManagerApiProvider } from './providers';
|
|
8
|
+
export type { FileSystemAdapter, GitAdapter, ShellAdapter, PackageManager, PackageVersionInfo, VersionCheckResult, VulnerabilityInfo, VulnerabilityCheckResult, LicenseInfo, LicenseCheckResult, DependencyCheckProgress, BatchCheckOptions, } from './providers';
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,YAAY,EACV,WAAW,EACX,OAAO,EACP,SAAS,EACT,cAAc,EACd,UAAU,EACV,YAAY,EACZ,qBAAqB,EACrB,mBAAmB,EACnB,2BAA2B,EAC3B,sBAAsB,EACtB,QAAQ,EACR,aAAa,EACb,QAAQ,EACR,cAAc,EAAE,mCAAmC;AACnD,aAAa,EACb,YAAY,EACZ,mBAAmB,EACnB,aAAa,GACd,MAAM,SAAS,CAAC;AAGjB,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,0BAA0B,EAC1B,qBAAqB,EACrB,oBAAoB,EACpB,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,WAAW,CAAC;AACnB,YAAY,EACV,YAAY,EACZ,sBAAsB,EACtB,oBAAoB,EACpB,qBAAqB,EACrB,2BAA2B,GAC5B,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAGhD,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAG/C,OAAO,EAAE,yBAAyB,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AACnF,YAAY,EACV,iBAAiB,EACjB,UAAU,EACV,YAAY,EACZ,cAAc,EACd,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,EACjB,wBAAwB,EACxB,WAAW,EACX,kBAAkB,EAClB,uBAAuB,EACvB,iBAAiB,GAClB,MAAM,aAAa,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Main export file for layers module
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.PackageManagerApiProvider = exports.GitVersionControlProvider = exports.FilesystemService = exports.TypeScriptExtractor = exports.TypeExtractionModule = exports.FileSystemModule = exports.FrameworkLayerModule = exports.DependencyLayerModule = exports.VersionControlLayerFactory = exports.PackageLayerModule = exports.FileTypeLayerModule = void 0;
|
|
5
|
+
// Modules
|
|
6
|
+
var modules_1 = require("./modules");
|
|
7
|
+
Object.defineProperty(exports, "FileTypeLayerModule", { enumerable: true, get: function () { return modules_1.FileTypeLayerModule; } });
|
|
8
|
+
Object.defineProperty(exports, "PackageLayerModule", { enumerable: true, get: function () { return modules_1.PackageLayerModule; } });
|
|
9
|
+
Object.defineProperty(exports, "VersionControlLayerFactory", { enumerable: true, get: function () { return modules_1.VersionControlLayerFactory; } });
|
|
10
|
+
Object.defineProperty(exports, "DependencyLayerModule", { enumerable: true, get: function () { return modules_1.DependencyLayerModule; } });
|
|
11
|
+
Object.defineProperty(exports, "FrameworkLayerModule", { enumerable: true, get: function () { return modules_1.FrameworkLayerModule; } });
|
|
12
|
+
Object.defineProperty(exports, "FileSystemModule", { enumerable: true, get: function () { return modules_1.FileSystemModule; } });
|
|
13
|
+
Object.defineProperty(exports, "TypeExtractionModule", { enumerable: true, get: function () { return modules_1.TypeExtractionModule; } });
|
|
14
|
+
var modules_2 = require("./modules");
|
|
15
|
+
Object.defineProperty(exports, "TypeScriptExtractor", { enumerable: true, get: function () { return modules_2.TypeScriptExtractor; } });
|
|
16
|
+
// Services
|
|
17
|
+
var services_1 = require("./services");
|
|
18
|
+
Object.defineProperty(exports, "FilesystemService", { enumerable: true, get: function () { return services_1.FilesystemService; } });
|
|
19
|
+
// Providers
|
|
20
|
+
var providers_1 = require("./providers");
|
|
21
|
+
Object.defineProperty(exports, "GitVersionControlProvider", { enumerable: true, get: function () { return providers_1.GitVersionControlProvider; } });
|
|
22
|
+
Object.defineProperty(exports, "PackageManagerApiProvider", { enumerable: true, get: function () { return providers_1.PackageManagerApiProvider; } });
|
|
23
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,qCAAqC;;;AAwBrC,UAAU;AACV,qCAQmB;AAPjB,8GAAA,mBAAmB,OAAA;AACnB,6GAAA,kBAAkB,OAAA;AAClB,qHAAA,0BAA0B,OAAA;AAC1B,gHAAA,qBAAqB,OAAA;AACrB,+GAAA,oBAAoB,OAAA;AACpB,2GAAA,gBAAgB,OAAA;AAChB,+GAAA,oBAAoB,OAAA;AAStB,qCAAgD;AAAvC,8GAAA,mBAAmB,OAAA;AAE5B,WAAW;AACX,uCAA+C;AAAtC,6GAAA,iBAAiB,OAAA;AAE1B,YAAY;AACZ,yCAAmF;AAA1E,sHAAA,yBAAyB,OAAA;AAAE,sHAAA,yBAAyB,OAAA"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { DependencyLayer, PackageLayer } from '../types/layer-types';
|
|
2
|
+
export declare class DependencyLayerModule {
|
|
3
|
+
/**
|
|
4
|
+
* Create dependency layers from package layers
|
|
5
|
+
*/
|
|
6
|
+
createDependencyLayers(packageLayers: PackageLayer[]): DependencyLayer[];
|
|
7
|
+
/**
|
|
8
|
+
* Add a dependency to the map
|
|
9
|
+
*/
|
|
10
|
+
private addDependency;
|
|
11
|
+
/**
|
|
12
|
+
* Get JSON paths for content extraction
|
|
13
|
+
*/
|
|
14
|
+
private getJsonPaths;
|
|
15
|
+
/**
|
|
16
|
+
* Get color for dependency based on type and name
|
|
17
|
+
*/
|
|
18
|
+
private getDependencyColor;
|
|
19
|
+
/**
|
|
20
|
+
* Get icon for dependency based on its name/type
|
|
21
|
+
*/
|
|
22
|
+
private getDependencyIcon;
|
|
23
|
+
/**
|
|
24
|
+
* Analyze dependency health and conflicts
|
|
25
|
+
*/
|
|
26
|
+
analyzeDependencyHealth(dependencyLayers: DependencyLayer[]): {
|
|
27
|
+
duplicates: Array<{
|
|
28
|
+
name: string;
|
|
29
|
+
versions: string[];
|
|
30
|
+
packages: Record<string, string>;
|
|
31
|
+
}>;
|
|
32
|
+
outdated: Array<{
|
|
33
|
+
name: string;
|
|
34
|
+
version: string;
|
|
35
|
+
latest?: string;
|
|
36
|
+
}>;
|
|
37
|
+
security: Array<{
|
|
38
|
+
name: string;
|
|
39
|
+
severity: 'low' | 'medium' | 'high';
|
|
40
|
+
issue: string;
|
|
41
|
+
}>;
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=DependencyLayerModule.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DependencyLayerModule.d.ts","sourceRoot":"","sources":["../../src/modules/DependencyLayerModule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,YAAY,EAAW,MAAM,sBAAsB,CAAC;AAW9E,qBAAa,qBAAqB;IAChC;;OAEG;IACH,sBAAsB,CAAC,aAAa,EAAE,YAAY,EAAE,GAAG,eAAe,EAAE;IAuGxE;;OAEG;IACH,OAAO,CAAC,aAAa;IAwCrB;;OAEG;IACH,OAAO,CAAC,YAAY;IAwBpB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IA8B1B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IA6BzB;;OAEG;IACH,uBAAuB,CAAC,gBAAgB,EAAE,eAAe,EAAE,GAAG;QAC5D,UAAU,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;SAAE,CAAC,CAAC;QAC1F,QAAQ,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAC;YAAC,MAAM,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QACpE,QAAQ,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KACvF;CAoEF"}
|
|
@@ -0,0 +1,286 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DependencyLayerModule = void 0;
|
|
4
|
+
class DependencyLayerModule {
|
|
5
|
+
/**
|
|
6
|
+
* Create dependency layers from package layers
|
|
7
|
+
*/
|
|
8
|
+
createDependencyLayers(packageLayers) {
|
|
9
|
+
const dependencyMap = new Map();
|
|
10
|
+
// Collect all dependencies from all packages
|
|
11
|
+
packageLayers.forEach(packageLayer => {
|
|
12
|
+
const { dependencies, devDependencies, peerDependencies } = packageLayer.packageData;
|
|
13
|
+
const packageName = packageLayer.packageData.name;
|
|
14
|
+
const packagePath = packageLayer.packageData.path;
|
|
15
|
+
// Process production dependencies
|
|
16
|
+
Object.entries(dependencies).forEach(([depName, version]) => {
|
|
17
|
+
this.addDependency(dependencyMap, depName, version, packageName, packagePath, 'prod');
|
|
18
|
+
});
|
|
19
|
+
// Process dev dependencies
|
|
20
|
+
Object.entries(devDependencies).forEach(([depName, version]) => {
|
|
21
|
+
this.addDependency(dependencyMap, depName, version, packageName, packagePath, 'dev');
|
|
22
|
+
});
|
|
23
|
+
// Process peer dependencies
|
|
24
|
+
Object.entries(peerDependencies).forEach(([depName, version]) => {
|
|
25
|
+
this.addDependency(dependencyMap, depName, version, packageName, packagePath, 'peer');
|
|
26
|
+
});
|
|
27
|
+
});
|
|
28
|
+
// Convert to DependencyLayer array
|
|
29
|
+
const dependencyLayers = [];
|
|
30
|
+
dependencyMap.forEach((depInfo, depName) => {
|
|
31
|
+
// For each unique version of this dependency
|
|
32
|
+
depInfo.versions.forEach((packageNames, version) => {
|
|
33
|
+
const declaredIn = Array.from(packageNames);
|
|
34
|
+
const isDev = declaredIn.every(pkg => depInfo.isDev.has(pkg));
|
|
35
|
+
const isPeer = declaredIn.some(pkg => depInfo.isPeer.has(pkg));
|
|
36
|
+
// Create file patterns for all package.json files that declare this dependency
|
|
37
|
+
const patterns = declaredIn.map(pkgName => {
|
|
38
|
+
const path = depInfo.packagePaths.get(pkgName) || '.';
|
|
39
|
+
return {
|
|
40
|
+
type: 'exact',
|
|
41
|
+
pattern: path === '.' ? 'package.json' : `${path}/package.json`,
|
|
42
|
+
description: `${pkgName} package manifest`,
|
|
43
|
+
};
|
|
44
|
+
});
|
|
45
|
+
// Create the source file set
|
|
46
|
+
const sourceFileSet = {
|
|
47
|
+
id: `dep-source-${depName}-${version}`,
|
|
48
|
+
name: 'Package manifests',
|
|
49
|
+
patterns,
|
|
50
|
+
matchedFiles: patterns.map(p => p.pattern),
|
|
51
|
+
fileCount: patterns.length,
|
|
52
|
+
};
|
|
53
|
+
// Determine the dependency type for the ID
|
|
54
|
+
const depType = isPeer ? 'peer' : isDev ? 'dev' : 'prod';
|
|
55
|
+
const layer = {
|
|
56
|
+
id: `dependency-${depType}-${depName}-${version.replace(/[^a-zA-Z0-9]/g, '-')}`,
|
|
57
|
+
name: depName,
|
|
58
|
+
type: 'dependency',
|
|
59
|
+
enabled: false, // Dependencies are not enabled by default
|
|
60
|
+
derivedFrom: {
|
|
61
|
+
fileSets: [sourceFileSet],
|
|
62
|
+
derivationType: 'content',
|
|
63
|
+
description: `${depName}@${version} ${isPeer ? 'peer ' : ''}${isDev ? 'dev ' : ''}dependency`,
|
|
64
|
+
contentExtraction: {
|
|
65
|
+
method: 'parse',
|
|
66
|
+
parser: {
|
|
67
|
+
format: 'json',
|
|
68
|
+
paths: this.getJsonPaths(depName, isDev, isPeer, declaredIn, depInfo),
|
|
69
|
+
},
|
|
70
|
+
},
|
|
71
|
+
},
|
|
72
|
+
dependencyData: {
|
|
73
|
+
name: depName,
|
|
74
|
+
version,
|
|
75
|
+
isDev,
|
|
76
|
+
isPeer,
|
|
77
|
+
declaredIn: declaredIn.map(pkgName => {
|
|
78
|
+
// Find the package layer ID
|
|
79
|
+
const packageLayer = packageLayers.find(p => p.packageData.name === pkgName);
|
|
80
|
+
return packageLayer?.id || `package-${pkgName}`;
|
|
81
|
+
}),
|
|
82
|
+
sourceFile: sourceFileSet,
|
|
83
|
+
},
|
|
84
|
+
color: this.getDependencyColor(depName, isDev, isPeer),
|
|
85
|
+
icon: this.getDependencyIcon(depName),
|
|
86
|
+
pillar: 'foundationHealth',
|
|
87
|
+
};
|
|
88
|
+
dependencyLayers.push(layer);
|
|
89
|
+
});
|
|
90
|
+
});
|
|
91
|
+
// Sort by dependency name and version
|
|
92
|
+
return dependencyLayers.sort((a, b) => {
|
|
93
|
+
const nameCompare = a.name.localeCompare(b.name);
|
|
94
|
+
if (nameCompare !== 0)
|
|
95
|
+
return nameCompare;
|
|
96
|
+
return a.dependencyData.version.localeCompare(b.dependencyData.version);
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Add a dependency to the map
|
|
101
|
+
*/
|
|
102
|
+
addDependency(dependencyMap, depName, version, packageName, packagePath, type) {
|
|
103
|
+
if (!dependencyMap.has(depName)) {
|
|
104
|
+
dependencyMap.set(depName, {
|
|
105
|
+
name: depName,
|
|
106
|
+
versions: new Map(),
|
|
107
|
+
isDev: new Set(),
|
|
108
|
+
isPeer: new Set(),
|
|
109
|
+
isProd: new Set(),
|
|
110
|
+
packagePaths: new Map(),
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
const depInfo = dependencyMap.get(depName);
|
|
114
|
+
// Add version
|
|
115
|
+
if (!depInfo.versions.has(version)) {
|
|
116
|
+
depInfo.versions.set(version, new Set());
|
|
117
|
+
}
|
|
118
|
+
depInfo.versions.get(version).add(packageName);
|
|
119
|
+
// Track package path
|
|
120
|
+
depInfo.packagePaths.set(packageName, packagePath);
|
|
121
|
+
// Track dependency type
|
|
122
|
+
if (type === 'dev') {
|
|
123
|
+
depInfo.isDev.add(packageName);
|
|
124
|
+
}
|
|
125
|
+
else if (type === 'peer') {
|
|
126
|
+
depInfo.isPeer.add(packageName);
|
|
127
|
+
}
|
|
128
|
+
else {
|
|
129
|
+
depInfo.isProd.add(packageName);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Get JSON paths for content extraction
|
|
134
|
+
*/
|
|
135
|
+
getJsonPaths(depName, isDev, isPeer, declaredIn, depInfo) {
|
|
136
|
+
const paths = [];
|
|
137
|
+
declaredIn.forEach(pkgName => {
|
|
138
|
+
if (depInfo.isProd.has(pkgName)) {
|
|
139
|
+
paths.push(`dependencies.${depName}`);
|
|
140
|
+
}
|
|
141
|
+
if (depInfo.isDev.has(pkgName)) {
|
|
142
|
+
paths.push(`devDependencies.${depName}`);
|
|
143
|
+
}
|
|
144
|
+
if (depInfo.isPeer.has(pkgName)) {
|
|
145
|
+
paths.push(`peerDependencies.${depName}`);
|
|
146
|
+
}
|
|
147
|
+
});
|
|
148
|
+
return paths;
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Get color for dependency based on type and name
|
|
152
|
+
*/
|
|
153
|
+
getDependencyColor(name, isDev, isPeer) {
|
|
154
|
+
// Special colors for common dependencies
|
|
155
|
+
const specialColors = {
|
|
156
|
+
react: '#61DAFB',
|
|
157
|
+
'react-dom': '#61DAFB',
|
|
158
|
+
vue: '#4FC08D',
|
|
159
|
+
angular: '#DD0031',
|
|
160
|
+
typescript: '#3178C6',
|
|
161
|
+
webpack: '#8DD6F9',
|
|
162
|
+
vite: '#646CFF',
|
|
163
|
+
jest: '#C21325',
|
|
164
|
+
eslint: '#4B32C3',
|
|
165
|
+
prettier: '#F7B93E',
|
|
166
|
+
lodash: '#3492FF',
|
|
167
|
+
axios: '#5A29E4',
|
|
168
|
+
express: '#000000',
|
|
169
|
+
next: '#000000',
|
|
170
|
+
tailwindcss: '#06B6D4',
|
|
171
|
+
};
|
|
172
|
+
if (specialColors[name]) {
|
|
173
|
+
return specialColors[name];
|
|
174
|
+
}
|
|
175
|
+
// Default colors by type
|
|
176
|
+
if (isPeer)
|
|
177
|
+
return '#FF6B6B'; // Red for peer deps
|
|
178
|
+
if (isDev)
|
|
179
|
+
return '#FFA94D'; // Orange for dev deps
|
|
180
|
+
return '#40C057'; // Green for production deps
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Get icon for dependency based on its name/type
|
|
184
|
+
*/
|
|
185
|
+
getDependencyIcon(name) {
|
|
186
|
+
// Special icons for common dependency types
|
|
187
|
+
if (name.includes('react'))
|
|
188
|
+
return 'atom';
|
|
189
|
+
if (name.includes('vue'))
|
|
190
|
+
return 'triangle';
|
|
191
|
+
if (name.includes('angular'))
|
|
192
|
+
return 'hexagon';
|
|
193
|
+
if (name.includes('test') || name.includes('jest') || name.includes('mocha'))
|
|
194
|
+
return 'test-tube';
|
|
195
|
+
if (name.includes('lint') || name.includes('eslint'))
|
|
196
|
+
return 'check-circle';
|
|
197
|
+
if (name.includes('prettier'))
|
|
198
|
+
return 'palette';
|
|
199
|
+
if (name.includes('webpack') || name.includes('rollup') || name.includes('parcel'))
|
|
200
|
+
return 'package';
|
|
201
|
+
if (name.includes('vite') || name.includes('esbuild'))
|
|
202
|
+
return 'zap';
|
|
203
|
+
if (name.includes('typescript') || name.includes('ts-'))
|
|
204
|
+
return 'file-code';
|
|
205
|
+
if (name.includes('css') || name.includes('style'))
|
|
206
|
+
return 'palette';
|
|
207
|
+
if (name.includes('axios') || name.includes('fetch'))
|
|
208
|
+
return 'download';
|
|
209
|
+
if (name.includes('express') || name.includes('koa') || name.includes('fastify'))
|
|
210
|
+
return 'server';
|
|
211
|
+
if (name.includes('database') || name.includes('mongo') || name.includes('postgres'))
|
|
212
|
+
return 'database';
|
|
213
|
+
if (name.includes('auth') || name.includes('jwt'))
|
|
214
|
+
return 'lock';
|
|
215
|
+
if (name.includes('log') || name.includes('winston') || name.includes('pino'))
|
|
216
|
+
return 'file-text';
|
|
217
|
+
if (name.includes('cli') || name.includes('commander'))
|
|
218
|
+
return 'terminal';
|
|
219
|
+
if (name.includes('crypto') || name.includes('bcrypt'))
|
|
220
|
+
return 'shield';
|
|
221
|
+
// Default icon
|
|
222
|
+
return 'package-2';
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Analyze dependency health and conflicts
|
|
226
|
+
*/
|
|
227
|
+
analyzeDependencyHealth(dependencyLayers) {
|
|
228
|
+
const health = {
|
|
229
|
+
duplicates: [],
|
|
230
|
+
outdated: [],
|
|
231
|
+
security: [],
|
|
232
|
+
};
|
|
233
|
+
// Group by dependency name
|
|
234
|
+
const depGroups = new Map();
|
|
235
|
+
dependencyLayers.forEach(layer => {
|
|
236
|
+
const name = layer.dependencyData.name;
|
|
237
|
+
if (!depGroups.has(name)) {
|
|
238
|
+
depGroups.set(name, []);
|
|
239
|
+
}
|
|
240
|
+
depGroups.get(name).push(layer);
|
|
241
|
+
});
|
|
242
|
+
// Check for duplicates (multiple versions)
|
|
243
|
+
depGroups.forEach((layers, name) => {
|
|
244
|
+
if (layers.length > 1) {
|
|
245
|
+
const versions = new Set();
|
|
246
|
+
const packages = {};
|
|
247
|
+
layers.forEach(layer => {
|
|
248
|
+
versions.add(layer.dependencyData.version);
|
|
249
|
+
// Get package names from declaredIn
|
|
250
|
+
layer.dependencyData.declaredIn.forEach((layerId) => {
|
|
251
|
+
// Extract package name from layer ID (e.g., "package-node-root" -> "root")
|
|
252
|
+
const pkgName = layerId.replace(/^package-[^-]+-/, '');
|
|
253
|
+
packages[pkgName] = layer.dependencyData.version;
|
|
254
|
+
});
|
|
255
|
+
});
|
|
256
|
+
if (versions.size > 1) {
|
|
257
|
+
health.duplicates.push({
|
|
258
|
+
name,
|
|
259
|
+
versions: Array.from(versions),
|
|
260
|
+
packages,
|
|
261
|
+
});
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
});
|
|
265
|
+
// Check for known security issues (simplified)
|
|
266
|
+
const knownIssues = {
|
|
267
|
+
minimist: {
|
|
268
|
+
severity: 'high',
|
|
269
|
+
issue: 'Prototype pollution vulnerability in versions < 1.2.6',
|
|
270
|
+
},
|
|
271
|
+
lodash: { severity: 'medium', issue: 'Multiple vulnerabilities in versions < 4.17.21' },
|
|
272
|
+
'node-fetch': { severity: 'high', issue: 'Denial of service in versions < 2.6.7' },
|
|
273
|
+
};
|
|
274
|
+
depGroups.forEach((layers, name) => {
|
|
275
|
+
if (knownIssues[name]) {
|
|
276
|
+
health.security.push({
|
|
277
|
+
name,
|
|
278
|
+
...knownIssues[name],
|
|
279
|
+
});
|
|
280
|
+
}
|
|
281
|
+
});
|
|
282
|
+
return health;
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
exports.DependencyLayerModule = DependencyLayerModule;
|
|
286
|
+
//# sourceMappingURL=DependencyLayerModule.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DependencyLayerModule.js","sourceRoot":"","sources":["../../src/modules/DependencyLayerModule.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { FileTree } from '@principal-ai/repository-abstraction';
|
|
2
|
+
import { FileSystemFilterLayer, BaseLayer } from '../types';
|
|
3
|
+
export interface FileSystemModuleConfig {
|
|
4
|
+
directoryPath: string;
|
|
5
|
+
buildFileSystemTree: (path: string, filters?: FileSystemFilterLayer[]) => Promise<FileTree>;
|
|
6
|
+
}
|
|
7
|
+
export interface FileSystemLoadResult {
|
|
8
|
+
fileSystemTree: FileTree;
|
|
9
|
+
filterLayers: FileSystemFilterLayer[];
|
|
10
|
+
warningLayers: BaseLayer[];
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Module responsible for loading and filtering the filesystem tree
|
|
14
|
+
* Now simplified to use globby-based filtering
|
|
15
|
+
*/
|
|
16
|
+
export declare class FileSystemModule {
|
|
17
|
+
private config;
|
|
18
|
+
constructor(config: FileSystemModuleConfig);
|
|
19
|
+
/**
|
|
20
|
+
* Load the filesystem tree using globby-based filtering
|
|
21
|
+
*/
|
|
22
|
+
loadFileSystemTree(): Promise<FileSystemLoadResult>;
|
|
23
|
+
/**
|
|
24
|
+
* Get all package.json files from the filesystem tree
|
|
25
|
+
*/
|
|
26
|
+
getPackageJsonFiles(fileSystemTree: FileTree): Array<{
|
|
27
|
+
path: string;
|
|
28
|
+
}>;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=FileSystemModule.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FileSystemModule.d.ts","sourceRoot":"","sources":["../../src/modules/FileSystemModule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,sCAAsC,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAE5D,MAAM,WAAW,sBAAsB;IACrC,aAAa,EAAE,MAAM,CAAC;IACtB,mBAAmB,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,qBAAqB,EAAE,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;CAC7F;AAED,MAAM,WAAW,oBAAoB;IACnC,cAAc,EAAE,QAAQ,CAAC;IACzB,YAAY,EAAE,qBAAqB,EAAE,CAAC;IACtC,aAAa,EAAE,SAAS,EAAE,CAAC;CAC5B;AAED;;;GAGG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAyB;gBAE3B,MAAM,EAAE,sBAAsB;IAI1C;;OAEG;IACG,kBAAkB,IAAI,OAAO,CAAC,oBAAoB,CAAC;IAwBzD;;OAEG;IACH,mBAAmB,CAAC,cAAc,EAAE,QAAQ,GAAG,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CASvE"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FileSystemModule = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Module responsible for loading and filtering the filesystem tree
|
|
6
|
+
* Now simplified to use globby-based filtering
|
|
7
|
+
*/
|
|
8
|
+
class FileSystemModule {
|
|
9
|
+
constructor(config) {
|
|
10
|
+
this.config = config;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Load the filesystem tree using globby-based filtering
|
|
14
|
+
*/
|
|
15
|
+
async loadFileSystemTree() {
|
|
16
|
+
const { directoryPath, buildFileSystemTree } = this.config;
|
|
17
|
+
if (!directoryPath || !buildFileSystemTree) {
|
|
18
|
+
throw new Error('Directory path and buildFileSystemTree function are required');
|
|
19
|
+
}
|
|
20
|
+
console.log('[FileSystemModule] Loading filesystem tree with globby...');
|
|
21
|
+
// Build filesystem tree (adapters handle .gitignore filtering via globby)
|
|
22
|
+
const fileSystemTree = await buildFileSystemTree(directoryPath, []);
|
|
23
|
+
console.log('[FileSystemModule] Tree loaded:', {
|
|
24
|
+
totalFiles: fileSystemTree?.allFiles?.length || 0,
|
|
25
|
+
totalDirectories: fileSystemTree?.allDirectories?.length || 0,
|
|
26
|
+
});
|
|
27
|
+
return {
|
|
28
|
+
fileSystemTree,
|
|
29
|
+
filterLayers: [], // No filter layers - globby handles everything
|
|
30
|
+
warningLayers: [],
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Get all package.json files from the filesystem tree
|
|
35
|
+
*/
|
|
36
|
+
getPackageJsonFiles(fileSystemTree) {
|
|
37
|
+
if (!fileSystemTree?.allFiles) {
|
|
38
|
+
return [];
|
|
39
|
+
}
|
|
40
|
+
return fileSystemTree.allFiles
|
|
41
|
+
.filter(file => file.path?.endsWith('package.json'))
|
|
42
|
+
.map(file => ({ path: file.path }));
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
exports.FileSystemModule = FileSystemModule;
|
|
46
|
+
//# sourceMappingURL=FileSystemModule.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FileSystemModule.js","sourceRoot":"","sources":["../../src/modules/FileSystemModule.ts"],"names":[],"mappings":";;;AAcA;;;GAGG;AACH,MAAa,gBAAgB;IAG3B,YAAY,MAA8B;QACxC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,kBAAkB;QACtB,MAAM,EAAE,aAAa,EAAE,mBAAmB,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;QAE3D,IAAI,CAAC,aAAa,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC3C,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;QAClF,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,2DAA2D,CAAC,CAAC;QAEzE,0EAA0E;QAC1E,MAAM,cAAc,GAAG,MAAM,mBAAmB,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;QAEpE,OAAO,CAAC,GAAG,CAAC,iCAAiC,EAAE;YAC7C,UAAU,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC;YACjD,gBAAgB,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,IAAI,CAAC;SAC9D,CAAC,CAAC;QAEH,OAAO;YACL,cAAc;YACd,YAAY,EAAE,EAAE,EAAE,+CAA+C;YACjE,aAAa,EAAE,EAAE;SAClB,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,mBAAmB,CAAC,cAAwB;QAC1C,IAAI,CAAC,cAAc,EAAE,QAAQ,EAAE,CAAC;YAC9B,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,OAAO,cAAc,CAAC,QAAQ;aAC3B,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAC;aACnD,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAK,EAAE,CAAC,CAAC,CAAC;IACzC,CAAC;CACF;AA9CD,4CA8CC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { FileTree } from '@principal-ai/repository-abstraction';
|
|
2
|
+
import { BaseLayer } from '../types/layer-types';
|
|
3
|
+
export interface FileTypeInfo {
|
|
4
|
+
extension: string;
|
|
5
|
+
name: string;
|
|
6
|
+
count: number;
|
|
7
|
+
files: string[];
|
|
8
|
+
color: string;
|
|
9
|
+
icon: string;
|
|
10
|
+
category?: string;
|
|
11
|
+
}
|
|
12
|
+
export declare class FileTypeLayerModule {
|
|
13
|
+
/**
|
|
14
|
+
* Extract file type information from the file tree
|
|
15
|
+
*/
|
|
16
|
+
extractFileTypes(fileTree: FileTree): FileTypeInfo[];
|
|
17
|
+
/**
|
|
18
|
+
* Create BaseLayer objects from file type information
|
|
19
|
+
*/
|
|
20
|
+
createFileTypeLayers(fileTypes: FileTypeInfo[]): BaseLayer[];
|
|
21
|
+
/**
|
|
22
|
+
* Get file extension from filename
|
|
23
|
+
*/
|
|
24
|
+
private getFileExtension;
|
|
25
|
+
/**
|
|
26
|
+
* Check if a path should be ignored
|
|
27
|
+
*/
|
|
28
|
+
private shouldIgnorePath;
|
|
29
|
+
/**
|
|
30
|
+
* Create file type layers from a file tree
|
|
31
|
+
*/
|
|
32
|
+
processFileTree(fileTree: FileTree): Promise<BaseLayer[]>;
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=FileTypeLayerModule.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FileTypeLayerModule.d.ts","sourceRoot":"","sources":["../../src/modules/FileTypeLayerModule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,sCAAsC,CAAC;AAChE,OAAO,EAAE,SAAS,EAAW,MAAM,sBAAsB,CAAC;AAE1D,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AA8DD,qBAAa,mBAAmB;IAC9B;;OAEG;IACH,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,GAAG,YAAY,EAAE;IA2CpD;;OAEG;IACH,oBAAoB,CAAC,SAAS,EAAE,YAAY,EAAE,GAAG,SAAS,EAAE;IAmC5D;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAQxB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAmBxB;;OAEG;IACG,eAAe,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;CAIhE"}
|