UNPKG

docusaurus-plugin-structurizr

Version:

This plugin allows you to use structurizr diagrams in your docusaurus documentation.

57 lines 2.34 kB
import path from 'node:path'; import { detectExecutor } from './detect-executor.js'; import { findFiles } from './find-files.js'; import { PLUGIN_NAME } from './globals.js'; import { logger } from './logger.js'; import { runStructurizr } from './run-structurizr.js'; /** * Docusaurus plugin to generate diagrams from structurizr DSL files. * This plugin requires structurizr-cli or docker to be installed. * * @see https://docs.structurizr.com/ * @returns {import("@docusaurus/types").Plugin} */ export async function docusaurusPluginStructurizr(context, options) { const { enabled, paths = [], format, executor, dockerImage, additionalStructurizrArgs, ignorePatterns, outputDir, } = options; if (!enabled) { return { name: PLUGIN_NAME, }; } const detectedExecutor = await detectExecutor(executor); const contentPaths = paths .map((contentPath) => { const resolvedPath = path.resolve(context.siteDir, contentPath); return `${resolvedPath}/**/*.dsl`; }) .concat( // exclude "include" files ignorePatterns.map((ignorePattern) => `!${context.siteDir}${ignorePattern}`)); return { name: PLUGIN_NAME, async loadContent() { const files = await findFiles(contentPaths); logger.info('Generating diagrams...'); const results = await Promise.allSettled(files.map((file) => runStructurizr(file, { docsPath: context.siteDir, executor: detectedExecutor, dockerImage, format, additionalStructurizrArgs, outputDir, }))); const successes = results.filter((result) => result.status === 'fulfilled'); if (successes.length > 0) { logger.info(`Generated ${successes.length} diagram${successes.length !== 1 ? 's' : ''}.`); } const errors = results.filter((result) => result.status === 'rejected'); if (errors.length > 0) { logger.error(`${errors.length} errors while generating diagrams:\n`, ...errors.map((error) => `${error.reason}\n`)); } }, getPathsToWatch() { return contentPaths; }, }; } //# sourceMappingURL=docusaurus-plugin-structurizer.js.map