gitverse-release 3.0.0 → 3.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -2,8 +2,8 @@
2
2
  "version": 3,
3
3
  "sources": ["../src/index.ts", "../src/config.ts", "../../sdk/dist/api/organizations.js", "../../sdk/dist/api/commits.js", "../../sdk/dist/api/actions.js", "../../sdk/dist/errors.js", "../../sdk/dist/api/stars.js", "../../sdk/dist/api/issues.js", "../../sdk/dist/api/branches.js", "../../sdk/dist/utils.js", "../../sdk/dist/api/repositories.js", "../../sdk/dist/api/collaborators.js", "../../sdk/dist/api/contents.js", "../../sdk/dist/api/teams.js", "../../sdk/dist/api/git.js", "../../sdk/dist/api/releases.js", "../../sdk/dist/api/pulls.js", "../../sdk/dist/api/forks.js", "../../sdk/dist/client.js", "../../sdk/dist/api/users.js", "../../sdk/dist/api/emails.js", "../../sdk/dist/index.js", "../src/gitverse.ts", "../src/utils/changelog.ts", "../src/utils/parser.ts", "../src/utils/git.ts", "../src/utils/version.ts"],
4
4
  "sourcesContent": [
5
- "import { resolve } from \"node:path\";\nimport { loadConfig, validateConfig } from \"./config\";\nimport { createGitVerseClient } from \"./gitverse\";\nimport type {\n CliOptions,\n ConventionalCommit,\n GitRepoInfo,\n PackageConfig,\n ReleaseConfig,\n ReleaseResult,\n VersionBump,\n} from \"./types\";\nimport { generateChangelog, generateReleaseNotes, updateChangelogFile } from \"./utils/changelog\";\nimport {\n createCommit,\n createTag,\n getCommitsSinceTag,\n getCurrentVersion,\n getRepoInfo,\n isWorkingTreeClean,\n pushChanges,\n tagExists,\n updatePackageVersion,\n} from \"./utils/git\";\nimport { parseCommits } from \"./utils/parser\";\nimport { calculateVersionBump } from \"./utils/version\";\n\n/**\n * Печатает информацию о dry run\n */\nfunction printDryRunInfo(\n pkg: PackageConfig,\n currentVersion: string,\n versionBump: VersionBump,\n tag: string,\n commits: ConventionalCommit[],\n changelogEntry: string,\n): void {\n console.log(\"\\n🔍 DRY RUN MODE - No changes will be made\\n\");\n console.log(`📦 Package: ${pkg.packageName}`);\n console.log(`📈 Version: ${currentVersion} → ${versionBump.newVersion}`);\n console.log(`🏷️ Tag: ${tag}`);\n console.log(`💬 Commits: ${commits.length}`);\n console.log(\"\\n📝 CHANGELOG:\\n\");\n console.log(changelogEntry);\n}\n\n/**\n * Печатает информацию об успешном релизе\n */\nfunction printSuccessInfo(\n pkg: PackageConfig,\n currentVersion: string,\n newVersion: string,\n tag: string,\n releaseUrl?: string,\n): void {\n console.log(\"\\n✅ Release created successfully!\\n\");\n console.log(`📦 Package: ${pkg.packageName}`);\n console.log(`📈 Version: ${currentVersion} → ${newVersion}`);\n console.log(`🏷️ Tag: ${tag}`);\n if (releaseUrl) {\n console.log(`🌐 Release: ${releaseUrl}`);\n }\n console.log(\"\");\n}\n\n/**\n * Обновляет файлы пакета\n */\nasync function updatePackageFiles(pkg: PackageConfig, newVersion: string, changelogEntry: string): Promise<string> {\n await updatePackageVersion(pkg.path, newVersion);\n const changelogPath = resolve(pkg.path, pkg.changelog);\n await updateChangelogFile(changelogPath, changelogEntry);\n return changelogPath;\n}\n\n/**\n * Собирает и валидирует коммиты\n */\nasync function collectCommits(\n pkg: PackageConfig,\n options: CliOptions,\n warnings: string[],\n): Promise<ConventionalCommit[]> {\n const rawCommits = await getCommitsSinceTag(pkg.tagPrefix, pkg.path);\n\n if (rawCommits.length === 0 && !options.version) {\n throw new Error(`No commits found since last release for ${pkg.packageName}`);\n }\n\n const commits = parseCommits(rawCommits);\n\n if (commits.length === 0 && !options.version) {\n warnings.push(\"No conventional commits found, but will proceed with patch bump\");\n }\n\n return commits;\n}\n\n/**\n * Вычисляет prerelease тег\n */\nfunction resolvePrereleaseTag(options: CliOptions, config: Required<ReleaseConfig>): string | undefined {\n if (typeof options.prerelease === \"string\") {\n return options.prerelease;\n }\n if (options.prerelease) {\n return config.versioning.prereleasePrefix;\n }\n return;\n}\n\n/**\n * Создает релиз на GitVerse\n */\nasync function createGitVerseRelease(\n options: CliOptions,\n repoInfo: GitRepoInfo,\n commits: ConventionalCommit[],\n config: Required<ReleaseConfig>,\n pkg: PackageConfig,\n versionBump: VersionBump,\n tag: string,\n warnings: string[],\n): Promise<string | undefined> {\n if (options.noRelease) {\n return;\n }\n\n try {\n const gitverseClient = createGitVerseClient(repoInfo);\n const releaseNotes = generateReleaseNotes(commits, config.changelog);\n\n return await gitverseClient.createRelease(tag, `${pkg.packageName} v${versionBump.newVersion}`, releaseNotes, {\n prerelease: !!options.prerelease,\n });\n } catch (error) {\n warnings.push(`Failed to create GitVerse release: ${error instanceof Error ? error.message : String(error)}`);\n return;\n }\n}\n\n/**\n * Выполняет git операции\n */\nasync function performGitOperations(\n config: Required<ReleaseConfig>,\n options: CliOptions,\n pkg: PackageConfig,\n newVersion: string,\n tag: string,\n changelogPath: string,\n): Promise<void> {\n if (config.git.commitChanges && !options.noCommit) {\n const commitMessage = config.git.commitMessage.replace(\"{{package}}\", pkg.name).replace(\"{{version}}\", newVersion);\n\n await createCommit(commitMessage, [resolve(pkg.path, \"package.json\"), changelogPath]);\n }\n\n if (!options.noTag) {\n const tagMessage = config.git.tagMessage.replace(\"{{package}}\", pkg.name).replace(\"{{version}}\", newVersion);\n\n await createTag(tag, tagMessage);\n }\n\n if (config.git.push && !options.noPush) {\n await pushChanges(options.noTag ? undefined : tag);\n }\n}\n\n/**\n * Основная функция для создания релиза\n */\nexport async function release(packageName?: string, options: CliOptions = {}): Promise<ReleaseResult> {\n const result: ReleaseResult = {\n errors: [],\n newVersion: \"\",\n oldVersion: \"\",\n packageName: packageName || \"unknown\",\n success: false,\n warnings: [],\n };\n\n try {\n // Загружаем конфигурацию\n const config = await loadConfig(options.config);\n validateConfig(config);\n\n // Получаем информацию о репозитории\n const repoInfo = await getRepoInfo();\n\n // Определяем какой пакет релизить\n const pkg = resolvePackage(config, packageName);\n\n result.packageName = pkg.packageName;\n\n // Проверяем чистоту рабочей директории\n if (!(options.dryRun || (await isWorkingTreeClean()))) {\n throw new Error(\"Working tree is not clean. Please commit or stash your changes.\");\n }\n\n // Получаем текущую версию\n const currentVersion = await getCurrentVersion(pkg.path);\n result.oldVersion = currentVersion;\n\n // Собираем коммиты\n const commits = await collectCommits(pkg, options, result.warnings);\n\n // Вычисляем новую версию\n const prereleaseTag = resolvePrereleaseTag(options, config);\n const versionBump = calculateVersionBump(currentVersion, commits, options.version, prereleaseTag);\n\n result.newVersion = versionBump.newVersion;\n\n // Проверяем что тег не существует\n const tag = `${pkg.tagPrefix}${versionBump.newVersion}`;\n result.tag = tag;\n\n if (await tagExists(tag)) {\n throw new Error(`Tag ${tag} already exists`);\n }\n\n // Генерируем CHANGELOG\n const changelogEntry = generateChangelog(\n {\n commits,\n date: new Date(),\n repoUrl: repoInfo.url,\n version: versionBump.newVersion,\n },\n config.changelog,\n );\n\n if (options.dryRun) {\n printDryRunInfo(pkg, currentVersion, versionBump, tag, commits, changelogEntry);\n result.success = true;\n return result;\n }\n\n // Обновляем файлы пакета\n const changelogPath = await updatePackageFiles(pkg, versionBump.newVersion, changelogEntry);\n\n // Выполняем git операции\n await performGitOperations(config, options, pkg, versionBump.newVersion, tag, changelogPath);\n\n // Создаем GitVerse Release\n result.releaseUrl = await createGitVerseRelease(\n options,\n repoInfo,\n commits,\n config,\n pkg,\n versionBump,\n tag,\n result.warnings,\n );\n\n result.success = true;\n\n // Выводим итоги\n printSuccessInfo(pkg, currentVersion, versionBump.newVersion, tag, result.releaseUrl);\n\n return result;\n } catch (error) {\n result.success = false;\n result.errors.push(error instanceof Error ? error.message : String(error));\n\n console.error(\"\\n❌ Release failed:\\n\");\n console.error(error);\n console.error(\"\");\n\n return result;\n }\n}\n\n/**\n * Определяет какой пакет релизить\n */\nfunction resolvePackage(config: Required<ReleaseConfig>, packageName?: string): PackageConfig {\n if (!config.monorepo.enabled) {\n // Single package mode\n return {\n changelog: \"CHANGELOG.md\",\n name: \"main\",\n packageName: packageName || \"unknown\",\n path: \".\",\n tagPrefix: \"v\",\n };\n }\n\n // Monorepo mode\n if (!packageName) {\n throw new Error(\"Package name is required in monorepo mode. Use --package <name>\");\n }\n\n const pkg = config.monorepo.packages.find((p) => p.name === packageName);\n\n if (!pkg) {\n throw new Error(\n `Package \"${packageName}\" not found in config. Available packages: ${config.monorepo.packages.map((p) => p.name).join(\", \")}`,\n );\n }\n\n return pkg;\n}\n\nexport { loadConfig, validateConfig } from \"./config\";\nexport { createGitVerseClient } from \"./gitverse\";\n// Экспорты\nexport * from \"./types\";\n",
6
- "import { readFile } from \"node:fs/promises\";\nimport { resolve } from \"node:path\";\nimport type { ReleaseConfig } from \"./types\";\n\n/**\n * Дефолтная конфигурация\n */\nexport const DEFAULT_CONFIG: Required<ReleaseConfig> = {\n changelog: {\n showAuthor: true,\n showHash: true,\n types: {\n build: \"🏗️ Build System\",\n chore: \"🔧 Chores\",\n ci: \"👷 CI/CD\",\n docs: \"📝 Documentation\",\n feat: \"✨ Features\",\n fix: \"🐛 Bug Fixes\",\n perf: \"⚡ Performance\",\n refactor: \"♻️ Refactoring\",\n revert: \"⏪ Reverts\",\n style: \"💄 Styling\",\n test: \"✅ Tests\",\n },\n },\n git: {\n commitChanges: true,\n commitMessage: \"chore(release): {{package}} v{{version}} [skip ci]\",\n push: true,\n tagMessage: \"Release {{package}} v{{version}}\",\n },\n monorepo: {\n enabled: false,\n packages: [],\n },\n versioning: {\n allowPrerelease: false,\n prereleasePrefix: \"beta\",\n },\n};\n\n/**\n * Загружает конфигурацию из файла\n */\nexport async function loadConfig(configPath?: string): Promise<Required<ReleaseConfig>> {\n const path = configPath || \".gitverereleaserc.json\";\n const fullPath = resolve(process.cwd(), path);\n\n try {\n const content = await readFile(fullPath, \"utf-8\");\n const userConfig = JSON.parse(content) as Partial<ReleaseConfig>;\n\n // Мерджим с дефолтной конфигурацией\n return mergeConfig(DEFAULT_CONFIG, userConfig);\n } catch (error) {\n // Если файл не найден, используем дефолтную конфигурацию\n if (error instanceof Error && \"code\" in error && error.code === \"ENOENT\") {\n return DEFAULT_CONFIG;\n }\n\n throw new Error(\n `Failed to load config from ${fullPath}: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n}\n\n/**\n * Мерджит пользовательскую конфигурацию с дефолтной\n */\nfunction mergeConfig(defaults: Required<ReleaseConfig>, user: Partial<ReleaseConfig>): Required<ReleaseConfig> {\n return {\n changelog: {\n ...defaults.changelog,\n ...user.changelog,\n types: {\n ...defaults.changelog.types,\n ...user.changelog?.types,\n },\n },\n git: {\n ...defaults.git,\n ...user.git,\n },\n monorepo: {\n ...defaults.monorepo,\n ...user.monorepo,\n },\n versioning: {\n ...defaults.versioning,\n ...user.versioning,\n },\n };\n}\n\n/**\n * Валидирует конфигурацию\n */\nexport function validateConfig(config: Required<ReleaseConfig>): void {\n if (config.monorepo.enabled && config.monorepo.packages.length === 0) {\n throw new Error(\"Monorepo mode is enabled but no packages are configured\");\n }\n\n for (const pkg of config.monorepo.packages) {\n if (!(pkg.name && pkg.path && pkg.packageName && pkg.tagPrefix)) {\n throw new Error(`Invalid package configuration for ${pkg.name || \"unknown\"}`);\n }\n }\n}\n",
5
+ "import { resolve } from \"node:path\";\nimport { loadConfig, validateConfig } from \"./config\";\nimport { createGitVerseClient } from \"./gitverse\";\nimport type {\n CliOptions,\n ConventionalCommit,\n GitRepoInfo,\n PackageConfig,\n ReleaseConfig,\n ReleaseResult,\n VersionBump,\n} from \"./types\";\nimport { generateChangelog, generateReleaseNotes, updateChangelogFile } from \"./utils/changelog\";\nimport {\n createCommit,\n createTag,\n getCommitsSinceTag,\n getCurrentVersion,\n getPackageInfo,\n getRepoInfo,\n isWorkingTreeClean,\n pushChanges,\n tagExists,\n updatePackageVersion,\n} from \"./utils/git\";\nimport { parseCommits } from \"./utils/parser\";\nimport { calculateVersionBump } from \"./utils/version\";\n\n/**\n * Печатает информацию о dry run\n */\nfunction printDryRunInfo(\n pkg: PackageConfig,\n currentVersion: string,\n versionBump: VersionBump,\n tag: string,\n commits: ConventionalCommit[],\n changelogEntry: string,\n): void {\n console.log(\"\\n🔍 DRY RUN MODE - No changes will be made\\n\");\n console.log(`📦 Package: ${pkg.packageName}`);\n console.log(`📈 Version: ${currentVersion} → ${versionBump.newVersion}`);\n console.log(`🏷️ Tag: ${tag}`);\n console.log(`💬 Commits: ${commits.length}`);\n console.log(\"\\n📝 CHANGELOG:\\n\");\n console.log(changelogEntry);\n}\n\n/**\n * Печатает информацию об успешном релизе\n */\nfunction printSuccessInfo(\n pkg: PackageConfig,\n currentVersion: string,\n newVersion: string,\n tag: string,\n releaseUrl?: string,\n): void {\n console.log(\"\\n✅ Release created successfully!\\n\");\n console.log(`📦 Package: ${pkg.packageName}`);\n console.log(`📈 Version: ${currentVersion} → ${newVersion}`);\n console.log(`🏷️ Tag: ${tag}`);\n if (releaseUrl) {\n console.log(`🌐 Release: ${releaseUrl}`);\n }\n console.log(\"\");\n}\n\n/**\n * Обновляет файлы пакета\n */\nasync function updatePackageFiles(pkg: PackageConfig, newVersion: string, changelogEntry: string): Promise<string> {\n await updatePackageVersion(pkg.path, newVersion);\n const changelogPath = resolve(pkg.path, pkg.changelog);\n await updateChangelogFile(changelogPath, changelogEntry);\n return changelogPath;\n}\n\n/**\n * Собирает и валидирует коммиты\n */\nasync function collectCommits(\n pkg: PackageConfig,\n options: CliOptions,\n warnings: string[],\n): Promise<ConventionalCommit[]> {\n const rawCommits = await getCommitsSinceTag(pkg.tagPrefix, pkg.path);\n\n if (rawCommits.length === 0 && !options.version) {\n throw new Error(`No commits found since last release for ${pkg.packageName}`);\n }\n\n const commits = parseCommits(rawCommits);\n\n if (commits.length === 0 && !options.version) {\n warnings.push(\"No conventional commits found, but will proceed with patch bump\");\n }\n\n return commits;\n}\n\n/**\n * Вычисляет prerelease тег\n */\nfunction resolvePrereleaseTag(options: CliOptions, config: Required<ReleaseConfig>): string | undefined {\n if (typeof options.prerelease === \"string\") {\n return options.prerelease;\n }\n if (options.prerelease) {\n return config.versioning.prereleasePrefix;\n }\n return;\n}\n\n/**\n * Создает релиз на GitVerse\n */\nasync function createGitVerseRelease(\n options: CliOptions,\n repoInfo: GitRepoInfo,\n commits: ConventionalCommit[],\n config: Required<ReleaseConfig>,\n pkg: PackageConfig,\n versionBump: VersionBump,\n tag: string,\n warnings: string[],\n): Promise<string | undefined> {\n if (options.noRelease) {\n return;\n }\n\n try {\n const gitverseClient = createGitVerseClient(repoInfo);\n const releaseNotes = generateReleaseNotes(commits, config.changelog, repoInfo.url);\n\n return await gitverseClient.createRelease(tag, `${pkg.packageName} v${versionBump.newVersion}`, releaseNotes, {\n prerelease: !!options.prerelease,\n });\n } catch (error) {\n warnings.push(`Failed to create GitVerse release: ${error instanceof Error ? error.message : String(error)}`);\n return;\n }\n}\n\n/**\n * Выполняет git операции\n */\nasync function performGitOperations(\n config: Required<ReleaseConfig>,\n options: CliOptions,\n pkg: PackageConfig,\n newVersion: string,\n tag: string,\n changelogPath: string,\n): Promise<void> {\n if (config.git.commitChanges && !options.noCommit) {\n const commitMessage = config.git.commitMessage.replace(\"{{package}}\", pkg.name).replace(\"{{version}}\", newVersion);\n\n await createCommit(commitMessage, [resolve(pkg.path, \"package.json\"), changelogPath]);\n }\n\n if (!options.noTag) {\n const tagMessage = config.git.tagMessage.replace(\"{{package}}\", pkg.name).replace(\"{{version}}\", newVersion);\n\n await createTag(tag, tagMessage);\n }\n\n if (config.git.push && !options.noPush) {\n await pushChanges(options.noTag ? undefined : tag);\n }\n}\n\n/**\n * Основная функция для создания релиза\n */\nexport async function release(packageName?: string, options: CliOptions = {}): Promise<ReleaseResult> {\n const result: ReleaseResult = {\n errors: [],\n newVersion: \"\",\n oldVersion: \"\",\n packageName: packageName || \"unknown\",\n success: false,\n warnings: [],\n };\n\n try {\n // Загружаем конфигурацию\n const config = await loadConfig(options.config);\n validateConfig(config);\n\n // Получаем информацию о репозитории\n const repoInfo = await getRepoInfo();\n\n // Определяем какой пакет релизить\n const pkg = await resolvePackage(config, packageName);\n\n result.packageName = pkg.packageName;\n\n // Проверяем чистоту рабочей директории\n if (!(options.dryRun || (await isWorkingTreeClean()))) {\n throw new Error(\"Working tree is not clean. Please commit or stash your changes.\");\n }\n\n // Получаем текущую версию\n const currentVersion = await getCurrentVersion(pkg.path);\n result.oldVersion = currentVersion;\n\n // Собираем коммиты\n const commits = await collectCommits(pkg, options, result.warnings);\n\n // Вычисляем новую версию\n const prereleaseTag = resolvePrereleaseTag(options, config);\n const versionBump = calculateVersionBump(\n currentVersion,\n commits,\n options.version,\n prereleaseTag,\n config.versioning.preMajorMode,\n );\n\n result.newVersion = versionBump.newVersion;\n\n // Проверяем что тег не существует\n const tag = `${pkg.tagPrefix}${versionBump.newVersion}`;\n result.tag = tag;\n\n if (await tagExists(tag)) {\n throw new Error(`Tag ${tag} already exists`);\n }\n\n // Генерируем CHANGELOG\n const changelogEntry = generateChangelog(\n {\n commits,\n date: new Date(),\n repoUrl: repoInfo.url,\n version: versionBump.newVersion,\n },\n config.changelog,\n );\n\n if (options.dryRun) {\n printDryRunInfo(pkg, currentVersion, versionBump, tag, commits, changelogEntry);\n result.success = true;\n return result;\n }\n\n // Обновляем файлы пакета\n const changelogPath = await updatePackageFiles(pkg, versionBump.newVersion, changelogEntry);\n\n // Выполняем git операции\n await performGitOperations(config, options, pkg, versionBump.newVersion, tag, changelogPath);\n\n // Создаем GitVerse Release\n result.releaseUrl = await createGitVerseRelease(\n options,\n repoInfo,\n commits,\n config,\n pkg,\n versionBump,\n tag,\n result.warnings,\n );\n\n result.success = true;\n\n // Выводим итоги\n printSuccessInfo(pkg, currentVersion, versionBump.newVersion, tag, result.releaseUrl);\n\n return result;\n } catch (error) {\n result.success = false;\n result.errors.push(error instanceof Error ? error.message : String(error));\n\n console.error(\"\\n❌ Release failed:\\n\");\n console.error(error);\n console.error(\"\");\n\n return result;\n }\n}\n\n/**\n * Определяет какой пакет релизить\n */\nasync function resolvePackage(config: Required<ReleaseConfig>, packageName?: string): Promise<PackageConfig> {\n if (!config.monorepo.enabled) {\n // Single package mode - читаем информацию из package.json\n const pkgInfo = await getPackageInfo(\".\");\n\n return {\n changelog: \"CHANGELOG.md\",\n name: \"main\",\n packageName: pkgInfo.name,\n path: \".\",\n tagPrefix: config.versioning.tagPrefix,\n };\n }\n\n // Monorepo mode\n if (!packageName) {\n throw new Error(\"Package name is required in monorepo mode. Use --package <name>\");\n }\n\n const pkg = config.monorepo.packages.find((p) => p.name === packageName);\n\n if (!pkg) {\n throw new Error(\n `Package \"${packageName}\" not found in config. Available packages: ${config.monorepo.packages.map((p) => p.name).join(\", \")}`,\n );\n }\n\n return pkg;\n}\n\nexport { loadConfig, validateConfig } from \"./config\";\nexport { createGitVerseClient } from \"./gitverse\";\n// Экспорты\nexport * from \"./types\";\n",
6
+ "import { readFile } from \"node:fs/promises\";\nimport { resolve } from \"node:path\";\nimport type { ReleaseConfig } from \"./types\";\n\n/**\n * Дефолтная конфигурация\n */\nexport const DEFAULT_CONFIG: Required<ReleaseConfig> = {\n changelog: {\n showAuthor: true,\n showHash: true,\n types: {\n build: \"🏗️ Build System\",\n chore: \"🔧 Chores\",\n ci: \"👷 CI/CD\",\n docs: \"📝 Documentation\",\n feat: \"✨ Features\",\n fix: \"🐛 Bug Fixes\",\n perf: \"⚡ Performance\",\n refactor: \"♻️ Refactoring\",\n revert: \"⏪ Reverts\",\n style: \"💄 Styling\",\n test: \"✅ Tests\",\n },\n },\n git: {\n commitChanges: true,\n commitMessage: \"chore(release): {{package}} v{{version}} [skip ci]\",\n push: true,\n tagMessage: \"Release {{package}} v{{version}}\",\n },\n monorepo: {\n enabled: false,\n packages: [],\n },\n versioning: {\n allowPrerelease: false,\n preMajorMode: \"auto\",\n prereleasePrefix: \"beta\",\n tagPrefix: \"v\",\n },\n};\n\n/**\n * Загружает конфигурацию из файла\n */\nexport async function loadConfig(configPath?: string): Promise<Required<ReleaseConfig>> {\n const path = configPath || \".gitversereleaserc.json\";\n const fullPath = resolve(process.cwd(), path);\n\n try {\n const content = await readFile(fullPath, \"utf-8\");\n const userConfig = JSON.parse(content) as Partial<ReleaseConfig>;\n\n // Мерджим с дефолтной конфигурацией\n return mergeConfig(DEFAULT_CONFIG, userConfig);\n } catch (error) {\n // Если файл не найден, используем дефолтную конфигурацию\n if (error instanceof Error && \"code\" in error && error.code === \"ENOENT\") {\n return DEFAULT_CONFIG;\n }\n\n throw new Error(\n `Failed to load config from ${fullPath}: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n}\n\n/**\n * Мерджит пользовательскую конфигурацию с дефолтной\n */\nfunction mergeConfig(defaults: Required<ReleaseConfig>, user: Partial<ReleaseConfig>): Required<ReleaseConfig> {\n return {\n changelog: {\n ...defaults.changelog,\n ...user.changelog,\n types: {\n ...defaults.changelog.types,\n ...user.changelog?.types,\n },\n },\n git: {\n ...defaults.git,\n ...user.git,\n },\n monorepo: {\n ...defaults.monorepo,\n ...user.monorepo,\n },\n versioning: {\n ...defaults.versioning,\n ...user.versioning,\n },\n };\n}\n\n/**\n * Валидирует конфигурацию\n */\nexport function validateConfig(config: Required<ReleaseConfig>): void {\n if (config.monorepo.enabled && config.monorepo.packages.length === 0) {\n throw new Error(\"Monorepo mode is enabled but no packages are configured\");\n }\n\n for (const pkg of config.monorepo.packages) {\n if (!(pkg.name && pkg.path && pkg.packageName && pkg.tagPrefix)) {\n throw new Error(`Invalid package configuration for ${pkg.name || \"unknown\"}`);\n }\n }\n}\n",
7
7
  "class j{client;constructor(b){this.client=b}async checkMembership(b,h){try{return await this.client.get(`/orgs/${b}/members/${h}`),!0}catch(d){if(d instanceof Error&&d.message.includes(\"404\"))return!1;throw d}}}export{j as OrganizationsApi};\nexport{j as a};\n\n//# debugId=C13270CF8AD6E2A964756E2164756E21\n",
8
8
  "class g{client;constructor(b){this.client=b}list(b,d){return this.client.get(`/repos/${b}/${d}/commits`)}get(b,d,f){return this.client.get(`/repos/${b}/${d}/commits/${f}`)}create(b,d,f){return this.client.post(`/repos/${b}/${d}/git/commits`,f)}}export{g as CommitsApi};\nexport{g as b};\n\n//# debugId=61215F457F0A502764756E2164756E21\n",
9
9
  "class v{client;constructor(b){this.client=b}listOrgRunners(b){return this.client.get(`/orgs/${b}/actions/runners`)}createOrgRegistrationToken(b){return this.client.post(`/orgs/${b}/actions/runners/registration-token`,{})}getOrgRunner(b,h){return this.client.get(`/orgs/${b}/actions/runners/${h}`)}deleteOrgRunner(b,h){return this.client.delete(`/orgs/${b}/actions/runners/${h}`)}listRepoRunners(b,h){return this.client.get(`/repos/${b}/${h}/actions/runners`)}createRepoRegistrationToken(b,h){return this.client.post(`/repos/${b}/${h}/actions/runners/registration-token`,{})}getRepoRunner(b,h,j){return this.client.get(`/repos/${b}/${h}/actions/runners/${j}`)}deleteRepoRunner(b,h,j){return this.client.delete(`/repos/${b}/${h}/actions/runners/${j}`)}listOrgSecrets(b){return this.client.get(`/orgs/${b}/actions/secrets`)}getOrgSecret(b,h){return this.client.get(`/orgs/${b}/actions/secrets/${h}`)}createOrUpdateOrgSecret(b,h,j){return this.client.put(`/orgs/${b}/actions/secrets/${h}`,j)}deleteOrgSecret(b,h){return this.client.delete(`/orgs/${b}/actions/secrets/${h}`)}listRepoSecrets(b,h){return this.client.get(`/repos/${b}/${h}/actions/secrets`)}getRepoSecret(b,h,j){return this.client.get(`/repos/${b}/${h}/actions/secrets/${j}`)}createOrUpdateRepoSecret(b,h,j,q){return this.client.put(`/repos/${b}/${h}/actions/secrets/${j}`,q)}deleteRepoSecret(b,h,j){return this.client.delete(`/repos/${b}/${h}/actions/secrets/${j}`)}listOrgVariables(b){return this.client.get(`/orgs/${b}/actions/variables`)}createOrgVariable(b,h){return this.client.post(`/orgs/${b}/actions/variables`,h)}getOrgVariable(b,h){return this.client.get(`/orgs/${b}/actions/variables/${h}`)}deleteOrgVariable(b,h){return this.client.delete(`/orgs/${b}/actions/variables/${h}`)}updateOrgVariable(b,h,j){return this.client.patch(`/orgs/${b}/actions/variables/${h}`,j)}listRepoVariables(b,h){return this.client.get(`/repos/${b}/${h}/actions/variables`)}createRepoVariable(b,h,j){return this.client.post(`/repos/${b}/${h}/actions/variables`,j)}getRepoVariable(b,h,j){return this.client.get(`/repos/${b}/${h}/actions/variables/${j}`)}deleteRepoVariable(b,h,j){return this.client.delete(`/repos/${b}/${h}/actions/variables/${j}`)}updateRepoVariable(b,h,j,q){return this.client.patch(`/repos/${b}/${h}/actions/variables/${j}`,q)}listArtifacts(b,h){return this.client.get(`/repos/${b}/${h}/actions/artifacts`)}getArtifact(b,h,j){return this.client.get(`/repos/${b}/${h}/actions/artifacts/${j}`)}deleteArtifact(b,h,j){return this.client.delete(`/repos/${b}/${h}/actions/artifacts/${j}`)}downloadArtifact(b,h,j){return this.client.get(`/repos/${b}/${h}/actions/artifacts/${j}/zip`)}downloadArtifactRaw(b,h,j){return this.client.get(`/repos/${b}/${h}/actions/artifacts/${j}/zip/raw`)}getWorkflowDispatchInputs(b,h,j){return this.client.get(`/repos/${b}/${h}/actions/workflows/${j}/dispatches`)}dispatchWorkflow(b,h,j,q){return this.client.post(`/repos/${b}/${h}/actions/workflows/${j}/dispatches`,q)}}export{v as ActionsApi};\nexport{v as c};\n\n//# debugId=C94CD5CE732DF06864756E2164756E21\n",
@@ -18,19 +18,19 @@
18
18
  "class j{client;constructor(b){this.client=b}list(b){return this.client.get(`/orgs/${b}/teams`)}getInvitations(b,d){return this.client.get(`/orgs/${b}/teams/${d}/invitations`)}getMembers(b,d){return this.client.get(`/orgs/${b}/teams/${d}/members`)}addRepository(b,d,f,h){return this.client.put(`/orgs/${b}/teams/${d}/repos/${f}/${h}`,{})}}export{j as TeamsApi};\nexport{j};\n\n//# debugId=3ECAF54B3CA1F91764756E2164756E21\n",
19
19
  "class g{client;constructor(b){this.client=b}createRef(b,d,f){return this.client.post(`/repos/${b}/${d}/git/refs`,f)}createTree(b,d,f){return this.client.post(`/repos/${b}/${d}/git/trees`,f)}getTree(b,d,f){return this.client.get(`/repos/${b}/${d}/git/trees/${f}`)}}export{g as GitApi};\nexport{g as k};\n\n//# debugId=D2B0CB1C080336A564756E2164756E21\n",
20
20
  "class k{client;constructor(b){this.client=b}list(b,f){return this.client.get(`/repos/${b}/${f}/releases`)}create(b,f,h){return this.client.post(`/repos/${b}/${f}/releases`,h)}getByTag(b,f,h){return this.client.get(`/repos/${b}/${f}/releases/tags/${h}`)}deleteByTag(b,f,h){return this.client.delete(`/repos/${b}/${f}/releases/tags/${h}`)}get(b,f,h){return this.client.get(`/repos/${b}/${f}/releases/${h}`)}delete(b,f,h){return this.client.delete(`/repos/${b}/${f}/releases/${h}`)}update(b,f,h,j){return this.client.patch(`/repos/${b}/${f}/releases/${h}`,j)}getAssets(b,f,h){return this.client.get(`/repos/${b}/${f}/releases/${h}/assets`)}uploadAsset(b,f,h,j){return this.client.post(`/repos/${b}/${f}/releases/${h}/assets`,j)}deleteAsset(b,f,h,j){return this.client.delete(`/repos/${b}/${f}/releases/${h}/assets/${j}`)}}export{k as ReleasesApi};\nexport{k as l};\n\n//# debugId=7CD31A4CC1DE9F7664756E2164756E21\n",
21
- "class v{client;constructor(d){this.client=d}create(d,g,f){return this.client.post(`/repos/${d}/${g}/pulls`,f)}get(d,g,f){return this.client.get(`/repos/${d}/${g}/pulls/${f}`)}list(d,g,f){let k=new URL(`/repos/${d}/${g}/pulls`,\"http://localhost\");if(f)k.searchParams.set(\"state\",f);return this.client.get(k.href.replace(\"http://localhost\",\"\"))}update(d,g,f,j){return this.client.patch(`/repos/${d}/${g}/pulls/${f}`,j)}getFiles(d,g,f){return this.client.get(`/repos/${d}/${g}/pulls/${f}/files`)}updateBranch(d,g,f){return this.client.put(`/repos/${d}/${g}/pulls/${f}/update-branch`,{})}getCommits(d,g,f){return this.client.get(`/repos/${d}/${g}/pulls/${f}/commits`)}}export{v as PullsApi};\nexport{v as m};\n\n//# debugId=35A0A924DAC8BD1664756E2164756E21\n",
21
+ "import{v as q}from\"../errors.js\";class v{client;constructor(d){this.client=d}create(d,g,f){return this.client.post(`/repos/${d}/${g}/pulls`,f)}get(d,g,f){return this.client.get(`/repos/${d}/${g}/pulls/${f}`)}list(d,g,f){let k=new URL(`/repos/${d}/${g}/pulls`,\"http://localhost\");if(f)k.searchParams.set(\"state\",f);return this.client.get(k.href.replace(\"http://localhost\",\"\"))}update(d,g,f,j){return this.client.patch(`/repos/${d}/${g}/pulls/${f}`,j)}getFiles(d,g,f){return this.client.get(`/repos/${d}/${g}/pulls/${f}/files`)}updateBranch(d,g,f){return this.client.put(`/repos/${d}/${g}/pulls/${f}/update-branch`,{})}getCommits(d,g,f){return this.client.get(`/repos/${d}/${g}/pulls/${f}/commits`)}async checkIfMerged(d,g,f){try{return await this.client.get(`/repos/${d}/${g}/pulls/${f}/merge`),!0}catch(j){if(j instanceof q&&j.status===404)return!1;throw j}}}export{v as PullsApi};\nexport{v as m};\n\n//# debugId=25A34B7E93392AB864756E2164756E21\n",
22
22
  "import{u as d}from\"../utils.js\";class k{client;constructor(b){this.client=b}async create(b,g,h){let j=await this.client.post(`/repos/${b}/${g}/forks`,h);return d(j)}}export{k as ForksApi};\nexport{k as n};\n\n//# debugId=2E98DE40FBCEC5CA64756E2164756E21\n",
23
23
  "import{v as Q,w as S,x as U}from\"./errors.js\";var F={DELETE:\"DELETE\",GET:\"GET\",PATCH:\"PATCH\",POST:\"POST\",PUT:\"PUT\"};class Y{baseUrl;token;apiVersion;onApiVersionWarning;constructor(j={}){this.baseUrl=j.baseUrl||\"https://api.gitverse.ru\",this.token=j.token,this.apiVersion=j.apiVersion||\"1\"}setToken(j){this.token=j}extractRateLimitInfo(j){let q=j.get(\"GitVerse-RateLimit-Limit\"),x=j.get(\"GitVerse-RateLimit-Remaining\"),z=j.get(\"GitVerse-RateLimit-Retry-After\"),B=j.get(\"Gitverse-Ratelimit-Reset\");if(!(q&&x&&z&&B))return;return{limit:Number.parseInt(q,10),remaining:Number.parseInt(x,10),reset:Number.parseInt(B,10),retryAfter:Number.parseInt(z,10)}}extractApiVersionInfo(j){let q=j.get(\"Gitverse-Api-Version\"),x=j.get(\"Gitverse-Api-Latest-Version\"),z=j.get(\"Gitverse-Api-Deprecation\")===\"true\",B=j.get(\"Gitverse-Api-Decommissioning\");if(!(q&&x))return;return{decommissioning:B||void 0,deprecated:z,latestVersion:x,version:q}}extractMetadata(j){let q=this.extractRateLimitInfo(j),x=this.extractApiVersionInfo(j);if(x?.deprecated&&this.onApiVersionWarning){let z=new U(x.version,x.latestVersion,x.decommissioning);this.onApiVersionWarning(z)}return{apiVersion:x,rateLimit:q}}async request(j,q,x){let z=j.startsWith(\"/\")?j.slice(1):j,B=`${this.baseUrl}/${z}`,J=new Headers;if(J.set(\"Content-Type\",\"application/json\"),J.set(\"Accept\",`application/vnd.gitverse.object+json; version=${this.apiVersion}`),this.token)J.set(\"Authorization\",`Bearer ${this.token}`);let X={body:x?JSON.stringify(x):void 0,headers:J,method:q},D=await fetch(B,X),K=this.extractMetadata(D.headers),N;try{N=await D.json()}catch{N=void 0}if(!D.ok){let O=N?.message||D.statusText;if(D.status===429&&K.rateLimit)throw new S(O||\"Превышен лимит запросов. Попробуйте позже.\",K.rateLimit,K);throw new Q(D.status,O,K)}return N}get(j){return this.request(j,F.GET)}post(j,q){return this.request(j,F.POST,q)}put(j,q){return this.request(j,F.PUT,q)}delete(j,q){return this.request(j,F.DELETE,q)}patch(j,q){return this.request(j,F.PATCH,q)}}export{F as HTTPMethods,Y as GitVerseClient};\nexport{Y as o};\n\n//# debugId=3C1435E422FBD05064756E2164756E21\n",
24
24
  "class d{client;constructor(b){this.client=b}getCurrent(){return this.client.get(\"/user\")}getByUsername(b){return this.client.get(`/users/${b}`)}}export{d as UsersApi};\nexport{d as y};\n\n//# debugId=E77D801B99FD164A64756E2164756E21\n",
25
25
  "class c{client;constructor(b){this.client=b}list(){return this.client.get(\"/user/emails\")}add(b){return this.client.post(\"/user/emails\",b)}remove(b){return this.client.delete(\"/user/emails\",b)}}export{c as EmailsApi};\nexport{c as z};\n\n//# debugId=1FE313BCACDA9D3264756E2164756E21\n",
26
26
  "import{a as L}from\"./api/organizations.js\";import{b as x}from\"./api/commits.js\";import{c as q}from\"./api/actions.js\";import{d as W}from\"./api/stars.js\";import{e as K}from\"./api/issues.js\";import{f as v}from\"./api/branches.js\";import{g as Q}from\"./api/repositories.js\";import{h as w}from\"./api/collaborators.js\";import{i as y}from\"./api/contents.js\";import{j as X}from\"./api/teams.js\";import{k as J}from\"./api/git.js\";import{l as N}from\"./api/releases.js\";import{m as M}from\"./api/pulls.js\";import{n as H}from\"./api/forks.js\";import{o as j}from\"./client.js\";import{p as B,q as E,r as F,s as I,t as O}from\"./enums.js\";import\"./utils.js\";import{v as Z,w as _,x as $}from\"./errors.js\";import{y as Y}from\"./api/users.js\";import{z as D}from\"./api/emails.js\";class P{client;users;repos;contents;pulls;forks;emails;issues;stars;branches;commits;collaborators;organizations;teams;releases;git;actions;constructor(d={}){this.client=new j(d),this.users=new Y(this.client),this.repos=new Q(this.client),this.contents=new y(this.client),this.pulls=new M(this.client),this.forks=new H(this.client),this.emails=new D(this.client),this.issues=new K(this.client),this.stars=new W(this.client),this.branches=new v(this.client),this.commits=new x(this.client),this.collaborators=new w(this.client),this.organizations=new L(this.client),this.teams=new X(this.client),this.releases=new N(this.client),this.git=new J(this.client),this.actions=new q(this.client)}setToken(d){return this.client.setToken(d),this}}export{E as VisibilityType,B as UserType,_ as RateLimitError,I as PullRequestState,O as IssueState,Z as GitVerseApiError,P as GitVerse,F as ContentType,$ as ApiVersionWarning};\n\n//# debugId=1FDA74B2231FF3F964756E2164756E21\n",
27
27
  "import { GitVerse } from \"gitverse-api-sdk\";\nimport type { GitRepoInfo } from \"./types\";\n\n/**\n * GitVerse API клиент для создания релизов\n */\nexport class GitVerseReleaseClient {\n private client: GitVerse;\n private repoInfo: GitRepoInfo;\n\n constructor(token: string, repoInfo: GitRepoInfo) {\n this.client = new GitVerse({ token });\n this.repoInfo = repoInfo;\n }\n\n /**\n * Создает релиз на GitVerse\n */\n async createRelease(\n tag: string,\n name: string,\n body: string,\n options: {\n draft?: boolean;\n prerelease?: boolean;\n } = {},\n ): Promise<string> {\n const { owner, repo } = this.repoInfo;\n\n try {\n await this.client.releases.create(owner, repo, {\n body,\n draft: options.draft,\n name,\n prerelease: options.prerelease,\n tag_name: tag,\n });\n\n // Возвращаем URL релиза\n return `${this.repoInfo.url}/releases/tag/${tag}`;\n } catch (error) {\n throw new Error(`Failed to create GitVerse release: ${error instanceof Error ? error.message : String(error)}`);\n }\n }\n\n /**\n * Проверяет существование релиза по тегу\n */\n async releaseExists(tag: string): Promise<boolean> {\n const { owner, repo } = this.repoInfo;\n\n try {\n await this.client.releases.getByTag(owner, repo, tag);\n return true;\n } catch {\n return false;\n }\n }\n\n /**\n * Получает информацию о релизе по тегу\n */\n async getRelease(tag: string) {\n const { owner, repo } = this.repoInfo;\n return await this.client.releases.getByTag(owner, repo, tag);\n }\n}\n\n/**\n * Создает клиент для работы с GitVerse API\n */\nexport function createGitVerseClient(repoInfo: GitRepoInfo): GitVerseReleaseClient {\n const token = process.env.GITVERSE_TOKEN;\n\n if (!token) {\n throw new Error(\"GITVERSE_TOKEN environment variable is required for creating releases\");\n }\n\n return new GitVerseReleaseClient(token, repoInfo);\n}\n",
28
- "import { readFile, writeFile } from \"node:fs/promises\";\nimport type { ChangelogConfig, ChangelogGenerateOptions, ConventionalCommit } from \"../types\";\nimport { groupCommitsByType } from \"./parser\";\n\n/**\n * Генерирует CHANGELOG для версии\n */\nexport function generateChangelog(options: ChangelogGenerateOptions, config: ChangelogConfig): string {\n const { version, commits, date = new Date(), repoUrl } = options;\n\n const sections: string[] = [];\n\n // Заголовок версии\n const dateStr = date.toISOString().split(\"T\")[0];\n sections.push(`## [${version}] - ${dateStr}`);\n sections.push(\"\");\n\n // Группируем коммиты по типам\n const grouped = groupCommitsByType(commits);\n\n // Сортируем типы по важности\n const typeOrder = [\"feat\", \"fix\", \"perf\", \"refactor\", \"docs\", \"test\", \"build\", \"ci\", \"chore\", \"style\", \"revert\"];\n\n // Сначала breaking changes\n const breakingCommits = commits.filter((c) => c.breaking);\n if (breakingCommits.length > 0) {\n sections.push(\"### ⚠️ BREAKING CHANGES\");\n sections.push(\"\");\n for (const commit of breakingCommits) {\n sections.push(formatCommit(commit, config, repoUrl));\n }\n sections.push(\"\");\n }\n\n // Затем остальные типы\n for (const type of typeOrder) {\n const typeCommits = grouped[type]?.filter((c) => !c.breaking);\n if (!typeCommits || typeCommits.length === 0) {\n continue;\n }\n\n const title = config.types[type] || type.toUpperCase();\n sections.push(`### ${title}`);\n sections.push(\"\");\n\n for (const commit of typeCommits) {\n sections.push(formatCommit(commit, config, repoUrl));\n }\n sections.push(\"\");\n }\n\n return sections.join(\"\\n\");\n}\n\n/**\n * Форматирует коммит для CHANGELOG\n */\nfunction formatCommit(commit: ConventionalCommit, config: ChangelogConfig, repoUrl?: string): string {\n const parts: string[] = [];\n\n // Основное сообщение\n let message = commit.subject;\n\n // Добавляем scope если есть\n if (commit.scope) {\n message = `**${commit.scope}:** ${message}`;\n }\n\n parts.push(`- ${message}`);\n\n // Добавляем hash если включено\n if (config.showHash && repoUrl) {\n parts.push(`([${commit.shortHash}](${repoUrl}/commit/${commit.hash}))`);\n } else if (config.showHash) {\n parts.push(`(${commit.shortHash})`);\n }\n\n // Добавляем автора если включено\n if (config.showAuthor) {\n parts.push(`by @${commit.author}`);\n }\n\n return parts.join(\" \");\n}\n\n/**\n * Обновляет CHANGELOG файл, добавляя новую версию в начало\n */\nexport async function updateChangelogFile(changelogPath: string, newEntry: string): Promise<void> {\n let existingContent = \"\";\n\n try {\n existingContent = await readFile(changelogPath, \"utf-8\");\n } catch (error) {\n // Файл не существует, создаем новый\n if (error instanceof Error && \"code\" in error && error.code === \"ENOENT\") {\n existingContent = \"# Changelog\\n\\nAll notable changes to this project will be documented in this file.\\n\\n\";\n } else {\n throw error;\n }\n }\n\n // Находим место для вставки (после заголовка и описания)\n const lines = existingContent.split(\"\\n\");\n let insertIndex = 0;\n\n // Пропускаем заголовок и пустые строки в начале\n for (let i = 0; i < lines.length; i++) {\n const currentLine = lines[i];\n const prevLine = lines[i - 1];\n\n if (currentLine?.startsWith(\"## \")) {\n // Нашли первую версию\n insertIndex = i;\n break;\n }\n if (i > 0 && currentLine?.trim() === \"\" && prevLine?.trim() !== \"\") {\n // Нашли первую пустую строку после текста\n insertIndex = i + 1;\n }\n }\n\n // Если не нашли место, добавляем в конец\n if (insertIndex === 0) {\n insertIndex = lines.length;\n }\n\n // Вставляем новую запись\n lines.splice(insertIndex, 0, newEntry);\n\n // Записываем обратно\n await writeFile(changelogPath, lines.join(\"\\n\"));\n}\n\n/**\n * Генерирует CHANGELOG текст для GitVerse Release\n * (более компактный формат без markdown заголовков)\n */\nexport function generateReleaseNotes(commits: ConventionalCommit[], config: ChangelogConfig): string {\n const sections: string[] = [];\n\n // Breaking changes\n const breakingCommits = commits.filter((c) => c.breaking);\n if (breakingCommits.length > 0) {\n sections.push(\"⚠️ BREAKING CHANGES:\");\n for (const commit of breakingCommits) {\n sections.push(`- ${commit.subject}`);\n }\n sections.push(\"\");\n }\n\n // Группируем остальные\n const grouped = groupCommitsByType(commits.filter((c) => !c.breaking));\n\n const typeOrder = [\"feat\", \"fix\", \"perf\", \"refactor\"];\n\n for (const type of typeOrder) {\n const typeCommits = grouped[type];\n if (!typeCommits || typeCommits.length === 0) {\n continue;\n }\n\n const title = config.types[type] || type.toUpperCase();\n sections.push(`${title}:`);\n for (const commit of typeCommits) {\n let message = commit.subject;\n if (commit.scope) {\n message = `**${commit.scope}:** ${message}`;\n }\n sections.push(`- ${message}`);\n }\n sections.push(\"\");\n }\n\n return sections.join(\"\\n\").trim();\n}\n",
28
+ "import { readFile, writeFile } from \"node:fs/promises\";\nimport type { ChangelogConfig, ChangelogGenerateOptions, ConventionalCommit } from \"../types\";\nimport { groupCommitsByType } from \"./parser\";\n\n/**\n * Генерирует CHANGELOG для версии\n */\nexport function generateChangelog(options: ChangelogGenerateOptions, config: ChangelogConfig): string {\n const { version, commits, date = new Date(), repoUrl } = options;\n\n const sections: string[] = [];\n\n // Заголовок версии\n const dateStr = date.toISOString().split(\"T\")[0];\n sections.push(`## [${version}] - ${dateStr}`);\n sections.push(\"\");\n\n // Группируем коммиты по типам\n const grouped = groupCommitsByType(commits);\n\n // Сортируем типы по важности\n const typeOrder = [\"feat\", \"fix\", \"perf\", \"refactor\", \"docs\", \"test\", \"build\", \"ci\", \"chore\", \"style\", \"revert\"];\n\n // Сначала breaking changes\n const breakingCommits = commits.filter((c) => c.breaking);\n if (breakingCommits.length > 0) {\n sections.push(\"### ⚠️ BREAKING CHANGES\");\n sections.push(\"\");\n for (const commit of breakingCommits) {\n sections.push(formatCommit(commit, config, repoUrl));\n }\n sections.push(\"\");\n }\n\n // Затем остальные типы\n for (const type of typeOrder) {\n const typeCommits = grouped[type]?.filter((c) => !c.breaking);\n if (!typeCommits || typeCommits.length === 0) {\n continue;\n }\n\n const title = config.types[type] || type.toUpperCase();\n sections.push(`### ${title}`);\n sections.push(\"\");\n\n for (const commit of typeCommits) {\n sections.push(formatCommit(commit, config, repoUrl));\n }\n sections.push(\"\");\n }\n\n return sections.join(\"\\n\");\n}\n\n/**\n * Форматирует коммит для CHANGELOG\n */\nfunction formatCommit(commit: ConventionalCommit, config: ChangelogConfig, repoUrl?: string): string {\n const parts: string[] = [];\n\n // Основное сообщение\n let message = commit.subject;\n\n // Добавляем scope если есть\n if (commit.scope) {\n message = `**${commit.scope}:** ${message}`;\n }\n\n parts.push(`- ${message}`);\n\n // Добавляем hash если включено\n if (config.showHash && repoUrl) {\n parts.push(`([${commit.shortHash}](${repoUrl}/commit/${commit.hash}))`);\n } else if (config.showHash) {\n parts.push(`(${commit.shortHash})`);\n }\n\n // Добавляем автора если включено\n if (config.showAuthor) {\n parts.push(`by @${commit.author}`);\n }\n\n return parts.join(\" \");\n}\n\n/**\n * Обновляет CHANGELOG файл, добавляя новую версию в начало\n */\nexport async function updateChangelogFile(changelogPath: string, newEntry: string): Promise<void> {\n let existingContent = \"\";\n\n try {\n existingContent = await readFile(changelogPath, \"utf-8\");\n } catch (error) {\n // Файл не существует, создаем новый\n if (error instanceof Error && \"code\" in error && error.code === \"ENOENT\") {\n existingContent = \"# Changelog\\n\\nAll notable changes to this project will be documented in this file.\\n\\n\";\n } else {\n throw error;\n }\n }\n\n // Находим место для вставки (после заголовка и описания)\n const lines = existingContent.split(\"\\n\");\n let insertIndex = 0;\n\n // Пропускаем заголовок и пустые строки в начале\n for (let i = 0; i < lines.length; i++) {\n const currentLine = lines[i];\n const prevLine = lines[i - 1];\n\n if (currentLine?.startsWith(\"## \")) {\n // Нашли первую версию\n insertIndex = i;\n break;\n }\n if (i > 0 && currentLine?.trim() === \"\" && prevLine?.trim() !== \"\") {\n // Нашли первую пустую строку после текста\n insertIndex = i + 1;\n }\n }\n\n // Если не нашли место, добавляем в конец\n if (insertIndex === 0) {\n insertIndex = lines.length;\n }\n\n // Вставляем новую запись\n lines.splice(insertIndex, 0, newEntry);\n\n // Записываем обратно\n await writeFile(changelogPath, lines.join(\"\\n\"));\n}\n\n/**\n * Генерирует CHANGELOG текст для GitVerse Release\n * (компактный формат без markdown заголовков, но с полной информацией)\n */\nexport function generateReleaseNotes(commits: ConventionalCommit[], config: ChangelogConfig, repoUrl?: string): string {\n const sections: string[] = [];\n\n // Breaking changes\n const breakingCommits = commits.filter((c) => c.breaking);\n if (breakingCommits.length > 0) {\n sections.push(\"⚠️ BREAKING CHANGES\");\n sections.push(\"\");\n for (const commit of breakingCommits) {\n sections.push(formatCommit(commit, config, repoUrl));\n }\n sections.push(\"\");\n }\n\n // Группируем остальные коммиты\n const grouped = groupCommitsByType(commits.filter((c) => !c.breaking));\n\n // Используем тот же порядок типов что и в CHANGELOG\n const typeOrder = [\"feat\", \"fix\", \"perf\", \"refactor\", \"docs\", \"test\", \"build\", \"ci\", \"chore\", \"style\", \"revert\"];\n\n for (const type of typeOrder) {\n const typeCommits = grouped[type];\n if (!typeCommits || typeCommits.length === 0) {\n continue;\n }\n\n const title = config.types[type] || type.toUpperCase();\n sections.push(title);\n sections.push(\"\");\n for (const commit of typeCommits) {\n sections.push(formatCommit(commit, config, repoUrl));\n }\n sections.push(\"\");\n }\n\n return sections.join(\"\\n\").trim();\n}\n",
29
29
  "import type { ConventionalCommit } from \"../types\";\n\n/**\n * Регулярное выражение для парсинга Conventional Commit\n * Формат: type(scope): subject\n * type(scope)!: subject (breaking)\n * type!: subject (breaking без scope)\n */\nconst COMMIT_REGEX = /^(?<type>\\w+)(?:\\((?<scope>[^)]+)\\))?(?<breaking>!)?: (?<subject>.+)$/;\n\n/**\n * Парсит сырой коммит из git log в структуру ConventionalCommit\n */\nexport function parseCommit(rawCommit: string): ConventionalCommit | null {\n const lines = rawCommit.split(\"\\n\");\n\n if (lines.length < 5) {\n return null; // Недостаточно данных\n }\n\n // Формат git log --format=\"%H%n%h%n%an%n%ae%n%ai%n%B\"\n const [hash, shortHash, author, email, dateStr, ...messageLines] = lines;\n\n if (!(hash && shortHash && author && email && dateStr)) {\n return null; // Неполные данные\n }\n\n const message = messageLines.join(\"\\n\").trim();\n const messageParts = message.split(\"\\n\");\n const firstLine = messageParts[0];\n const bodyLines = messageParts.slice(1);\n\n if (!firstLine) {\n return null; // Пустое сообщение\n }\n\n // Парсим первую строку\n const match = firstLine.match(COMMIT_REGEX);\n\n if (!match?.groups) {\n // Не соответствует формату Conventional Commits - пропускаем\n return null;\n }\n\n const { type, scope, breaking, subject } = match.groups;\n\n if (!(type && subject)) {\n return null; // Неполное соответствие\n }\n\n // Ищем breaking change в теле или футере\n const body = bodyLines.join(\"\\n\").trim();\n const hasBreakingInBody = body.includes(\"BREAKING CHANGE:\") || body.includes(\"BREAKING-CHANGE:\");\n\n return {\n author,\n body: body || undefined,\n breaking: !!breaking || hasBreakingInBody,\n date: new Date(dateStr),\n email,\n footer: undefined, // TODO: парсинг футера если нужно\n hash,\n raw: message,\n scope: scope || undefined,\n shortHash,\n subject,\n type,\n };\n}\n\n/**\n * Парсит массив сырых коммитов\n */\nexport function parseCommits(rawCommits: string[]): ConventionalCommit[] {\n return rawCommits.map((raw) => parseCommit(raw)).filter((commit): commit is ConventionalCommit => commit !== null);\n}\n\n/**\n * Группирует коммиты по типам\n */\nexport function groupCommitsByType(commits: ConventionalCommit[]): Record<string, ConventionalCommit[]> {\n const groups: Record<string, ConventionalCommit[]> = {};\n\n for (const commit of commits) {\n if (!groups[commit.type]) {\n groups[commit.type] = [];\n }\n groups[commit.type]?.push(commit);\n }\n\n return groups;\n}\n\n/**\n * Фильтрует коммиты по scope\n */\nexport function filterCommitsByScope(commits: ConventionalCommit[], scope: string): ConventionalCommit[] {\n return commits.filter((commit) => commit.scope === scope);\n}\n\n/**\n * Проверяет, есть ли breaking changes\n */\nexport function hasBreakingChanges(commits: ConventionalCommit[]): boolean {\n return commits.some((commit) => commit.breaking);\n}\n\n/**\n * Проверяет, есть ли новые features\n */\nexport function hasFeatures(commits: ConventionalCommit[]): boolean {\n return commits.some((commit) => commit.type === \"feat\");\n}\n\n/**\n * Проверяет, есть ли bug fixes\n */\nexport function hasFixes(commits: ConventionalCommit[]): boolean {\n return commits.some((commit) => commit.type === \"fix\");\n}\n",
30
- "import { exec } from \"node:child_process\";\nimport { promisify } from \"node:util\";\nimport type { GitRepoInfo } from \"../types\";\n\nconst execAsync = promisify(exec);\n\n// Regex для парсинга GitVerse URL\nconst GITVERSE_URL_REGEX_1 = /gitverse\\.ru[:/]([^/]+)\\/([^/.]+)(\\.git)?$/;\nconst GITVERSE_URL_REGEX_2 = /gitverse\\.ru\\/([^/]+)\\/([^/.]+)(\\.git)?$/;\n\n/**\n * Выполняет git команду\n */\nasync function git(command: string): Promise<string> {\n const { stdout } = await execAsync(`git ${command}`);\n return stdout.trim();\n}\n\n/**\n * Получает информацию о Git репозитории\n *\n * Приоритет источников данных:\n * 1. Переменные окружения GitVerse Actions (для CI/CD)\n * 2. Git remote URL (для локального использования)\n */\nexport async function getRepoInfo(): Promise<GitRepoInfo> {\n // Сначала пробуем получить из GitVerse Actions переменных окружения\n // Это более надежно в CI/CD окружении и не требует git операций\n if (process.env.GITVERSE_ACTIONS === \"true\" && process.env.GITHUB_REPOSITORY) {\n const fullName = process.env.GITHUB_REPOSITORY;\n const parts = fullName.split(\"/\");\n\n if (parts.length === 2 && parts[0] && parts[1]) {\n const owner = parts[0];\n const repo = parts[1];\n const branch = process.env.GITHUB_REF_NAME || \"main\";\n\n return {\n branch,\n fullName,\n owner,\n repo,\n url: `https://gitverse.ru/${owner}/${repo}`,\n };\n }\n }\n\n // Fallback на парсинг git remote (для локального использования)\n const url = await git(\"remote get-url origin\");\n\n // Парсим owner/repo из URL\n // Поддерживаемые форматы:\n // - https://gitverse.ru/owner/repo.git\n // - https://gitverse.ru/owner/repo\n // - git@gitverse.ru:owner/repo.git\n const match = url.match(GITVERSE_URL_REGEX_1) || url.match(GITVERSE_URL_REGEX_2);\n\n if (!(match?.[1] && match[2])) {\n throw new Error(`Unable to parse GitVerse repository from URL: ${url}`);\n }\n\n const owner = match[1];\n const repo = match[2];\n\n // Получаем текущую ветку\n const branch = await git(\"branch --show-current\");\n\n return {\n branch,\n fullName: `${owner}/${repo}`,\n owner,\n repo,\n url: `https://gitverse.ru/${owner}/${repo}`,\n };\n}\n\n/**\n * Получает последний тег с указанным префиксом\n */\nexport async function getLatestTag(prefix: string): Promise<string | null> {\n try {\n const tags = await git(`tag --sort=-v:refname --list \"${prefix}*\"`);\n const tagList = tags.split(\"\\n\").filter((tag) => tag.length > 0);\n\n return tagList.length > 0 ? (tagList[0] ?? null) : null;\n } catch {\n return null;\n }\n}\n\n/**\n * Получает список коммитов с момента последнего тега\n */\nexport async function getCommitsSinceTag(tagPrefix: string, path?: string): Promise<string[]> {\n const latestTag = await getLatestTag(tagPrefix);\n\n let range: string;\n if (latestTag) {\n range = `${latestTag}..HEAD`;\n } else {\n // Если тега нет, берем все коммиты\n range = \"HEAD\";\n }\n\n const format = \"%H%n%h%n%an%n%ae%n%ai%n%B%n==END==\";\n const pathFilter = path ? `-- ${path}` : \"\";\n\n const log = await git(`log ${range} --format=\"${format}\" ${pathFilter}`);\n\n // Парсим вывод git log\n // Используем split по \\n==END== чтобы корректно обработать последний коммит после trim()\n const commits = log\n .split(\"\\n==END==\")\n .map((commit) => commit.trim())\n .filter((commit) => commit.length > 0 && commit !== \"==END==\");\n\n return commits;\n}\n\n/**\n * Получает текущую версию из package.json\n */\nexport async function getCurrentVersion(packagePath: string): Promise<string> {\n const { readFile } = await import(\"node:fs/promises\");\n const { resolve } = await import(\"node:path\");\n\n const pkgJsonPath = resolve(packagePath, \"package.json\");\n const content = await readFile(pkgJsonPath, \"utf-8\");\n const pkgJson = JSON.parse(content);\n\n if (!pkgJson.version) {\n throw new Error(`No version found in ${pkgJsonPath}`);\n }\n\n return pkgJson.version;\n}\n\n/**\n * Обновляет версию в package.json\n */\nexport async function updatePackageVersion(packagePath: string, newVersion: string): Promise<void> {\n const { readFile, writeFile } = await import(\"node:fs/promises\");\n const { resolve } = await import(\"node:path\");\n\n const pkgJsonPath = resolve(packagePath, \"package.json\");\n const content = await readFile(pkgJsonPath, \"utf-8\");\n const pkgJson = JSON.parse(content);\n\n pkgJson.version = newVersion;\n\n await writeFile(pkgJsonPath, `${JSON.stringify(pkgJson, null, 2)}\\n`);\n}\n\n/**\n * Создает git коммит\n */\nexport async function createCommit(message: string, files: string[]): Promise<void> {\n // Добавляем файлы\n for (const file of files) {\n await git(`add \"${file}\"`);\n }\n\n // Создаем коммит\n await git(`commit -m \"${message}\"`);\n}\n\n/**\n * Создает git тег\n */\nexport async function createTag(tag: string, message: string): Promise<void> {\n await git(`tag -a \"${tag}\" -m \"${message}\"`);\n}\n\n/**\n * Пушит изменения и теги в remote\n */\nexport async function pushChanges(tag?: string): Promise<void> {\n // Пушим коммиты\n await git(\"push\");\n\n // Пушим тег, если указан\n if (tag) {\n await git(`push origin \"${tag}\"`);\n }\n}\n\n/**\n * Проверяет, что рабочая директория чистая\n */\nexport async function isWorkingTreeClean(): Promise<boolean> {\n try {\n const status = await git(\"status --porcelain\");\n return status.length === 0;\n } catch {\n return false;\n }\n}\n\n/**\n * Проверяет, что тег существует\n */\nexport async function tagExists(tag: string): Promise<boolean> {\n try {\n await git(`rev-parse \"${tag}\"`);\n return true;\n } catch {\n return false;\n }\n}\n",
31
- "import type { BumpType, ConventionalCommit, VersionBump } from \"../types\";\nimport { hasBreakingChanges, hasFeatures, hasFixes } from \"./parser\";\n\n/**\n * Парсит версию в компоненты\n */\ninterface SemanticVersion {\n major: number;\n minor: number;\n patch: number;\n prerelease?: string;\n}\n\n// Regex для парсинга версий\nconst VERSION_REGEX = /^(\\d+)\\.(\\d+)\\.(\\d+)(?:-(.+))?$/;\nconst PRERELEASE_INCREMENT_REGEX = /^(.+)\\.(\\d+)$/;\n\n/**\n * Парсит строку версии\n */\nfunction parseVersion(version: string): SemanticVersion {\n // Удаляем префикс 'v' если есть\n const v = version.startsWith(\"v\") ? version.slice(1) : version;\n\n const match = v.match(VERSION_REGEX);\n if (!(match?.[1] && match[2] && match[3])) {\n throw new Error(`Invalid version format: ${version}`);\n }\n\n return {\n major: Number.parseInt(match[1], 10),\n minor: Number.parseInt(match[2], 10),\n patch: Number.parseInt(match[3], 10),\n prerelease: match[4],\n };\n}\n\n/**\n * Форматирует версию в строку\n */\nfunction formatVersion(ver: SemanticVersion): string {\n let result = `${ver.major}.${ver.minor}.${ver.patch}`;\n if (ver.prerelease) {\n result += `-${ver.prerelease}`;\n }\n return result;\n}\n\n/**\n * Определяет тип изменения версии на основе коммитов\n */\nexport function determineBumpType(commits: ConventionalCommit[]): BumpType | null {\n if (commits.length === 0) {\n return null;\n }\n\n if (hasBreakingChanges(commits)) {\n return \"major\";\n }\n\n if (hasFeatures(commits)) {\n return \"minor\";\n }\n\n if (hasFixes(commits)) {\n return \"patch\";\n }\n\n // Если есть другие типы коммитов (chore, docs, etc), делаем patch\n return \"patch\";\n}\n\n/**\n * Увеличивает версию согласно типу изменения\n */\nexport function bumpVersion(currentVersion: string, bumpType: BumpType, prereleasePrefix?: string): string {\n const ver = parseVersion(currentVersion);\n\n switch (bumpType) {\n case \"major\":\n ver.major += 1;\n ver.minor = 0;\n ver.patch = 0;\n ver.prerelease = undefined;\n break;\n case \"minor\":\n ver.minor += 1;\n ver.patch = 0;\n ver.prerelease = undefined;\n break;\n case \"patch\":\n ver.patch += 1;\n ver.prerelease = undefined;\n break;\n case \"prerelease\":\n if (ver.prerelease) {\n // Инкрементируем номер prerelease\n const match = ver.prerelease.match(PRERELEASE_INCREMENT_REGEX);\n if (match?.[1] && match[2]) {\n const prefix = match[1];\n const num = Number.parseInt(match[2], 10);\n ver.prerelease = `${prefix}.${num + 1}`;\n } else {\n ver.prerelease = `${ver.prerelease}.1`;\n }\n } else {\n // Создаем первый prerelease\n ver.patch += 1;\n ver.prerelease = `${prereleasePrefix || \"beta\"}.0`;\n }\n break;\n }\n\n return formatVersion(ver);\n}\n\n/**\n * Вычисляет bump версии на основе коммитов\n */\nexport function calculateVersionBump(\n currentVersion: string,\n commits: ConventionalCommit[],\n forceVersion?: string,\n prerelease?: string,\n): VersionBump {\n const bumpType = prerelease ? \"prerelease\" : determineBumpType(commits) || \"patch\";\n\n const newVersion = forceVersion || bumpVersion(currentVersion, bumpType, prerelease);\n\n return {\n bumpType,\n commits,\n currentVersion,\n hasBreaking: hasBreakingChanges(commits),\n hasFeatures: hasFeatures(commits),\n hasFixes: hasFixes(commits),\n newVersion,\n };\n}\n\n/**\n * Сравнивает две версии\n * Возвращает: -1 если a < b, 0 если a === b, 1 если a > b\n */\nexport function compareVersions(a: string, b: string): number {\n const verA = parseVersion(a);\n const verB = parseVersion(b);\n\n if (verA.major !== verB.major) {\n return verA.major > verB.major ? 1 : -1;\n }\n if (verA.minor !== verB.minor) {\n return verA.minor > verB.minor ? 1 : -1;\n }\n if (verA.patch !== verB.patch) {\n return verA.patch > verB.patch ? 1 : -1;\n }\n\n // Сравнение prerelease\n if (verA.prerelease && !verB.prerelease) {\n return -1; // prerelease всегда меньше релиза\n }\n if (!verA.prerelease && verB.prerelease) {\n return 1;\n }\n if (verA.prerelease && verB.prerelease) {\n return verA.prerelease.localeCompare(verB.prerelease);\n }\n\n return 0;\n}\n"
30
+ "import { exec } from \"node:child_process\";\nimport { promisify } from \"node:util\";\nimport type { GitRepoInfo } from \"../types\";\n\nconst execAsync = promisify(exec);\n\n// Regex для парсинга GitVerse URL\nconst GITVERSE_URL_REGEX_1 = /gitverse\\.ru[:/]([^/]+)\\/([^/.]+)(\\.git)?$/;\nconst GITVERSE_URL_REGEX_2 = /gitverse\\.ru\\/([^/]+)\\/([^/.]+)(\\.git)?$/;\n\n/**\n * Выполняет git команду\n */\nasync function git(command: string): Promise<string> {\n const { stdout } = await execAsync(`git ${command}`);\n return stdout.trim();\n}\n\n/**\n * Получает информацию о Git репозитории\n *\n * Приоритет источников данных:\n * 1. Переменные окружения GitVerse Actions (для CI/CD)\n * 2. Git remote URL (для локального использования)\n */\nexport async function getRepoInfo(): Promise<GitRepoInfo> {\n // Сначала пробуем получить из GitVerse Actions переменных окружения\n // Это более надежно в CI/CD окружении и не требует git операций\n if (process.env.GITVERSE_ACTIONS === \"true\" && process.env.GITHUB_REPOSITORY) {\n const fullName = process.env.GITHUB_REPOSITORY;\n const parts = fullName.split(\"/\");\n\n if (parts.length === 2 && parts[0] && parts[1]) {\n const owner = parts[0];\n const repo = parts[1];\n const branch = process.env.GITHUB_REF_NAME || \"main\";\n\n return {\n branch,\n fullName,\n owner,\n repo,\n url: `https://gitverse.ru/${owner}/${repo}`,\n };\n }\n }\n\n // Fallback на парсинг git remote (для локального использования)\n const url = await git(\"remote get-url origin\");\n\n // Парсим owner/repo из URL\n // Поддерживаемые форматы:\n // - https://gitverse.ru/owner/repo.git\n // - https://gitverse.ru/owner/repo\n // - git@gitverse.ru:owner/repo.git\n const match = url.match(GITVERSE_URL_REGEX_1) || url.match(GITVERSE_URL_REGEX_2);\n\n if (!(match?.[1] && match[2])) {\n throw new Error(`Unable to parse GitVerse repository from URL: ${url}`);\n }\n\n const owner = match[1];\n const repo = match[2];\n\n // Получаем текущую ветку\n const branch = await git(\"branch --show-current\");\n\n return {\n branch,\n fullName: `${owner}/${repo}`,\n owner,\n repo,\n url: `https://gitverse.ru/${owner}/${repo}`,\n };\n}\n\n/**\n * Получает последний тег с указанным префиксом\n */\nexport async function getLatestTag(prefix: string): Promise<string | null> {\n try {\n const tags = await git(`tag --sort=-v:refname --list \"${prefix}*\"`);\n const tagList = tags.split(\"\\n\").filter((tag) => tag.length > 0);\n\n return tagList.length > 0 ? (tagList[0] ?? null) : null;\n } catch {\n return null;\n }\n}\n\n/**\n * Получает список коммитов с момента последнего тега\n */\nexport async function getCommitsSinceTag(tagPrefix: string, path?: string): Promise<string[]> {\n const latestTag = await getLatestTag(tagPrefix);\n\n let range: string;\n if (latestTag) {\n range = `${latestTag}..HEAD`;\n } else {\n // Если тега нет, берем все коммиты\n range = \"HEAD\";\n }\n\n const format = \"%H%n%h%n%an%n%ae%n%ai%n%B%n==END==\";\n const pathFilter = path ? `-- ${path}` : \"\";\n\n const log = await git(`log ${range} --format=\"${format}\" ${pathFilter}`);\n\n // Парсим вывод git log\n // Используем split по \\n==END== чтобы корректно обработать последний коммит после trim()\n const commits = log\n .split(\"\\n==END==\")\n .map((commit) => commit.trim())\n .filter((commit) => commit.length > 0 && commit !== \"==END==\");\n\n return commits;\n}\n\n/**\n * Получает текущую версию из package.json\n */\nexport async function getCurrentVersion(packagePath: string): Promise<string> {\n const { readFile } = await import(\"node:fs/promises\");\n const { resolve } = await import(\"node:path\");\n\n const pkgJsonPath = resolve(packagePath, \"package.json\");\n const content = await readFile(pkgJsonPath, \"utf-8\");\n const pkgJson = JSON.parse(content);\n\n if (!pkgJson.version) {\n throw new Error(`No version found in ${pkgJsonPath}`);\n }\n\n return pkgJson.version;\n}\n\n/**\n * Получает информацию из package.json (name и version)\n */\nexport async function getPackageInfo(packagePath: string): Promise<{ name: string; version: string }> {\n const { readFile } = await import(\"node:fs/promises\");\n const { resolve } = await import(\"node:path\");\n\n const pkgJsonPath = resolve(packagePath, \"package.json\");\n const content = await readFile(pkgJsonPath, \"utf-8\");\n const pkgJson = JSON.parse(content);\n\n if (!pkgJson.name) {\n throw new Error(`No name found in ${pkgJsonPath}`);\n }\n\n if (!pkgJson.version) {\n throw new Error(`No version found in ${pkgJsonPath}`);\n }\n\n return {\n name: pkgJson.name,\n version: pkgJson.version,\n };\n}\n\n/**\n * Обновляет версию в package.json\n */\nexport async function updatePackageVersion(packagePath: string, newVersion: string): Promise<void> {\n const { readFile, writeFile } = await import(\"node:fs/promises\");\n const { resolve } = await import(\"node:path\");\n\n const pkgJsonPath = resolve(packagePath, \"package.json\");\n const content = await readFile(pkgJsonPath, \"utf-8\");\n const pkgJson = JSON.parse(content);\n\n pkgJson.version = newVersion;\n\n await writeFile(pkgJsonPath, `${JSON.stringify(pkgJson, null, 2)}\\n`);\n}\n\n/**\n * Создает git коммит\n */\nexport async function createCommit(message: string, files: string[]): Promise<void> {\n // Добавляем файлы\n for (const file of files) {\n await git(`add \"${file}\"`);\n }\n\n // Создаем коммит\n await git(`commit -m \"${message}\"`);\n}\n\n/**\n * Создает git тег\n */\nexport async function createTag(tag: string, message: string): Promise<void> {\n await git(`tag -a \"${tag}\" -m \"${message}\"`);\n}\n\n/**\n * Пушит изменения и теги в remote\n */\nexport async function pushChanges(tag?: string): Promise<void> {\n // Пушим коммиты\n await git(\"push\");\n\n // Пушим тег, если указан\n if (tag) {\n await git(`push origin \"${tag}\"`);\n }\n}\n\n/**\n * Проверяет, что рабочая директория чистая\n */\nexport async function isWorkingTreeClean(): Promise<boolean> {\n try {\n const status = await git(\"status --porcelain\");\n return status.length === 0;\n } catch {\n return false;\n }\n}\n\n/**\n * Проверяет, что тег существует\n */\nexport async function tagExists(tag: string): Promise<boolean> {\n try {\n await git(`rev-parse \"${tag}\"`);\n return true;\n } catch {\n return false;\n }\n}\n",
31
+ "import type { BumpType, ConventionalCommit, VersionBump } from \"../types\";\nimport { hasBreakingChanges, hasFeatures, hasFixes } from \"./parser\";\n\n/**\n * Парсит версию в компоненты\n */\ninterface SemanticVersion {\n major: number;\n minor: number;\n patch: number;\n prerelease?: string;\n}\n\n// Regex для парсинга версий\nconst VERSION_REGEX = /^(\\d+)\\.(\\d+)\\.(\\d+)(?:-(.+))?$/;\nconst PRERELEASE_INCREMENT_REGEX = /^(.+)\\.(\\d+)$/;\n\n/**\n * Парсит строку версии\n */\nfunction parseVersion(version: string): SemanticVersion {\n // Удаляем префикс 'v' если есть\n const v = version.startsWith(\"v\") ? version.slice(1) : version;\n\n const match = v.match(VERSION_REGEX);\n if (!(match?.[1] && match[2] && match[3])) {\n throw new Error(`Invalid version format: ${version}`);\n }\n\n return {\n major: Number.parseInt(match[1], 10),\n minor: Number.parseInt(match[2], 10),\n patch: Number.parseInt(match[3], 10),\n prerelease: match[4],\n };\n}\n\n/**\n * Форматирует версию в строку\n */\nfunction formatVersion(ver: SemanticVersion): string {\n let result = `${ver.major}.${ver.minor}.${ver.patch}`;\n if (ver.prerelease) {\n result += `-${ver.prerelease}`;\n }\n return result;\n}\n\n/**\n * Определяет, нужно ли делать major bump для breaking changes\n * на основе текущей версии и режима preMajorMode\n */\nfunction shouldBumpMajor(currentVersion: string | undefined, mode = \"auto\"): boolean {\n // Режим \"disabled\" - всегда делаем major bump (стандартный semver)\n if (mode === \"disabled\") {\n return true;\n }\n\n // Режим \"enabled\" - всегда делаем minor bump\n if (mode === \"enabled\") {\n return false;\n }\n\n // Если версия не передана, используем стандартное поведение\n if (!currentVersion) {\n return true;\n }\n\n const current = parseVersion(currentVersion);\n\n // Режим \"auto\" - для версий < 1.0.0 делаем minor bump\n if (mode === \"auto\") {\n return current.major >= 1;\n }\n\n // Режим с порогом версии (например \"2.0.0\")\n // Если текущая версия >= порога, делаем major bump\n // Если текущая версия < порога, делаем minor bump\n try {\n const _threshold = parseVersion(mode);\n return compareVersions(currentVersion, mode) >= 0;\n } catch {\n // Невалидная версия в режиме - используем стандартное поведение\n return true;\n }\n}\n\n/**\n * Определяет тип изменения версии на основе коммитов\n */\nexport function determineBumpType(\n commits: ConventionalCommit[],\n currentVersion?: string,\n preMajorMode = \"auto\",\n): BumpType | null {\n if (commits.length === 0) {\n return null;\n }\n\n if (hasBreakingChanges(commits)) {\n // Определяем major или minor bump в зависимости от preMajorMode\n const useMajor = shouldBumpMajor(currentVersion, preMajorMode);\n return useMajor ? \"major\" : \"minor\";\n }\n\n if (hasFeatures(commits)) {\n return \"minor\";\n }\n\n if (hasFixes(commits)) {\n return \"patch\";\n }\n\n // Если есть другие типы коммитов (chore, docs, etc), делаем patch\n return \"patch\";\n}\n\n/**\n * Увеличивает версию согласно типу изменения\n */\nexport function bumpVersion(currentVersion: string, bumpType: BumpType, prereleasePrefix?: string): string {\n const ver = parseVersion(currentVersion);\n\n switch (bumpType) {\n case \"major\":\n ver.major += 1;\n ver.minor = 0;\n ver.patch = 0;\n ver.prerelease = undefined;\n break;\n case \"minor\":\n ver.minor += 1;\n ver.patch = 0;\n ver.prerelease = undefined;\n break;\n case \"patch\":\n ver.patch += 1;\n ver.prerelease = undefined;\n break;\n case \"prerelease\":\n if (ver.prerelease) {\n // Инкрементируем номер prerelease\n const match = ver.prerelease.match(PRERELEASE_INCREMENT_REGEX);\n if (match?.[1] && match[2]) {\n const prefix = match[1];\n const num = Number.parseInt(match[2], 10);\n ver.prerelease = `${prefix}.${num + 1}`;\n } else {\n ver.prerelease = `${ver.prerelease}.1`;\n }\n } else {\n // Создаем первый prerelease\n ver.patch += 1;\n ver.prerelease = `${prereleasePrefix || \"beta\"}.0`;\n }\n break;\n }\n\n return formatVersion(ver);\n}\n\n/**\n * Вычисляет bump версии на основе коммитов\n */\nexport function calculateVersionBump(\n currentVersion: string,\n commits: ConventionalCommit[],\n forceVersion?: string,\n prerelease?: string,\n preMajorMode?: string,\n): VersionBump {\n const bumpType = prerelease ? \"prerelease\" : determineBumpType(commits, currentVersion, preMajorMode) || \"patch\";\n\n const newVersion = forceVersion || bumpVersion(currentVersion, bumpType, prerelease);\n\n return {\n bumpType,\n commits,\n currentVersion,\n hasBreaking: hasBreakingChanges(commits),\n hasFeatures: hasFeatures(commits),\n hasFixes: hasFixes(commits),\n newVersion,\n };\n}\n\n/**\n * Сравнивает две версии\n * Возвращает: -1 если a < b, 0 если a === b, 1 если a > b\n */\nexport function compareVersions(a: string, b: string): number {\n const verA = parseVersion(a);\n const verB = parseVersion(b);\n\n if (verA.major !== verB.major) {\n return verA.major > verB.major ? 1 : -1;\n }\n if (verA.minor !== verB.minor) {\n return verA.minor > verB.minor ? 1 : -1;\n }\n if (verA.patch !== verB.patch) {\n return verA.patch > verB.patch ? 1 : -1;\n }\n\n // Сравнение prerelease\n if (verA.prerelease && !verB.prerelease) {\n return -1; // prerelease всегда меньше релиза\n }\n if (!verA.prerelease && verB.prerelease) {\n return 1;\n }\n if (verA.prerelease && verB.prerelease) {\n return verA.prerelease.localeCompare(verB.prerelease);\n }\n\n return 0;\n}\n"
32
32
  ],
