import { Chunker, ChunkingContext } from './types';
import { BaseChunker } from './base';
import { ApexChunker } from './apexChunker';
import { CustomObjectChunker } from './customObjectChunker';
// Generic chunker for unsupported types
class GenericChunker extends BaseChunker {
chunkMetadata(metadata: any): import('./types').MetadataChunk[] {
const content = JSON.stringify(metadata, null, 2);
const symbols = this.extractBasicSymbols(content);
const references = this.extractBasicReferences(content);
return [this.createBaseChunk(
metadata.fullName || metadata.name || 'unknown',
content,
'full_metadata',
symbols,
references
)];
}
}
export class ChunkerFactory {
static getChunker(metadataType: string, context: ChunkingContext): Chunker {
switch (metadataType.toLowerCase()) {
case 'apexclass':
return new ApexChunker(context);
case 'customobject':
return new CustomObjectChunker(context);
case 'apextrigger':
// TODO: Implement TriggerChunker
return new GenericChunker(context);
case 'layout':
// TODO: Implement LayoutChunker
return new GenericChunker(context);
case 'validationrule':
// TODO: Implement ValidationRuleChunker
return new GenericChunker(context);
case 'flow':
// TODO: Implement FlowChunker
return new GenericChunker(context);
case 'profile':
// TODO: Implement ProfileChunker
return new GenericChunker(context);
default:
return new GenericChunker(context);
}
}
}