UNPKG

@openinc/parse-server-opendash

Version:
53 lines (52 loc) 2.84 kB
"use strict"; 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;