33
- "mappings": "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",
34
- "debugId": "4DE8462393A0828A64756E2164756E21",
33
+ "mappings": "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",
34
+ "debugId": "A6483C192FAD37AF64756E2164756E21",
35
35
  "names": []
36
36
  }
package/dist/types.d.ts CHANGED
@@ -107,6 +107,26 @@ export interface VersioningConfig {
107
107
  * Префикс для prerelease версий (beta, alpha, rc)
108
108
  */
109
109
  prereleasePrefix: string;
110
+ /**
111
+ * Префикс для git тега (например: "v", "sdk-v", "release-v")
112
+ */
113
+ tagPrefix: string;
114
+ /**
115
+ * Pre-major режим для BREAKING CHANGES
116
+ *
117
+ * Контролирует поведение BREAKING CHANGE в коммитах:
118
+ * - "auto" (default): версии < 1.0.0 → minor bump, >= 1.0.0 → major bump
119
+ * - "enabled": всегда minor bump (полезно для experimental проектов)
120
+ * - "disabled": всегда major bump (стандартный semver)
121
+ * - "<version>": minor bump пока версия < указанной (например "2.0.0")
122
+ *
123
+ * @default "auto"
124
+ * @example
125
+ * "auto" // 0.5.0 + BREAKING → 0.6.0, затем 1.0.0 + BREAKING → 2.0.0
126
+ * "enabled" // 1.5.0 + BREAKING → 1.6.0 (всегда minor)
127
+ * "2.0.0" // 1.5.0 + BREAKING → 1.6.0, затем 2.0.0 + BREAKING → 3.0.0
128
+ */
129
+ preMajorMode?: string;
110
130
  }
