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/cli.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", "../src/cli.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,20 +18,20 @@
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
  "#!/usr/bin/env bun\n\nimport { parseArgs } from \"node:util\";\nimport { release } from \"./index\";\nimport type { CliOptions } from \"./types\";\n\nconst HELP_TEXT = `\ngitverse-release - Release automation tool for GitVerse\n\nUsage:\n gitverse-release [package-name] [options]\n\nOptions:\n --dry-run Test run without making changes\n --config <path> Path to config file (default: .gitverereleaserc.json)\n --package <name> Package name to release (for monorepo)\n --version <version> Force specific version instead of auto-calculation\n --prerelease [tag] Create prerelease version (e.g., beta, alpha, rc)\n --no-commit Skip creating git commit\n --no-tag Skip creating git tag\n --no-push Skip pushing to remote\n --no-release Skip creating GitVerse Release\n --verbose Verbose output\n --help Show this help message\n\nExamples:\n # Auto-detect version and create release\n gitverse-release sdk\n\n # Force specific version\n gitverse-release sdk --version 2.1.0\n\n # Create prerelease\n gitverse-release sdk --prerelease beta\n\n # Dry run (test without changes)\n gitverse-release sdk --dry-run\n\n # Custom config\n gitverse-release sdk --config ./my-config.json\n\nEnvironment Variables:\n GITVERSE_TOKEN GitVerse API token (required)\n\nDocumentation:\n https://gitverse.ru/rainypixel/gitverse-sdk\n`;\n\nasync function main() {\n try {\n const { values, positionals } = parseArgs({\n allowPositionals: true,\n options: {\n config: { type: \"string\" },\n \"dry-run\": { type: \"boolean\" },\n help: { type: \"boolean\" },\n \"no-commit\": { type: \"boolean\" },\n \"no-push\": { type: \"boolean\" },\n \"no-release\": { type: \"boolean\" },\n \"no-tag\": { type: \"boolean\" },\n package: { type: \"string\" },\n prerelease: { type: \"string\" },\n verbose: { type: \"boolean\" },\n version: { type: \"string\" },\n },\n });\n\n // Помощь\n if (values.help) {\n console.log(HELP_TEXT);\n process.exit(0);\n }\n\n // Собираем опции\n const options: CliOptions = {\n config: values.config,\n dryRun: values[\"dry-run\"],\n noCommit: values[\"no-commit\"],\n noPush: values[\"no-push\"],\n noRelease: values[\"no-release\"],\n noTag: values[\"no-tag\"],\n package: values.package,\n prerelease: values.prerelease,\n verbose: values.verbose,\n version: values.version,\n };\n\n // Имя пакета может быть в позиционных аргументах или в --package\n const packageName = positionals[0] || options.package;\n\n // Запускаем релиз\n const result = await release(packageName, options);\n\n // Выводим результат\n if (options.verbose) {\n console.log(\"\\n📊 Release Result:\");\n console.log(JSON.stringify(result, null, 2));\n }\n\n // Показываем ошибки и предупреждения\n if (result.warnings.length > 0) {\n console.log(\"\\n⚠️ Warnings:\");\n for (const warning of result.warnings) {\n console.log(` - ${warning}`);\n }\n }\n\n if (result.errors.length > 0) {\n console.error(\"\\n❌ Errors:\");\n for (const error of result.errors) {\n console.error(` - ${error}`);\n }\n process.exit(1);\n }\n\n if (!result.success) {\n process.exit(1);\n }\n\n process.exit(0);\n } catch (error) {\n console.error(\"\\n❌ Fatal error:\");\n console.error(error);\n process.exit(1);\n }\n}\n\n// Запускаем CLI\nvoid main();\n"
33
33
  ],
34
- "mappings": "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",
35
- "debugId": "5C91BF3DF5A108A464756E2164756E21",
34
+ "mappings": "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",
35
+ "debugId": "C891F93BC32B0BA664756E2164756E21",
36
36
  "names": []
37
37
  }
package/dist/index.js CHANGED
@@ -53,11 +53,13 @@ var DEFAULT_CONFIG = {
53
53
  },
54
54
  versioning: {
55
55
  allowPrerelease: false,
56
- prereleasePrefix: "beta"
56
+ preMajorMode: "auto",
57
+ prereleasePrefix: "beta",
58
+ tagPrefix: "v"
57
59
  }
58
60
  };
