@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.
Files changed (129) hide show
  1. package/README.md +67 -0
  2. package/dist/index.d.ts +9 -0
  3. package/dist/index.d.ts.map +1 -0
  4. package/dist/index.js +23 -0
  5. package/dist/index.js.map +1 -0
  6. package/dist/modules/DependencyLayerModule.d.ts +44 -0
  7. package/dist/modules/DependencyLayerModule.d.ts.map +1 -0
  8. package/dist/modules/DependencyLayerModule.js +286 -0
  9. package/dist/modules/DependencyLayerModule.js.map +1 -0
  10. package/dist/modules/FileSystemModule.d.ts +30 -0
  11. package/dist/modules/FileSystemModule.d.ts.map +1 -0
  12. package/dist/modules/FileSystemModule.js +46 -0
  13. package/dist/modules/FileSystemModule.js.map +1 -0
  14. package/dist/modules/FileTypeLayerModule.d.ts +34 -0
  15. package/dist/modules/FileTypeLayerModule.d.ts.map +1 -0
  16. package/dist/modules/FileTypeLayerModule.js +169 -0
  17. package/dist/modules/FileTypeLayerModule.js.map +1 -0
  18. package/dist/modules/FrameworkLayerModule.d.ts +22 -0
  19. package/dist/modules/FrameworkLayerModule.d.ts.map +1 -0
  20. package/dist/modules/FrameworkLayerModule.js +388 -0
  21. package/dist/modules/FrameworkLayerModule.js.map +1 -0
  22. package/dist/modules/PackageLayerModule.d.ts +23 -0
  23. package/dist/modules/PackageLayerModule.d.ts.map +1 -0
  24. package/dist/modules/PackageLayerModule.js +810 -0
  25. package/dist/modules/PackageLayerModule.js.map +1 -0
  26. package/dist/modules/TypeExtractionModule.d.ts +37 -0
  27. package/dist/modules/TypeExtractionModule.d.ts.map +1 -0
  28. package/dist/modules/TypeExtractionModule.js +180 -0
  29. package/dist/modules/TypeExtractionModule.js.map +1 -0
  30. package/dist/modules/VersionControlLayerModule.d.ts +10 -0
  31. package/dist/modules/VersionControlLayerModule.d.ts.map +1 -0
  32. package/dist/modules/VersionControlLayerModule.js +32 -0
  33. package/dist/modules/VersionControlLayerModule.js.map +1 -0
  34. package/dist/modules/__fixtures__/typescript-packages/complex-types/src/index.d.ts +4 -0
  35. package/dist/modules/__fixtures__/typescript-packages/complex-types/src/index.d.ts.map +1 -0
  36. package/dist/modules/__fixtures__/typescript-packages/complex-types/src/index.js +7 -0
  37. package/dist/modules/__fixtures__/typescript-packages/complex-types/src/index.js.map +1 -0
  38. package/dist/modules/__fixtures__/typescript-packages/complex-types/src/models/category.d.ts +15 -0
  39. package/dist/modules/__fixtures__/typescript-packages/complex-types/src/models/category.d.ts.map +1 -0
  40. package/dist/modules/__fixtures__/typescript-packages/complex-types/src/models/category.js +3 -0
  41. package/dist/modules/__fixtures__/typescript-packages/complex-types/src/models/category.js.map +1 -0
  42. package/dist/modules/__fixtures__/typescript-packages/complex-types/src/models/product.d.ts +34 -0
  43. package/dist/modules/__fixtures__/typescript-packages/complex-types/src/models/product.d.ts.map +1 -0
  44. package/dist/modules/__fixtures__/typescript-packages/complex-types/src/models/product.js +23 -0
  45. package/dist/modules/__fixtures__/typescript-packages/complex-types/src/models/product.js.map +1 -0
  46. package/dist/modules/__fixtures__/typescript-packages/simple-types/index.d.ts +39 -0
  47. package/dist/modules/__fixtures__/typescript-packages/simple-types/index.d.ts.map +1 -0
  48. package/dist/modules/__fixtures__/typescript-packages/simple-types/index.js +39 -0
  49. package/dist/modules/__fixtures__/typescript-packages/simple-types/index.js.map +1 -0
  50. package/dist/modules/extractors/TypeScriptExtractor.d.ts +18 -0
  51. package/dist/modules/extractors/TypeScriptExtractor.d.ts.map +1 -0
  52. package/dist/modules/extractors/TypeScriptExtractor.js +361 -0
  53. package/dist/modules/extractors/TypeScriptExtractor.js.map +1 -0
  54. package/dist/modules/index.d.ts +13 -0
  55. package/dist/modules/index.d.ts.map +1 -0
  56. package/dist/modules/index.js +21 -0
  57. package/dist/modules/index.js.map +1 -0
  58. package/dist/providers/GitVersionControlProvider.d.ts +108 -0
  59. package/dist/providers/GitVersionControlProvider.d.ts.map +1 -0
  60. package/dist/providers/GitVersionControlProvider.js +380 -0
  61. package/dist/providers/GitVersionControlProvider.js.map +1 -0
  62. package/dist/providers/PackageManagerApiProvider.d.ts +78 -0
  63. package/dist/providers/PackageManagerApiProvider.d.ts.map +1 -0
  64. package/dist/providers/PackageManagerApiProvider.js +14 -0
  65. package/dist/providers/PackageManagerApiProvider.js.map +1 -0
  66. package/dist/providers/index.d.ts +4 -0
  67. package/dist/providers/index.d.ts.map +1 -0
  68. package/dist/providers/index.js +10 -0
  69. package/dist/providers/index.js.map +1 -0
  70. package/dist/services/FilesystemService.d.ts +59 -0
  71. package/dist/services/FilesystemService.d.ts.map +1 -0
  72. package/dist/services/FilesystemService.js +391 -0
  73. package/dist/services/FilesystemService.js.map +1 -0
  74. package/dist/services/index.d.ts +2 -0
  75. package/dist/services/index.d.ts.map +1 -0
  76. package/dist/services/index.js +7 -0
  77. package/dist/services/index.js.map +1 -0
  78. package/dist/types/file-system.d.ts +7 -0
  79. package/dist/types/file-system.d.ts.map +1 -0
  80. package/dist/types/file-system.js +7 -0
  81. package/dist/types/file-system.js.map +1 -0
  82. package/dist/types/index.d.ts +4 -0
  83. package/dist/types/index.d.ts.map +1 -0
  84. package/dist/types/index.js +3 -0
  85. package/dist/types/index.js.map +1 -0
  86. package/dist/types/layer-types.d.ts +187 -0
  87. package/dist/types/layer-types.d.ts.map +1 -0
  88. package/dist/types/layer-types.js +7 -0
  89. package/dist/types/layer-types.js.map +1 -0
  90. package/dist/types/version-control-layer.d.ts +53 -0
  91. package/dist/types/version-control-layer.d.ts.map +1 -0
  92. package/dist/types/version-control-layer.js +3 -0
  93. package/dist/types/version-control-layer.js.map +1 -0
  94. package/dist/types/workspace-boundaries.d.ts +17 -0
  95. package/dist/types/workspace-boundaries.d.ts.map +1 -0
  96. package/dist/types/workspace-boundaries.js +7 -0
  97. package/dist/types/workspace-boundaries.js.map +1 -0
  98. package/package.json +42 -0
  99. package/src/index.ts +62 -0
  100. package/src/modules/DependencyLayerModule.ts +329 -0
  101. package/src/modules/FileSystemModule.ts +65 -0
  102. package/src/modules/FileTypeLayerModule.ts +199 -0
  103. package/src/modules/FrameworkLayerModule.ts +437 -0
  104. package/src/modules/PackageLayerModule.ts +979 -0
  105. package/src/modules/TypeExtractionModule.test.ts +340 -0
  106. package/src/modules/TypeExtractionModule.ts +180 -0
  107. package/src/modules/VersionControlLayerModule.ts +31 -0
  108. package/src/modules/__fixtures__/typescript-packages/complex-types/package.json +6 -0
  109. package/src/modules/__fixtures__/typescript-packages/complex-types/src/index.ts +6 -0
  110. package/src/modules/__fixtures__/typescript-packages/complex-types/src/models/category.ts +15 -0
  111. package/src/modules/__fixtures__/typescript-packages/complex-types/src/models/product.ts +48 -0
  112. package/src/modules/__fixtures__/typescript-packages/javascript-only/index.js +18 -0
  113. package/src/modules/__fixtures__/typescript-packages/javascript-only/package.json +5 -0
  114. package/src/modules/__fixtures__/typescript-packages/simple-types/index.ts +53 -0
  115. package/src/modules/__fixtures__/typescript-packages/simple-types/package.json +6 -0
  116. package/src/modules/extractors/README.md +55 -0
  117. package/src/modules/extractors/TypeScriptExtractor.ts +409 -0
  118. package/src/modules/index.ts +13 -0
  119. package/src/providers/GitVersionControlProvider.ts +500 -0
  120. package/src/providers/PackageManagerApiProvider.ts +108 -0
  121. package/src/providers/README.md +88 -0
  122. package/src/providers/index.ts +17 -0
  123. package/src/services/FilesystemService.ts +530 -0
  124. package/src/services/index.ts +2 -0
  125. package/src/types/file-system.ts +11 -0
  126. package/src/types/index.ts +24 -0
  127. package/src/types/layer-types.ts +264 -0
  128. package/src/types/version-control-layer.ts +87 -0
  129. package/src/types/workspace-boundaries.ts +17 -0
