UNPKG

@bfra.me/semantic-release

Version:

Semantic Release shareable configuration and plugins for bfra.me.

244 lines (240 loc) 7.01 kB
import { B as BranchConfig, P as PluginSpec, D as DefineConfigOptions, G as GlobalConfig } from '../define-config-DZx0_5qY.js'; import { C as CommitAnalyzerConfig, R as ReleaseNotesGeneratorConfig, a as ChangelogConfig, N as NpmConfig, G as GithubConfig, b as GitConfig } from '../release-notes-generator-CZ4Fl9fQ.js'; import 'type-fest'; /** * Configuration builder pattern for fluent API construction. * * This module provides a fluent API builder pattern for constructing complex * semantic-release configurations in a type-safe and developer-friendly manner, * similar to the pattern used in @bfra.me/eslint-config. * * @example * ```typescript * import {createConfigBuilder} from '@bfra.me/semantic-release' * * const config = createConfigBuilder() * .branches(['main', 'develop']) * .plugins() * .commitAnalyzer() * .releaseNotesGenerator() * .npm() * .github() * .build() * ``` */ /** * Configuration builder for fluent API construction. * * Provides a chainable interface for building semantic-release configurations * with type safety and IntelliSense support. */ declare class ConfigBuilder { private config; private pluginsList; /** * Set the branches configuration. * * @param branches - Branch configuration * @returns The builder instance for chaining */ branches(branches: BranchConfig): this; /** * Set the repository URL. * * @param url - Repository URL * @returns The builder instance for chaining */ repositoryUrl(url: string): this; /** * Set the tag format. * * @param format - Tag format string * @returns The builder instance for chaining */ tagFormat(format: string): this; /** * Enable or disable dry-run mode. * * @param enabled - Whether to enable dry-run mode * @returns The builder instance for chaining */ dryRun(enabled?: boolean): this; /** * Enable or disable CI mode. * * @param enabled - Whether to enable CI mode * @returns The builder instance for chaining */ ci(enabled?: boolean): this; /** * Set debug mode. * * @param enabled - Whether to enable debug mode * @returns The builder instance for chaining */ debug(enabled?: boolean): this; /** * Enter plugin configuration mode. * * @returns A plugin builder for configuring plugins */ plugins(): PluginBuilder; /** * Add a custom plugin configuration. * * @param plugin - Plugin specification * @returns The builder instance for chaining */ addPlugin(plugin: PluginSpec): this; /** * Set plugins directly (replaces any existing plugins). * * @param plugins - Array of plugin specifications * @returns The builder instance for chaining */ setPlugins(plugins: PluginSpec[]): this; /** * Build the final configuration. * * @param options - Build options for validation and processing * @returns The built semantic-release configuration */ build(options?: DefineConfigOptions): GlobalConfig; /** * Get the current configuration without finalizing. * * @returns The current configuration state */ toConfig(): GlobalConfig; } /** * Plugin builder for fluent plugin configuration. * * Provides a chainable interface for adding and configuring semantic-release plugins. */ declare class PluginBuilder { private readonly configBuilder; private readonly pluginsList; constructor(configBuilder: ConfigBuilder, pluginsList: PluginSpec[]); /** * Add @semantic-release/commit-analyzer plugin. * * @param config - Plugin configuration options * @returns The plugin builder for chaining */ commitAnalyzer(config?: CommitAnalyzerConfig): this; /** * Add @semantic-release/release-notes-generator plugin. * * @param config - Plugin configuration options * @returns The plugin builder for chaining */ releaseNotesGenerator(config?: ReleaseNotesGeneratorConfig): this; /** * Add @semantic-release/changelog plugin. * * @param config - Plugin configuration options * @returns The plugin builder for chaining */ changelog(config?: ChangelogConfig): this; /** * Add @semantic-release/npm plugin. * * @param config - Plugin configuration options * @returns The plugin builder for chaining */ npm(config?: NpmConfig): this; /** * Add @semantic-release/github plugin. * * @param config - Plugin configuration options * @returns The plugin builder for chaining */ github(config?: GithubConfig): this; /** * Add @semantic-release/git plugin. * * @param config - Plugin configuration options * @returns The plugin builder for chaining */ git(config?: GitConfig): this; /** * Add a custom plugin. * * @param plugin - Plugin specification * @returns The plugin builder for chaining */ custom(plugin: PluginSpec): this; /** * Return to the main configuration builder. * * @returns The main configuration builder */ done(): ConfigBuilder; /** * Build the final configuration directly from the plugin builder. * * @param options - Build options for validation and processing * @returns The built semantic-release configuration */ build(options?: DefineConfigOptions): GlobalConfig; } /** * Create a new configuration builder. * * @returns A new configuration builder instance * * @example * ```typescript * const config = createConfigBuilder() * .branches(['main']) * .dryRun(false) * .plugins() * .commitAnalyzer() * .releaseNotesGenerator() * .npm() * .github() * .build() * ``` */ declare function createConfigBuilder(): ConfigBuilder; /** * Create a configuration builder with default plugins. * * @returns A configuration builder with common plugins pre-configured * * @example * ```typescript * const config = createDefaultBuilder() * .branches(['main']) * .build() * ``` */ declare function createDefaultBuilder(): ConfigBuilder; /** * Create a configuration builder for npm packages. * * @returns A configuration builder optimized for npm package releases * * @example * ```typescript * const config = createNpmBuilder() * .branches(['main']) * .build() * ``` */ declare function createNpmBuilder(): ConfigBuilder; /** * Create a configuration builder for GitHub releases only. * * @returns A configuration builder optimized for GitHub-only releases * * @example * ```typescript * const config = createGitHubBuilder() * .branches(['main']) * .build() * ``` */ declare function createGitHubBuilder(): ConfigBuilder; export { ConfigBuilder, PluginBuilder, createConfigBuilder, createDefaultBuilder, createGitHubBuilder, createNpmBuilder };