59
61
  async function loadConfig(configPath) {
60
- const path = configPath || ".gitverereleaserc.json";
62
+ const path = configPath || ".gitversereleaserc.json";
61
63
  const fullPath = resolve(process.cwd(), path);
62
64
  try {
63
65
  const content = await readFile(fullPath, "utf-8");
@@ -544,6 +546,15 @@ class v2 {
544
546
  getCommits(d, g3, f2) {
545
547
  return this.client.get(`/repos/${d}/${g3}/pulls/${f2}/commits`);
546
548
  }
549
+ async checkIfMerged(d, g3, f2) {
550
+ try {
551
+ return await this.client.get(`/repos/${d}/${g3}/pulls/${f2}/merge`), true;
552
+ } catch (j6) {
553
+ if (j6 instanceof j2 && j6.status === 404)
554
+ return false;
555
+ throw j6;
556
+ }
557
+ }
547
558
  }
548
559
 
549
560
  // ../sdk/dist/api/forks.js
@@ -890,31 +901,29 @@ All notable changes to this project will be documented in this file.
890
901
  await writeFile(changelogPath, lines.join(`
891
902
  `));
892
903
  }
893
- function generateReleaseNotes(commits, config) {
904
+ function generateReleaseNotes(commits, config, repoUrl) {
894
905
  const sections = [];
895
906
  const breakingCommits = commits.filter((c2) => c2.breaking);
896
907
  if (breakingCommits.length > 0) {
897
- sections.push("⚠️ BREAKING CHANGES:");
908
+ sections.push("⚠️ BREAKING CHANGES");
909
+ sections.push("");
898
910
  for (const commit of breakingCommits) {
899
- sections.push(`- ${commit.subject}`);
911
+ sections.push(formatCommit(commit, config, repoUrl));
900
912
  }
901
913
  sections.push("");
902
914
  }
903
915
  const grouped = groupCommitsByType(commits.filter((c2) => !c2.breaking));
904
- const typeOrder = ["feat", "fix", "perf", "refactor"];
916
+ const typeOrder = ["feat", "fix", "perf", "refactor", "docs", "test", "build", "ci", "chore", "style", "revert"];
905
917
  for (const type of typeOrder) {
906
918
  const typeCommits = grouped[type];
907
919
  if (!typeCommits || typeCommits.length === 0) {
908
920
  continue;
909
921
  }
910
922
  const title = config.types[type] || type.toUpperCase();
911
- sections.push(`${title}:`);
923
+ sections.push(title);
924
+ sections.push("");
912
925
  for (const commit of typeCommits) {
913
- let message = commit.subject;
914
- if (commit.scope) {
915
- message = `**${commit.scope}:** ${message}`;
916
- }
917
- sections.push(`- ${message}`);
926
+ sections.push(formatCommit(commit, config, repoUrl));
918
927
  }
919
928
  sections.push("");
920
929
  }
@@ -1001,6 +1010,23 @@ async function getCurrentVersion(packagePath) {
1001
1010
  }
1002
1011
  return pkgJson.version;
1003
1012
  }
1013
+ async function getPackageInfo(packagePath) {
1014
+ const { readFile: readFile3 } = await import("node:fs/promises");
1015
+ const { resolve: resolve2 } = await import("node:path");
1016
+ const pkgJsonPath = resolve2(packagePath, "package.json");
1017
+ const content = await readFile3(pkgJsonPath, "utf-8");
1018
+ const pkgJson = JSON.parse(content);
1019
+ if (!pkgJson.name) {
1020
+ throw new Error(`No name found in ${pkgJsonPath}`);
1021
+ }
1022
+ if (!pkgJson.version) {
1023
+ throw new Error(`No version found in ${pkgJsonPath}`);
1024
+ }
1025
+ return {
1026
+ name: pkgJson.name,
1027
+ version: pkgJson.version
1028
+ };
1029
+ }
1004
1030
  async function updatePackageVersion(packagePath, newVersion) {
1005
1031
  const { readFile: readFile3, writeFile: writeFile2 } = await import("node:fs/promises");
1006
1032
  const { resolve: resolve2 } = await import("node:path");
@@ -1066,12 +1092,34 @@ function formatVersion(ver) {
1066
1092
  }
1067
1093
  return result;
1068
1094
  }
1069
- function determineBumpType(commits) {
1095
+ function shouldBumpMajor(currentVersion, mode = "auto") {
1096
+ if (mode === "disabled") {
1097
+ return true;
1098
+ }
1099
+ if (mode === "enabled") {
1100
+ return false;
1101
+ }
1102
+ if (!currentVersion) {
1103
+ return true;
1104
+ }
1105
+ const current = parseVersion(currentVersion);
1106
+ if (mode === "auto") {
1107
+ return current.major >= 1;
1108
+ }
1109
+ try {
1110
+ const _threshold = parseVersion(mode);
1111
+ return compareVersions(currentVersion, mode) >= 0;
1112
+ } catch {
1113
+ return true;
1114
+ }
1115
+ }
1116
+ function determineBumpType(commits, currentVersion, preMajorMode = "auto") {
1070
1117
  if (commits.length === 0) {
1071
1118
  return null;
1072
1119
  }
1073
1120
  if (hasBreakingChanges(commits)) {
1074
- return "major";
1121
+ const useMajor = shouldBumpMajor(currentVersion, preMajorMode);
1122
+ return useMajor ? "major" : "minor";
1075
1123
  }
1076
1124
  if (hasFeatures(commits)) {
1077
1125
  return "minor";
@@ -1117,8 +1165,8 @@ function bumpVersion(currentVersion, bumpType, prereleasePrefix) {
1117
1165
  }
1118
1166
  return formatVersion(ver);
1119
1167
  }
1120
- function calculateVersionBump(currentVersion, commits, forceVersion, prerelease) {
1121
- const bumpType = prerelease ? "prerelease" : determineBumpType(commits) || "patch";
1168
+ function calculateVersionBump(currentVersion, commits, forceVersion, prerelease, preMajorMode) {
1169
+ const bumpType = prerelease ? "prerelease" : determineBumpType(commits, currentVersion, preMajorMode) || "patch";
1122
1170
  const newVersion = forceVersion || bumpVersion(currentVersion, bumpType, prerelease);
1123
1171
  return {
1124
1172
  bumpType,
@@ -1130,6 +1178,29 @@ function calculateVersionBump(currentVersion, commits, forceVersion, prerelease)
1130
1178
  newVersion
1131
1179
  };
1132
1180
  }
1181
+ function compareVersions(a, b) {
1182
+ const verA = parseVersion(a);
1183
+ const verB = parseVersion(b);
1184
+ if (verA.major !== verB.major) {
1185
+ return verA.major > verB.major ? 1 : -1;
1186
+ }
1187
+ if (verA.minor !== verB.minor) {
1188
+ return verA.minor > verB.minor ? 1 : -1;
1189
+ }
1190
+ if (verA.patch !== verB.patch) {
1191
+ return verA.patch > verB.patch ? 1 : -1;
1192
+ }
1193
+ if (verA.prerelease && !verB.prerelease) {
1194
+ return -1;
1195
+ }
1196
+ if (!verA.prerelease && verB.prerelease) {
1197
+ return 1;
1198
+ }
1199
+ if (verA.prerelease && verB.prerelease) {
1200
+ return verA.prerelease.localeCompare(verB.prerelease);
1201
+ }
1202
+ return 0;
1203
+ }
1133
1204
 
1134
1205
  // src/index.ts
1135
1206
  function printDryRunInfo(pkg, currentVersion, versionBump, tag, commits, changelogEntry) {
@@ -1189,7 +1260,7 @@ async function createGitVerseRelease(options, repoInfo, commits, config, pkg, ve
1189
1260
  }
1190
1261
  try {
1191
1262
  const gitverseClient = createGitVerseClient(repoInfo);
1192
- const releaseNotes = generateReleaseNotes(commits, config.changelog);
1263
+ const releaseNotes = generateReleaseNotes(commits, config.changelog, repoInfo.url);
1193
1264
  return await gitverseClient.createRelease(tag, `${pkg.packageName} v${versionBump.newVersion}`, releaseNotes, {
1194
1265
  prerelease: !!options.prerelease
1195
1266
  });
@@ -1224,7 +1295,7 @@ async function release(packageName, options = {}) {
1224
1295
  const config = await loadConfig(options.config);
1225
1296
  validateConfig(config);
1226
1297
  const repoInfo = await getRepoInfo();
1227
- const pkg = resolvePackage(config, packageName);
1298
+ const pkg = await resolvePackage(config, packageName);
1228
1299
  result.packageName = pkg.packageName;
1229
1300
  if (!(options.dryRun || await isWorkingTreeClean())) {
1230
1301
  throw new Error("Working tree is not clean. Please commit or stash your changes.");
@@ -1233,7 +1304,7 @@ async function release(packageName, options = {}) {
1233
1304
  result.oldVersion = currentVersion;
1234
1305
  const commits = await collectCommits(pkg, options, result.warnings);
1235
1306
  const prereleaseTag = resolvePrereleaseTag(options, config);
1236
- const versionBump = calculateVersionBump(currentVersion, commits, options.version, prereleaseTag);
1307
+ const versionBump = calculateVersionBump(currentVersion, commits, options.version, prereleaseTag, config.versioning.preMajorMode);
1237
1308
  result.newVersion = versionBump.newVersion;
1238
1309
  const tag = `${pkg.tagPrefix}${versionBump.newVersion}`;
1239
1310
  result.tag = tag;
@@ -1268,14 +1339,15 @@ async function release(packageName, options = {}) {
1268
1339
  return result;
1269
1340
  }
1270
1341
  }
1271
- function resolvePackage(config, packageName) {
1342
+ async function resolvePackage(config, packageName) {
1272
1343
  if (!config.monorepo.enabled) {
1344
+ const pkgInfo = await getPackageInfo(".");
1273
1345
  return {
1274
1346
  changelog: "CHANGELOG.md",
1275
1347
  name: "main",
1276
- packageName: packageName || "unknown",
1348
+ packageName: pkgInfo.name,
1277
1349
  path: ".",
1278
- tagPrefix: "v"
1350
+ tagPrefix: config.versioning.tagPrefix
1279
1351
  };
1280
1352
  }
1281
1353
  if (!packageName) {
@@ -1294,4 +1366,4 @@ export {
1294
1366
  createGitVerseClient
1295
1367
  };
1296
1368
 
1297
- //# debugId=4DE8462393A0828A64756E2164756E21
1369
+ //# debugId=A6483C192FAD37AF64756E2164756E21