onreza-release 2.0.0 → 2.1.1
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 +724 -632
- package/dist/cli.js.map +21 -21
- package/dist/index.js +722 -630
- package/dist/index.js.map +21 -21
- package/dist/providers/gitverse.d.ts +0 -1
- package/dist/types.d.ts +30 -0
- package/dist/utils/binary-postinstall-generator.d.ts +34 -1
- package/package.json +2 -2
- package/schema.json +26 -0
package/dist/index.js.map
CHANGED
|
@@ -1,27 +1,27 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../src/index.ts", "../src/config.ts", "../src/providers/detector.ts", "../src/providers/github.ts", "../src/providers/limits.ts", "../src/providers/gitverse.ts", "../node_modules/@onreza/gitverse-sdk/dist/
|
|
3
|
+
"sources": ["../src/index.ts", "../src/config.ts", "../src/providers/detector.ts", "../src/providers/github.ts", "../src/providers/limits.ts", "../src/providers/gitverse.ts", "../node_modules/@onreza/gitverse-sdk/dist/errors.js", "../node_modules/@onreza/gitverse-sdk/dist/client.js", "../node_modules/@onreza/gitverse-sdk/dist/api/issues.js", "../node_modules/@onreza/gitverse-sdk/dist/api/emails.js", "../node_modules/@onreza/gitverse-sdk/dist/api/repositories.js", "../node_modules/@onreza/gitverse-sdk/dist/api/teams.js", "../node_modules/@onreza/gitverse-sdk/dist/api/releases.js", "../node_modules/@onreza/gitverse-sdk/dist/api/pulls.js", "../node_modules/@onreza/gitverse-sdk/dist/api/organizations.js", "../node_modules/@onreza/gitverse-sdk/dist/api/actions.js", "../node_modules/@onreza/gitverse-sdk/dist/api/stars.js", "../node_modules/@onreza/gitverse-sdk/dist/api/users.js", "../node_modules/@onreza/gitverse-sdk/dist/api/pages.js", "../node_modules/@onreza/gitverse-sdk/dist/index.js", "../src/providers/tokens.ts", "../src/providers/index.ts", "../src/utils/changelog.ts", "../src/utils/parser.ts", "../src/utils/git.ts", "../src/utils/retry.ts", "../src/utils/version.ts", "../src/utils/binary-distribution-provider.ts", "../src/utils/binary-platforms.ts", "../src/utils/binary-postinstall-generator.ts", "../src/binaries.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
|
-
"import { resolve } from \"node:path\";\nimport { loadConfig, validateConfig } from \"./config\";\nimport { createReleaseProvider, type GitPlatform, getToken } from \"./providers\";\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 runBeforeCommitHook,\n tagExists,\n updatePackageVersion,\n} from \"./utils/git\";\nimport { filterCommitsForPackage, parseCommits } from \"./utils/parser\";\nimport { createRetryFunction } from \"./utils/retry\";\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 * Обновляет файлы пакета и выполняет beforeCommit hook\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\n return changelogPath;\n}\n\n/**\n * Собирает и валидирует коммиты\n */\nasync function collectCommits(\n pkg: PackageConfig,\n options: CliOptions,\n warnings: string[],\n isMonorepo: boolean,\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 const filteredCommits = filterCommitsForPackage(commits, pkg.name, isMonorepo);\n\n if (filteredCommits.length === 0 && !options.version) {\n warnings.push(\"No conventional commits found, but will proceed with patch bump\");\n }\n\n return filteredCommits;\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 * Создает релиз на платформе с поддержкой idempotency и retry\n */\nasync function createPlatformRelease(\n options: CliOptions,\n repoInfo: GitRepoInfo,\n commits: ConventionalCommit[],\n config: Required<ReleaseConfig>,\n pkg: PackageConfig,\n versionBump: VersionBump,\n tag: string,\n retryFn: ReturnType<typeof createRetryFunction>,\n): Promise<string | undefined> {\n const releaseConfig = config.release;\n\n if (options.noRelease || !releaseConfig.enabled) {\n return;\n }\n\n // Определяем платформу\n const platform: GitPlatform | \"auto\" = releaseConfig.platform ?? \"auto\";\n\n // Создаём провайдер\n const { provider, platform: detectedPlatform } = createReleaseProvider({\n platform,\n repoInfo: {\n host: repoInfo.host ?? \"gitverse.ru\",\n owner: repoInfo.owner,\n repo: repoInfo.repo,\n },\n retryFn,\n });\n\n console.log(`🔗 Using ${detectedPlatform} release provider`);\n\n // Проверяем существование релиза (идемпотентность)\n if (releaseConfig.checkExisting) {\n const exists = await provider.releaseExists(tag);\n if (exists) {\n console.log(`\\n✅ Release ${tag} already exists, skipping creation\\n`);\n return `${repoInfo.url}/releases/tag/${tag}`;\n }\n }\n\n // Генерируем release notes\n const releaseNotes = generateReleaseNotes(commits, config.changelog, repoInfo.url, pkg.name);\n\n // Создаём релиз\n const result = await provider.createRelease(tag, `${pkg.packageName} v${versionBump.newVersion}`, releaseNotes, {\n prerelease: !!options.prerelease,\n });\n\n return result.url;\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 retryFn: ReturnType<typeof createRetryFunction>,\n repoInfo: GitRepoInfo,\n): Promise<void> {\n if (config.git.commitChanges && !options.noCommit) {\n // Запускаем beforeCommit хук перед коммитом для форматирования измененных файлов\n if (config.git.beforeCommit) {\n const hookSuccess = await runBeforeCommitHook(config.git.beforeCommit);\n if (!hookSuccess) {\n console.warn(\"⚠️ beforeCommit hook failed, proceeding with unformatted files\");\n }\n }\n\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 const tagToPush = options.noTag ? undefined : tag;\n const platform = repoInfo.platform ?? \"gitverse\";\n const tokenResult = config.git.useTokenForPush ? getToken(platform) : null;\n\n await retryFn(\n () =>\n pushChanges({\n repoInfo,\n tag: tagToPush,\n token: tokenResult?.token,\n useToken: config.git.useTokenForPush && !!tokenResult,\n }),\n \"Git Push\",\n );\n }\n}\n\n/**\n * Основная функция для создания релиза\n */\n// biome-ignore lint: main logic\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 if (!options.noRelease && config.release.enabled) {\n const platform = config.release.platform ?? \"auto\";\n const detectedPlatform = platform === \"auto\" ? (repoInfo.platform ?? \"gitverse\") : platform;\n\n console.log(`🔑 Validating ${detectedPlatform} API token...`);\n\n try {\n const { provider, platform: actualPlatform } = createReleaseProvider({\n platform: detectedPlatform,\n repoInfo: {\n host: repoInfo.host ?? \"gitverse.ru\",\n owner: repoInfo.owner,\n repo: repoInfo.repo,\n },\n });\n\n const tokenValidation = await provider.validateToken();\n\n if (!tokenValidation.valid) {\n throw new Error(`${actualPlatform} token validation failed: ${tokenValidation.error}`);\n }\n\n console.log(`✅ Token valid (user: ${tokenValidation.username})\\n`);\n } catch (error) {\n // Если это ошибка отсутствия токена и failOnError=false, просто предупреждаем\n if (config.release.failOnError) {\n throw error;\n }\n const message = error instanceof Error ? error.message : String(error);\n result.warnings.push(`Token validation failed: ${message}`);\n console.warn(`⚠️ Warning: ${message}\\n`);\n }\n }\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, config.monorepo.enabled);\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 pkg.name,\n );\n\n if (options.dryRun) {\n printDryRunInfo(pkg, currentVersion, versionBump, tag, commits, changelogEntry);\n result.success = true;\n return result;\n }\n\n // Создаём retry функцию\n const retryFn = createRetryFunction(config.retry);\n\n // Обновляем файлы пакета\n const changelogPath = await updatePackageFiles(pkg, versionBump.newVersion, changelogEntry);\n\n // Выполняем git операции\n await performGitOperations(config, options, pkg, versionBump.newVersion, tag, changelogPath, retryFn, repoInfo);\n\n // Создаем Release на платформе\n try {\n result.releaseUrl = await createPlatformRelease(\n options,\n repoInfo,\n commits,\n config,\n pkg,\n versionBump,\n tag,\n retryFn,\n );\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : String(error);\n\n if (config.release.failOnError) {\n // Fail the entire release\n throw new Error(`Release creation failed: ${errorMessage}`);\n }\n\n // Log as warning\n result.warnings.push(`Failed to create release: ${errorMessage}`);\n console.warn(`\\n⚠️ Warning: ${errorMessage}\\n`);\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\n/**\n * Создает только Release для существующего тега (без commit/push)\n * Полезно для recovery после failed release в CI/CD\n */\nexport async function createReleaseOnly(\n tag: string,\n packageName?: string,\n configPath?: string,\n): Promise<ReleaseResult> {\n const result: ReleaseResult = {\n errors: [],\n newVersion: \"\",\n oldVersion: \"\",\n packageName: packageName || \"unknown\",\n success: false,\n tag,\n warnings: [],\n };\n\n try {\n // Загружаем конфигурацию\n const config = await loadConfig(configPath);\n validateConfig(config);\n\n // Получаем информацию о репозитории\n const repoInfo = await getRepoInfo();\n\n // Определяем платформу\n const platform = config.release.platform ?? \"auto\";\n const detectedPlatform = platform === \"auto\" ? (repoInfo.platform ?? \"gitverse\") : platform;\n\n console.log(`🔑 Validating ${detectedPlatform} API token...`);\n\n // Создаём retry функцию\n const retryFn = createRetryFunction(config.retry);\n\n // Создаём провайдер\n const { provider, platform: actualPlatform } = createReleaseProvider({\n platform: detectedPlatform,\n repoInfo: {\n host: repoInfo.host ?? \"gitverse.ru\",\n owner: repoInfo.owner,\n repo: repoInfo.repo,\n },\n retryFn,\n });\n\n const tokenValidation = await provider.validateToken();\n\n if (!tokenValidation.valid) {\n throw new Error(`${actualPlatform} token validation failed: ${tokenValidation.error}`);\n }\n\n console.log(`✅ Token valid (user: ${tokenValidation.username})\\n`);\n\n // Определяем пакет\n const pkg = await resolvePackage(config, packageName);\n result.packageName = pkg.packageName;\n\n // Извлекаем версию из тега\n const version = tag.replace(pkg.tagPrefix, \"\");\n result.newVersion = version;\n\n // Получаем коммиты для release notes\n const rawCommits = await getCommitsSinceTag(pkg.tagPrefix, pkg.path);\n const commits = parseCommits(rawCommits);\n\n // Проверяем существование релиза\n if (config.release.checkExisting) {\n const exists = await provider.releaseExists(tag);\n if (exists) {\n console.log(`\\n✅ Release ${tag} already exists\\n`);\n result.releaseUrl = `${repoInfo.url}/releases/tag/${tag}`;\n result.success = true;\n return result;\n }\n }\n\n // Генерируем release notes\n const releaseNotes = generateReleaseNotes(commits, config.changelog, repoInfo.url, pkg.name);\n\n // Создаём релиз\n const releaseResult = await provider.createRelease(tag, `${pkg.packageName} v${version}`, releaseNotes);\n result.releaseUrl = releaseResult.url;\n\n result.success = true;\n\n console.log(\"\\n✅ Release created successfully!\");\n console.log(`📦 Package: ${pkg.packageName}`);\n console.log(`🏷️ Tag: ${tag}`);\n console.log(`🌐 Release: ${result.releaseUrl}\\n`);\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 creation failed:\\n\");\n console.error(error);\n console.error(\"\");\n\n return result;\n }\n}\n\nexport { publishBinaries } from \"./binaries\";\nexport {\n configExists,\n DEFAULT_BINARIES_CONFIG,\n DEFAULT_BINARY_PLATFORMS,\n DEFAULT_CONFIG_FILE_NAME,\n DEFAULT_RELEASE_PROVIDER_CONFIG,\n generateConfigContent,\n initConfig,\n loadConfig,\n validateBinariesConfig,\n validateConfig,\n} from \"./config\";\nexport type {\n AssetLimits,\n CreateReleaseOptions,\n CreateReleaseProviderOptions,\n CreateReleaseProviderResult,\n CreateReleaseResult,\n GitPlatform,\n ProviderRepoInfo,\n ReleaseProvider,\n TokenValidationResult,\n UploadAssetResult,\n} from \"./providers\";\n// Провайдеры релизов\nexport {\n createReleaseProvider,\n detectCiEnvironment,\n detectPlatform,\n detectPlatformAuto,\n GitHubReleaseProvider,\n GitVerseReleaseProvider,\n getAssetLimits,\n getToken,\n getTokenNotFoundError,\n hasToken,\n isCI,\n PLATFORM_ASSET_LIMITS,\n validateToken,\n} from \"./providers\";\n\n// Экспорты\nexport * from \"./types\";\nexport {\n formatFileSize,\n GITVERSE_ASSET_LIMITS,\n GitVerseDistributionProvider,\n validateAssetBatch,\n validateAssetFile,\n} from \"./utils/binary-distribution-provider\";\nexport {\n ALL_PLATFORMS,\n getArchivePath,\n getBinaryPath,\n getBinarySourcePath,\n getPlatformDir,\n isValidPlatform,\n PLATFORM_MAPPINGS,\n parsePlatforms,\n platformToNodeValues,\n validateAllBinaries,\n validateAllBinarySources,\n validateBinaryExists,\n validateBinarySourceExists,\n} from \"./utils/binary-platforms\";\nexport {\n createBinaryManifest,\n generateBinWrapper,\n generateMasterPackageJson,\n generatePostinstallScript,\n} from \"./utils/binary-postinstall-generator\";\n",
|
|
5
|
+
"import { resolve } from \"node:path\";\nimport { loadConfig, validateConfig } from \"./config\";\nimport { createReleaseProvider, type GitPlatform, getToken } from \"./providers\";\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 runBeforeCommitHook,\n tagExists,\n updatePackageVersion,\n} from \"./utils/git\";\nimport { filterCommitsForPackage, parseCommits } from \"./utils/parser\";\nimport { createRetryFunction } from \"./utils/retry\";\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 * Обновляет файлы пакета и выполняет beforeCommit hook\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 ?? \"CHANGELOG.md\");\n await updateChangelogFile(changelogPath, changelogEntry);\n\n return changelogPath;\n}\n\n/**\n * Собирает и валидирует коммиты\n */\nasync function collectCommits(\n pkg: PackageConfig,\n options: CliOptions,\n warnings: string[],\n isMonorepo: boolean,\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 const filteredCommits = filterCommitsForPackage(commits, pkg.name, isMonorepo);\n\n if (filteredCommits.length === 0 && !options.version) {\n warnings.push(\"No conventional commits found, but will proceed with patch bump\");\n }\n\n return filteredCommits;\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 * Создает релиз на платформе с поддержкой idempotency и retry\n */\nasync function createPlatformRelease(\n options: CliOptions,\n repoInfo: GitRepoInfo,\n commits: ConventionalCommit[],\n config: Required<ReleaseConfig>,\n pkg: PackageConfig,\n versionBump: VersionBump,\n tag: string,\n retryFn: ReturnType<typeof createRetryFunction>,\n): Promise<string | undefined> {\n const releaseConfig = config.release;\n\n if (options.noRelease || !releaseConfig.enabled) {\n return;\n }\n\n // Определяем платформу\n const platform: GitPlatform | \"auto\" = releaseConfig.platform ?? \"auto\";\n\n // Создаём провайдер\n const { provider, platform: detectedPlatform } = createReleaseProvider({\n platform,\n repoInfo: {\n host: repoInfo.host ?? \"gitverse.ru\",\n owner: repoInfo.owner,\n repo: repoInfo.repo,\n },\n retryFn,\n });\n\n console.log(`🔗 Using ${detectedPlatform} release provider`);\n\n // Проверяем существование релиза (идемпотентность)\n if (releaseConfig.checkExisting) {\n const exists = await provider.releaseExists(tag);\n if (exists) {\n console.log(`\\n✅ Release ${tag} already exists, skipping creation\\n`);\n return `${repoInfo.url}/releases/tag/${tag}`;\n }\n }\n\n // Генерируем release notes\n const releaseNotes = generateReleaseNotes(commits, config.changelog, repoInfo.url, pkg.name);\n\n // Создаём релиз\n const result = await provider.createRelease(tag, `${pkg.packageName} v${versionBump.newVersion}`, releaseNotes, {\n prerelease: !!options.prerelease,\n });\n\n return result.url;\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 retryFn: ReturnType<typeof createRetryFunction>,\n repoInfo: GitRepoInfo,\n): Promise<void> {\n if (config.git.commitChanges && !options.noCommit) {\n // Запускаем beforeCommit хук перед коммитом для форматирования измененных файлов\n if (config.git.beforeCommit) {\n const hookSuccess = await runBeforeCommitHook(config.git.beforeCommit);\n if (!hookSuccess) {\n console.warn(\"⚠️ beforeCommit hook failed, proceeding with unformatted files\");\n }\n }\n\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 const tagToPush = options.noTag ? undefined : tag;\n const platform = repoInfo.platform ?? \"gitverse\";\n const tokenResult = config.git.useTokenForPush ? getToken(platform) : null;\n\n await retryFn(\n () =>\n pushChanges({\n repoInfo,\n tag: tagToPush,\n token: tokenResult?.token,\n useToken: config.git.useTokenForPush && !!tokenResult,\n }),\n \"Git Push\",\n );\n }\n}\n\n/**\n * Основная функция для создания релиза\n */\n// biome-ignore lint: main logic\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 if (!options.noRelease && config.release.enabled) {\n const platform = config.release.platform ?? \"auto\";\n const detectedPlatform = platform === \"auto\" ? (repoInfo.platform ?? \"gitverse\") : platform;\n\n console.log(`🔑 Validating ${detectedPlatform} API token...`);\n\n try {\n const { provider, platform: actualPlatform } = createReleaseProvider({\n platform: detectedPlatform,\n repoInfo: {\n host: repoInfo.host ?? \"gitverse.ru\",\n owner: repoInfo.owner,\n repo: repoInfo.repo,\n },\n });\n\n const tokenValidation = await provider.validateToken();\n\n if (!tokenValidation.valid) {\n throw new Error(`${actualPlatform} token validation failed: ${tokenValidation.error}`);\n }\n\n console.log(`✅ Token valid (user: ${tokenValidation.username})\\n`);\n } catch (error) {\n // Если это ошибка отсутствия токена и failOnError=false, просто предупреждаем\n if (config.release.failOnError) {\n throw error;\n }\n const message = error instanceof Error ? error.message : String(error);\n result.warnings.push(`Token validation failed: ${message}`);\n console.warn(`⚠️ Warning: ${message}\\n`);\n }\n }\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, config.monorepo.enabled);\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 pkg.name,\n );\n\n if (options.dryRun) {\n printDryRunInfo(pkg, currentVersion, versionBump, tag, commits, changelogEntry);\n result.success = true;\n return result;\n }\n\n // Создаём retry функцию\n const retryFn = createRetryFunction(config.retry);\n\n // Обновляем файлы пакета\n const changelogPath = await updatePackageFiles(pkg, versionBump.newVersion, changelogEntry);\n\n // Выполняем git операции\n await performGitOperations(config, options, pkg, versionBump.newVersion, tag, changelogPath, retryFn, repoInfo);\n\n // Создаем Release на платформе\n try {\n result.releaseUrl = await createPlatformRelease(\n options,\n repoInfo,\n commits,\n config,\n pkg,\n versionBump,\n tag,\n retryFn,\n );\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : String(error);\n\n if (config.release.failOnError) {\n // Fail the entire release\n throw new Error(`Release creation failed: ${errorMessage}`);\n }\n\n // Log as warning\n result.warnings.push(`Failed to create release: ${errorMessage}`);\n console.warn(`\\n⚠️ Warning: ${errorMessage}\\n`);\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\n/**\n * Создает только Release для существующего тега (без commit/push)\n * Полезно для recovery после failed release в CI/CD\n */\nexport async function createReleaseOnly(\n tag: string,\n packageName?: string,\n configPath?: string,\n): Promise<ReleaseResult> {\n const result: ReleaseResult = {\n errors: [],\n newVersion: \"\",\n oldVersion: \"\",\n packageName: packageName || \"unknown\",\n success: false,\n tag,\n warnings: [],\n };\n\n try {\n // Загружаем конфигурацию\n const config = await loadConfig(configPath);\n validateConfig(config);\n\n // Получаем информацию о репозитории\n const repoInfo = await getRepoInfo();\n\n // Определяем платформу\n const platform = config.release.platform ?? \"auto\";\n const detectedPlatform = platform === \"auto\" ? (repoInfo.platform ?? \"gitverse\") : platform;\n\n console.log(`🔑 Validating ${detectedPlatform} API token...`);\n\n // Создаём retry функцию\n const retryFn = createRetryFunction(config.retry);\n\n // Создаём провайдер\n const { provider, platform: actualPlatform } = createReleaseProvider({\n platform: detectedPlatform,\n repoInfo: {\n host: repoInfo.host ?? \"gitverse.ru\",\n owner: repoInfo.owner,\n repo: repoInfo.repo,\n },\n retryFn,\n });\n\n const tokenValidation = await provider.validateToken();\n\n if (!tokenValidation.valid) {\n throw new Error(`${actualPlatform} token validation failed: ${tokenValidation.error}`);\n }\n\n console.log(`✅ Token valid (user: ${tokenValidation.username})\\n`);\n\n // Определяем пакет\n const pkg = await resolvePackage(config, packageName);\n result.packageName = pkg.packageName;\n\n // Извлекаем версию из тега\n const version = tag.replace(pkg.tagPrefix, \"\");\n result.newVersion = version;\n\n // Получаем коммиты для release notes\n const rawCommits = await getCommitsSinceTag(pkg.tagPrefix, pkg.path);\n const commits = parseCommits(rawCommits);\n\n // Проверяем существование релиза\n if (config.release.checkExisting) {\n const exists = await provider.releaseExists(tag);\n if (exists) {\n console.log(`\\n✅ Release ${tag} already exists\\n`);\n result.releaseUrl = `${repoInfo.url}/releases/tag/${tag}`;\n result.success = true;\n return result;\n }\n }\n\n // Генерируем release notes\n const releaseNotes = generateReleaseNotes(commits, config.changelog, repoInfo.url, pkg.name);\n\n // Создаём релиз\n const releaseResult = await provider.createRelease(tag, `${pkg.packageName} v${version}`, releaseNotes);\n result.releaseUrl = releaseResult.url;\n\n result.success = true;\n\n console.log(\"\\n✅ Release created successfully!\");\n console.log(`📦 Package: ${pkg.packageName}`);\n console.log(`🏷️ Tag: ${tag}`);\n console.log(`🌐 Release: ${result.releaseUrl}\\n`);\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 creation failed:\\n\");\n console.error(error);\n console.error(\"\");\n\n return result;\n }\n}\n\nexport { publishBinaries } from \"./binaries\";\nexport {\n configExists,\n DEFAULT_BINARIES_CONFIG,\n DEFAULT_BINARY_PLATFORMS,\n DEFAULT_CONFIG_FILE_NAME,\n DEFAULT_RELEASE_PROVIDER_CONFIG,\n generateConfigContent,\n initConfig,\n loadConfig,\n validateBinariesConfig,\n validateConfig,\n} from \"./config\";\nexport type {\n AssetLimits,\n CreateReleaseOptions,\n CreateReleaseProviderOptions,\n CreateReleaseProviderResult,\n CreateReleaseResult,\n GitPlatform,\n ProviderRepoInfo,\n ReleaseProvider,\n TokenValidationResult,\n UploadAssetResult,\n} from \"./providers\";\n// Провайдеры релизов\nexport {\n createReleaseProvider,\n detectCiEnvironment,\n detectPlatform,\n detectPlatformAuto,\n GitHubReleaseProvider,\n GitVerseReleaseProvider,\n getAssetLimits,\n getToken,\n getTokenNotFoundError,\n hasToken,\n isCI,\n PLATFORM_ASSET_LIMITS,\n validateToken,\n} from \"./providers\";\n\n// Экспорты\nexport * from \"./types\";\nexport {\n formatFileSize,\n GITVERSE_ASSET_LIMITS,\n GitVerseDistributionProvider,\n validateAssetBatch,\n validateAssetFile,\n} from \"./utils/binary-distribution-provider\";\nexport {\n ALL_PLATFORMS,\n getArchivePath,\n getBinaryPath,\n getBinarySourcePath,\n getPlatformDir,\n isValidPlatform,\n PLATFORM_MAPPINGS,\n parsePlatforms,\n platformToNodeValues,\n validateAllBinaries,\n validateAllBinarySources,\n validateBinaryExists,\n validateBinarySourceExists,\n} from \"./utils/binary-platforms\";\nexport {\n createBinaryManifest,\n generateBinWrapper,\n generateMasterPackageJson,\n generatePostinstallScript,\n} from \"./utils/binary-postinstall-generator\";\n",
|
|
6
6
|
"import { access, readFile, writeFile } from \"node:fs/promises\";\nimport { resolve } from \"node:path\";\nimport { parse as parseJsonc } from \"jsonc-parser\";\nimport type { BinariesConfig, BinaryPlatform, ReleaseConfig, ReleaseProviderConfig } from \"./types\";\n\n/**\n * Дефолтное имя конфиг-файла\n */\nexport const DEFAULT_CONFIG_FILE_NAME = \".onrezarelease.jsonc\";\n\n/**\n * Имена конфиг-файлов в порядке приоритета\n */\nconst CONFIG_FILE_NAMES = [\".onrezarelease.jsonc\", \".onrezarelease.json\"] as const;\n\n/**\n * Проверяет существование файла\n */\nasync function fileExists(path: string): Promise<boolean> {\n try {\n await access(path);\n return true;\n } catch {\n return false;\n }\n}\n\n/**\n * Находит конфиг-файл в директории\n * Приоритет: .jsonc > .json\n */\nasync function findConfigFile(directory: string): Promise<string | null> {\n for (const fileName of CONFIG_FILE_NAMES) {\n const fullPath = resolve(directory, fileName);\n if (await fileExists(fullPath)) {\n return fullPath;\n }\n }\n return null;\n}\n\n/**\n * Дефолтные платформы для бинарной дистрибуции\n */\nexport const DEFAULT_BINARY_PLATFORMS: BinaryPlatform[] = [\n \"linux-x64\",\n \"linux-arm64\",\n \"darwin-x64\",\n \"darwin-arm64\",\n \"win32-x64\",\n];\n\n/**\n * Дефолтная конфигурация бинарной дистрибуции\n */\nexport const DEFAULT_BINARIES_CONFIG: BinariesConfig = {\n continueOnError: false,\n distDir: \"./dist\",\n enabled: false,\n inputFormat: \"tar.gz\",\n name: \"\",\n platforms: DEFAULT_BINARY_PLATFORMS,\n retryAttempts: 3,\n};\n\n/**\n * Дефолтная конфигурация release провайдера\n */\nexport const DEFAULT_RELEASE_PROVIDER_CONFIG: ReleaseProviderConfig = {\n checkExisting: true,\n enabled: true,\n failOnError: true,\n platform: \"auto\",\n};\n\n/**\n * Дефолтная конфигурация\n */\nexport const DEFAULT_CONFIG: Required<ReleaseConfig> = {\n binaries: DEFAULT_BINARIES_CONFIG,\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 commitlint: {\n bodyMaxLineLength: null,\n comments: true,\n footerMaxLineLength: null,\n format: \"ts\",\n headerMaxLength: 100,\n headerMinLength: null,\n output: \"commitlint.config.ts\",\n scopeRequired: false,\n scopes: [\"deps\", \"ci\", \"docs\"],\n strictMode: false,\n subjectCase: null,\n subjectFullStop: false,\n warningRules: [\"header-max-length\"],\n },\n git: {\n beforeCommit: \"\",\n commitChanges: true,\n commitMessage: \"chore(release): {{package}} v{{version}} [skip ci]\",\n push: true,\n tagMessage: \"Release {{package}} v{{version}}\",\n useTokenForPush: false,\n },\n monorepo: {\n enabled: false,\n packages: [],\n },\n release: DEFAULT_RELEASE_PROVIDER_CONFIG,\n retry: {\n enabled: true,\n initialDelay: 2000,\n maxAttempts: 5,\n maxDelay: 30000,\n operations: [\"push\", \"createRelease\"],\n },\n versioning: {\n allowPrerelease: false,\n preMajorMode: \"auto\",\n prereleasePrefix: \"beta\",\n tagPrefix: \"v\",\n },\n};\n\n/**\n * Загружает конфигурацию из файла\n *\n * Порядок поиска:\n * 1. Если указан configPath - используем его\n * 2. Ищем .onrezarelease.jsonc\n * 3. Ищем .onrezarelease.json\n * 4. Если ничего не найдено - используем дефолтную конфигурацию\n */\nexport async function loadConfig(configPath?: string): Promise<Required<ReleaseConfig>> {\n let fullPath: string | null;\n\n if (configPath) {\n // Явно указанный путь\n fullPath = resolve(process.cwd(), configPath);\n } else {\n // Автопоиск конфига\n fullPath = await findConfigFile(process.cwd());\n }\n\n // Если конфиг не найден - используем дефолт\n if (!fullPath) {\n return DEFAULT_CONFIG;\n }\n\n try {\n const content = await readFile(fullPath, \"utf-8\");\n\n // Используем jsonc-parser для поддержки комментариев и trailing commas\n const userConfig = parseJsonc(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 binaries: {\n ...defaults.binaries,\n ...user.binaries,\n },\n changelog: {\n ...defaults.changelog,\n ...user.changelog,\n types: {\n ...defaults.changelog.types,\n ...user.changelog?.types,\n },\n },\n commitlint: {\n ...defaults.commitlint,\n ...user.commitlint,\n },\n git: {\n ...defaults.git,\n ...user.git,\n },\n monorepo: {\n ...defaults.monorepo,\n ...user.monorepo,\n },\n release: {\n ...defaults.release,\n ...user.release,\n },\n retry: {\n ...defaults.retry,\n ...user.retry,\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\n/**\n * Regex для валидации безопасных имён.\n * Разрешает буквы, цифры, дефис, подчёркивание и точку.\n * Блокирует shell-метасимволы: $, `, ', \", \\, |, ;, &, <, >, (, ), {, }, [, ], !, ?, *, ~, ^, #\n */\nconst SAFE_NAME_REGEX = /^[a-zA-Z0-9_.-]+$/;\n\n/**\n * Валидные платформы для бинарной дистрибуции\n */\nconst VALID_PLATFORMS: BinaryPlatform[] = [\n \"darwin-arm64\",\n \"darwin-x64\",\n \"linux-arm64\",\n \"linux-x64\",\n \"win32-arm64\",\n \"win32-x64\",\n];\n\n/**\n * Валидирует базовые поля конфигурации бинарной дистрибуции\n */\nfunction validateBinariesBaseFields(config: BinariesConfig): void {\n if (!config.name) {\n throw new Error(\"Binaries config: name is required when enabled\");\n }\n\n if (!SAFE_NAME_REGEX.test(config.name)) {\n throw new Error(\n `Binaries config: name \"${config.name}\" contains invalid characters. ` +\n \"Only letters, numbers, underscore, hyphen, dot are allowed.\",\n );\n }\n\n if (config.binName && !SAFE_NAME_REGEX.test(config.binName)) {\n throw new Error(\n `Binaries config: binName \"${config.binName}\" contains invalid characters. ` +\n \"Only letters, numbers, underscore, hyphen, dot are allowed.\",\n );\n }\n}\n\n/**\n * Валидирует platforms и retryAttempts\n */\nfunction validateBinariesPlatformsAndRetry(config: BinariesConfig): void {\n if (!config.platforms || config.platforms.length === 0) {\n throw new Error(\"Binaries config: at least one platform is required\");\n }\n\n for (const platform of config.platforms) {\n if (!VALID_PLATFORMS.includes(platform)) {\n throw new Error(`Binaries config: invalid platform \"${platform}\". Valid: ${VALID_PLATFORMS.join(\", \")}`);\n }\n }\n\n if (config.retryAttempts < 1 || config.retryAttempts > 10) {\n throw new Error(\"Binaries config: retryAttempts must be between 1 and 10\");\n }\n}\n\n/**\n * Валидирует расширенные поля: inputFormat, sourceBinName, platformMap\n */\n// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: validation has many conditional checks\nfunction validateBinariesExtendedFields(config: BinariesConfig): void {\n if (config.inputFormat && ![\"directory\", \"tar.gz\"].includes(config.inputFormat)) {\n throw new Error(`Binaries config: inputFormat must be \"directory\" or \"tar.gz\", got \"${config.inputFormat}\"`);\n }\n\n if (config.sourceBinName && !SAFE_NAME_REGEX.test(config.sourceBinName)) {\n throw new Error(\n `Binaries config: sourceBinName \"${config.sourceBinName}\" contains invalid characters. ` +\n \"Only letters, numbers, underscore, hyphen, dot are allowed.\",\n );\n }\n\n if (config.platformMap) {\n for (const [sourceKey, targetPlatform] of Object.entries(config.platformMap)) {\n if (!SAFE_NAME_REGEX.test(sourceKey)) {\n throw new Error(\n `Binaries config: platformMap key \"${sourceKey}\" contains invalid characters. ` +\n \"Only letters, numbers, underscore, hyphen, dot are allowed.\",\n );\n }\n if (!VALID_PLATFORMS.includes(targetPlatform)) {\n throw new Error(\n `Binaries config: platformMap value \"${targetPlatform}\" is not a valid platform. ` +\n `Valid: ${VALID_PLATFORMS.join(\", \")}`,\n );\n }\n }\n }\n\n if (config.archiveNameTemplate) {\n if (!config.archiveNameTemplate.includes(\"{{platform}}\")) {\n throw new Error(\"Binaries config: archiveNameTemplate must contain {{platform}} placeholder\");\n }\n }\n}\n\n/**\n * Валидирует конфигурацию бинарной дистрибуции\n */\nexport function validateBinariesConfig(config: BinariesConfig): void {\n if (!config.enabled) {\n return;\n }\n\n validateBinariesBaseFields(config);\n validateBinariesPlatformsAndRetry(config);\n validateBinariesExtendedFields(config);\n}\n\n/**\n * Проверяет, существует ли конфиг-файл\n */\nexport function configExists(): Promise<string | null> {\n return findConfigFile(process.cwd());\n}\n\n/**\n * Опции для инициализации конфига\n */\nexport interface InitConfigOptions {\n /** Режим монорепо */\n monorepo?: boolean;\n /** Дополнительные scopes для commitlint */\n scopes?: string[];\n /** Dry-run режим */\n dryRun?: boolean;\n}\n\n/**\n * Генерирует содержимое конфиг-файла в формате JSONC\n */\nexport function generateConfigContent(options: InitConfigOptions = {}): string {\n const lines: string[] = [];\n\n lines.push(\"{\");\n lines.push(\" // JSON Schema для автодополнения и валидации в IDE\");\n lines.push(' \"$schema\": \"node_modules/onreza-release/schema.json\",');\n lines.push(\"\");\n\n // Changelog\n lines.push(\" // Настройки генерации CHANGELOG\");\n lines.push(' \"changelog\": {');\n lines.push(' \"showAuthor\": true,');\n lines.push(' \"showHash\": true,');\n lines.push(' \"types\": {');\n lines.push(' \"feat\": \"✨ Features\",');\n lines.push(' \"fix\": \"🐛 Bug Fixes\",');\n lines.push(' \"docs\": \"📝 Documentation\",');\n lines.push(' \"style\": \"💄 Styles\",');\n lines.push(' \"refactor\": \"♻️ Refactoring\",');\n lines.push(' \"perf\": \"⚡ Performance\",');\n lines.push(' \"test\": \"✅ Tests\",');\n lines.push(' \"build\": \"🏗️ Build System\",');\n lines.push(' \"ci\": \"👷 CI/CD\",');\n lines.push(' \"chore\": \"🔧 Chores\",');\n lines.push(' \"revert\": \"⏪ Reverts\"');\n lines.push(\" }\");\n lines.push(\" },\");\n lines.push(\"\");\n\n // Commitlint\n const scopes = options.scopes ?? [\"deps\", \"ci\", \"docs\"];\n lines.push(\" // Настройки генерации commitlint конфига\");\n lines.push(' \"commitlint\": {');\n lines.push(` \"scopes\": ${JSON.stringify(scopes)},`);\n lines.push(' \"scopeRequired\": false,');\n lines.push(' \"headerMaxLength\": 100');\n lines.push(\" },\");\n lines.push(\"\");\n\n // Git\n lines.push(\" // Настройки Git операций\");\n lines.push(' \"git\": {');\n lines.push(' \"commitChanges\": true,');\n lines.push(' \"commitMessage\": \"chore(release): v{{version}} [skip ci]\",');\n lines.push(' \"push\": true,');\n lines.push(' \"tagMessage\": \"v{{version}}\"');\n lines.push(' // beforeCommit: \"bun run format\" // Раскомментируйте для форматирования перед коммитом');\n lines.push(\" },\");\n lines.push(\"\");\n\n // Release\n lines.push(\" // Настройки создания Release (GitVerse, GitHub, GitLab)\");\n lines.push(\" // Токен: GVR_TOKEN (GitVerse), GITHUB_TOKEN (GitHub), GITLAB_TOKEN (GitLab)\");\n lines.push(' \"release\": {');\n lines.push(' \"enabled\": true,');\n lines.push(' \"platform\": \"auto\", // auto | gitverse | github | gitlab');\n lines.push(' \"checkExisting\": true,');\n lines.push(' \"failOnError\": true');\n lines.push(\" },\");\n lines.push(\"\");\n\n // Monorepo\n lines.push(\" // Настройки монорепо\");\n lines.push(' \"monorepo\": {');\n lines.push(` \"enabled\": ${options.monorepo ?? false}`);\n if (options.monorepo) {\n lines.pop(); // Удаляем последнюю строку\n lines.push(` \"enabled\": true,`);\n lines.push(' \"packages\": [');\n lines.push(\" // Пример конфигурации пакета:\");\n lines.push(\" // {\");\n lines.push(' // \"name\": \"sdk\",');\n lines.push(' // \"path\": \"packages/sdk\",');\n lines.push(' // \"packageName\": \"my-sdk\",');\n lines.push(' // \"tagPrefix\": \"v\"');\n lines.push(\" // }\");\n lines.push(\" ]\");\n }\n lines.push(\" },\");\n lines.push(\"\");\n\n // Versioning\n lines.push(\" // Настройки версионирования\");\n lines.push(' \"versioning\": {');\n lines.push(' \"tagPrefix\": \"v\",');\n lines.push(' \"prereleasePrefix\": \"beta\"');\n lines.push(\" }\");\n\n lines.push(\"}\");\n\n return lines.join(\"\\n\");\n}\n\n/**\n * Инициализирует конфиг-файл\n */\nexport async function initConfig(options: InitConfigOptions = {}): Promise<string> {\n const existingConfig = await configExists();\n\n if (existingConfig) {\n throw new Error(`Config file already exists: ${existingConfig}`);\n }\n\n const content = generateConfigContent(options);\n const filePath = resolve(process.cwd(), DEFAULT_CONFIG_FILE_NAME);\n\n if (options.dryRun) {\n console.log(`\\n🔍 Dry-run mode - Would create: ${filePath}\\n`);\n console.log(content);\n return filePath;\n }\n\n await writeFile(filePath, content, \"utf-8\");\n\n return filePath;\n}\n",
|
|
7
7
|
"import type { GitPlatform, ProviderRepoInfo } from \"./types\";\n\n/**\n * Паттерны для определения платформы по URL\n */\nconst PLATFORM_PATTERNS: Record<GitPlatform, RegExp[]> = {\n github: [\n /github\\.com[:/]/i, // github.com\n /github\\.[^.]+\\.[^/]+[:/]/i, // GitHub Enterprise (github.company.com)\n ],\n gitlab: [\n /gitlab\\.com[:/]/i, // gitlab.com\n /gitlab\\.[^.]+\\.[^/]+[:/]/i, // GitLab self-hosted (gitlab.company.com)\n /gitlab\\./i, // Любой gitlab.* домен\n ],\n gitverse: [\n /gitverse\\.ru[:/]/i, // gitverse.ru:owner/repo или gitverse.ru/owner/repo\n ],\n};\n\n/**\n * Regex паттерны для парсинга URL репозитория\n *\n * Поддерживаемые форматы:\n * - https://host/owner/repo.git\n * - https://host/owner/repo\n * - git@host:owner/repo.git\n * - ssh://git@host:port/owner/repo.git\n */\nconst URL_PATTERNS = [\n // HTTPS: https://host/owner/repo.git или https://host/owner/repo\n /^https?:\\/\\/([^/]+)\\/([^/]+)\\/([^/.]+)(\\.git)?$/,\n // SCP-like: git@host:owner/repo.git\n /^git@([^:]+):([^/]+)\\/([^/.]+)(\\.git)?$/,\n // SSH with port: ssh://git@host:port/owner/repo.git\n /^ssh:\\/\\/git@([^:/]+)(?::\\d+)?\\/([^/]+)\\/([^/.]+)(\\.git)?$/,\n];\n\n/**\n * Определяет Git платформу по URL репозитория\n *\n * @param remoteUrl - URL репозитория (HTTPS, SSH, SCP-like)\n * @returns Платформа или null если не удалось определить\n *\n * @example\n * detectPlatform(\"https://github.com/owner/repo.git\") // \"github\"\n * detectPlatform(\"git@gitverse.ru:owner/repo.git\") // \"gitverse\"\n * detectPlatform(\"https://gitlab.company.com/owner/repo\") // \"gitlab\"\n */\nexport function detectPlatform(remoteUrl: string): GitPlatform | null {\n for (const [platform, patterns] of Object.entries(PLATFORM_PATTERNS) as [GitPlatform, RegExp[]][]) {\n for (const pattern of patterns) {\n if (pattern.test(remoteUrl)) {\n return platform;\n }\n }\n }\n return null;\n}\n\n/**\n * Парсит URL репозитория и извлекает owner, repo, host\n *\n * @param url - URL репозитория\n * @returns Информация о репозитории или null если не удалось распарсить\n *\n * @example\n * parseRepoUrl(\"https://github.com/owner/repo.git\")\n * // { owner: \"owner\", repo: \"repo\", host: \"github.com\" }\n *\n * parseRepoUrl(\"git@gitverse.ru:owner/repo.git\")\n * // { owner: \"owner\", repo: \"repo\", host: \"gitverse.ru\" }\n */\nexport function parseRepoUrl(url: string): ProviderRepoInfo | null {\n for (const pattern of URL_PATTERNS) {\n const match = url.match(pattern);\n if (match?.[1] && match[2] && match[3]) {\n return {\n host: match[1],\n owner: match[2],\n repo: match[3],\n };\n }\n }\n return null;\n}\n\n/**\n * Проверяет, запущен ли скрипт в CI окружении определённой платформы\n */\nexport interface CiEnvironment {\n /** Платформа CI */\n platform: GitPlatform;\n /** Owner/repo из переменных окружения */\n repository?: string;\n /** Текущая ветка */\n branch?: string;\n}\n\n/**\n * Определяет CI окружение по переменным окружения\n *\n * @returns Информация о CI окружении или null\n */\nexport function detectCiEnvironment(): CiEnvironment | null {\n // GitVerse Actions\n if (process.env.GITVERSE_ACTIONS === \"true\") {\n return {\n branch: process.env.GITHUB_REF_NAME,\n platform: \"gitverse\",\n repository: process.env.GITHUB_REPOSITORY,\n };\n }\n\n // GitHub Actions\n if (process.env.GITHUB_ACTIONS === \"true\") {\n return {\n branch: process.env.GITHUB_REF_NAME,\n platform: \"github\",\n repository: process.env.GITHUB_REPOSITORY,\n };\n }\n\n // GitLab CI\n if (process.env.GITLAB_CI === \"true\") {\n return {\n branch: process.env.CI_COMMIT_REF_NAME,\n platform: \"gitlab\",\n repository: process.env.CI_PROJECT_PATH,\n };\n }\n\n return null;\n}\n\n/**\n * Определяет платформу автоматически\n *\n * Приоритет:\n * 1. CI переменные окружения\n * 2. Git remote URL\n *\n * @param remoteUrl - URL репозитория (опционально)\n * @returns Платформа или null\n */\nexport function detectPlatformAuto(remoteUrl?: string): GitPlatform | null {\n // Сначала проверяем CI окружение\n const ci = detectCiEnvironment();\n if (ci) {\n return ci.platform;\n }\n\n // Fallback на парсинг URL\n if (remoteUrl) {\n return detectPlatform(remoteUrl);\n }\n\n return null;\n}\n\n/**\n * Возвращает базовый URL для платформы\n *\n * @param platform - Платформа\n * @param host - Хост (опционально, для self-hosted)\n * @returns Базовый URL\n */\nexport function getPlatformBaseUrl(platform: GitPlatform, host?: string): string {\n if (host) {\n return `https://${host}`;\n }\n\n switch (platform) {\n case \"gitverse\":\n return \"https://gitverse.ru\";\n case \"github\":\n return \"https://github.com\";\n case \"gitlab\":\n return \"https://gitlab.com\";\n }\n}\n\n/**\n * Возвращает API URL для платформы\n *\n * @param platform - Платформа\n * @param host - Хост (опционально, для self-hosted)\n * @returns API URL\n */\nexport function getPlatformApiUrl(platform: GitPlatform, host?: string): string {\n const baseUrl = getPlatformBaseUrl(platform, host);\n\n switch (platform) {\n case \"gitverse\":\n return `${baseUrl}/api/v1`;\n case \"github\":\n // GitHub Enterprise использует /api/v3\n return host && host !== \"github.com\" ? `${baseUrl}/api/v3` : \"https://api.github.com\";\n case \"gitlab\":\n return `${baseUrl}/api/v4`;\n }\n}\n",
|
|
8
8
|
"import { readFile, stat } from \"node:fs/promises\";\nimport { PLATFORM_ASSET_LIMITS, validateAsset } from \"./limits\";\nimport type {\n AssetLimits,\n CreateReleaseOptions,\n CreateReleaseResult,\n GitPlatform,\n ProviderRepoInfo,\n ReleaseProvider,\n RetryFunction,\n TokenValidationResult,\n UploadAssetResult,\n} from \"./types\";\n\n/**\n * GitHub API типы (минимальные, чтобы не зависеть от @octokit/types)\n */\ninterface GitHubUser {\n login: string;\n id: number;\n}\n\ninterface GitHubRelease {\n id: number;\n tag_name: string;\n html_url: string;\n upload_url: string;\n}\n\ninterface GitHubAsset {\n id: number;\n name: string;\n browser_download_url: string;\n size: number;\n}\n\ninterface GitHubApiError {\n message: string;\n documentation_url?: string;\n}\n\n/**\n * GitHub Release Provider\n *\n * Реализует ReleaseProvider для GitHub платформы.\n * Использует GitHub REST API напрямую через fetch.\n */\nexport class GitHubReleaseProvider implements ReleaseProvider {\n private repoInfo: ProviderRepoInfo;\n private retryFn?: RetryFunction;\n private token: string;\n private apiBaseUrl: string;\n\n readonly platform: GitPlatform = \"github\";\n readonly assetLimits: AssetLimits = PLATFORM_ASSET_LIMITS.github;\n\n constructor(token: string, repoInfo: ProviderRepoInfo, retryFn?: RetryFunction) {\n this.token = token;\n this.repoInfo = repoInfo;\n this.retryFn = retryFn;\n\n // Определяем базовый URL API\n // GitHub Enterprise использует /api/v3\n this.apiBaseUrl = repoInfo.host === \"github.com\" ? \"https://api.github.com\" : `https://${repoInfo.host}/api/v3`;\n }\n\n /**\n * Выполняет API запрос к GitHub\n */\n private async apiRequest<T>(\n method: string,\n path: string,\n body?: object,\n headers?: Record<string, string>,\n ): Promise<T> {\n const url = `${this.apiBaseUrl}${path}`;\n\n const response = await fetch(url, {\n body: body ? JSON.stringify(body) : undefined,\n headers: {\n Accept: \"application/vnd.github+json\",\n Authorization: `Bearer ${this.token}`,\n \"Content-Type\": \"application/json\",\n \"X-GitHub-Api-Version\": \"2022-11-28\",\n ...headers,\n },\n method,\n });\n\n if (!response.ok) {\n let errorMessage = `HTTP ${response.status}`;\n try {\n const errorBody = (await response.json()) as GitHubApiError;\n if (errorBody.message) {\n errorMessage = `HTTP ${response.status}: ${errorBody.message}`;\n }\n } catch {\n // Игнорируем ошибки парсинга\n }\n throw new Error(errorMessage);\n }\n\n // Для 204 No Content\n if (response.status === 204) {\n return {} as T;\n }\n\n return (await response.json()) as T;\n }\n\n /**\n * Проверяет валидность токена через API\n */\n async validateToken(): Promise<TokenValidationResult> {\n try {\n const user = await this.apiRequest<GitHubUser>(\"GET\", \"/user\");\n return {\n username: user.login,\n valid: true,\n };\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n\n if (message.includes(\"401\")) {\n return {\n error: \"Invalid or expired token\",\n valid: false,\n };\n }\n\n return {\n error: `API error: ${message}`,\n valid: false,\n };\n }\n }\n\n /**\n * Создает релиз на GitHub\n */\n async createRelease(\n tag: string,\n name: string,\n body: string,\n options: CreateReleaseOptions = {},\n ): Promise<CreateReleaseResult> {\n const { owner, repo } = this.repoInfo;\n\n const createFn = async (): Promise<CreateReleaseResult> => {\n try {\n const release = await this.apiRequest<GitHubRelease>(\"POST\", `/repos/${owner}/${repo}/releases`, {\n body,\n draft: options.draft ?? false,\n name,\n prerelease: options.prerelease ?? false,\n tag_name: tag,\n target_commitish: options.targetCommitish,\n });\n\n return {\n id: release.id,\n tag: release.tag_name,\n uploadUrl: release.upload_url,\n url: release.html_url,\n };\n } catch (error) {\n throw new Error(`Failed to create GitHub release: ${error instanceof Error ? error.message : String(error)}`);\n }\n };\n\n if (this.retryFn) {\n return await this.retryFn(createFn, \"Create GitHub Release\");\n }\n\n return await createFn();\n }\n\n /**\n * Проверяет существование релиза по тегу\n *\n * @throws Error если произошла ошибка отличная от 404 (сетевая, авторизация и т.д.)\n */\n async releaseExists(tag: string): Promise<boolean> {\n const { owner, repo } = this.repoInfo;\n\n try {\n await this.apiRequest<GitHubRelease>(\"GET\", `/repos/${owner}/${repo}/releases/tags/${tag}`);\n return true;\n } catch (error) {\n // Только 404 означает \"релиз не существует\"\n if (error instanceof Error && error.message.includes(\"404\")) {\n return false;\n }\n // Все остальные ошибки (сетевые, авторизации, rate limit) пробрасываем\n throw error;\n }\n }\n\n /**\n * Получает информацию о релизе по тегу\n *\n * @returns null если релиз не найден (404)\n * @throws Error если произошла ошибка отличная от 404\n */\n async getRelease(tag: string): Promise<CreateReleaseResult | null> {\n const { owner, repo } = this.repoInfo;\n\n try {\n const release = await this.apiRequest<GitHubRelease>(\"GET\", `/repos/${owner}/${repo}/releases/tags/${tag}`);\n return {\n id: release.id,\n tag: release.tag_name,\n uploadUrl: release.upload_url,\n url: release.html_url,\n };\n } catch (error) {\n // Только 404 означает \"релиз не найден\"\n if (error instanceof Error && error.message.includes(\"404\")) {\n return null;\n }\n // Все остальные ошибки пробрасываем\n throw error;\n }\n }\n\n /**\n * Загружает файл как asset к релизу\n */\n async uploadAsset(releaseId: number | string, filePath: string, assetName: string): Promise<UploadAssetResult> {\n const { owner, repo, host } = this.repoInfo;\n const numericReleaseId = typeof releaseId === \"string\" ? Number.parseInt(releaseId, 10) : releaseId;\n\n const uploadFn = async (): Promise<UploadAssetResult> => {\n try {\n // Получаем информацию о файле\n const fileStats = await stat(filePath);\n const sizeBytes = fileStats.size;\n\n // Валидируем файл\n const validation = validateAsset(this.platform, filePath, sizeBytes);\n if (!validation.valid) {\n throw new Error(validation.error);\n }\n\n // Читаем файл\n const fileBuffer = await readFile(filePath);\n\n // GitHub uploads используют другой домен\n const uploadBaseUrl = host === \"github.com\" ? \"https://uploads.github.com\" : `https://${host}/api/uploads`;\n\n const uploadUrl = `${uploadBaseUrl}/repos/${owner}/${repo}/releases/${numericReleaseId}/assets?name=${encodeURIComponent(assetName)}`;\n\n // Определяем Content-Type\n const contentType = this.getContentType(assetName);\n\n // Выполняем загрузку\n const response = await fetch(uploadUrl, {\n body: fileBuffer,\n headers: {\n Accept: \"application/vnd.github+json\",\n Authorization: `Bearer ${this.token}`,\n \"Content-Length\": String(sizeBytes),\n \"Content-Type\": contentType,\n \"X-GitHub-Api-Version\": \"2022-11-28\",\n },\n method: \"POST\",\n });\n\n if (!response.ok) {\n const errorText = await response.text();\n throw new Error(`Upload failed: HTTP ${response.status} - ${errorText}`);\n }\n\n const asset = (await response.json()) as GitHubAsset;\n\n return {\n downloadUrl: asset.browser_download_url,\n id: asset.id,\n name: asset.name,\n size: asset.size,\n };\n } catch (error) {\n throw new Error(\n `Failed to upload asset ${assetName}: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n };\n\n if (this.retryFn) {\n return await this.retryFn(uploadFn, `Upload asset ${assetName}`);\n }\n\n return await uploadFn();\n }\n\n /**\n * Определяет Content-Type по имени файла\n */\n private getContentType(filename: string): string {\n const ext = filename.toLowerCase();\n\n if (ext.endsWith(\".tar.gz\") || ext.endsWith(\".tgz\")) return \"application/gzip\";\n if (ext.endsWith(\".zip\")) return \"application/zip\";\n if (ext.endsWith(\".tar\")) return \"application/x-tar\";\n if (ext.endsWith(\".exe\")) return \"application/vnd.microsoft.portable-executable\";\n if (ext.endsWith(\".dmg\")) return \"application/x-apple-diskimage\";\n if (ext.endsWith(\".deb\")) return \"application/vnd.debian.binary-package\";\n if (ext.endsWith(\".rpm\")) return \"application/x-rpm\";\n if (ext.endsWith(\".appimage\")) return \"application/x-executable\";\n\n return \"application/octet-stream\";\n }\n\n /**\n * Возвращает информацию о репозитории\n */\n get repositoryInfo(): ProviderRepoInfo {\n return this.repoInfo;\n }\n}\n",
|
|
9
9
|
"import type { AssetLimits, GitPlatform } from \"./types\";\n\n/**\n * Лимиты assets по платформам\n *\n * Источники:\n * - GitVerse: Эмпирически определённые лимиты\n * - GitHub: https://docs.github.com/en/repositories/releasing-projects-on-github/about-releases\n * - GitLab: https://docs.gitlab.com/ee/user/project/releases/\n */\nexport const PLATFORM_ASSET_LIMITS: Record<GitPlatform, AssetLimits> = {\n /**\n * GitHub Asset Limits\n *\n * - Максимальный размер файла: 2 GB\n * - Нет ограничений на суммарный размер\n * - Любые расширения\n *\n * @see https://docs.github.com/en/repositories/releasing-projects-on-github/about-releases#about-release-assets\n */\n github: {\n allowedExtensions: null, // Любые расширения\n maxFileSizeBytes: 2 * 1024 * 1024 * 1024, // 2 GB\n maxFilesPerUpload: 100,\n maxTotalSizeBytes: null, // Без лимита\n },\n\n /**\n * GitLab Asset Limits\n *\n * - Максимальный размер файла: зависит от настроек инстанса (по умолчанию 100 MB)\n * - Нет ограничений на количество файлов\n * - Любые расширения\n *\n * @see https://docs.gitlab.com/ee/user/project/releases/release_fields.html#release-assets\n */\n gitlab: {\n allowedExtensions: null, // Любые расширения\n maxFileSizeBytes: 100 * 1024 * 1024, // 100 MB (настраиваемо на сервере)\n maxFilesPerUpload: 100,\n maxTotalSizeBytes: null, // Без лимита\n },\n /**\n * GitVerse Asset Limits\n *\n * - Максимальный размер файла: 100 MB\n * - Максимальный суммарный размер за раз: 500 MB\n * - Ограниченный список расширений\n */\n gitverse: {\n allowedExtensions: [\n \".7z\",\n \".appimage\",\n \".apk\",\n \".cab\",\n \".csv\",\n \".doc\",\n \".docx\",\n \".fodg\",\n \".fodp\",\n \".fods\",\n \".fodt\",\n \".gif\",\n \".gz\",\n \".jar\",\n \".jpeg\",\n \".jpg\",\n \".js\",\n \".log\",\n \".md\",\n \".odf\",\n \".odg\",\n \".odp\",\n \".ods\",\n \".odt\",\n \".patch\",\n \".pdf\",\n \".png\",\n \".pptx\",\n \".rar\",\n \".svg\",\n \".tar.gz\",\n \".tgz\",\n \".txt\",\n \".webm\",\n \".whl\",\n \".xls\",\n \".xlsx\",\n \".zip\",\n ],\n maxFileSizeBytes: 100 * 1024 * 1024, // 100 MB\n maxFilesPerUpload: 5,\n maxTotalSizeBytes: 500 * 1024 * 1024, // 500 MB\n },\n};\n\n/**\n * Получает лимиты для указанной платформы\n *\n * @param platform - Git платформа\n */\nexport function getAssetLimits(platform: GitPlatform): AssetLimits {\n return PLATFORM_ASSET_LIMITS[platform];\n}\n\n/**\n * Форматирует размер файла в человекочитаемый формат\n *\n * @param bytes - Размер в байтах\n */\nexport function formatFileSize(bytes: number): string {\n if (bytes < 1024) return `${bytes} B`;\n if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`;\n if (bytes < 1024 * 1024 * 1024) return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;\n return `${(bytes / (1024 * 1024 * 1024)).toFixed(1)} GB`;\n}\n\n/**\n * Получает расширение файла с поддержкой составных расширений\n *\n * @param filePath - Путь к файлу\n */\nexport function getFileExtension(filePath: string): string {\n const name = filePath.toLowerCase();\n\n // Проверяем составные расширения\n if (name.endsWith(\".tar.gz\")) return \".tar.gz\";\n if (name.endsWith(\".tar.xz\")) return \".tar.xz\";\n if (name.endsWith(\".tar.bz2\")) return \".tar.bz2\";\n\n // Обычное расширение\n const lastDot = name.lastIndexOf(\".\");\n return lastDot >= 0 ? name.slice(lastDot) : \"\";\n}\n\n/**\n * Проверяет допустимость расширения для платформы\n *\n * @param platform - Git платформа\n * @param extension - Расширение файла (с точкой)\n */\nexport function isExtensionAllowed(platform: GitPlatform, extension: string): boolean {\n const limits = PLATFORM_ASSET_LIMITS[platform];\n\n // Если нет ограничений на расширения — всё разрешено\n if (!limits.allowedExtensions) {\n return true;\n }\n\n return limits.allowedExtensions.includes(extension.toLowerCase());\n}\n\n/**\n * Проверяет размер файла для платформы\n *\n * @param platform - Git платформа\n * @param sizeBytes - Размер в байтах\n */\nexport function isFileSizeAllowed(platform: GitPlatform, sizeBytes: number): boolean {\n const limits = PLATFORM_ASSET_LIMITS[platform];\n return sizeBytes <= limits.maxFileSizeBytes;\n}\n\n/**\n * Результат валидации asset\n */\nexport interface AssetValidationResult {\n /** Валиден ли файл */\n valid: boolean;\n /** Сообщение об ошибке */\n error?: string;\n /** Размер файла */\n sizeBytes?: number;\n}\n\n/**\n * Валидирует файл для загрузки на указанную платформу\n *\n * @param platform - Git платформа\n * @param filePath - Путь к файлу\n * @param sizeBytes - Размер файла в байтах\n */\nexport function validateAsset(platform: GitPlatform, filePath: string, sizeBytes: number): AssetValidationResult {\n const limits = PLATFORM_ASSET_LIMITS[platform];\n\n // Проверяем размер\n if (sizeBytes > limits.maxFileSizeBytes) {\n return {\n error: `File size ${formatFileSize(sizeBytes)} exceeds maximum ${formatFileSize(limits.maxFileSizeBytes)} for ${platform}`,\n sizeBytes,\n valid: false,\n };\n }\n\n // Проверяем расширение\n const extension = getFileExtension(filePath);\n if (limits.allowedExtensions && !limits.allowedExtensions.includes(extension)) {\n return {\n error: `Extension \"${extension}\" is not allowed for ${platform}. Allowed: ${limits.allowedExtensions.join(\", \")}`,\n sizeBytes,\n valid: false,\n };\n }\n\n return {\n sizeBytes,\n valid: true,\n };\n}\n\n/**\n * Валидирует пакет файлов для загрузки\n *\n * @param platform - Git платформа\n * @param files - Массив { path, sizeBytes }\n */\nexport function validateAssetBatch(\n platform: GitPlatform,\n files: Array<{ path: string; sizeBytes: number }>,\n): { valid: boolean; errors: string[]; totalSize: number } {\n const limits = PLATFORM_ASSET_LIMITS[platform];\n const errors: string[] = [];\n let totalSize = 0;\n\n // Проверяем количество файлов\n if (files.length > limits.maxFilesPerUpload) {\n errors.push(`Too many files: ${files.length}. Maximum ${limits.maxFilesPerUpload} for ${platform}`);\n }\n\n // Валидируем каждый файл\n for (const file of files) {\n const result = validateAsset(platform, file.path, file.sizeBytes);\n if (!result.valid && result.error) {\n errors.push(`${file.path}: ${result.error}`);\n }\n totalSize += file.sizeBytes;\n }\n\n // Проверяем суммарный размер\n if (limits.maxTotalSizeBytes && totalSize > limits.maxTotalSizeBytes) {\n errors.push(\n `Total size ${formatFileSize(totalSize)} exceeds maximum ${formatFileSize(limits.maxTotalSizeBytes)} for ${platform}`,\n );\n }\n\n return {\n errors,\n totalSize,\n valid: errors.length === 0,\n };\n}\n",
|
|
10
|
-
"import { readFile, stat } from \"node:fs/promises\";\nimport
|
|
11
|
-
"class
|
|
12
|
-
"class
|
|
13
|
-
"class F{client;constructor(
|
|
14
|
-
"class
|
|
15
|
-
"class
|
|
16
|
-
"class
|
|
17
|
-
"class
|
|
18
|
-
"class
|
|
19
|
-
"class
|
|
20
|
-
"class
|
|
21
|
-
"
|
|
22
|
-
"class
|
|
23
|
-
"class
|
|
24
|
-
"import{a as
|
|
10
|
+
"import { readFile, stat } from \"node:fs/promises\";\nimport { GitVerse, GitVerseApiError } from \"@onreza/gitverse-sdk\";\nimport { PLATFORM_ASSET_LIMITS, validateAsset } from \"./limits\";\nimport type {\n AssetLimits,\n CreateReleaseOptions,\n CreateReleaseResult,\n GitPlatform,\n ProviderRepoInfo,\n ReleaseProvider,\n RetryFunction,\n TokenValidationResult,\n UploadAssetResult,\n} from \"./types\";\n\n/**\n * GitVerse Release Provider\n *\n * Реализует ReleaseProvider для GitVerse платформы.\n */\nexport class GitVerseReleaseProvider implements ReleaseProvider {\n private client: GitVerse;\n private repoInfo: ProviderRepoInfo;\n private retryFn?: RetryFunction;\n\n readonly platform: GitPlatform = \"gitverse\";\n readonly assetLimits: AssetLimits = PLATFORM_ASSET_LIMITS.gitverse;\n\n constructor(token: string, repoInfo: ProviderRepoInfo, retryFn?: RetryFunction) {\n this.client = new GitVerse({ token });\n this.repoInfo = repoInfo;\n this.retryFn = retryFn;\n }\n\n /**\n * Проверяет валидность токена через API\n */\n async validateToken(): Promise<TokenValidationResult> {\n try {\n const user = await this.client.users.getAuthenticated();\n\n if (!user.login) {\n return {\n error: \"API returned user without login\",\n valid: false,\n };\n }\n\n return {\n username: user.login,\n valid: true,\n };\n } catch (error) {\n if (error instanceof GitVerseApiError) {\n if (error.status === 401) {\n return {\n error: \"Invalid or expired token\",\n valid: false,\n };\n }\n return {\n error: `API error: ${error.message}`,\n valid: false,\n };\n }\n return {\n error: error instanceof Error ? error.message : String(error),\n valid: false,\n };\n }\n }\n\n /**\n * Создает релиз на GitVerse\n */\n async createRelease(\n tag: string,\n name: string,\n body: string,\n options: CreateReleaseOptions = {},\n ): Promise<CreateReleaseResult> {\n const { owner, repo } = this.repoInfo;\n\n const createFn = async (): Promise<CreateReleaseResult> => {\n try {\n const release = await this.client.releases.create(owner, repo, {\n body,\n draft: options.draft,\n name,\n prerelease: options.prerelease,\n tag_name: tag,\n target_commitish: options.targetCommitish,\n });\n\n if (release.id === undefined) {\n throw new Error(\"Release created but no ID returned\");\n }\n\n return {\n id: release.id,\n tag,\n uploadUrl: release.upload_url ?? undefined,\n url: this.getReleaseUrl(tag),\n };\n } catch (error) {\n throw new Error(`Failed to create GitVerse release: ${error instanceof Error ? error.message : String(error)}`);\n }\n };\n\n if (this.retryFn) {\n return await this.retryFn(createFn, \"Create GitVerse Release\");\n }\n\n return await createFn();\n }\n\n /**\n * Проверяет существование релиза по тегу\n *\n * @throws Error если произошла ошибка отличная от 404 (сетевая, авторизация и т.д.)\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 (error) {\n // Только 404 означает \"релиз не существует\"\n if (error instanceof GitVerseApiError && error.status === 404) {\n return false;\n }\n // Все остальные ошибки (сетевые, авторизации, rate limit) пробрасываем\n throw error;\n }\n }\n\n /**\n * Получает информацию о релизе по тегу\n *\n * @returns null если релиз не найден (404)\n * @throws Error если произошла ошибка отличная от 404\n */\n async getRelease(tag: string): Promise<CreateReleaseResult | null> {\n const { owner, repo } = this.repoInfo;\n\n try {\n const release = await this.client.releases.getByTag(owner, repo, tag);\n\n if (release.id === undefined || !release.tag_name) {\n return null;\n }\n\n return {\n id: release.id,\n tag: release.tag_name,\n uploadUrl: release.upload_url ?? undefined,\n url: this.getReleaseUrl(tag),\n };\n } catch (error) {\n // Только 404 означает \"релиз не найден\"\n if (error instanceof GitVerseApiError && error.status === 404) {\n return null;\n }\n // Все остальные ошибки пробрасываем\n throw error;\n }\n }\n\n /**\n * Загружает файл как asset к релизу\n */\n async uploadAsset(releaseId: number | string, filePath: string, assetName: string): Promise<UploadAssetResult> {\n const { owner, repo } = this.repoInfo;\n const releaseIdStr = String(releaseId);\n\n const uploadFn = async (): Promise<UploadAssetResult> => {\n try {\n // Получаем информацию о файле и валидируем\n const fileStats = await stat(filePath);\n const validation = validateAsset(this.platform, filePath, fileStats.size);\n if (!validation.valid) {\n throw new Error(validation.error);\n }\n\n // Читаем файл и конвертируем в Blob для SDK\n const fileBuffer = await readFile(filePath);\n const fileBlob = new Blob([fileBuffer]);\n\n // Загружаем через SDK\n const attachment = await this.client.releases.uploadAsset(owner, repo, releaseIdStr, fileBlob, assetName, {\n name: assetName,\n });\n\n if (attachment.id === undefined || !attachment.name || attachment.size === undefined) {\n throw new Error(\"Invalid attachment response from API\");\n }\n\n if (!attachment.browser_download_url) {\n throw new Error(`API returned attachment without download URL for ${assetName}`);\n }\n\n return {\n downloadUrl: attachment.browser_download_url,\n id: attachment.id,\n name: attachment.name,\n size: attachment.size,\n };\n } catch (error) {\n throw new Error(\n `Failed to upload asset ${assetName}: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n };\n\n if (this.retryFn) {\n return await this.retryFn(uploadFn, `Upload asset ${assetName}`);\n }\n\n return await uploadFn();\n }\n\n /**\n * Формирует URL релиза\n */\n private getReleaseUrl(tag: string): string {\n const { host, owner, repo } = this.repoInfo;\n const baseUrl = host === \"gitverse.ru\" ? \"https://gitverse.ru\" : `https://${host}`;\n return `${baseUrl}/${owner}/${repo}/releases/tag/${tag}`;\n }\n\n /**\n * Возвращает информацию о репозитории\n */\n get repositoryInfo(): ProviderRepoInfo {\n return this.repoInfo;\n }\n}\n",
|
|
11
|
+
"class j extends Error{status;metadata;constructor(b,f,h){super(f);this.name=\"GitVerseApiError\",this.status=b,this.metadata=h,Object.setPrototypeOf(this,j.prototype)}}class k extends j{rateLimit;constructor(b,f,h){super(429,b,h);this.name=\"RateLimitError\",this.rateLimit=f,Object.setPrototypeOf(this,k.prototype)}getRetryAfterSeconds(){return this.rateLimit.retryAfter}getResetDate(){return new Date(this.rateLimit.reset*1000)}}class q{currentVersion;latestVersion;decommissioning;constructor(b,f,h){this.currentVersion=b,this.latestVersion=f,this.decommissioning=h}getMessage(){let b=`Используется устаревшая версия API: ${this.currentVersion}. Последняя версия: ${this.latestVersion}.`;if(this.decommissioning)b+=` Версия будет выведена из эксплуатации: ${this.decommissioning}.`;return b}}export{k as RateLimitError,j as GitVerseApiError,q as ApiVersionWarning};\nexport{j as s,k as t,q as u};\n\n//# debugId=27E0A51FC444958B64756E2164756E21\n",
|
|
12
|
+
"import{s as $,t as w,u as k}from\"./errors.js\";var Z={DELETE:\"DELETE\",GET:\"GET\",PATCH:\"PATCH\",POST:\"POST\",PUT:\"PUT\"};class v{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 x=j.get(\"GitVerse-RateLimit-Limit\"),q=j.get(\"GitVerse-RateLimit-User-Remaining\")||j.get(\"GitVerse-RateLimit-Remaining\"),z=j.get(\"GitVerse-RateLimit-Retry-After\"),F=j.get(\"Gitverse-Ratelimit-Reset\");if(!(x&&z))return;let U=Number.parseInt(z,10),J=F?Number.parseInt(F,10):Math.floor(Date.now()/1000)+U,K=q?Number.parseInt(q,10):0;return{limit:Number.parseInt(x,10),remaining:K,reset:J,retryAfter:U}}extractApiVersionInfo(j){let x=j.get(\"Gitverse-Api-Version\"),q=j.get(\"Gitverse-Api-Latest-Version\"),z=j.get(\"Gitverse-Api-Deprecation\")===\"true\",F=j.get(\"Gitverse-Api-Decommissioning\");if(!(x&&q))return;return{decommissioning:F||void 0,deprecated:z,latestVersion:q,version:x}}extractMetadata(j){let x=this.extractRateLimitInfo(j),q=this.extractApiVersionInfo(j);if(q?.deprecated&&this.onApiVersionWarning){let z=new k(q.version,q.latestVersion,q.decommissioning);this.onApiVersionWarning(z)}return{apiVersion:q,rateLimit:x}}async request(j,x,q,z){let F=j.startsWith(\"/\")?j.slice(1):j,U=`${this.baseUrl}/${F}`,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 K={body:q?JSON.stringify(q):void 0,headers:J,method:x,signal:z?.signal},C=await fetch(U,K),X=this.extractMetadata(C.headers),Y;try{Y=await C.json()}catch{Y=void 0}if(!C.ok){let S=Y?.message||C.statusText;if(C.status===429&&X.rateLimit)throw new w(S||\"Превышен лимит запросов. Попробуйте позже.\",X.rateLimit,X);throw new $(C.status,S,X)}return Y}get(j,x){return this.request(j,Z.GET,void 0,x)}post(j,x,q){return this.request(j,Z.POST,x,q)}put(j,x,q){return this.request(j,Z.PUT,x,q)}delete(j,x,q){return this.request(j,Z.DELETE,x,q)}patch(j,x,q){return this.request(j,Z.PATCH,x,q)}async uploadFile(j,x,q,z,F){let U=j.startsWith(\"/\")?j.slice(1):j,J=`${this.baseUrl}/${U}`,K=new Headers;if(K.set(\"Accept\",`application/vnd.gitverse.object+json; version=${this.apiVersion}`),this.token)K.set(\"Authorization\",`Bearer ${this.token}`);let C=new FormData,X=q instanceof ArrayBuffer?new Blob([q]):q;C.append(x,X,z);let Y={body:C,headers:K,method:Z.POST,signal:F?.signal},Q=await fetch(J,Y),S=this.extractMetadata(Q.headers),_;try{_=await Q.json()}catch{_=void 0}if(!Q.ok){let W=_?.message||Q.statusText;if(Q.status===429&&S.rateLimit)throw new w(W||\"Превышен лимит запросов. Попробуйте позже.\",S.rateLimit,S);throw new $(Q.status,W,S)}return _}}export{Z as HTTPMethods,v as GitVerseClient};\nexport{v as a};\n\n//# debugId=50A1FE874597590864756E2164756E21\n",
|
|
13
|
+
"class F{client;constructor(v){this.client=v}list(v,A,b,j){let k=new URLSearchParams;if(b?.state!==void 0)k.append(\"state\",b.state);if(b?.q!==void 0)k.append(\"q\",b.q);if(b?.labels!==void 0)k.append(\"labels\",b.labels);if(b?.milestones!==void 0)k.append(\"milestones\",b.milestones);if(b?.created_by!==void 0)k.append(\"created_by\",b.created_by);if(b?.assigned_by!==void 0)k.append(\"assigned_by\",b.assigned_by);if(b?.mentioned_by!==void 0)k.append(\"mentioned_by\",b.mentioned_by);if(b?.type!==void 0)k.append(\"type\",b.type);if(b?.since!==void 0)k.append(\"since\",b.since);if(b?.before!==void 0)k.append(\"before\",b.before);if(b?.page!==void 0)k.append(\"page\",String(b.page));if(b?.per_page!==void 0)k.append(\"per_page\",String(b.per_page));let z=k.toString(),B=`/repos/${v}/${A}/issues${z?`?${z}`:\"\"}`;return this.client.get(B,j)}get(v,A,b,j){return this.client.get(`/repos/${v}/${A}/issues/${b}`,j)}listComments(v,A,b,j,k){let z=new URLSearchParams;if(j?.since!==void 0)z.append(\"since\",j.since);if(j?.before!==void 0)z.append(\"before\",j.before);let B=z.toString(),E=`/repos/${v}/${A}/issues/${b}/comments${B?`?${B}`:\"\"}`;return this.client.get(E,k)}listLabels(v,A,b,j){return this.client.get(`/repos/${v}/${A}/issues/${b}/labels`,j)}listTimeline(v,A,b,j,k){let z=new URLSearchParams;if(j?.page!==void 0)z.append(\"page\",String(j.page));if(j?.per_page!==void 0)z.append(\"per_page\",String(j.per_page));if(j?.since!==void 0)z.append(\"since\",j.since);if(j?.before!==void 0)z.append(\"before\",j.before);let B=z.toString(),E=`/repos/${v}/${A}/issues/${b}/timeline${B?`?${B}`:\"\"}`;return this.client.get(E,k)}getComment(v,A,b,j){return this.client.get(`/repos/${v}/${A}/issues/comments/${b}`,j)}}export{F as IssuesApi};\nexport{F as b};\n\n//# debugId=DA8BB660AA6C6D9D64756E2164756E21\n",
|
|
14
|
+
"class x{client;constructor(b){this.client=b}list(b,f){let j=new URLSearchParams;if(b?.page!==void 0)j.append(\"page\",String(b.page));if(b?.per_page!==void 0)j.append(\"per_page\",String(b.per_page));let k=j.toString(),w=`/user/emails${k?`?${k}`:\"\"}`;return this.client.get(w,f)}create(b,f){return this.client.post(\"/user/emails\",b,f)}delete(b,f){return this.client.delete(\"/user/emails\",b,f)}}export{x as EmailsApi};\nexport{x as c};\n\n//# debugId=D44E3BAF5CD41AFF64756E2164756E21\n",
|
|
15
|
+
"class E{client;constructor(k){this.client=k}get(k,x,j){return this.client.get(`/repos/${k}/${x}`,j)}update(k,x,j,v){return this.client.patch(`/repos/${k}/${x}`,j,v)}delete(k,x,j){return this.client.delete(`/repos/${k}/${x}`,void 0,j)}listRepoSecrets(k,x,j,v){let z=new URLSearchParams;if(j?.per_page!==void 0)z.append(\"per_page\",j.per_page);if(j?.page!==void 0)z.append(\"page\",j.page);let A=z.toString(),B=`/repos/${k}/${x}/actions/secrets${A?`?${A}`:\"\"}`;return this.client.get(B,v)}getRepoSecret(k,x,j,v){return this.client.get(`/repos/${k}/${x}/actions/secrets/${j}`,v)}createOrUpdateRepoSecret(k,x,j,v,z){let A=new URLSearchParams;if(v?.encrypted_value!==void 0)A.append(\"encrypted_value\",v.encrypted_value);let B=A.toString(),D=`/repos/${k}/${x}/actions/secrets/${j}${B?`?${B}`:\"\"}`;return this.client.put(D,z)}deleteRepoSecret(k,x,j,v){return this.client.delete(`/repos/${k}/${x}/actions/secrets/${j}`,void 0,v)}listBranches(k,x,j,v){let z=new URLSearchParams;if(j?.page!==void 0)z.append(\"page\",String(j.page));if(j?.per_page!==void 0)z.append(\"per_page\",String(j.per_page));if(j?.q!==void 0)z.append(\"q\",j.q);let A=z.toString(),B=`/repos/${k}/${x}/branches${A?`?${A}`:\"\"}`;return this.client.get(B,v)}listCollaborators(k,x,j,v){let z=new URLSearchParams;if(j?.affiliation!==void 0)z.append(\"affiliation\",j.affiliation);if(j?.permission!==void 0)z.append(\"permission\",j.permission);if(j?.page!==void 0)z.append(\"page\",String(j.page));if(j?.per_page!==void 0)z.append(\"per_page\",String(j.per_page));let A=z.toString(),B=`/repos/${k}/${x}/collaborators${A?`?${A}`:\"\"}`;return this.client.get(B,v)}addCollaborator(k,x,j,v,z){return this.client.put(`/repos/${k}/${x}/collaborators/${j}`,v,z)}listCommits(k,x,j,v){let z=new URLSearchParams;if(j?.page!==void 0)z.append(\"page\",String(j.page));if(j?.per_page!==void 0)z.append(\"per_page\",String(j.per_page));if(j?.sha!==void 0)z.append(\"sha\",j.sha);if(j?.path!==void 0)z.append(\"path\",j.path);if(j?.not!==void 0)z.append(\"not\",j.not);if(j?.author!==void 0)z.append(\"author\",j.author);if(j?.committer!==void 0)z.append(\"committer\",j.committer);if(j?.since!==void 0)z.append(\"since\",j.since);if(j?.until!==void 0)z.append(\"until\",j.until);let A=z.toString(),B=`/repos/${k}/${x}/commits${A?`?${A}`:\"\"}`;return this.client.get(B,v)}getCommit(k,x,j,v){return this.client.get(`/repos/${k}/${x}/commits/${j}`,v)}compareCommits(k,x,j,v,z){let A=new URLSearchParams;if(v?.page!==void 0)A.append(\"page\",String(v.page));if(v?.per_page!==void 0)A.append(\"per_page\",String(v.per_page));let B=A.toString(),D=`/repos/${k}/${x}/compare/${j}${B?`?${B}`:\"\"}`;return this.client.get(D,z)}getContent(k,x,j,v,z){let A=new URLSearchParams;if(v?.ref!==void 0)A.append(\"ref\",v.ref);if(v?.scope!==void 0)A.append(\"scope\",v.scope);let B=A.toString(),D=`/repos/${k}/${x}/contents/${j}${B?`?${B}`:\"\"}`;return this.client.get(D,z)}createOrUpdateFile(k,x,j,v,z){return this.client.put(`/repos/${k}/${x}/contents/${j}`,v,z)}deleteFile(k,x,j,v,z){return this.client.delete(`/repos/${k}/${x}/contents/${j}`,v,z)}createFork(k,x,j,v){return this.client.post(`/repos/${k}/${x}/forks`,j,v)}createCommit(k,x,j,v){return this.client.post(`/repos/${k}/${x}/git/commits`,j,v)}createRef(k,x,j,v){return this.client.post(`/repos/${k}/${x}/git/refs`,j,v)}createTree(k,x,j,v){return this.client.post(`/repos/${k}/${x}/git/trees`,j,v)}getTree(k,x,j,v,z){let A=new URLSearchParams;if(v?.page!==void 0)A.append(\"page\",String(v.page));if(v?.per_page!==void 0)A.append(\"per_page\",String(v.per_page));if(v?.recursive!==void 0)A.append(\"recursive\",String(v.recursive));let B=A.toString(),D=`/repos/${k}/${x}/git/trees/${j}${B?`?${B}`:\"\"}`;return this.client.get(D,z)}listLanguages(k,x,j){return this.client.get(`/repos/${k}/${x}/languages`,j)}listPulls(k,x,j,v){let z=new URLSearchParams;if(j?.state!==void 0)z.append(\"state\",j.state);if(j?.head!==void 0)z.append(\"head\",j.head);if(j?.base!==void 0)z.append(\"base\",j.base);if(j?.sort!==void 0)z.append(\"sort\",j.sort);if(j?.direction!==void 0)z.append(\"direction\",j.direction);if(j?.page!==void 0)z.append(\"page\",String(j.page));if(j?.per_page!==void 0)z.append(\"per_page\",String(j.per_page));let A=z.toString(),B=`/repos/${k}/${x}/pulls${A?`?${A}`:\"\"}`;return this.client.get(B,v)}getPull(k,x,j,v){return this.client.get(`/repos/${k}/${x}/pulls/${j}`,v)}updatePull(k,x,j,v,z){return this.client.patch(`/repos/${k}/${x}/pulls/${j}`,v,z)}listForAuthenticatedUser(k,x){let j=new URLSearchParams;if(k?.page!==void 0)j.append(\"page\",String(k.page));if(k?.per_page!==void 0)j.append(\"per_page\",String(k.per_page));let v=j.toString(),z=`/user/repos${v?`?${v}`:\"\"}`;return this.client.get(z,x)}createForAuthenticatedUser(k,x){return this.client.post(\"/user/repos\",k,x)}}export{E as RepositoriesApi};\nexport{E as d};\n\n//# debugId=B992FE628A20ABBD64756E2164756E21\n",
|
|
16
|
+
"class E{client;constructor(x){this.client=x}list(x,b,j){let B=new URLSearchParams;if(b?.page!==void 0)B.append(\"page\",String(b.page));if(b?.per_page!==void 0)B.append(\"per_page\",String(b.per_page));let k=B.toString(),C=`/orgs/${x}/teams${k?`?${k}`:\"\"}`;return this.client.get(C,j)}listMembers(x,b,j,B){let k=new URLSearchParams;if(j?.page!==void 0)k.append(\"page\",String(j.page));if(j?.per_page!==void 0)k.append(\"per_page\",String(j.per_page));let C=k.toString(),D=`/orgs/${x}/teams/${b}/members${C?`?${C}`:\"\"}`;return this.client.get(D,B)}updateRepo(x,b,j,B,k,C){return this.client.put(`/orgs/${x}/teams/${b}/repos/${j}/${B}`,k,C)}}export{E as TeamsApi};\nexport{E as e};\n\n//# debugId=BDC64A6AF00153C464756E2164756E21\n",
|
|
17
|
+
"class J{client;constructor(A){this.client=A}list(A,B,j,k){let C=new URLSearchParams;if(j?.page!==void 0)C.append(\"page\",String(j.page));if(j?.per_page!==void 0)C.append(\"per_page\",String(j.per_page));if(j?.draft!==void 0)C.append(\"draft\",String(j.draft));if(j?.pre_release!==void 0)C.append(\"pre_release\",String(j.pre_release));let E=C.toString(),F=`/repos/${A}/${B}/releases${E?`?${E}`:\"\"}`;return this.client.get(F,k)}create(A,B,j,k){return this.client.post(`/repos/${A}/${B}/releases`,j,k)}get(A,B,j,k){return this.client.get(`/repos/${A}/${B}/releases/${j}`,k)}update(A,B,j,k,C){return this.client.patch(`/repos/${A}/${B}/releases/${j}`,k,C)}delete(A,B,j,k){return this.client.delete(`/repos/${A}/${B}/releases/${j}`,void 0,k)}listAssets(A,B,j,k,C){let E=new URLSearchParams;if(k?.page!==void 0)E.append(\"page\",String(k.page));if(k?.per_page!==void 0)E.append(\"per_page\",String(k.per_page));let F=E.toString(),G=`/repos/${A}/${B}/releases/${j}/assets${F?`?${F}`:\"\"}`;return this.client.get(G,C)}uploadAsset(A,B,j,k,C,E,F){let G=new URLSearchParams;if(E?.name!==void 0)G.append(\"name\",E.name);let H=G.toString(),I=`/repos/${A}/${B}/releases/${j}/assets${H?`?${H}`:\"\"}`;return this.client.uploadFile(I,\"attachment\",k,C,F)}deleteAsset(A,B,j,k,C){return this.client.delete(`/repos/${A}/${B}/releases/${j}/assets/${k}`,void 0,C)}getByTag(A,B,j,k){return this.client.get(`/repos/${A}/${B}/releases/tags/${j}`,k)}deleteByTag(A,B,j,k){return this.client.delete(`/repos/${A}/${B}/releases/tags/${j}`,void 0,k)}}export{J as ReleasesApi};\nexport{J as f};\n\n//# debugId=3937E12A66C61ED864756E2164756E21\n",
|
|
18
|
+
"class I{client;constructor(k){this.client=k}create(k,v,z,j){return this.client.post(`/repos/${k}/${v}/pulls`,z,j)}listCommits(k,v,z,j,D){let C=new URLSearchParams;if(j?.page!==void 0)C.append(\"page\",String(j.page));if(j?.per_page!==void 0)C.append(\"per_page\",String(j.per_page));let F=C.toString(),G=`/repos/${k}/${v}/pulls/${z}/commits${F?`?${F}`:\"\"}`;return this.client.get(G,D)}listFiles(k,v,z,j,D){let C=new URLSearchParams;if(j?.page!==void 0)C.append(\"page\",String(j.page));if(j?.per_page!==void 0)C.append(\"per_page\",String(j.per_page));let F=C.toString(),G=`/repos/${k}/${v}/pulls/${z}/files${F?`?${F}`:\"\"}`;return this.client.get(G,D)}isMerged(k,v,z,j){return this.client.get(`/repos/${k}/${v}/pulls/${z}/merge`,j)}updateBranch(k,v,z,j,D){return this.client.put(`/repos/${k}/${v}/pulls/${z}/update-branch`,j,D)}}export{I as PullsApi};\nexport{I as g};\n\n//# debugId=EA9413C3C36B9B5F64756E2164756E21\n",
|
|
19
|
+
"class F{client;constructor(w){this.client=w}listOrgSecrets(w,j,x){let A=new URLSearchParams;if(j?.per_page!==void 0)A.append(\"per_page\",j.per_page);if(j?.page!==void 0)A.append(\"page\",j.page);let B=A.toString(),D=`/orgs/${w}/actions/secrets${B?`?${B}`:\"\"}`;return this.client.get(D,x)}getOrgSecret(w,j,x){return this.client.get(`/orgs/${w}/actions/secrets/${j}`,x)}createOrUpdateOrgSecret(w,j,x,A){let B=new URLSearchParams;if(x?.encrypted_value!==void 0)B.append(\"encrypted_value\",x.encrypted_value);let D=B.toString(),E=`/orgs/${w}/actions/secrets/${j}${D?`?${D}`:\"\"}`;return this.client.put(E,A)}deleteOrgSecret(w,j,x){return this.client.delete(`/orgs/${w}/actions/secrets/${j}`,void 0,x)}isMember(w,j,x){return this.client.get(`/orgs/${w}/members/${j}`,x)}}export{F as OrganizationsApi};\nexport{F as h};\n\n//# debugId=1825C7F3AA4A026964756E2164756E21\n",
|
|
20
|
+
"class F{client;constructor(x){this.client=x}listOrgRunners(x,j,b){let z=new URLSearchParams;if(j?.page!==void 0)z.append(\"page\",String(j.page));if(j?.per_page!==void 0)z.append(\"per_page\",String(j.per_page));let A=z.toString(),B=`/orgs/${x}/actions/runners${A?`?${A}`:\"\"}`;return this.client.get(B,b)}getOrgRunner(x,j,b){return this.client.get(`/orgs/${x}/actions/runners/${j}`,b)}deleteOrgRunner(x,j,b){return this.client.delete(`/orgs/${x}/actions/runners/${j}`,void 0,b)}createOrgRunnerRegistrationToken(x,j){return this.client.post(`/orgs/${x}/actions/runners/registration-token`,j)}listOrgVariables(x,j,b){let z=new URLSearchParams;if(j?.per_page!==void 0)z.append(\"per_page\",String(j.per_page));if(j?.page!==void 0)z.append(\"page\",String(j.page));let A=z.toString(),B=`/orgs/${x}/actions/variables${A?`?${A}`:\"\"}`;return this.client.get(B,b)}createOrgVariable(x,j,b){return this.client.post(`/orgs/${x}/actions/variables`,j,b)}getOrgVariable(x,j,b){return this.client.get(`/orgs/${x}/actions/variables/${j}`,b)}updateOrgVariable(x,j,b,z){return this.client.patch(`/orgs/${x}/actions/variables/${j}`,b,z)}deleteOrgVariable(x,j,b){return this.client.delete(`/orgs/${x}/actions/variables/${j}`,void 0,b)}listArtifacts(x,j,b,z){let A=new URLSearchParams;if(b?.page!==void 0)A.append(\"page\",String(b.page));if(b?.per_page!==void 0)A.append(\"per_page\",String(b.per_page));if(b?.name!==void 0)A.append(\"name\",b.name);let B=A.toString(),C=`/repos/${x}/${j}/actions/artifacts${B?`?${B}`:\"\"}`;return this.client.get(C,z)}getArtifact(x,j,b,z){return this.client.get(`/repos/${x}/${j}/actions/artifacts/${b}`,z)}deleteArtifact(x,j,b,z){return this.client.delete(`/repos/${x}/${j}/actions/artifacts/${b}`,void 0,z)}downloadArtifact(x,j,b,z){return this.client.get(`/repos/${x}/${j}/actions/artifacts/${b}/zip`,z)}downloadArtifactRaw(x,j,b,z){return this.client.get(`/repos/${x}/${j}/actions/artifacts/${b}/zip/raw`,z)}createActionLink(x,j,b,z){return this.client.post(`/repos/${x}/${j}/actions/links`,b,z)}listRepoRunners(x,j,b,z){let A=new URLSearchParams;if(b?.page!==void 0)A.append(\"page\",String(b.page));if(b?.per_page!==void 0)A.append(\"per_page\",String(b.per_page));let B=A.toString(),C=`/repos/${x}/${j}/actions/runners${B?`?${B}`:\"\"}`;return this.client.get(C,z)}getRepoRunner(x,j,b,z){return this.client.get(`/repos/${x}/${j}/actions/runners/${b}`,z)}deleteRepoRunner(x,j,b,z){return this.client.delete(`/repos/${x}/${j}/actions/runners/${b}`,void 0,z)}createRepoRunnerRegistrationToken(x,j,b){return this.client.post(`/repos/${x}/${j}/actions/runners/registration-token`,b)}listRepoVariables(x,j,b,z){let A=new URLSearchParams;if(b?.per_page!==void 0)A.append(\"per_page\",String(b.per_page));if(b?.page!==void 0)A.append(\"page\",String(b.page));let B=A.toString(),C=`/repos/${x}/${j}/actions/variables${B?`?${B}`:\"\"}`;return this.client.get(C,z)}createRepoVariable(x,j,b,z){return this.client.post(`/repos/${x}/${j}/actions/variables`,b,z)}getRepoVariable(x,j,b,z){return this.client.get(`/repos/${x}/${j}/actions/variables/${b}`,z)}updateRepoVariable(x,j,b,z,A){return this.client.patch(`/repos/${x}/${j}/actions/variables/${b}`,z,A)}deleteRepoVariable(x,j,b,z){return this.client.delete(`/repos/${x}/${j}/actions/variables/${b}`,void 0,z)}getWorkflowDispatchInputs(x,j,b,z,A){let B=new URLSearchParams;if(z?.branch!==void 0)B.append(\"branch\",z.branch);if(z?.tag!==void 0)B.append(\"tag\",z.tag);let C=B.toString(),D=`/repos/${x}/${j}/actions/workflows/${b}/dispatches${C?`?${C}`:\"\"}`;return this.client.get(D,A)}dispatchWorkflow(x,j,b,z,A,B){let C=new URLSearchParams;if(A?.branch!==void 0)C.append(\"branch\",A.branch);if(A?.tag!==void 0)C.append(\"tag\",A.tag);let D=C.toString(),E=`/repos/${x}/${j}/actions/workflows/${b}/dispatches${D?`?${D}`:\"\"}`;return this.client.post(E,z,B)}}export{F as ActionsApi};\nexport{F as i};\n\n//# debugId=0900963D7256404764756E2164756E21\n",
|
|
21
|
+
"class A{client;constructor(b){this.client=b}list(b,k){let j=new URLSearchParams;if(b?.page!==void 0)j.append(\"page\",String(b.page));if(b?.per_page!==void 0)j.append(\"per_page\",String(b.per_page));if(b?.sort!==void 0)j.append(\"sort\",b.sort);if(b?.direction!==void 0)j.append(\"direction\",b.direction);let x=j.toString(),z=`/user/starred${x?`?${x}`:\"\"}`;return this.client.get(z,k)}isStarred(b,k,j){return this.client.get(`/user/starred/${b}/${k}`,j)}star(b,k,j){return this.client.put(`/user/starred/${b}/${k}`,j)}unstar(b,k,j){return this.client.delete(`/user/starred/${b}/${k}`,void 0,j)}}export{A as StarsApi};\nexport{A as j};\n\n//# debugId=DCFF7DC45D09AC5964756E2164756E21\n",
|
|
22
|
+
"class z{client;constructor(j){this.client=j}list(j,v){let k=new URLSearchParams;if(j?.q!==void 0)k.append(\"q\",j.q);if(j?.sort!==void 0)k.append(\"sort\",j.sort);if(j?.order!==void 0)k.append(\"order\",j.order);if(j?.page!==void 0)k.append(\"page\",String(j.page));if(j?.per_page!==void 0)k.append(\"per_page\",String(j.per_page));let w=k.toString(),x=`/search/users${w?`?${w}`:\"\"}`;return this.client.get(x,v)}getAuthenticated(j){return this.client.get(\"/user\",j)}get(j,v){return this.client.get(`/user/${j}`,v)}getByUsername(j,v){return this.client.get(`/users/${j}`,v)}}export{z as UsersApi};\nexport{z as v};\n\n//# debugId=401BF54ADE638FB564756E2164756E21\n",
|
|
23
|
+
"class A{client;constructor(b){this.client=b}createDeployment(b,j,k,v){return this.client.post(`/repos/${b}/${j}/pages/deployments`,k,v)}getDeploymentStatus(b,j,k,v){return this.client.get(`/repos/${b}/${j}/pages/deployments/${k}`,v)}}export{A as PagesApi};\nexport{A as w};\n\n//# debugId=94290930554E142464756E2164756E21\n",
|
|
24
|
+
"import{a as d}from\"./client.js\";import{b as v}from\"./api/issues.js\";import{c as q}from\"./api/emails.js\";import{d as D}from\"./api/repositories.js\";import{e as H}from\"./api/teams.js\";import{f as B}from\"./api/releases.js\";import{g as y}from\"./api/pulls.js\";import{h as w}from\"./api/organizations.js\";import{i as j}from\"./api/actions.js\";import{j as F}from\"./api/stars.js\";import{k as U,l as V,m as f,n as z,o as P,p as R,q as k,r as c}from\"./enums.js\";import{s as O,t as S,u as T}from\"./errors.js\";import{v as J}from\"./api/users.js\";import{w as x}from\"./api/pages.js\";class K{client;actions;orgs;teams;repos;issues;pages;pulls;releases;users;emails;stars;constructor(b={}){this.client=new d(b),this.actions=new j(this.client),this.orgs=new w(this.client),this.teams=new H(this.client),this.repos=new D(this.client),this.issues=new v(this.client),this.pages=new x(this.client),this.pulls=new y(this.client),this.releases=new B(this.client),this.users=new J(this.client),this.emails=new q(this.client),this.stars=new F(this.client)}setToken(b){return this.client.setToken(b),this}}export{c as VisibilityType,k as UserType,S as RateLimitError,R as PullRequestStateFilter,P as PullRequestState,z as PullRequestSortDirection,f as PullRequestSortCriteria,V as IssueState,O as GitVerseApiError,K as GitVerse,U as ContentType,T as ApiVersionWarning};\n\n//# debugId=D1B9FE6F71B7BB4064756E2164756E21\n",
|
|
25
25
|
"import type { GitPlatform } from \"./types\";\n\n/**\n * Конфигурация токенов для платформы\n */\ninterface TokenConfig {\n /** Переменные окружения */\n envVars: string[];\n}\n\n/**\n * Конфигурация токенов по платформам\n */\nconst TOKEN_CONFIGS: Record<GitPlatform, TokenConfig> = {\n github: {\n envVars: [\"GITHUB_TOKEN\", \"GH_TOKEN\"],\n },\n gitlab: {\n envVars: [\"GITLAB_TOKEN\", \"GL_TOKEN\"],\n },\n gitverse: {\n envVars: [\"GVR_TOKEN\"],\n },\n};\n\n/**\n * Результат получения токена\n */\nexport interface TokenResult {\n /** Токен */\n token: string;\n /** Имя переменной окружения, из которой получен токен */\n source: string;\n}\n\n/**\n * Получает токен для указанной платформы\n *\n * @param platform - Git платформа\n * @returns Результат с токеном или null если токен не найден\n *\n * @example\n * const result = getToken(\"github\");\n * if (result) {\n * console.log(`Token from ${result.source}`);\n * }\n */\nexport function getToken(platform: GitPlatform): TokenResult | null {\n const config = TOKEN_CONFIGS[platform];\n\n for (const envVar of config.envVars) {\n const token = process.env[envVar];\n if (token) {\n return {\n source: envVar,\n token,\n };\n }\n }\n\n return null;\n}\n\n/**\n * Проверяет, запущен ли скрипт в CI окружении платформы\n *\n * @param platform - Git платформа\n */\nexport function isCI(platform: GitPlatform): boolean {\n switch (platform) {\n case \"gitverse\":\n return process.env.GITVERSE_ACTIONS === \"true\";\n case \"github\":\n return process.env.GITHUB_ACTIONS === \"true\";\n case \"gitlab\":\n return process.env.GITLAB_CI === \"true\";\n }\n}\n\n/**\n * Генерирует сообщение об ошибке отсутствия токена\n *\n * @param platform - Git платформа\n * @returns Сообщение с инструкциями\n */\nexport function getTokenNotFoundError(platform: GitPlatform): string {\n const config = TOKEN_CONFIGS[platform];\n const primaryVar = config.envVars[0];\n\n if (!primaryVar) {\n return `No token configuration found for platform: ${platform}`;\n }\n\n const baseMessage = `${primaryVar} environment variable is required for creating releases`;\n\n if (isCI(platform)) {\n const ciName = getCiName(platform);\n return (\n `${baseMessage}.\\n` +\n ` You are running in ${ciName}.\\n` +\n ` Add ${primaryVar} to your repository secrets and pass it to the workflow:\\n\\n` +\n getCiSecretExample(platform, primaryVar)\n );\n }\n\n return baseMessage;\n}\n\n/**\n * Возвращает название CI системы для платформы\n */\nfunction getCiName(platform: GitPlatform): string {\n switch (platform) {\n case \"gitverse\":\n return \"GitVerse Actions\";\n case \"github\":\n return \"GitHub Actions\";\n case \"gitlab\":\n return \"GitLab CI\";\n }\n}\n\n/**\n * Возвращает пример использования секрета в CI\n */\nfunction getCiSecretExample(platform: GitPlatform, varName: string): string {\n switch (platform) {\n case \"gitverse\":\n case \"github\":\n return ` env:\\n ${varName}: \\${{ secrets.${varName} }}`;\n case \"gitlab\":\n return ` variables:\\n ${varName}: $${varName}`;\n }\n}\n\n/**\n * Возвращает список всех поддерживаемых переменных окружения для платформы\n *\n * @param platform - Git платформа\n */\nexport function getSupportedEnvVars(platform: GitPlatform): string[] {\n const config = TOKEN_CONFIGS[platform];\n return [...config.envVars];\n}\n",
|
|
26
26
|
"import { detectPlatformAuto } from \"./detector\";\nimport { GitHubReleaseProvider } from \"./github\";\nimport { GitVerseReleaseProvider } from \"./gitverse\";\nimport { getToken, getTokenNotFoundError } from \"./tokens\";\nimport type { GitPlatform, ProviderRepoInfo, ReleaseProvider, RetryFunction } from \"./types\";\n\n/**\n * Опции для создания провайдера релизов\n */\nexport interface CreateReleaseProviderOptions {\n /** Информация о репозитории */\n repoInfo: ProviderRepoInfo;\n /** Платформа (если не указана, будет определена автоматически) */\n platform?: GitPlatform | \"auto\";\n /** Токен авторизации (если не указан, будет получен из env) */\n token?: string;\n /** Retry функция (опционально) */\n retryFn?: RetryFunction;\n}\n\n/**\n * Результат создания провайдера\n */\nexport interface CreateReleaseProviderResult {\n /** Провайдер релизов */\n provider: ReleaseProvider;\n /** Источник токена */\n tokenSource: string;\n /** Определённая платформа */\n platform: GitPlatform;\n}\n\n/**\n * Создаёт провайдер релизов для указанной платформы\n *\n * Автоматически определяет платформу по URL репозитория или CI окружению,\n * получает токен из переменных окружения и создаёт соответствующий провайдер.\n *\n * @example\n * ```ts\n * const { provider } = createReleaseProvider({\n * repoInfo: { owner: \"user\", repo: \"project\", host: \"github.com\" },\n * });\n *\n * const release = await provider.createRelease(\"v1.0.0\", \"Release 1.0.0\", \"Changelog\");\n * ```\n */\nexport function createReleaseProvider(options: CreateReleaseProviderOptions): CreateReleaseProviderResult {\n const { repoInfo, retryFn } = options;\n\n // Определяем платформу\n let platform: GitPlatform;\n\n if (options.platform && options.platform !== \"auto\") {\n platform = options.platform;\n } else {\n // Автоопределение по хосту\n const detected = detectPlatformAuto(`https://${repoInfo.host}/${repoInfo.owner}/${repoInfo.repo}`);\n\n if (!detected) {\n throw new Error(\n `Unable to detect platform for host: ${repoInfo.host}. ` +\n 'Please specify platform explicitly: \"gitverse\", \"github\", or \"gitlab\"',\n );\n }\n\n platform = detected;\n }\n\n // Получаем токен\n let token: string;\n let tokenSource: string;\n\n if (options.token) {\n token = options.token;\n tokenSource = \"provided\";\n } else {\n const tokenResult = getToken(platform);\n\n if (!tokenResult) {\n throw new Error(getTokenNotFoundError(platform));\n }\n\n token = tokenResult.token;\n tokenSource = tokenResult.source;\n }\n\n // Создаём провайдер для платформы\n const provider = createProviderForPlatform(platform, token, repoInfo, retryFn);\n\n return {\n platform,\n provider,\n tokenSource,\n };\n}\n\n/**\n * Создаёт провайдер для указанной платформы\n */\nfunction createProviderForPlatform(\n platform: GitPlatform,\n token: string,\n repoInfo: ProviderRepoInfo,\n retryFn?: RetryFunction,\n): ReleaseProvider {\n switch (platform) {\n case \"gitverse\":\n return new GitVerseReleaseProvider(token, repoInfo, retryFn);\n case \"github\":\n return new GitHubReleaseProvider(token, repoInfo, retryFn);\n case \"gitlab\":\n // GitLab провайдер будет добавлен позже\n throw new Error(\"GitLab provider is not implemented yet. Coming soon!\");\n default:\n throw new Error(`Unknown platform: ${platform}`);\n }\n}\n\n/**\n * Проверяет доступность токена для платформы\n *\n * @param platform - Git платформа\n * @returns true если токен найден\n */\nexport function hasToken(platform: GitPlatform): boolean {\n return getToken(platform) !== null;\n}\n\n/**\n * Валидирует токен для платформы\n *\n * @param platform - Git платформа\n * @param repoInfo - Информация о репозитории\n * @returns Результат валидации\n */\nexport async function validateToken(\n platform: GitPlatform,\n repoInfo: ProviderRepoInfo,\n): Promise<{ valid: boolean; username?: string; error?: string }> {\n const tokenResult = getToken(platform);\n\n if (!tokenResult) {\n return {\n error: getTokenNotFoundError(platform),\n valid: false,\n };\n }\n\n const provider = createProviderForPlatform(platform, tokenResult.token, repoInfo);\n return await provider.validateToken();\n}\n\n// Re-export types and utilities\nexport { detectCiEnvironment, detectPlatform, detectPlatformAuto } from \"./detector\";\nexport { GitHubReleaseProvider } from \"./github\";\nexport { GitVerseReleaseProvider } from \"./gitverse\";\nexport { formatFileSize, getAssetLimits, PLATFORM_ASSET_LIMITS, validateAsset, validateAssetBatch } from \"./limits\";\nexport { getSupportedEnvVars, getToken, getTokenNotFoundError, isCI } from \"./tokens\";\nexport type {\n AssetLimits,\n CreateReleaseOptions,\n CreateReleaseResult,\n GitPlatform,\n ProviderRepoInfo,\n ReleaseProvider,\n RetryFunction,\n TokenValidationResult,\n UploadAssetResult,\n} from \"./types\";\nexport { createProviderRepoInfo } from \"./types\";\n",
|
|
27
27
|
"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(\n options: ChangelogGenerateOptions,\n config: ChangelogConfig,\n packageName?: string,\n): 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, packageName));\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, packageName));\n }\n sections.push(\"\");\n }\n\n return sections.join(\"\\n\");\n}\n\n/**\n * Форматирует коммит для CHANGELOG\n */\nfunction formatCommit(\n commit: ConventionalCommit,\n config: ChangelogConfig,\n repoUrl?: string,\n packageName?: string,\n): string {\n const parts: string[] = [];\n\n // Основное сообщение\n let message = commit.subject;\n\n // Добавляем scope если есть И он отличается от имени пакета\n // Логика: если scope совпадает с packageName, не показываем (избыточно)\n if (commit.scope && commit.scope !== packageName) {\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(\n commits: ConventionalCommit[],\n config: ChangelogConfig,\n repoUrl?: string,\n packageName?: string,\n): 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, packageName));\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, packageName));\n }\n sections.push(\"\");\n }\n\n return sections.join(\"\\n\").trim();\n}\n",
|
|
@@ -31,10 +31,10 @@
|
|
|
31
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 let bumpType: BumpType;\n let newVersion: string;\n\n // Если forceVersion это тип bump (major/minor/patch), используем его\n if (forceVersion === \"major\" || forceVersion === \"minor\" || forceVersion === \"patch\") {\n bumpType = forceVersion;\n newVersion = bumpVersion(currentVersion, bumpType, prerelease);\n } else if (forceVersion) {\n // Если forceVersion это конкретная версия (например \"1.0.0\"), используем её напрямую\n bumpType = determineBumpType(commits, currentVersion, preMajorMode) || \"patch\";\n newVersion = forceVersion;\n } else {\n // Автоматическое определение версии\n bumpType = prerelease ? \"prerelease\" : determineBumpType(commits, currentVersion, preMajorMode) || \"patch\";\n newVersion = bumpVersion(currentVersion, bumpType, prerelease);\n }\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
|
"import { stat } from \"node:fs/promises\";\nimport { basename, extname } from \"node:path\";\nimport type { GitVerseReleaseProvider } from \"../providers\";\nimport type { AssetValidationResult, BinaryDistributionProvider, GitVerseAssetLimits } from \"../types\";\n\n/**\n * Получает расширение файла с поддержкой составных расширений (.tar.gz)\n */\nfunction getFileExtension(filePath: string): string {\n const name = basename(filePath).toLowerCase();\n\n // Проверяем составные расширения\n if (name.endsWith(\".tar.gz\")) return \".tar.gz\";\n if (name.endsWith(\".tgz.xz\")) return \".tgz.xz\";\n\n return extname(filePath).toLowerCase();\n}\n\n/**\n * Лимиты GitVerse для артефактов релиза\n */\nexport const GITVERSE_ASSET_LIMITS: GitVerseAssetLimits = {\n /** Допустимые расширения файлов */\n allowedExtensions: [\n \".7z\",\n \".appimage\",\n \".apk\",\n \".cab\",\n \".csv\",\n \".doc\",\n \".docx\",\n \".fodg\",\n \".fodp\",\n \".fods\",\n \".fodt\",\n \".gif\",\n \".gz\",\n \".jar\",\n \".jpeg\",\n \".jpg\",\n \".js\",\n \".log\",\n \".md\",\n \".odf\",\n \".odg\",\n \".odp\",\n \".ods\",\n \".odt\",\n \".patch\",\n \".pdf\",\n \".png\",\n \".pptx\",\n \".rar\",\n \".svg\",\n \".tar.gz\",\n \".tgz\",\n \".txt\",\n \".webm\",\n \".whl\",\n \".xls\",\n \".xlsx\",\n \".zip\",\n ],\n /** Максимальный размер одного файла: 100 МБ */\n maxFileSizeBytes: 100 * 1024 * 1024,\n /** Максимальное количество файлов за раз */\n maxFilesPerUpload: 5,\n /** Максимальный совокупный размер за раз: 500 МБ */\n maxTotalSizeBytes: 500 * 1024 * 1024,\n};\n\n/**\n * Форматирует размер файла в человекочитаемый формат\n */\nexport function formatFileSize(bytes: number): string {\n if (bytes < 1024) return `${bytes} B`;\n if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`;\n return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;\n}\n\n/**\n * Валидирует файл для загрузки в GitVerse Release\n *\n * @param filePath - Путь к файлу\n * @returns Результат валидации\n */\nexport async function validateAssetFile(filePath: string): Promise<AssetValidationResult> {\n try {\n const stats = await stat(filePath);\n const sizeBytes = stats.size;\n\n // Проверяем размер файла\n if (sizeBytes > GITVERSE_ASSET_LIMITS.maxFileSizeBytes) {\n return {\n error: `File size ${formatFileSize(sizeBytes)} exceeds maximum ${formatFileSize(GITVERSE_ASSET_LIMITS.maxFileSizeBytes)}`,\n sizeBytes,\n valid: false,\n };\n }\n\n // Проверяем расширение\n const ext = getFileExtension(filePath);\n if (!GITVERSE_ASSET_LIMITS.allowedExtensions.includes(ext)) {\n return {\n error: `File extension \"${ext}\" is not allowed. Allowed: ${GITVERSE_ASSET_LIMITS.allowedExtensions.join(\", \")}`,\n sizeBytes,\n valid: false,\n };\n }\n\n return {\n sizeBytes,\n valid: true,\n };\n } catch (error) {\n return {\n error: `Failed to access file: ${error instanceof Error ? error.message : String(error)}`,\n valid: false,\n };\n }\n}\n\n/**\n * Валидирует набор файлов для загрузки\n *\n * @param filePaths - Массив путей к файлам\n * @returns Результат валидации с совокупным размером\n */\nexport async function validateAssetBatch(\n filePaths: string[],\n): Promise<{ valid: boolean; errors: string[]; totalSize: number }> {\n const errors: string[] = [];\n let totalSize = 0;\n\n // Проверяем количество файлов\n if (filePaths.length > GITVERSE_ASSET_LIMITS.maxFilesPerUpload) {\n errors.push(\n `Too many files: ${filePaths.length}. Maximum ${GITVERSE_ASSET_LIMITS.maxFilesPerUpload} files per upload.`,\n );\n }\n\n // Валидируем каждый файл\n for (const filePath of filePaths) {\n const result = await validateAssetFile(filePath);\n if (!result.valid) {\n errors.push(`${filePath}: ${result.error}`);\n } else if (result.sizeBytes) {\n totalSize += result.sizeBytes;\n }\n }\n\n // Проверяем совокупный размер\n if (totalSize > GITVERSE_ASSET_LIMITS.maxTotalSizeBytes) {\n errors.push(\n `Total size ${formatFileSize(totalSize)} exceeds maximum ${formatFileSize(GITVERSE_ASSET_LIMITS.maxTotalSizeBytes)}`,\n );\n }\n\n return {\n errors,\n totalSize,\n valid: errors.length === 0,\n };\n}\n\n/**\n * GitVerse провайдер дистрибуции бинарников\n */\nexport class GitVerseDistributionProvider implements BinaryDistributionProvider {\n private client: GitVerseReleaseProvider;\n private releaseId: number;\n\n constructor(client: GitVerseReleaseProvider, releaseId: number) {\n this.client = client;\n this.releaseId = releaseId;\n }\n\n /**\n * Загружает файл как asset в релиз\n *\n * @param filePath - Путь к файлу\n * @param assetName - Имя asset в релизе\n * @returns URL для скачивания\n */\n async uploadAsset(filePath: string, assetName: string): Promise<{ downloadUrl: string }> {\n // Валидируем файл перед загрузкой\n const validation = await validateAssetFile(filePath);\n if (!validation.valid) {\n throw new Error(validation.error);\n }\n\n const attachment = await this.client.uploadAsset(this.releaseId, filePath, assetName);\n\n if (!attachment.downloadUrl) {\n throw new Error(`No download URL returned for asset ${assetName}`);\n }\n\n return { downloadUrl: attachment.downloadUrl };\n }\n\n /**\n * Возвращает ID релиза\n */\n get id(): number {\n return this.releaseId;\n }\n}\n",
|
|
33
33
|
"import { access } from \"node:fs/promises\";\nimport { resolve } from \"node:path\";\nimport type { BinariesConfig, BinaryPlatform, PlatformMapping } from \"../types\";\n\n/**\n * Маппинг платформ на os/arch значения\n */\nexport const PLATFORM_MAPPINGS: Record<BinaryPlatform, PlatformMapping> = {\n \"darwin-arm64\": { arch: \"arm64\", extension: \"\", os: \"darwin\" },\n \"darwin-x64\": { arch: \"x64\", extension: \"\", os: \"darwin\" },\n \"linux-arm64\": { arch: \"arm64\", extension: \"\", os: \"linux\" },\n \"linux-x64\": { arch: \"x64\", extension: \"\", os: \"linux\" },\n \"win32-arm64\": { arch: \"arm64\", extension: \".exe\", os: \"win32\" },\n \"win32-x64\": { arch: \"x64\", extension: \".exe\", os: \"win32\" },\n};\n\n/**\n * Все поддерживаемые платформы\n */\nexport const ALL_PLATFORMS: BinaryPlatform[] = Object.keys(PLATFORM_MAPPINGS) as BinaryPlatform[];\n\n/**\n * Проверяет, что строка является валидной платформой\n */\nexport function isValidPlatform(value: string): value is BinaryPlatform {\n return value in PLATFORM_MAPPINGS;\n}\n\n/**\n * Парсит список платформ из строки (comma-separated)\n */\nexport function parsePlatforms(value: string): BinaryPlatform[] {\n const platforms = value.split(\",\").map((p) => p.trim());\n const result: BinaryPlatform[] = [];\n\n for (const platform of platforms) {\n if (!isValidPlatform(platform)) {\n throw new Error(`Invalid platform: ${platform}. Valid platforms: ${ALL_PLATFORMS.join(\", \")}`);\n }\n result.push(platform);\n }\n\n return result;\n}\n\n/**\n * Возвращает путь к бинарнику для указанной платформы\n */\nexport function getBinaryPath(distDir: string, name: string, platform: BinaryPlatform): string {\n const mapping = PLATFORM_MAPPINGS[platform];\n const binaryName = `${name}${mapping.extension}`;\n const platformDir = `${name}-${platform}`;\n return resolve(distDir, platformDir, binaryName);\n}\n\n/**\n * Возвращает путь к директории платформы\n */\nexport function getPlatformDir(distDir: string, name: string, platform: BinaryPlatform): string {\n const platformDir = `${name}-${platform}`;\n return resolve(distDir, platformDir);\n}\n\n/**\n * Проверяет существование бинарника для платформы.\n *\n * @returns true если файл существует, false если файл не найден (ENOENT)\n * @throws Error при других ошибках доступа (EACCES, ELOOP, EIO и т.д.)\n */\nexport async function validateBinaryExists(distDir: string, name: string, platform: BinaryPlatform): Promise<boolean> {\n const binaryPath = getBinaryPath(distDir, name, platform);\n try {\n await access(binaryPath);\n return true;\n } catch (error) {\n // ENOENT означает, что файл не существует - это ожидаемое поведение\n if (error instanceof Error && \"code\" in error && (error as NodeJS.ErrnoException).code === \"ENOENT\") {\n return false;\n }\n // Все остальные ошибки (EACCES, ELOOP, EIO и т.д.) должны быть проброшены\n throw new Error(\n `Failed to check binary at ${binaryPath}: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n}\n\n/**\n * Валидирует наличие бинарников для всех указанных платформ\n * @returns Массив отсутствующих платформ\n */\nexport async function validateAllBinaries(\n distDir: string,\n name: string,\n platforms: BinaryPlatform[],\n): Promise<BinaryPlatform[]> {\n const missing: BinaryPlatform[] = [];\n\n for (const platform of platforms) {\n const exists = await validateBinaryExists(distDir, name, platform);\n if (!exists) {\n missing.push(platform);\n }\n }\n\n return missing;\n}\n\n/**\n * Конвертирует платформу в Node.js process.platform и process.arch\n */\nexport function platformToNodeValues(platform: BinaryPlatform): { platform: string; arch: string } {\n const parts = platform.split(\"-\");\n return { arch: parts[1] ?? \"\", platform: parts[0] ?? \"\" };\n}\n\n/**\n * Возвращает ключ источника для платформы с учётом platformMap.\n * Если platformMap не задан или платформа не найдена, возвращает платформу как есть.\n */\nexport function getSourceKey(config: BinariesConfig, platform: BinaryPlatform): string {\n if (!config.platformMap) {\n return platform;\n }\n\n for (const [sourceKey, targetPlatform] of Object.entries(config.platformMap)) {\n if (targetPlatform === platform) {\n return sourceKey;\n }\n }\n\n return platform;\n}\n\n/**\n * Дефолтный шаблон имени архива\n */\nexport const DEFAULT_ARCHIVE_NAME_TEMPLATE = \"{{name}}-{{platform}}.tar.gz\";\n\n/**\n * Возвращает имя архива для платформы с учётом шаблона.\n */\nexport function getArchiveName(config: BinariesConfig, platform: BinaryPlatform): string {\n const template = config.archiveNameTemplate ?? DEFAULT_ARCHIVE_NAME_TEMPLATE;\n const sourceKey = getSourceKey(config, platform);\n\n return template.replace(/\\{\\{name\\}\\}/g, config.name).replace(/\\{\\{platform\\}\\}/g, sourceKey);\n}\n\n/**\n * Возвращает путь к tar.gz архиву для указанной платформы.\n */\nexport function getArchivePath(config: BinariesConfig, platform: BinaryPlatform): string {\n const archiveName = getArchiveName(config, platform);\n return resolve(config.distDir, archiveName);\n}\n\n/**\n * Проверяет существование tar.gz архива для платформы.\n *\n * @returns true если архив существует, false если не найден (ENOENT)\n * @throws Error при других ошибках доступа\n */\nexport async function validateArchiveExists(config: BinariesConfig, platform: BinaryPlatform): Promise<boolean> {\n const archivePath = getArchivePath(config, platform);\n try {\n await access(archivePath);\n return true;\n } catch (error) {\n if (error instanceof Error && \"code\" in error && (error as NodeJS.ErrnoException).code === \"ENOENT\") {\n return false;\n }\n throw new Error(\n `Failed to check archive at ${archivePath}: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n}\n\n/**\n * Универсальная проверка существования источника бинарника.\n * Поддерживает как директории, так и tar.gz архивы.\n *\n * @returns true если источник существует, false если не найден\n * @throws Error при других ошибках доступа\n */\nexport async function validateBinarySourceExists(config: BinariesConfig, platform: BinaryPlatform): Promise<boolean> {\n const inputFormat = config.inputFormat ?? \"directory\";\n\n if (inputFormat === \"tar.gz\") {\n return await validateArchiveExists(config, platform);\n }\n\n return await validateBinaryExists(config.distDir, config.name, platform);\n}\n\n/**\n * Универсальная валидация наличия источников бинарников для всех платформ.\n * Поддерживает как директории, так и tar.gz архивы.\n *\n * @returns Массив отсутствующих платформ\n */\nexport async function validateAllBinarySources(config: BinariesConfig): Promise<BinaryPlatform[]> {\n const platforms = config.platforms;\n const missing: BinaryPlatform[] = [];\n\n for (const platform of platforms) {\n const exists = await validateBinarySourceExists(config, platform);\n if (!exists) {\n missing.push(platform);\n }\n }\n\n return missing;\n}\n\n/**\n * Возвращает путь к источнику бинарника с учётом формата входных данных.\n * Для directory возвращает путь к директории платформы.\n * Для tar.gz возвращает путь к архиву.\n */\nexport function getBinarySourcePath(config: BinariesConfig, platform: BinaryPlatform): string {\n const inputFormat = config.inputFormat ?? \"directory\";\n\n if (inputFormat === \"tar.gz\") {\n return getArchivePath(config, platform);\n }\n\n return getPlatformDir(config.distDir, config.name, platform);\n}\n",
|
|
34
|
-
"import type { BinaryManifest, BinaryPlatform } from \"../types\";\n\n/**\n * Генерирует postinstall скрипт для скачивания бинарника\n *\n * @param manifest - Манифест с URL-ами для скачивания\n * @returns JavaScript код postinstall скрипта\n */\nexport function generatePostinstallScript(manifest: BinaryManifest): string {\n return `#!/usr/bin/env node\n\"use strict\";\n\nconst { platform, arch } = process;\nconst https = require(\"https\");\nconst http = require(\"http\");\nconst { createWriteStream, chmodSync, mkdirSync } = require(\"fs\");\nconst { join } = require(\"path\");\nconst { createGunzip } = require(\"zlib\");\nconst tar = require(\"tar\");\n\nconst MANIFEST = ${JSON.stringify(manifest, null, 2)};\n\nconst platformKey = \\`\\${platform}-\\${arch}\\`;\nconst downloadUrl = MANIFEST.assets[platformKey];\n\nif (!downloadUrl) {\n console.warn(\\`⚠️ No binary available for \\${platformKey}, skipping installation\\`);\n console.warn(\\` Supported platforms: \\${Object.keys(MANIFEST.assets).join(\", \")}\\`);\n process.exit(0);\n}\n\nconst binDir = join(__dirname, \"..\", \"bin\");\nmkdirSync(binDir, { recursive: true });\n\n/**\n * Downloads and extracts a tar.gz archive\n */\nfunction download(url, redirectCount = 0) {\n if (redirectCount > 5) {\n return Promise.reject(new Error(\"Too many redirects\"));\n }\n\n return new Promise((resolve, reject) => {\n const protocol = url.startsWith(\"https\") ? https : http;\n\n const request = protocol.get(url, (res) => {\n // Handle redirects\n if (res.statusCode === 301 || res.statusCode === 302 || res.statusCode === 307 || res.statusCode === 308) {\n const location = res.headers.location;\n if (!location) {\n reject(new Error(\"Redirect without location header\"));\n return;\n }\n download(location, redirectCount + 1).then(resolve).catch(reject);\n return;\n }\n\n if (res.statusCode !== 200) {\n reject(new Error(\\`Download failed: HTTP \\${res.statusCode}\\`));\n return;\n }\n\n res\n .pipe(createGunzip())\n .pipe(tar.extract({ cwd: binDir }))\n .on(\"finish\", resolve)\n .on(\"error\", reject);\n });\n\n request.on(\"error\", reject);\n request.setTimeout(30000, () => {\n request.destroy();\n reject(new Error(\"Download timeout\"));\n });\n });\n}\n\nconsole.log(\\`📦 Installing \\${MANIFEST.binName} for \\${platformKey}...\\`);\n\ndownload(downloadUrl)\n .then(() => {\n const binPath = join(binDir, MANIFEST.binName);\n if (platform !== \"win32\") {\n try {\n chmodSync(binPath, 0o755);\n } catch (e) {\n // Ignore chmod errors on some platforms\n }\n }\n console.log(\\`✅ Installed \\${MANIFEST.binName} v\\${MANIFEST.version}\\`);\n })\n .catch((err) => {\n console.error(\\`❌ Failed to install binary: \\${err.message}\\`);\n console.error(\\` URL: \\${downloadUrl}\\`);\n process.exit(1);\n });\n`;\n}\n\n/**\n * Генерирует простой wrapper скрипт для bin/\n *\n * @param binName - Имя бинарника\n * @returns JavaScript код wrapper скрипта\n */\nexport function generateBinWrapper(binName: string): string {\n return `#!/usr/bin/env node\n\"use strict\";\n\nconst { execFileSync } = require(\"child_process\");\nconst { join } = require(\"path\");\n\nconst ext = process.platform === \"win32\" ? \".exe\" : \"\";\nconst binPath = join(__dirname, \"${binName}\" + ext);\n\ntry {\n execFileSync(binPath, process.argv.slice(2), { stdio: \"inherit\" });\n} catch (err) {\n if (err.status !== undefined) {\n process.exit(err.status);\n }\n throw err;\n}\n`;\n}\n\n/**\n * Создаёт манифест для бинарной дистрибуции\n *\n * @param version - Версия\n * @param binName - Имя бинарника\n * @param assets - Маппинг платформ на URL-ы\n * @returns Манифест\n */\nexport function createBinaryManifest(\n version: string,\n binName: string,\n assets: Partial<Record<BinaryPlatform, string>>,\n): BinaryManifest {\n return {\n assets: assets as Record<BinaryPlatform, string>,\n binName,\n version,\n };\n}\n\n/**\n * Генерирует package.json для мастер-пакета с postinstall\n *\n * @param name - Имя пакета\n * @param version - Версия\n * @param binName - Имя бинарника\n * @param description - Описание пакета\n * @returns Содержимое package.json\n */\nexport function generateMasterPackageJson(\n name: string,\n version: string,\n binName: string,\n description?: string,\n): string {\n const pkg = {\n bin: {\n [binName]: `bin/${binName}.js`,\n },\n description: description ?? `${name} CLI`,\n files: [\"bin\", \"scripts\"],\n license: \"MIT\",\n name,\n scripts: {\n postinstall: \"node scripts/postinstall.js\",\n },\n version,\n };\n\n return JSON.stringify(pkg, null, 2);\n}\n",
|
|
35
|
-
"import { loadConfig, validateBinariesConfig } from \"./config\";\nimport { createReleaseProvider, type GitPlatform } from \"./providers\";\nimport type { AssetLimits } from \"./providers/types\";\nimport type {\n BinariesConfig,\n BinaryCliOptions,\n BinaryDistributionResult,\n BinaryPlatform,\n BinaryUploadResult,\n} from \"./types\";\nimport { formatFileSize, GITVERSE_ASSET_LIMITS, validateAssetBatch } from \"./utils/binary-distribution-provider\";\nimport { getArchivePath, validateAllBinarySources } from \"./utils/binary-platforms\";\nimport { createBinaryManifest, generatePostinstallScript } from \"./utils/binary-postinstall-generator\";\nimport { getCurrentVersion, getRepoInfo } from \"./utils/git\";\nimport { createRetryFunction } from \"./utils/retry\";\n\n/**\n * Интерфейс для загрузки assets\n */\ninterface AssetUploader {\n /** Лимиты платформы */\n limits: AssetLimits;\n /** Загружает asset */\n uploadAsset(filePath: string, assetName: string): Promise<{ downloadUrl: string }>;\n}\n\n/**\n * Задержка между попытками\n */\nfunction sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\n/**\n * Вычисляет задержку с экспоненциальным backoff\n */\nfunction calculateDelay(attempt: number, initialDelay = 2000, maxDelay = 30000): number {\n const delay = initialDelay * 2 ** attempt;\n return Math.min(delay, maxDelay);\n}\n\n/**\n * Публикует бинарники в GitVerse Release\n *\n * Процесс:\n * 1. Загружает конфигурацию и валидирует её\n * 2. Проверяет наличие архивов для всех платформ\n * 3. Валидирует файлы на соответствие лимитам GitVerse\n * 4. Создаёт или находит существующий релиз\n * 5. Загружает архивы как assets в релиз\n * 6. Генерирует postinstall скрипт и manifest\n *\n * @param options - Опции публикации\n * @returns Результат публикации\n */\n// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Main entry point with many edge cases\nexport async function publishBinaries(options: BinaryCliOptions = {}): Promise<BinaryDistributionResult> {\n const result: BinaryDistributionResult = {\n errors: [],\n success: false,\n uploads: [],\n version: \"\",\n warnings: [],\n };\n\n try {\n // Загружаем конфигурацию\n const config = await loadConfig(options.config);\n\n if (!config.binaries?.enabled) {\n result.errors.push(\"Binary distribution is not enabled in config\");\n return result;\n }\n\n validateBinariesConfig(config.binaries);\n\n const binariesConfig = config.binaries;\n\n // Получаем версию\n const version = options.version ?? (await getCurrentVersion(\".\"));\n result.version = version;\n\n // Определяем платформы\n const platforms = options.platforms ?? binariesConfig.platforms;\n\n // Валидируем наличие архивов\n const missingBinaries = await validateAllBinarySources({ ...binariesConfig, platforms });\n\n if (missingBinaries.length > 0) {\n for (const platform of missingBinaries) {\n console.warn(`⚠️ Archive not found for platform: ${platform}`);\n result.warnings.push(`Archive not found for platform: ${platform}`);\n }\n\n if (missingBinaries.length === platforms.length) {\n result.errors.push(\"No archives found for any platform\");\n return result;\n }\n }\n\n // Фильтруем платформы с существующими архивами\n const availablePlatforms = platforms.filter((p) => !missingBinaries.includes(p));\n\n // Получаем пути к архивам\n const archivePaths = availablePlatforms.map((platform) => getArchivePath(binariesConfig, platform));\n\n // Валидируем файлы перед загрузкой\n const batchValidation = await validateAssetBatch(archivePaths);\n\n if (!batchValidation.valid) {\n for (const error of batchValidation.errors) {\n console.error(`❌ ${error}`);\n result.errors.push(error);\n }\n return result;\n }\n\n console.log(\n `\\n📦 Preparing to upload ${availablePlatforms.length} archives (${formatFileSize(batchValidation.totalSize)})\\n`,\n );\n\n if (options.dryRun) {\n console.log(\"🔍 DRY RUN MODE\\n\");\n printDryRun(binariesConfig, version, availablePlatforms);\n result.success = true;\n return result;\n }\n\n // Получаем информацию о репозитории\n const repoInfo = await getRepoInfo();\n\n // Определяем платформу\n const platform: GitPlatform | \"auto\" = config.release?.platform ?? \"auto\";\n const detectedPlatform = platform === \"auto\" ? (repoInfo.platform ?? \"gitverse\") : platform;\n\n console.log(`🔗 Using ${detectedPlatform} release provider`);\n\n // Создаём retry функцию\n const retryFn = config.retry.enabled ? createRetryFunction(config.retry) : undefined;\n\n // Создаём провайдер\n const { provider, platform: _actualPlatform } = createReleaseProvider({\n platform: detectedPlatform,\n repoInfo: {\n host: repoInfo.host ?? \"gitverse.ru\",\n owner: repoInfo.owner,\n repo: repoInfo.repo,\n },\n retryFn,\n });\n\n // Валидируем токен\n const tokenValidation = await provider.validateToken();\n if (!tokenValidation.valid) {\n result.errors.push(tokenValidation.error ?? \"Token validation failed\");\n return result;\n }\n\n console.log(`✅ Authenticated as ${tokenValidation.username}\\n`);\n\n // Определяем тег\n const tagPrefix = config.versioning?.tagPrefix ?? \"v\";\n const tag = options.tag ?? `${tagPrefix}${version}`;\n\n // Ищем или создаём релиз\n let releaseId: number | string;\n\n const existingRelease = await provider.getRelease(tag);\n\n if (existingRelease?.id) {\n releaseId = existingRelease.id;\n console.log(`📋 Using existing release: ${tag} (ID: ${releaseId})`);\n } else {\n // Создаём новый релиз\n console.log(`📋 Creating new release: ${tag}`);\n\n const binName = binariesConfig.binName ?? binariesConfig.name;\n const newRelease = await provider.createRelease(\n tag,\n `${binName} ${version}`,\n `Binary release for ${binName} v${version}`,\n );\n\n releaseId = newRelease.id;\n result.releaseUrl = newRelease.url;\n console.log(`✅ Release created: ${newRelease.url}\\n`);\n }\n\n result.releaseId = typeof releaseId === \"number\" ? releaseId : undefined;\n\n // Загружаем архивы\n console.log(\"🚀 Uploading assets...\\n\");\n\n // Создаём обёртку для загрузки\n const assetUploader: AssetUploader = {\n limits: provider.assetLimits,\n uploadAsset: async (filePath, assetName) => {\n const result = await provider.uploadAsset(releaseId, filePath, assetName);\n return { downloadUrl: result.downloadUrl };\n },\n };\n\n const uploadResults = await uploadAllAssets(\n binariesConfig,\n version,\n availablePlatforms,\n assetUploader,\n options.verbose,\n );\n result.uploads = uploadResults;\n\n const successfulUploads = uploadResults.filter((r) => r.success);\n const failedUploads = uploadResults.filter((r) => !r.success);\n\n // Выводим итоги\n console.log(\"\\n📊 Upload Summary:\");\n console.log(` Total: ${uploadResults.length}`);\n console.log(` Successful: ${successfulUploads.length}`);\n console.log(` Failed: ${failedUploads.length}`);\n\n if (failedUploads.length > 0) {\n console.log(\"\\n❌ Failed uploads:\");\n for (const upload of failedUploads) {\n console.log(` ${upload.platform}: ${upload.error}`);\n result.warnings.push(`Failed to upload ${upload.platform}: ${upload.error}`);\n }\n\n if (!binariesConfig.continueOnError) {\n result.errors.push(\"Some assets failed to upload\");\n return result;\n }\n }\n\n // Генерируем manifest и postinstall скрипт\n if (successfulUploads.length > 0) {\n const assets: Partial<Record<BinaryPlatform, string>> = {};\n for (const upload of successfulUploads) {\n if (upload.success) {\n assets[upload.platform] = upload.downloadUrl;\n }\n }\n\n const binName = binariesConfig.binName ?? binariesConfig.name;\n const manifest = createBinaryManifest(version, binName, assets);\n\n console.log(\"\\n📝 Generated manifest:\");\n console.log(JSON.stringify(manifest, null, 2));\n\n console.log(\"\\n📜 Postinstall script:\");\n console.log(\"---\");\n console.log(generatePostinstallScript(manifest));\n console.log(\"---\");\n }\n\n result.success = successfulUploads.length > 0;\n\n if (result.success) {\n console.log(\"\\n✅ Binary distribution completed successfully!\");\n }\n } catch (error) {\n result.errors.push(error instanceof Error ? error.message : String(error));\n console.error(\"\\n❌ Binary distribution failed:\");\n console.error(error);\n }\n\n return result;\n}\n\n/**\n * Загружает все assets в релиз\n */\nasync function uploadAllAssets(\n config: BinariesConfig,\n _version: string,\n platforms: BinaryPlatform[],\n uploader: AssetUploader,\n verbose = false,\n): Promise<BinaryUploadResult[]> {\n const results: BinaryUploadResult[] = [];\n\n // Загружаем последовательно с учётом лимитов платформы\n const batchSize = Math.min(uploader.limits.maxFilesPerUpload, 3);\n\n for (let i = 0; i < platforms.length; i += batchSize) {\n const batch = platforms.slice(i, i + batchSize);\n\n const batchResults = await Promise.all(\n batch.map((platform) => uploadAssetWithRetry(config, platform, uploader, verbose)),\n );\n\n results.push(...batchResults);\n\n // Небольшая задержка между батчами\n if (i + batchSize < platforms.length) {\n await sleep(500);\n }\n }\n\n return results;\n}\n\n/**\n * Загружает один asset с retry\n */\nasync function uploadAssetWithRetry(\n config: BinariesConfig,\n platform: BinaryPlatform,\n uploader: AssetUploader,\n verbose = false,\n): Promise<BinaryUploadResult> {\n const archivePath = getArchivePath(config, platform);\n const assetName = `${config.name}-${platform}.tar.gz`;\n\n let lastError: Error | undefined;\n let attempts = 0;\n\n for (let attempt = 0; attempt < config.retryAttempts; attempt++) {\n attempts = attempt + 1;\n\n try {\n if (verbose) {\n console.log(`📤 Uploading ${assetName} (attempt ${attempts}/${config.retryAttempts})...`);\n }\n\n const result = await uploader.uploadAsset(archivePath, assetName);\n\n if (verbose) {\n console.log(`✅ Uploaded ${assetName}: ${result.downloadUrl}`);\n } else {\n console.log(` ✅ ${platform}`);\n }\n\n return {\n assetName,\n attempts,\n downloadUrl: result.downloadUrl,\n platform,\n success: true as const,\n };\n } catch (error) {\n lastError = error instanceof Error ? error : new Error(String(error));\n\n if (attempt < config.retryAttempts - 1) {\n const delay = calculateDelay(attempt);\n console.warn(`⚠️ Upload failed for ${assetName} (attempt ${attempts}/${config.retryAttempts})`);\n console.warn(` ${lastError.message}`);\n console.warn(` Retrying in ${delay}ms...`);\n await sleep(delay);\n }\n }\n }\n\n console.error(`❌ Failed to upload ${assetName}: ${lastError?.message}`);\n\n return {\n assetName,\n attempts,\n error: lastError?.message ?? \"Unknown error\",\n platform,\n success: false as const,\n };\n}\n\n/**\n * Печатает информацию в dry-run режиме\n */\nfunction printDryRun(config: BinariesConfig, version: string, platforms: BinaryPlatform[]): void {\n const binName = config.binName ?? config.name;\n\n console.log(\"📦 Binary Distribution:\");\n console.log(` Name: ${config.name}`);\n console.log(` Binary name: ${binName}`);\n console.log(` Version: ${version}`);\n console.log(` Platforms: ${platforms.join(\", \")}`);\n console.log(` Input format: ${config.inputFormat ?? \"tar.gz\"}`);\n\n console.log(\"\\n📁 Archives to upload:\");\n for (const platform of platforms) {\n const archivePath = getArchivePath(config, platform);\n const assetName = `${config.name}-${platform}.tar.gz`;\n console.log(` ${platform}:`);\n console.log(` Source: ${archivePath}`);\n console.log(` Asset name: ${assetName}`);\n }\n\n // Показываем лимиты GitVerse по умолчанию в dry-run\n // В реальном режиме будут использоваться лимиты из провайдера\n console.log(\"\\n🔒 Default Asset Limits (GitVerse):\");\n console.log(` Max file size: ${formatFileSize(GITVERSE_ASSET_LIMITS.maxFileSizeBytes)}`);\n console.log(` Max files per upload: ${GITVERSE_ASSET_LIMITS.maxFilesPerUpload}`);\n console.log(` Max total size: ${formatFileSize(GITVERSE_ASSET_LIMITS.maxTotalSizeBytes)}`);\n console.log(\" Note: Actual limits depend on detected platform\");\n}\n"
|
|
34
|
+
"import { mkdir, readFile, writeFile } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport type { BinariesNpmConfig, BinaryManifest, BinaryPlatform } from \"../types\";\n\n/**\n * Генерирует postinstall скрипт для скачивания бинарника\n *\n * @param manifest - Манифест с URL-ами для скачивания\n * @returns JavaScript код postinstall скрипта\n */\nexport function generatePostinstallScript(manifest: BinaryManifest): string {\n return `#!/usr/bin/env node\n\"use strict\";\n\nconst { platform, arch } = process;\nconst https = require(\"https\");\nconst http = require(\"http\");\nconst { createWriteStream, chmodSync, mkdirSync } = require(\"fs\");\nconst { join } = require(\"path\");\nconst { createGunzip } = require(\"zlib\");\nconst tar = require(\"tar\");\n\nconst MANIFEST = ${JSON.stringify(manifest, null, 2)};\n\nconst platformKey = \\`\\${platform}-\\${arch}\\`;\nconst downloadUrl = MANIFEST.assets[platformKey];\n\nif (!downloadUrl) {\n console.warn(\\`⚠️ No binary available for \\${platformKey}, skipping installation\\`);\n console.warn(\\` Supported platforms: \\${Object.keys(MANIFEST.assets).join(\", \")}\\`);\n process.exit(0);\n}\n\nconst binDir = join(__dirname, \"..\", \"bin\");\nmkdirSync(binDir, { recursive: true });\n\n/**\n * Downloads and extracts a tar.gz archive\n */\nfunction download(url, redirectCount = 0) {\n if (redirectCount > 5) {\n return Promise.reject(new Error(\"Too many redirects\"));\n }\n\n return new Promise((resolve, reject) => {\n const protocol = url.startsWith(\"https\") ? https : http;\n\n const request = protocol.get(url, (res) => {\n // Handle redirects\n if (res.statusCode === 301 || res.statusCode === 302 || res.statusCode === 307 || res.statusCode === 308) {\n const location = res.headers.location;\n if (!location) {\n reject(new Error(\"Redirect without location header\"));\n return;\n }\n download(location, redirectCount + 1).then(resolve).catch(reject);\n return;\n }\n\n if (res.statusCode !== 200) {\n reject(new Error(\\`Download failed: HTTP \\${res.statusCode}\\`));\n return;\n }\n\n res\n .pipe(createGunzip())\n .pipe(tar.extract({ cwd: binDir }))\n .on(\"finish\", resolve)\n .on(\"error\", reject);\n });\n\n request.on(\"error\", reject);\n request.setTimeout(30000, () => {\n request.destroy();\n reject(new Error(\"Download timeout\"));\n });\n });\n}\n\nconsole.log(\\`📦 Installing \\${MANIFEST.binName} for \\${platformKey}...\\`);\n\ndownload(downloadUrl)\n .then(() => {\n const binPath = join(binDir, MANIFEST.binName);\n if (platform !== \"win32\") {\n try {\n chmodSync(binPath, 0o755);\n } catch (e) {\n // Ignore chmod errors on some platforms\n }\n }\n console.log(\\`✅ Installed \\${MANIFEST.binName} v\\${MANIFEST.version}\\`);\n })\n .catch((err) => {\n console.error(\\`❌ Failed to install binary: \\${err.message}\\`);\n console.error(\\` URL: \\${downloadUrl}\\`);\n process.exit(1);\n });\n`;\n}\n\n/**\n * Генерирует простой wrapper скрипт для bin/\n *\n * @param binName - Имя бинарника\n * @returns JavaScript код wrapper скрипта\n */\nexport function generateBinWrapper(binName: string): string {\n return `#!/usr/bin/env node\n\"use strict\";\n\nconst { execFileSync } = require(\"child_process\");\nconst { join } = require(\"path\");\n\nconst ext = process.platform === \"win32\" ? \".exe\" : \"\";\nconst binPath = join(__dirname, \"${binName}\" + ext);\n\ntry {\n execFileSync(binPath, process.argv.slice(2), { stdio: \"inherit\" });\n} catch (err) {\n if (err.status !== undefined) {\n process.exit(err.status);\n }\n throw err;\n}\n`;\n}\n\n/**\n * Создаёт манифест для бинарной дистрибуции\n *\n * @param version - Версия\n * @param binName - Имя бинарника\n * @param assets - Маппинг платформ на URL-ы\n * @returns Манифест\n */\nexport function createBinaryManifest(\n version: string,\n binName: string,\n assets: Partial<Record<BinaryPlatform, string>>,\n): BinaryManifest {\n return {\n assets: assets as Record<BinaryPlatform, string>,\n binName,\n version,\n };\n}\n\n/**\n * Генерирует package.json для мастер-пакета с postinstall\n *\n * @param name - Имя пакета\n * @param version - Версия\n * @param binName - Имя бинарника\n * @param description - Описание пакета\n * @returns Содержимое package.json\n */\nexport function generateMasterPackageJson(\n name: string,\n version: string,\n binName: string,\n description?: string,\n): string {\n const pkg = {\n bin: {\n [binName]: `bin/${binName}.js`,\n },\n description: description ?? `${name} CLI`,\n files: [\"bin\", \"scripts\"],\n license: \"MIT\",\n name,\n scripts: {\n postinstall: \"node scripts/postinstall.js\",\n },\n version,\n };\n\n return JSON.stringify(pkg, null, 2);\n}\n\n/**\n * Опции для записи npm файлов\n */\nexport interface WriteNpmFilesOptions {\n /** Манифест с URL-ами */\n manifest: BinaryManifest;\n /** Имя бинарника для wrapper */\n binName: string;\n /** Настройки npm */\n npmConfig: BinariesNpmConfig;\n /** Базовая директория проекта */\n baseDir?: string;\n /** Dry-run режим */\n dryRun?: boolean;\n}\n\n/**\n * Результат записи npm файлов\n */\nexport interface WriteNpmFilesResult {\n /** Путь к postinstall скрипту */\n postinstallPath: string;\n /** Путь к bin wrapper */\n binWrapperPath: string;\n /** Был ли обновлён package.json */\n packageJsonUpdated: boolean;\n}\n\n/**\n * Записывает postinstall скрипт и bin wrapper в проект\n *\n * @param options - Опции записи\n * @returns Результат записи\n */\nexport async function writeNpmFiles(options: WriteNpmFilesOptions): Promise<WriteNpmFilesResult> {\n const { manifest, binName, npmConfig, baseDir = \".\", dryRun = false } = options;\n\n const scriptsDir = join(baseDir, npmConfig.scriptsDir);\n const binDir = join(baseDir, npmConfig.binDir);\n\n const postinstallPath = join(scriptsDir, \"postinstall.js\");\n const binWrapperPath = join(binDir, `${binName}.js`);\n\n // Генерируем содержимое файлов\n const postinstallContent = generatePostinstallScript(manifest);\n const binWrapperContent = generateBinWrapper(binName);\n\n if (dryRun) {\n console.log(`\\n📝 Would write postinstall script to: ${postinstallPath}`);\n console.log(`📝 Would write bin wrapper to: ${binWrapperPath}`);\n } else {\n // Создаём директории\n await mkdir(scriptsDir, { recursive: true });\n await mkdir(binDir, { recursive: true });\n\n // Записываем файлы\n await writeFile(postinstallPath, postinstallContent, \"utf-8\");\n await writeFile(binWrapperPath, binWrapperContent, { encoding: \"utf-8\", mode: 0o755 });\n\n console.log(`✅ Created postinstall script: ${postinstallPath}`);\n console.log(`✅ Created bin wrapper: ${binWrapperPath}`);\n }\n\n // Обновляем package.json если нужно\n let packageJsonUpdated = false;\n\n if (npmConfig.updatePackageJson) {\n packageJsonUpdated = await updatePackageJsonForBinaries({\n baseDir,\n binDir: npmConfig.binDir,\n binName,\n dryRun,\n scriptsDir: npmConfig.scriptsDir,\n });\n }\n\n return {\n binWrapperPath,\n packageJsonUpdated,\n postinstallPath,\n };\n}\n\n/**\n * Опции для обновления package.json\n */\ninterface UpdatePackageJsonOptions {\n /** Базовая директория проекта */\n baseDir: string;\n /** Имя бинарника */\n binName: string;\n /** Директория скриптов */\n scriptsDir: string;\n /** Директория bin */\n binDir: string;\n /** Dry-run режим */\n dryRun?: boolean;\n}\n\n/**\n * Обновляет package.json с правильными bin и scripts.postinstall\n *\n * @param options - Опции обновления\n * @returns true если файл был обновлён\n */\n// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Multiple checks for package.json fields\nasync function updatePackageJsonForBinaries(options: UpdatePackageJsonOptions): Promise<boolean> {\n const { baseDir, binName, scriptsDir, binDir, dryRun = false } = options;\n\n const packageJsonPath = join(baseDir, \"package.json\");\n\n try {\n const content = await readFile(packageJsonPath, \"utf-8\");\n const pkg = JSON.parse(content);\n\n let modified = false;\n\n // Обновляем bin\n const expectedBin = `${binDir}/${binName}.js`;\n if (!pkg.bin || pkg.bin[binName] !== expectedBin) {\n pkg.bin = pkg.bin || {};\n pkg.bin[binName] = expectedBin;\n modified = true;\n }\n\n // Обновляем scripts.postinstall\n const expectedPostinstall = `node ${scriptsDir}/postinstall.js`;\n if (!pkg.scripts?.postinstall || pkg.scripts.postinstall !== expectedPostinstall) {\n pkg.scripts = pkg.scripts || {};\n pkg.scripts.postinstall = expectedPostinstall;\n modified = true;\n }\n\n // Добавляем scripts и bin в files если их нет\n if (pkg.files && Array.isArray(pkg.files)) {\n if (!pkg.files.includes(scriptsDir)) {\n pkg.files.push(scriptsDir);\n modified = true;\n }\n if (!pkg.files.includes(binDir)) {\n pkg.files.push(binDir);\n modified = true;\n }\n }\n\n if (modified) {\n if (dryRun) {\n console.log(\"📝 Would update package.json with bin and scripts.postinstall\");\n } else {\n await writeFile(packageJsonPath, `${JSON.stringify(pkg, null, 2)}\\n`, \"utf-8\");\n console.log(\"✅ Updated package.json with bin and scripts.postinstall\");\n }\n return true;\n }\n\n console.log(\"ℹ️ package.json already has correct bin and scripts.postinstall\");\n return false;\n } catch (error) {\n console.warn(`⚠️ Could not update package.json: ${error instanceof Error ? error.message : String(error)}`);\n return false;\n }\n}\n",
|
|
35
|
+
"import { loadConfig, validateBinariesConfig } from \"./config\";\nimport { createReleaseProvider, type GitPlatform } from \"./providers\";\nimport type { AssetLimits } from \"./providers/types\";\nimport type {\n BinariesConfig,\n BinaryCliOptions,\n BinaryDistributionResult,\n BinaryPlatform,\n BinaryUploadResult,\n} from \"./types\";\nimport { formatFileSize, GITVERSE_ASSET_LIMITS, validateAssetBatch } from \"./utils/binary-distribution-provider\";\nimport { getArchivePath, validateAllBinarySources } from \"./utils/binary-platforms\";\nimport { createBinaryManifest, generatePostinstallScript, writeNpmFiles } from \"./utils/binary-postinstall-generator\";\nimport { getCurrentVersion, getRepoInfo } from \"./utils/git\";\nimport { createRetryFunction } from \"./utils/retry\";\n\n/**\n * Интерфейс для загрузки assets\n */\ninterface AssetUploader {\n /** Лимиты платформы */\n limits: AssetLimits;\n /** Загружает asset */\n uploadAsset(filePath: string, assetName: string): Promise<{ downloadUrl: string }>;\n}\n\n/**\n * Задержка между попытками\n */\nfunction sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\n/**\n * Вычисляет задержку с экспоненциальным backoff\n */\nfunction calculateDelay(attempt: number, initialDelay = 2000, maxDelay = 30000): number {\n const delay = initialDelay * 2 ** attempt;\n return Math.min(delay, maxDelay);\n}\n\n/**\n * Публикует бинарники в GitVerse Release\n *\n * Процесс:\n * 1. Загружает конфигурацию и валидирует её\n * 2. Проверяет наличие архивов для всех платформ\n * 3. Валидирует файлы на соответствие лимитам GitVerse\n * 4. Создаёт или находит существующий релиз\n * 5. Загружает архивы как assets в релиз\n * 6. Генерирует postinstall скрипт и manifest\n *\n * @param options - Опции публикации\n * @returns Результат публикации\n */\n// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Main entry point with many edge cases\nexport async function publishBinaries(options: BinaryCliOptions = {}): Promise<BinaryDistributionResult> {\n const result: BinaryDistributionResult = {\n errors: [],\n success: false,\n uploads: [],\n version: \"\",\n warnings: [],\n };\n\n try {\n // Загружаем конфигурацию\n const config = await loadConfig(options.config);\n\n if (!config.binaries?.enabled) {\n result.errors.push(\"Binary distribution is not enabled in config\");\n return result;\n }\n\n validateBinariesConfig(config.binaries);\n\n const binariesConfig = config.binaries;\n\n // Получаем версию\n const version = options.version ?? (await getCurrentVersion(\".\"));\n result.version = version;\n\n // Определяем платформы\n const platforms = options.platforms ?? binariesConfig.platforms;\n\n // Валидируем наличие архивов\n const missingBinaries = await validateAllBinarySources({ ...binariesConfig, platforms });\n\n if (missingBinaries.length > 0) {\n for (const platform of missingBinaries) {\n console.warn(`⚠️ Archive not found for platform: ${platform}`);\n result.warnings.push(`Archive not found for platform: ${platform}`);\n }\n\n if (missingBinaries.length === platforms.length) {\n result.errors.push(\"No archives found for any platform\");\n return result;\n }\n }\n\n // Фильтруем платформы с существующими архивами\n const availablePlatforms = platforms.filter((p) => !missingBinaries.includes(p));\n\n // Получаем пути к архивам\n const archivePaths = availablePlatforms.map((platform) => getArchivePath(binariesConfig, platform));\n\n // Валидируем файлы перед загрузкой\n const batchValidation = await validateAssetBatch(archivePaths);\n\n if (!batchValidation.valid) {\n for (const error of batchValidation.errors) {\n console.error(`❌ ${error}`);\n result.errors.push(error);\n }\n return result;\n }\n\n console.log(\n `\\n📦 Preparing to upload ${availablePlatforms.length} archives (${formatFileSize(batchValidation.totalSize)})\\n`,\n );\n\n if (options.dryRun) {\n console.log(\"🔍 DRY RUN MODE\\n\");\n printDryRun(binariesConfig, version, availablePlatforms);\n result.success = true;\n return result;\n }\n\n // Получаем информацию о репозитории\n const repoInfo = await getRepoInfo();\n\n // Определяем платформу\n const platform: GitPlatform | \"auto\" = config.release?.platform ?? \"auto\";\n const detectedPlatform = platform === \"auto\" ? (repoInfo.platform ?? \"gitverse\") : platform;\n\n console.log(`🔗 Using ${detectedPlatform} release provider`);\n\n // Создаём retry функцию\n const retryFn = config.retry.enabled ? createRetryFunction(config.retry) : undefined;\n\n // Создаём провайдер\n const { provider, platform: _actualPlatform } = createReleaseProvider({\n platform: detectedPlatform,\n repoInfo: {\n host: repoInfo.host ?? \"gitverse.ru\",\n owner: repoInfo.owner,\n repo: repoInfo.repo,\n },\n retryFn,\n });\n\n // Валидируем токен\n const tokenValidation = await provider.validateToken();\n if (!tokenValidation.valid) {\n result.errors.push(tokenValidation.error ?? \"Token validation failed\");\n return result;\n }\n\n console.log(`✅ Authenticated as ${tokenValidation.username}\\n`);\n\n // Определяем тег\n const tagPrefix = config.versioning?.tagPrefix ?? \"v\";\n const tag = options.tag ?? `${tagPrefix}${version}`;\n\n // Ищем или создаём релиз\n let releaseId: number | string;\n\n const existingRelease = await provider.getRelease(tag);\n\n if (existingRelease?.id) {\n releaseId = existingRelease.id;\n console.log(`📋 Using existing release: ${tag} (ID: ${releaseId})`);\n } else {\n // Создаём новый релиз\n console.log(`📋 Creating new release: ${tag}`);\n\n const binName = binariesConfig.binName ?? binariesConfig.name;\n const newRelease = await provider.createRelease(\n tag,\n `${binName} ${version}`,\n `Binary release for ${binName} v${version}`,\n );\n\n releaseId = newRelease.id;\n result.releaseUrl = newRelease.url;\n console.log(`✅ Release created: ${newRelease.url}\\n`);\n }\n\n result.releaseId = typeof releaseId === \"number\" ? releaseId : undefined;\n\n // Загружаем архивы\n console.log(\"🚀 Uploading assets...\\n\");\n\n // Создаём обёртку для загрузки\n const assetUploader: AssetUploader = {\n limits: provider.assetLimits,\n uploadAsset: async (filePath, assetName) => {\n const result = await provider.uploadAsset(releaseId, filePath, assetName);\n return { downloadUrl: result.downloadUrl };\n },\n };\n\n const uploadResults = await uploadAllAssets(\n binariesConfig,\n version,\n availablePlatforms,\n assetUploader,\n options.verbose,\n );\n result.uploads = uploadResults;\n\n const successfulUploads = uploadResults.filter((r) => r.success);\n const failedUploads = uploadResults.filter((r) => !r.success);\n\n // Выводим итоги\n console.log(\"\\n📊 Upload Summary:\");\n console.log(` Total: ${uploadResults.length}`);\n console.log(` Successful: ${successfulUploads.length}`);\n console.log(` Failed: ${failedUploads.length}`);\n\n if (failedUploads.length > 0) {\n console.log(\"\\n❌ Failed uploads:\");\n for (const upload of failedUploads) {\n console.log(` ${upload.platform}: ${upload.error}`);\n result.warnings.push(`Failed to upload ${upload.platform}: ${upload.error}`);\n }\n\n if (!binariesConfig.continueOnError) {\n result.errors.push(\"Some assets failed to upload\");\n return result;\n }\n }\n\n // Генерируем manifest и postinstall скрипт\n if (successfulUploads.length > 0) {\n const assets: Partial<Record<BinaryPlatform, string>> = {};\n for (const upload of successfulUploads) {\n if (upload.success) {\n assets[upload.platform] = upload.downloadUrl;\n }\n }\n\n const binName = binariesConfig.binName ?? binariesConfig.name;\n const manifest = createBinaryManifest(version, binName, assets);\n\n // Если включена генерация npm скриптов - записываем файлы\n if (binariesConfig.npm?.generateScripts !== false) {\n const npmConfig = {\n binDir: binariesConfig.npm?.binDir ?? \"bin\",\n generateScripts: binariesConfig.npm?.generateScripts ?? true,\n scriptsDir: binariesConfig.npm?.scriptsDir ?? \"scripts\",\n updatePackageJson: binariesConfig.npm?.updatePackageJson ?? true,\n };\n\n console.log(\"\\n📦 Generating npm distribution files...\");\n\n await writeNpmFiles({\n binName,\n manifest,\n npmConfig,\n });\n\n console.log(\"\\n💡 Next steps:\");\n console.log(\" 1. Review generated files in scripts/ and bin/\");\n console.log(\" 2. Run: npm publish (or bun publish)\");\n console.log(` 3. Users install with: npm install ${binariesConfig.name}`);\n } else {\n // Старое поведение - выводим в консоль\n console.log(\"\\n📝 Generated manifest:\");\n console.log(JSON.stringify(manifest, null, 2));\n\n console.log(\"\\n📜 Postinstall script:\");\n console.log(\"---\");\n console.log(generatePostinstallScript(manifest));\n console.log(\"---\");\n }\n }\n\n result.success = successfulUploads.length > 0;\n\n if (result.success) {\n console.log(\"\\n✅ Binary distribution completed successfully!\");\n }\n } catch (error) {\n result.errors.push(error instanceof Error ? error.message : String(error));\n console.error(\"\\n❌ Binary distribution failed:\");\n console.error(error);\n }\n\n return result;\n}\n\n/**\n * Загружает все assets в релиз\n */\nasync function uploadAllAssets(\n config: BinariesConfig,\n _version: string,\n platforms: BinaryPlatform[],\n uploader: AssetUploader,\n verbose = false,\n): Promise<BinaryUploadResult[]> {\n const results: BinaryUploadResult[] = [];\n\n // Загружаем последовательно с учётом лимитов платформы\n const batchSize = Math.min(uploader.limits.maxFilesPerUpload, 3);\n\n for (let i = 0; i < platforms.length; i += batchSize) {\n const batch = platforms.slice(i, i + batchSize);\n\n const batchResults = await Promise.all(\n batch.map((platform) => uploadAssetWithRetry(config, platform, uploader, verbose)),\n );\n\n results.push(...batchResults);\n\n // Небольшая задержка между батчами\n if (i + batchSize < platforms.length) {\n await sleep(500);\n }\n }\n\n return results;\n}\n\n/**\n * Загружает один asset с retry\n */\nasync function uploadAssetWithRetry(\n config: BinariesConfig,\n platform: BinaryPlatform,\n uploader: AssetUploader,\n verbose = false,\n): Promise<BinaryUploadResult> {\n const archivePath = getArchivePath(config, platform);\n const assetName = `${config.name}-${platform}.tar.gz`;\n\n let lastError: Error | undefined;\n let attempts = 0;\n\n for (let attempt = 0; attempt < config.retryAttempts; attempt++) {\n attempts = attempt + 1;\n\n try {\n if (verbose) {\n console.log(`📤 Uploading ${assetName} (attempt ${attempts}/${config.retryAttempts})...`);\n }\n\n const result = await uploader.uploadAsset(archivePath, assetName);\n\n if (verbose) {\n console.log(`✅ Uploaded ${assetName}: ${result.downloadUrl}`);\n } else {\n console.log(` ✅ ${platform}`);\n }\n\n return {\n assetName,\n attempts,\n downloadUrl: result.downloadUrl,\n platform,\n success: true as const,\n };\n } catch (error) {\n lastError = error instanceof Error ? error : new Error(String(error));\n\n if (attempt < config.retryAttempts - 1) {\n const delay = calculateDelay(attempt);\n console.warn(`⚠️ Upload failed for ${assetName} (attempt ${attempts}/${config.retryAttempts})`);\n console.warn(` ${lastError.message}`);\n console.warn(` Retrying in ${delay}ms...`);\n await sleep(delay);\n }\n }\n }\n\n console.error(`❌ Failed to upload ${assetName}: ${lastError?.message}`);\n\n return {\n assetName,\n attempts,\n error: lastError?.message ?? \"Unknown error\",\n platform,\n success: false as const,\n };\n}\n\n/**\n * Печатает информацию в dry-run режиме\n */\nfunction printDryRun(config: BinariesConfig, version: string, platforms: BinaryPlatform[]): void {\n const binName = config.binName ?? config.name;\n\n console.log(\"📦 Binary Distribution:\");\n console.log(` Name: ${config.name}`);\n console.log(` Binary name: ${binName}`);\n console.log(` Version: ${version}`);\n console.log(` Platforms: ${platforms.join(\", \")}`);\n console.log(` Input format: ${config.inputFormat ?? \"tar.gz\"}`);\n\n console.log(\"\\n📁 Archives to upload:\");\n for (const platform of platforms) {\n const archivePath = getArchivePath(config, platform);\n const assetName = `${config.name}-${platform}.tar.gz`;\n console.log(` ${platform}:`);\n console.log(` Source: ${archivePath}`);\n console.log(` Asset name: ${assetName}`);\n }\n\n // Показываем лимиты GitVerse по умолчанию в dry-run\n // В реальном режиме будут использоваться лимиты из провайдера\n console.log(\"\\n🔒 Default Asset Limits (GitVerse):\");\n console.log(` Max file size: ${formatFileSize(GITVERSE_ASSET_LIMITS.maxFileSizeBytes)}`);\n console.log(` Max files per upload: ${GITVERSE_ASSET_LIMITS.maxFilesPerUpload}`);\n console.log(` Max total size: ${formatFileSize(GITVERSE_ASSET_LIMITS.maxTotalSizeBytes)}`);\n console.log(\" Note: Actual limits depend on detected platform\");\n\n // Показываем что будет сгенерировано для npm\n if (config.npm?.generateScripts !== false) {\n const scriptsDir = config.npm?.scriptsDir ?? \"scripts\";\n const binDir = config.npm?.binDir ?? \"bin\";\n\n console.log(\"\\n📝 NPM distribution files to generate:\");\n console.log(` Postinstall script: ${scriptsDir}/postinstall.js`);\n console.log(` Bin wrapper: ${binDir}/${binName}.js`);\n if (config.npm?.updatePackageJson !== false) {\n console.log(\" package.json: will be updated with bin and scripts.postinstall\");\n }\n }\n}\n"
|
|
36
36
|
],
|
|
37
|
-
"mappings": "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",
|
|
38
|
-
"debugId": "
|
|
37
|
+
"mappings": "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",
|
|
38
|
+
"debugId": "746BDA0A2FEA846A64756E2164756E21",
|
|
39
39
|
"names": []
|
|
40
40
|
}
|