111
131
  /**
112
132
  * CLI опции
@@ -9,6 +9,6 @@ export declare function generateChangelog(options: ChangelogGenerateOptions, con
9
9
  export declare function updateChangelogFile(changelogPath: string, newEntry: string): Promise<void>;
10
10
  /**
11
11
  * Генерирует CHANGELOG текст для GitVerse Release
12
- * (более компактный формат без markdown заголовков)
12
+ * (компактный формат без markdown заголовков, но с полной информацией)
13
13
  */
14
- export declare function generateReleaseNotes(commits: ConventionalCommit[], config: ChangelogConfig): string;
14
+ export declare function generateReleaseNotes(commits: ConventionalCommit[], config: ChangelogConfig, repoUrl?: string): string;
@@ -19,6 +19,13 @@ export declare function getCommitsSinceTag(tagPrefix: string, path?: string): Pr
19
19
  * Получает текущую версию из package.json
20
20
  */
21
21
  export declare function getCurrentVersion(packagePath: string): Promise<string>;
22
+ /**
23
+ * Получает информацию из package.json (name и version)
24
+ */
25
+ export declare function getPackageInfo(packagePath: string): Promise<{
26
+ name: string;
27
+ version: string;
28
+ }>;
22
29
  /**
23
30
  * Обновляет версию в package.json
24
31
  */