@@ -0,0 +1,361 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.TypeScriptExtractor = void 0;
37
+ const fs = __importStar(require("fs"));
38
+ const path = __importStar(require("path"));
39
+ const ts = __importStar(require("typescript"));
40
+ class TypeScriptExtractor {
41
+ constructor() {
42
+ this.name = 'TypeScript';
43
+ }
44
+ canHandle(packagePath, fileExtensions) {
45
+ // Check if package contains TypeScript files
46
+ return fileExtensions.some(ext => ['.ts', '.tsx'].includes(ext));
47
+ }
48
+ async extractTypes(packagePath, options = {}) {
49
+ console.log(`[TypeScriptExtractor] Extracting types from package path: ${packagePath}`);
50
+ // Verify package path exists
51
+ if (!fs.existsSync(packagePath)) {
52
+ throw new Error(`Package path does not exist: ${packagePath}`);
53
+ }
54
+ // Read package.json to get package name
55
+ const packageJsonPath = path.join(packagePath, 'package.json');
56
+ let packageName = path.basename(packagePath);
57
+ try {
58
+ const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8'));
59
+ packageName = packageJson.name || packageName;
60
+ }
61
+ catch (error) {
62
+ console.log(`[TypeScriptExtractor] Could not read package.json: ${error}`);
63
+ }
64
+ // Find all TypeScript files in the package
65
+ const tsFiles = this.findTypeScriptFiles(packagePath, options);
66
+ if (tsFiles.length === 0) {
67
+ return {
68
+ packagePath,
69
+ packageName,
70
+ types: [],
71
+ exports: { named: [] },
72
+ };
73
+ }
74
+ // Create a TypeScript program
75
+ const compilerOptions = {
76
+ target: ts.ScriptTarget.ES2020,
77
+ module: ts.ModuleKind.CommonJS,
78
+ lib: ['es2020'],
79
+ declaration: true,
80
+ emitDeclarationOnly: true,
81
+ skipLibCheck: true,
82
+ allowJs: false,
83
+ resolveJsonModule: true,
84
+ esModuleInterop: true,
85
+ strict: true,
86
+ };
87
+ const program = ts.createProgram(tsFiles, compilerOptions);
88
+ const checker = program.getTypeChecker();
89
+ const extractedTypes = [];
90
+ const exportedNames = new Set();
91
+ const defaultExport = {};
92
+ // Process each source file
93
+ for (const sourceFile of program.getSourceFiles()) {
94
+ if (sourceFile.isDeclarationFile)
95
+ continue;
96
+ if (!sourceFile.fileName.startsWith(packagePath))
97
+ continue;
98
+ // Visit each node in the source file
99
+ ts.forEachChild(sourceFile, node => {
100
+ this.visitNode(node, sourceFile, checker, extractedTypes, exportedNames, defaultExport, packagePath);
101
+ });
102
+ }
103
+ // Sort types by kind and name
104
+ extractedTypes.sort((a, b) => {
105
+ const kindOrder = ['interface', 'type', 'class', 'enum', 'function'];
106
+ const aOrder = kindOrder.indexOf(a.kind);
107
+ const bOrder = kindOrder.indexOf(b.kind);
108
+ if (aOrder !== bOrder)
109
+ return aOrder - bOrder;
110
+ return a.name.localeCompare(b.name);
111
+ });
112
+ return {
113
+ packagePath,
114
+ packageName,
115
+ types: extractedTypes,
116
+ exports: {
117
+ named: Array.from(exportedNames),
118
+ default: defaultExport.value,
119
+ },
120
+ };
121
+ }
122
+ async generateDefinitionFile(packageTypes) {
123
+ const lines = [];
124
+ // Add header
125
+ lines.push(`// Type definitions for ${packageTypes.packageName}`);
126
+ lines.push(`// Generated from: ${packageTypes.packagePath}`);
127
+ lines.push(`// Generated on: ${new Date().toISOString()}`);
128
+ lines.push('');
129
+ // Group types by kind
130
+ const typesByKind = packageTypes.types.reduce((acc, type) => {
131
+ if (!acc[type.kind])
132
+ acc[type.kind] = [];
133
+ acc[type.kind].push(type);
134
+ return acc;
135
+ }, {});
136
+ // Add types in order
137
+ const kinds = ['interface', 'type', 'class', 'enum', 'function'];
138
+ for (const kind of kinds) {
139
+ const types = typesByKind[kind];
140
+ if (!types || types.length === 0)
141
+ continue;
142
+ lines.push(`// ${kind.charAt(0).toUpperCase() + kind.slice(1)}s`);
143
+ lines.push('');
144
+ for (const type of types) {
145
+ if (type.jsDoc) {
146
+ lines.push(`/** ${type.jsDoc} */`);
147
+ }
148
+ if (type.isExported) {
149
+ // Remove existing 'export' keyword if present to avoid duplication
150
+ const cleanText = type.text.replace(/^export\s+/, '');
151
+ lines.push(`export ${cleanText}`);
152
+ }
153
+ else {
154
+ lines.push(type.text);
155
+ }
156
+ lines.push('');
157
+ }
158
+ }
159
+ return lines.join('\n');
160
+ }
161
+ findTypeScriptFiles(dir, options = {}) {
162
+ const files = [];
163
+ const walk = (currentDir) => {
164
+ try {
165
+ const entries = fs.readdirSync(currentDir, { withFileTypes: true });
166
+ for (const entry of entries) {
167
+ const fullPath = path.join(currentDir, entry.name);
168
+ if (entry.isDirectory()) {
169
+ // Skip node_modules and hidden directories
170
+ if (entry.name !== 'node_modules' && !entry.name.startsWith('.')) {
171
+ walk(fullPath);
172
+ }
173
+ }
174
+ else if (entry.isFile()) {
175
+ if (entry.name.endsWith('.ts') || entry.name.endsWith('.tsx')) {
176
+ // Skip declaration files
177
+ if (entry.name.endsWith('.d.ts')) {
178
+ continue;
179
+ }
180
+ // Skip test files unless explicitly included
181
+ if (!options.includeTests) {
182
+ if (entry.name.includes('.test.') || entry.name.includes('.spec.')) {
183
+ continue;
184
+ }
185
+ }
186
+ files.push(fullPath);
187
+ }
188
+ }
189
+ }
190
+ }
191
+ catch (error) {
192
+ console.error(`[TypeScriptExtractor] Error reading directory ${currentDir}:`, error);
193
+ }
194
+ };
195
+ walk(dir);
196
+ return files;
197
+ }
198
+ visitNode(node, sourceFile, checker, extractedTypes, exportedNames, defaultExport, packagePath) {
199
+ const modifiers = ts.canHaveModifiers(node) ? ts.getModifiers(node) : undefined;
200
+ const isExported = modifiers?.some(m => m.kind === ts.SyntaxKind.ExportKeyword) || false;
201
+ const isDefaultExport = modifiers?.some(m => m.kind === ts.SyntaxKind.DefaultKeyword) || false;
202
+ // Extract JSDoc comments
203
+ const jsDoc = this.getJSDocComment(node, sourceFile);
204
+ // Get relative file path from package root
205
+ const getRelativeFileName = () => {
206
+ const relativePath = path.relative(packagePath, sourceFile.fileName);
207
+ return relativePath.startsWith('.') ? relativePath : `./${relativePath}`;
208
+ };
209
+ if (ts.isInterfaceDeclaration(node)) {
210
+ const name = node.name?.text || 'Anonymous';
211
+ const text = this.getNodeText(node, sourceFile);
212
+ // Only extract exported types
213
+ if (isExported) {
214
+ extractedTypes.push({
215
+ name,
216
+ kind: 'interface',
217
+ text,
218
+ fileName: getRelativeFileName(),
219
+ isExported,
220
+ jsDoc,
221
+ });
222
+ exportedNames.add(name);
223
+ }
224
+ if (isDefaultExport) {
225
+ defaultExport.value = name;
226
+ }
227
+ }
228
+ else if (ts.isTypeAliasDeclaration(node)) {
229
+ const name = node.name?.text || 'Anonymous';
230
+ const text = this.getNodeText(node, sourceFile);
231
+ if (isExported) {
232
+ extractedTypes.push({
233
+ name,
234
+ kind: 'type',
235
+ text,
236
+ fileName: getRelativeFileName(),
237
+ isExported,
238
+ jsDoc,
239
+ });
240
+ exportedNames.add(name);
241
+ }
242
+ if (isDefaultExport) {
243
+ defaultExport.value = name;
244
+ }
245
+ }
246
+ else if (ts.isClassDeclaration(node)) {
247
+ const name = node.name?.text || 'Anonymous';
248
+ const text = this.getClassSignature(node, sourceFile, checker);
249
+ if (isExported) {
250
+ extractedTypes.push({
251
+ name,
252
+ kind: 'class',
253
+ text,
254
+ fileName: getRelativeFileName(),
255
+ isExported,
256
+ jsDoc,
257
+ });
258
+ exportedNames.add(name);
259
+ }
260
+ if (isDefaultExport) {
261
+ defaultExport.value = name;
262
+ }
263
+ }
264
+ else if (ts.isEnumDeclaration(node)) {
265
+ const name = node.name?.text || 'Anonymous';
266
+ const text = this.getNodeText(node, sourceFile);
267
+ if (isExported) {
268
+ extractedTypes.push({
269
+ name,
270
+ kind: 'enum',
271
+ text,
272
+ fileName: getRelativeFileName(),
273
+ isExported,
274
+ jsDoc,
275
+ });
276
+ exportedNames.add(name);
277
+ }
278
+ if (isDefaultExport) {
279
+ defaultExport.value = name;
280
+ }
281
+ }
282
+ else if (ts.isFunctionDeclaration(node) && node.name) {
283
+ const name = node.name.text;
284
+ const text = this.getFunctionSignature(node, sourceFile, checker);
285
+ if (isExported) {
286
+ extractedTypes.push({
287
+ name,
288
+ kind: 'function',
289
+ text,
290
+ fileName: getRelativeFileName(),
291
+ isExported,
292
+ jsDoc,
293
+ });
294
+ exportedNames.add(name);
295
+ }
296
+ if (isDefaultExport) {
297
+ defaultExport.value = name;
298
+ }
299
+ }
300
+ // Handle export default statements separately
301
+ if (ts.isExportAssignment(node) && !node.isExportEquals) {
302
+ // This is an "export default" statement
303
+ if (ts.isIdentifier(node.expression)) {
304
+ defaultExport.value = node.expression.text;
305
+ }
306
+ }
307
+ // Continue visiting child nodes
308
+ ts.forEachChild(node, child => {
309
+ this.visitNode(child, sourceFile, checker, extractedTypes, exportedNames, defaultExport, packagePath);
310
+ });
311
+ }
312
+ getNodeText(node, sourceFile) {
313
+ return node.getText(sourceFile);
314
+ }
315
+ getJSDocComment(node, _sourceFile) {
316
+ // Get the full JSDoc comments including the main comment and tags
317
+ const jsDocComments = ts.getJSDocCommentsAndTags(node);
318
+ if (jsDocComments.length === 0)
319
+ return undefined;
320
+ const comments = [];
321
+ jsDocComments.forEach(comment => {
322
+ if (ts.isJSDoc(comment)) {
323
+ // Get the main comment text
324
+ if (comment.comment) {
325
+ if (typeof comment.comment === 'string') {
326
+ comments.push(comment.comment);
327
+ }
328
+ else if (Array.isArray(comment.comment)) {
329
+ comments.push(comment.comment.map(c => c.text).join(''));
330
+ }
331
+ }
332
+ // Get text from tags (like @description)
333
+ comment.tags?.forEach(tag => {
334
+ if (tag.comment) {
335
+ if (typeof tag.comment === 'string') {
336
+ comments.push(tag.comment);
337
+ }
338
+ else if (Array.isArray(tag.comment)) {
339
+ comments.push(tag.comment.map(c => c.text).join(''));
340
+ }
341
+ }
342
+ });
343
+ }
344
+ });
345
+ return comments.length > 0 ? comments.join('\n') : undefined;
346
+ }
347
+ getClassSignature(node, sourceFile, _checker) {
348
+ // For now, return the full class declaration
349
+ // In the future, we could extract just the public API
350
+ return this.getNodeText(node, sourceFile);
351
+ }
352
+ getFunctionSignature(node, sourceFile, _checker) {
353
+ // Get just the function signature without the body
354
+ const signature = node.name?.text || 'anonymous';
355
+ const params = node.parameters.map(p => p.getText(sourceFile)).join(', ');
356
+ const returnType = node.type ? `: ${node.type.getText(sourceFile)}` : '';
357
+ return `function ${signature}(${params})${returnType}`;
358
+ }
359
+ }
360
+ exports.TypeScriptExtractor = TypeScriptExtractor;
361
+ //# sourceMappingURL=TypeScriptExtractor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TypeScriptExtractor.js","sourceRoot":"","sources":["../../../src/modules/extractors/TypeScriptExtractor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ export { FileTypeLayerModule } from './FileTypeLayerModule';
2
+ export type { FileTypeInfo } from './FileTypeLayerModule';
3
+ export { PackageLayerModule } from './PackageLayerModule';
4
+ export { VersionControlLayerFactory } from './VersionControlLayerModule';
5
+ export { DependencyLayerModule } from './DependencyLayerModule';
6
+ export { FrameworkLayerModule } from './FrameworkLayerModule';
7
+ export { FileSystemModule } from './FileSystemModule';
8
+ export type { FileSystemModuleConfig, FileSystemLoadResult } from './FileSystemModule';
9
+ export { TypeExtractionModule } from './TypeExtractionModule';
10
+ export type { TypeExtractionOptions } from './TypeExtractionModule';
11
+ export { TypeScriptExtractor } from './extractors/TypeScriptExtractor';
12
+ export type { TypeScriptExtractionOptions } from './extractors/TypeScriptExtractor';
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/modules/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,YAAY,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,YAAY,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AACvF,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,YAAY,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvE,YAAY,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC"}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TypeScriptExtractor = exports.TypeExtractionModule = exports.FileSystemModule = exports.FrameworkLayerModule = exports.DependencyLayerModule = exports.VersionControlLayerFactory = exports.PackageLayerModule = exports.FileTypeLayerModule = void 0;
4
+ // Export layer modules
5
+ var FileTypeLayerModule_1 = require("./FileTypeLayerModule");
6
+ Object.defineProperty(exports, "FileTypeLayerModule", { enumerable: true, get: function () { return FileTypeLayerModule_1.FileTypeLayerModule; } });
7
+ var PackageLayerModule_1 = require("./PackageLayerModule");
8
+ Object.defineProperty(exports, "PackageLayerModule", { enumerable: true, get: function () { return PackageLayerModule_1.PackageLayerModule; } });
9
+ var VersionControlLayerModule_1 = require("./VersionControlLayerModule");
10
+ Object.defineProperty(exports, "VersionControlLayerFactory", { enumerable: true, get: function () { return VersionControlLayerModule_1.VersionControlLayerFactory; } });
11
+ var DependencyLayerModule_1 = require("./DependencyLayerModule");
12
+ Object.defineProperty(exports, "DependencyLayerModule", { enumerable: true, get: function () { return DependencyLayerModule_1.DependencyLayerModule; } });
13
+ var FrameworkLayerModule_1 = require("./FrameworkLayerModule");
14
+ Object.defineProperty(exports, "FrameworkLayerModule", { enumerable: true, get: function () { return FrameworkLayerModule_1.FrameworkLayerModule; } });
15
+ var FileSystemModule_1 = require("./FileSystemModule");
16
+ Object.defineProperty(exports, "FileSystemModule", { enumerable: true, get: function () { return FileSystemModule_1.FileSystemModule; } });
17
+ var TypeExtractionModule_1 = require("./TypeExtractionModule");
18
+ Object.defineProperty(exports, "TypeExtractionModule", { enumerable: true, get: function () { return TypeExtractionModule_1.TypeExtractionModule; } });
19
+ var TypeScriptExtractor_1 = require("./extractors/TypeScriptExtractor");
20
+ Object.defineProperty(exports, "TypeScriptExtractor", { enumerable: true, get: function () { return TypeScriptExtractor_1.TypeScriptExtractor; } });
21
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/modules/index.ts"],"names":[],"mappings":";;;AAAA,uBAAuB;AACvB,6DAA4D;AAAnD,0HAAA,mBAAmB,OAAA;AAE5B,2DAA0D;AAAjD,wHAAA,kBAAkB,OAAA;AAC3B,yEAAyE;AAAhE,uIAAA,0BAA0B,OAAA;AACnC,iEAAgE;AAAvD,8HAAA,qBAAqB,OAAA;AAC9B,+DAA8D;AAArD,4HAAA,oBAAoB,OAAA;AAC7B,uDAAsD;AAA7C,oHAAA,gBAAgB,OAAA;AAEzB,+DAA8D;AAArD,4HAAA,oBAAoB,OAAA;AAE7B,wEAAuE;AAA9D,0HAAA,mBAAmB,OAAA"}
@@ -0,0 +1,108 @@
1
+ import type { Ignore } from 'ignore';
2
+ import { VersionControlProvider, VersionControlLayer, VersionControlIgnorePattern } from '../types/version-control-layer';
3
+ export interface FileSystemAdapter {
4
+ readFile(path: string): Promise<{
5
+ content: string;
6
+ } | null>;
7
+ fileExists?(path: string): Promise<boolean>;
8
+ isDirectory?(path: string): Promise<boolean>;
9
+ readDirectory?(path: string): Promise<string[]>;
10
+ getFileStats?(path: string): Promise<{
11
+ size: number;
12
+ isDirectory: boolean;
13
+ lastModified: Date;
14
+ } | null>;
15
+ /**
16
+ * Fast filtered file tree building - adapters must implement this efficiently
17
+ * for their environment (e.g., using fdir in Node.js, batch APIs for remote, etc.)
18
+ * @returns paths: Array of relative paths from directoryPath (directories end with '/')
19
+ * @returns stats: Optional map of path to file stats for performance
20
+ */
21
+ buildFilteredFileTree(directoryPath: string, patterns?: string[], // Array of gitignore-style patterns to exclude
22
+ sourceDirectory?: string): Promise<{
23
+ paths: string[];
24
+ stats?: Map<string, {
25
+ size: number;
26
+ isDirectory: boolean;
27
+ lastModified: Date;
28
+ }>;
29
+ }>;
30
+ }
31
+ export interface GitAdapter {
32
+ getCurrentBranch?(repoPath: string): Promise<string | null>;
33
+ getCurrentCommit?(repoPath: string): Promise<string | null>;
34
+ getRemotes?(repoPath: string): Promise<Array<{
35
+ name: string;
36
+ url: string;
37
+ type?: 'push' | 'fetch' | 'both';
38
+ }>>;
39
+ getStatus?(repoPath: string): Promise<{
40
+ modified: string[];
41
+ untracked: string[];
42
+ staged: string[];
43
+ }>;
44
+ detectRepository?(path: string): Promise<{
45
+ isGitRepository: boolean;
46
+ currentBranch?: string;
47
+ owner?: string;
48
+ repo?: string;
49
+ } | null>;
50
+ watchGitRepository?(path: string): Promise<boolean>;
51
+ stopWatchingGit?(): Promise<void>;
52
+ onGitStatusChange?(callback: (data: {
53
+ changedFiles: Array<{
54
+ path: string;
55
+ status: 'added' | 'modified' | 'deleted' | 'renamed';
56
+ lastModified?: Date;
57
+ }>;
58
+ }) => void): () => void;
59
+ }
60
+ export interface ShellAdapter {
61
+ openExternal(url: string): Promise<void>;
62
+ }
63
+ /**
64
+ * Git implementation of VersionControlProvider for core library
65
+ * Handles .gitignore parsing and Git-specific operations
66
+ */
67
+ export declare class GitVersionControlProvider implements VersionControlProvider {
68
+ private fileSystemAdapter;
69
+ private gitAdapter?;
70
+ constructor(fileSystemAdapter: FileSystemAdapter, gitAdapter?: GitAdapter | undefined);
71
+ detect(directoryPath: string): Promise<boolean>;
72
+ getRepositoryRoot(directoryPath: string): Promise<string | null>;
73
+ createLayer(repositoryRoot: string): Promise<VersionControlLayer>;
74
+ /**
75
+ * Extract all .gitignore patterns from the repository
76
+ */
77
+ extractIgnorePatterns(repositoryRoot: string): Promise<VersionControlIgnorePattern[]>;
78
+ /**
79
+ * Recursively find and parse .gitignore files
80
+ */
81
+ private findAndParseGitignoreFiles;
82
+ /**
83
+ * Parse a .gitignore file and return patterns using the ignore library
84
+ */
85
+ private parseGitignoreFile;
86
+ /**
87
+ * Create an ignore instance from patterns for efficient filtering
88
+ * This can be used by FilesystemService or other components
89
+ */
90
+ createIgnoreFromPatterns(patterns: VersionControlIgnorePattern[]): Ignore | null;
91
+ /**
92
+ * Get current branch name
93
+ */
94
+ getCurrentBranch(repositoryRoot: string): Promise<string | null>;
95
+ /**
96
+ * Get current commit SHA
97
+ */
98
+ getCurrentRevision(repositoryRoot: string): Promise<string | null>;
99
+ /**
100
+ * Get remote repositories
101
+ */
102
+ getRemotes(repositoryRoot: string): Promise<Array<{
103
+ name: string;
104
+ url: string;
105
+ type: 'push' | 'fetch' | 'both';
106
+ }>>;
107
+ }
108
+ //# sourceMappingURL=GitVersionControlProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GitVersionControlProvider.d.ts","sourceRoot":"","sources":["../../src/providers/GitVersionControlProvider.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAErC,OAAO,EACL,sBAAsB,EACtB,mBAAmB,EACnB,2BAA2B,EAC5B,MAAM,gCAAgC,CAAC;AAGxC,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC,CAAC;IAC5D,UAAU,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC5C,WAAW,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7C,aAAa,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAChD,YAAY,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;QACnC,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,OAAO,CAAC;QACrB,YAAY,EAAE,IAAI,CAAC;KACpB,GAAG,IAAI,CAAC,CAAC;IAEV;;;;;OAKG;IACH,qBAAqB,CACnB,aAAa,EAAE,MAAM,EACrB,QAAQ,CAAC,EAAE,MAAM,EAAE,EAAE,+CAA+C;IACpE,eAAe,CAAC,EAAE,MAAM,GACvB,OAAO,CAAC;QACT,KAAK,EAAE,MAAM,EAAE,CAAC;QAChB,KAAK,CAAC,EAAE,GAAG,CACT,MAAM,EACN;YACE,IAAI,EAAE,MAAM,CAAC;YACb,WAAW,EAAE,OAAO,CAAC;YACrB,YAAY,EAAE,IAAI,CAAC;SACpB,CACF,CAAC;KACH,CAAC,CAAC;CACJ;AAGD,MAAM,WAAW,UAAU;IACzB,gBAAgB,CAAC,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC5D,gBAAgB,CAAC,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC5D,UAAU,CAAC,CACT,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,CAAA;KAAE,CAAC,CAAC,CAAC;IACnF,SAAS,CAAC,CACR,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;QAAC,SAAS,EAAE,MAAM,EAAE,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAC;IAG1E,gBAAgB,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;QACvC,eAAe,EAAE,OAAO,CAAC;QACzB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,GAAG,IAAI,CAAC,CAAC;IACV,kBAAkB,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACpD,eAAe,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAClC,iBAAiB,CAAC,CAChB,QAAQ,EAAE,CAAC,IAAI,EAAE;QACf,YAAY,EAAE,KAAK,CAAC;YAClB,IAAI,EAAE,MAAM,CAAC;YACb,MAAM,EAAE,OAAO,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,CAAC;YACrD,YAAY,CAAC,EAAE,IAAI,CAAC;SACrB,CAAC,CAAC;KACJ,KAAK,IAAI,GACT,MAAM,IAAI,CAAC;CACf;AAGD,MAAM,WAAW,YAAY;IAC3B,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1C;AAyBD;;;GAGG;AACH,qBAAa,yBAA0B,YAAW,sBAAsB;IAEpE,OAAO,CAAC,iBAAiB;IACzB,OAAO,CAAC,UAAU,CAAC;gBADX,iBAAiB,EAAE,iBAAiB,EACpC,UAAU,CAAC,EAAE,UAAU,YAAA;IAG3B,MAAM,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA6B/C,iBAAiB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IA4BhE,WAAW,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;IA0CvE;;OAEG;IACG,qBAAqB,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,2BAA2B,EAAE,CAAC;IA2B3F;;OAEG;YACW,0BAA0B;IAyCxC;;OAEG;YACW,kBAAkB;IAiEhC;;;OAGG;IACH,wBAAwB,CAAC,QAAQ,EAAE,2BAA2B,EAAE,GAAG,MAAM,GAAG,IAAI;IAahF;;OAEG;IACG,gBAAgB,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IA6BtE;;OAEG;IACG,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAqCxE;;OAEG;IACG,UAAU,CACd,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,CAAA;KAAE,CAAC,CAAC;CAmDlF"}