@bfra.me/semantic-release
Version:
Semantic Release shareable configuration and plugins for bfra.me.
244 lines (240 loc) • 7.01 kB
TypeScript
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 };