@@ -2,7 +2,7 @@ import type { BumpType, ConventionalCommit, VersionBump } from "../types";
2
2
  /**
3
3
  * Определяет тип изменения версии на основе коммитов
4
4
  */
5
- export declare function determineBumpType(commits: ConventionalCommit[]): BumpType | null;
5
+ export declare function determineBumpType(commits: ConventionalCommit[], currentVersion?: string, preMajorMode?: string): BumpType | null;
6
6
  /**
7
7
  * Увеличивает версию согласно типу изменения
8
8
  */
@@ -10,7 +10,7 @@ export declare function bumpVersion(currentVersion: string, bumpType: BumpType,
10
10
  /**
11
11
  * Вычисляет bump версии на основе коммитов
12
12
  */
13
- export declare function calculateVersionBump(currentVersion: string, commits: ConventionalCommit[], forceVersion?: string, prerelease?: string): VersionBump;
13
+ export declare function calculateVersionBump(currentVersion: string, commits: ConventionalCommit[], forceVersion?: string, prerelease?: string, preMajorMode?: string): VersionBump;
14
14
  /**
15
15
  * Сравнивает две версии
16
16
  * Возвращает: -1 если a < b, 0 если a === b, 1 если a > b
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gitverse-release",
3
- "version": "3.0.0",
3
+ "version": "3.2.0",
4
4
  "description": "Conventional Commits release automation tool for GitVerse",
5
5
  "keywords": [
6
6
  "gitverse",