UNPKG

@dovenv/docs

Version:
399 lines (389 loc) 13.6 kB
import { PwaOptions } from '@vite-pwa/vitepress'; import { transformerTwoslash } from '@shikijs/vitepress-twoslash'; import { groupIconVitePlugin } from 'vitepress-plugin-group-icons'; import { LlmsConfig } from 'vitepress-plugin-llmstxt'; import { DefaultTheme, UserConfig } from 'vitepress'; import { RSSOptions } from 'vitepress-plugin-rss'; import { PackageJSON } from '@dovenv/core/utils'; import * as _dovenv_core from '@dovenv/core'; import { CommandUtils, getCommandUtils } from '@dovenv/core'; type Theme = DefaultTheme.Config; type SocialLink = DefaultTheme.SocialLinkIcon; type Sidebar = Theme['sidebar']; type Nav = Theme['nav']; type SocialLinks = Theme['socialLinks']; type Link = { text: string; desc: string; /** * Icons IDs: https://simpleicons.org/ */ icon: SocialLink; link: string; }; type Links = (Link | { text: string; desc: string; items: Link[]; })[]; type Colors = { text?: string; text2?: string; text3?: string; bg?: string; bgAlt?: string; bgSoft?: string; bgOpacity?: string; shadow?: string; divider?: string; }; type DocsConfig = { /** * Input directory for documentation files. * @default './docs' */ input?: string; /** * Output directory for the built documentation. * @default './build' */ output?: string; /** * Logo URL for the documentation site. * @default '/logo.png' */ logo?: string; /** * Favicon URL for the documentation site. * @default '/favicon.png' */ favicon?: string; /** * Name of the project or documentation. * @default 'DOVENV' */ name?: string; /** * Short description of the project or documentation. * @default 'Workspace documentation' */ /** * Language code for the documentation, e.g., 'en' for English. * @default 'en' */ lang?: string; /** * Path to the documentation files. Used for editLink in pages * @default 'docs' */ docsPath?: string; /** License information for the project. */ license?: { /** * Type of license (e.g., MIT, GPL). * @default 'MIT' */ type?: string; /** URL to the full license text. */ url?: string; }; desc?: string; /** A shorter version of the description for better display. */ shortDesc?: string; /** URL of the project or documentation site. */ url?: string; /** Repository URL for the project. */ repoURL?: string | false; /** URL for the project's issue tracker or bug reports. */ bugsURL?: string | false; /** URL for funding or sponsorship of the project. */ fundingURL?: string | false; /** Additional URL for more resources or links related to the project. */ moreURL?: string | false; /** NPM package URL for the project. */ npmURL?: string | false; /** Version of the project. */ /** CHANGELOG url of the project. */ changelogURL?: string | false; /** contributing url of the project. */ contributingURL?: string | false; version?: string; /** Array of previous versions of the project, each with a name and a URL. */ oldVersions?: { /** The name or label of the old version, e.g., "v1.0", "Legacy". */ name: string; /** URL where the old version documentation */ url: string; }[]; /** Custom styles for the documentation site. */ styles?: { /** Color scheme for the documentation site. */ color?: { /** Primary color for the theme. */ primary?: string; /** Secondary color for the theme. */ secondary?: string; /** Tertiary color for the theme. */ terciary?: string; /** Fourth color for the theme. */ fourth?: string; /** Dark mode colors for the theme. */ dark?: Colors; /** Light mode colors for the theme. */ light?: Colors; }; /** Border radius for elements in the theme. */ radius?: string; }; /** Open Graph meta tags for better link previews on social media. */ og?: { /** Description for the Open Graph metadata. */ description?: string; /** Image URL for the Open Graph metadata. */ image?: string; /** Title for the Open Graph metadata. */ title?: string; /** URL for the site, used in Open Graph metadata. */ url?: string; /** Site name for Open Graph metadata. */ siteName?: string; /** Twitter account associated with the site. */ twitterAccount?: string; }; /** Configuration options for RSS feed. */ rss?: RSSOptions; /** Configuration options for PWA (Progressive Web App) support. */ pwa?: Partial<PwaOptions> | false; /** Custom CSS for the documentation site. */ css?: string; /** Footer configuration with links and copyright information. */ footer?: { /** Links to various social platforms or contact methods. */ links?: { /** Website link for the project or organization. */ web?: string; /** Email link for contacting the project or organization. */ email?: string; /** Twitter link for the project or organization. */ twitter?: string; /** Instagram link for the project or organization. */ instagram?: string; /** Medium link for articles or blogs related to the project. */ medium?: string; }; /** Copyright information for the project. */ copy?: { /** Name to display in copyright notices. */ name?: string; /** URL for the copyright holder or organization. */ url?: string; }; }; /** * Configuration for LLMs text files * @see https://llmstxt.org/ */ llms?: LlmsConfig | false; /** Sidebar configuration for navigation within the documentation. */ sidebar?: Sidebar; /** Active or desactivated sidebar autogenerated */ autoSidebar?: { /** * Display the "Get started" section in the sidebar. * @default true */ intro?: boolean; /** * Display the "Reference" section in the sidebar. * @default true */ reference?: boolean; /** * Display the "Contribute" section in the sidebar. * @default true */ contribute?: boolean; /** * Display the "About" section in the sidebar. * @default true */ about?: boolean; }; /** Navigation configuration for links at the top of the documentation. */ nav?: Nav; /** * Additional navigation links. * Icons IDs: https://simpleicons.org/ */ navLinks?: SocialLinks; /** Server-related configurations, including file watching settings. */ server?: { /** Files that trigger a hot reload on changes. */ hotReloadFiles?: string[]; /** Files that trigger a server restart on changes. */ restartFiles?: string[]; }; /** Contributors information including their details and social links. */ contributors?: { /** Avatar image for the member. */ avatar: string; /** Name of the member. */ name: string; /** Title to be shown below member's name (e.g., Developer). */ title?: string; /** Organization that the member belongs to. */ org?: string; /** URL for the organization. */ orgLink?: string; /** Description for the member. */ desc?: string; /** * Social links for the member (e.g., GitHub, Twitter). * Icons IDs: https://simpleicons.org/ */ links?: SocialLinks; /** URL for the sponsor page for the member. */ sponsor?: string; /** Text for the sponsor link. Defaults to 'Sponsor'. */ actionText?: string; }[]; /** Additional links to display in a special page. */ links?: Links; /** Data related to downloads and version releases. */ download?: { /** * Optional grouping of download items by category. * Each key in the object represents a group name and maps to a string label. * @example * { * "extension": "extension", * "app": "app", * } */ groups?: { [key: string]: string; }; /** * Optional list of downloadable items, where each key represents an item identifier. * Each item includes details such as name, URL, and optionally a logo and type. */ items?: { [key: string]: { /** Name of the downloadable item */ name: string; /** URL to access the downloadable item */ url: string; /** Optional URL for the logo or icon associated with the item */ logo?: string; /** Optional type/category of the item, e.g., "pdf", "image" */ type?: string; }; }; }; /** Group icon options */ groupIcon?: Parameters<typeof groupIconVitePlugin>[0] | false; /** twoslash options */ twoslash?: Parameters<typeof transformerTwoslash>[0] | false; /** VitePress user configuration for additional options. */ vitepress?: UserConfig; /** * Settings for experimental options. * * **Use at your own risk** */ experimental?: { /** * Disable temp directory during compilation. * The temp directory is used to store documentation files in the output directory during the compilation process. * Used to allow input paths with '../' * @default false */ noTempDirOnBuild?: boolean; }; }; /** * Configuration for auto PWA assets generation. * * **Requires**: `@vite-pwa/assets-generator` * @type {PwaOptions['pwaAssets']} * @example * const docsConfig = { * pwa: { * pwaAssets: autoPWAConfig * } * } */ declare const autoPWAConfig: PwaOptions['pwaAssets']; /** * Extracts and constructs documentation configuration from package JSON data. * @param {PackageJSON} pkgData - The package JSON data object. * @returns {Promise<DocsConfig>} A promise that resolves to a `DocsConfig` object containing extracted configuration details like funding URL, bugs URL, license, homepage URL, description, name, version, and contributors. */ declare const getPkgConfig: (pkgData: PackageJSON) => Promise<DocsConfig>; type Response<T> = Promise<T> | T; type Config = DocsConfig | ((utils: CommandUtils) => Response<DocsConfig>); type DocsParams = { config?: Config; utils: CommandUtils; opts?: { packageJsonPath?: string; configPath?: string; debug?: boolean; port?: number; }; }; declare class DocsCore { #private; protected utils: DocsParams['utils']; opts: DocsParams['opts']; constructor({ utils, opts, }: DocsParams); /** * __Starts the development server__. * * This command is a wrapper of the `npx vitepress dev` command. * @param {string[]} [flags] Flags to pass to the underlying `vitepress dev` * command. The `--force` flag is always passed to ensure the server starts * without prompting the user. */ dev(flags?: string[]): Promise<void>; /** * __Builds the documentation site__. * * This command is a wrapper of the `npx vitepress build` command. * @param {string[]} [flags] Flags to pass to the underlying `vitepress build` * command. This allows for customization and control over the build process. */ build(flags?: string[]): Promise<void>; /** * __Starts the preview server__. * * This command is a wrapper of the `npx vitepress preview` command. * @param {string[]} [flags] Flags to pass to the underlying `vitepress preview` * command. This allows for customization and control over the preview process. */ preview(flags?: string[]): Promise<void>; /** * Generate assets for PWA * @param {string[]} [flags] Flags to pass '@vite-pwa/assets-generator' cli * @see https://vite-pwa-org.netlify.app/assets-generator/cli.html */ generatePWAassets(flags?: string[]): Promise<void>; publishToCloudflare(opts: { dir: string; name: string; }): Promise<void>; } declare const docs: (args?: Omit<DocsParams, "utils">, utils?: Parameters<typeof getCommandUtils>[0]) => Promise<DocsCore>; /** * Define a `dovenv` configuration that creates a documentation site for your workspace. * @param {DocsParams['config'] } [config] - The configuration object. * @returns {DocsParams['utils']['config']} The dovenv configuration object. */ declare const docsPlugin: (config?: DocsParams["config"]) => _dovenv_core.Config; /** * Defines a configuration object for the dovenv documentation plugin. * @param {( DocsConfig | DocsConfig[] )[]} config - The configuration object. * @returns {DocsConfig} The defined configuration object. */ declare const defineConfig: (...config: (DocsConfig | DocsConfig[])[]) => DocsConfig; export { type Config, type DocsConfig, type DocsParams, autoPWAConfig, docsPlugin as default, defineConfig, docs, docsPlugin, getPkgConfig };