@openinc/parse-server-opendash
Version:
Parse Server Cloud Code for open.INC Stack.
53 lines (52 loc) • 2.84 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.DocumentationOrganizer = void 0;
const TreeNormalizer_1 = require("../services/TreeNormalizer");
const StructureBuilder_1 = require("../services/StructureBuilder");
const ConfigApplier_1 = require("../services/ConfigApplier");
const MetadataEnricher_1 = require("../services/MetadataEnricher");
const ContentLoader_1 = require("../services/ContentLoader");
const FeatureFilter_1 = require("../services/FeatureFilter");
/**
* Documentation Structure Organizer
*/
class DocumentationOrganizer {
/**
* Organize GitHub tree data into a hierarchical structure
*/
static async organizeRepositoryStructure(treeData, fileFilter, rootPath, githubClient, owner, repo, branch, defaultFolderConfig) {
// 1. Normalize tree into flat file list
const { files: normalizedFiles } = TreeNormalizer_1.TreeNormalizer.normalize(treeData, rootPath, fileFilter);
// 2. Build folder structure & identify config.json files
const { root: builtRoot, configFiles } = StructureBuilder_1.StructureBuilder.build(normalizedFiles, rootPath, defaultFolderConfig);
// 3. Apply configs
await ConfigApplier_1.ConfigApplier.apply(builtRoot, configFiles, githubClient, branch, rootPath);
// 4. Apply feature filtering
console.log(`[DocumentationOrganizer] Applying feature-based filtering...`);
const preFilterFileCount = normalizedFiles.length;
const filteredRoot = FeatureFilter_1.FeatureFilter.filterByFeature(builtRoot);
const filteredFiles = FeatureFilter_1.FeatureFilter.filterFileList(normalizedFiles, filteredRoot);
const postFilterFileCount = filteredFiles.length;
if (preFilterFileCount !== postFilterFileCount) {
console.log(`[DocumentationOrganizer] Feature filtering applied: ${preFilterFileCount - postFilterFileCount} files filtered out`);
}
else {
console.log(`[DocumentationOrganizer] Feature filtering applied: no files filtered`);
}
// 5. Enrich commit metadata
if (githubClient && owner && repo) {
await MetadataEnricher_1.MetadataEnricher.enrichCommits(filteredFiles, githubClient, rootPath);
// 6. Load content
await ContentLoader_1.ContentLoader.populate(filteredFiles, githubClient, branch, rootPath);
}
// Build extension map
const filesByExtension = new Map();
for (const f of filteredFiles) {
if (!filesByExtension.has(f.extension))
filesByExtension.set(f.extension, []);
filesByExtension.get(f.extension).push(f);
}
return { root: filteredRoot, allFiles: filteredFiles, filesByExtension };
}
}
exports.DocumentationOrganizer = DocumentationOrganizer;