onreza-release 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +881 -0
- package/dist/binaries.d.ts +74 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.js +9073 -0
- package/dist/cli.js.map +73 -0
- package/dist/config.d.ts +58 -0
- package/dist/gitverse.d.ts +91 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.js +8545 -0
- package/dist/index.js.map +71 -0
- package/dist/types.d.ts +862 -0
- package/dist/utils/binary-archive-extractor.d.ts +19 -0
- package/dist/utils/binary-package-generator.d.ts +24 -0
- package/dist/utils/binary-platforms.d.ts +113 -0
- package/dist/utils/binary-publisher.d.ts +53 -0
- package/dist/utils/binary-wrapper-generator.d.ts +34 -0
- package/dist/utils/changelog.d.ts +14 -0
- package/dist/utils/commitlint-generator.d.ts +5 -0
- package/dist/utils/git.d.ts +101 -0
- package/dist/utils/parser.d.ts +36 -0
- package/dist/utils/retry.d.ts +39 -0
- package/dist/utils/version.d.ts +18 -0
- package/package.json +66 -0
- package/schema.json +461 -0
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { BinariesConfig, BinaryExtractionResult, BinaryPlatform } from "../types";
|
|
2
|
+
/**
|
|
3
|
+
* Возвращает имя бинарника внутри архива с учётом sourceBinName.
|
|
4
|
+
* Если sourceBinName не задан, возвращает config.name.
|
|
5
|
+
*/
|
|
6
|
+
export declare function getSourceBinaryName(config: BinariesConfig, platform: BinaryPlatform): string;
|
|
7
|
+
/**
|
|
8
|
+
* Извлекает бинарник из tar.gz архива во временную директорию.
|
|
9
|
+
*
|
|
10
|
+
* @param config - Конфигурация бинарной дистрибуции
|
|
11
|
+
* @param platform - Целевая платформа
|
|
12
|
+
* @param tempBaseDir - Базовая директория для временных файлов
|
|
13
|
+
* @returns Результат извлечения с путём к бинарнику и временной директории
|
|
14
|
+
*/
|
|
15
|
+
export declare function extractBinaryFromArchive(config: BinariesConfig, platform: BinaryPlatform, tempBaseDir: string): Promise<BinaryExtractionResult>;
|
|
16
|
+
/**
|
|
17
|
+
* Удаляет временную директорию.
|
|
18
|
+
*/
|
|
19
|
+
export declare function cleanupTempDir(tempDir: string): Promise<void>;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { BinariesConfig, BinaryPackageResult, BinaryPlatform } from "../types";
|
|
2
|
+
/**
|
|
3
|
+
* Генерирует package.json для платформенного пакета
|
|
4
|
+
*/
|
|
5
|
+
export declare function generatePlatformPackageJson(config: BinariesConfig, platform: BinaryPlatform, version: string): string;
|
|
6
|
+
/**
|
|
7
|
+
* Генерирует README.md для платформенного пакета
|
|
8
|
+
*/
|
|
9
|
+
export declare function generatePlatformReadme(config: BinariesConfig, platform: BinaryPlatform, version: string): string;
|
|
10
|
+
/**
|
|
11
|
+
* Генерирует платформенный пакет.
|
|
12
|
+
* Поддерживает два формата входных данных:
|
|
13
|
+
* - "directory": бинарники в директориях (dist/name-platform/name)
|
|
14
|
+
* - "tar.gz": бинарники в tar.gz архивах (dist/name-platform.tar.gz)
|
|
15
|
+
*/
|
|
16
|
+
export declare function generatePlatformPackage(config: BinariesConfig, platform: BinaryPlatform, version: string, dryRun?: boolean): Promise<BinaryPackageResult>;
|
|
17
|
+
/**
|
|
18
|
+
* Генерирует все платформенные пакеты
|
|
19
|
+
*/
|
|
20
|
+
export declare function generateAllPlatformPackages(config: BinariesConfig, version: string, platforms?: BinaryPlatform[], dryRun?: boolean): Promise<BinaryPackageResult[]>;
|
|
21
|
+
/**
|
|
22
|
+
* Печатает информацию о генерации в dry-run режиме
|
|
23
|
+
*/
|
|
24
|
+
export declare function printGenerationDryRun(config: BinariesConfig, version: string, platforms: BinaryPlatform[]): void;
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import type { BinariesConfig, BinaryPlatform, PlatformMapping } from "../types";
|
|
2
|
+
/**
|
|
3
|
+
* Маппинг платформ на os/cpu значения для package.json
|
|
4
|
+
*/
|
|
5
|
+
export declare const PLATFORM_MAPPINGS: Record<BinaryPlatform, PlatformMapping>;
|
|
6
|
+
/**
|
|
7
|
+
* Все поддерживаемые платформы
|
|
8
|
+
*/
|
|
9
|
+
export declare const ALL_PLATFORMS: BinaryPlatform[];
|
|
10
|
+
/**
|
|
11
|
+
* Проверяет, что строка является валидной платформой
|
|
12
|
+
*/
|
|
13
|
+
export declare function isValidPlatform(value: string): value is BinaryPlatform;
|
|
14
|
+
/**
|
|
15
|
+
* Парсит список платформ из строки (comma-separated)
|
|
16
|
+
*/
|
|
17
|
+
export declare function parsePlatforms(value: string): BinaryPlatform[];
|
|
18
|
+
/**
|
|
19
|
+
* Возвращает путь к бинарнику для указанной платформы
|
|
20
|
+
*/
|
|
21
|
+
export declare function getBinaryPath(distDir: string, name: string, platform: BinaryPlatform): string;
|
|
22
|
+
/**
|
|
23
|
+
* Возвращает путь к директории платформы
|
|
24
|
+
*/
|
|
25
|
+
export declare function getPlatformDir(distDir: string, name: string, platform: BinaryPlatform): string;
|
|
26
|
+
/**
|
|
27
|
+
* Проверяет существование бинарника для платформы.
|
|
28
|
+
*
|
|
29
|
+
* @returns true если файл существует, false если файл не найден (ENOENT)
|
|
30
|
+
* @throws Error при других ошибках доступа (EACCES, ELOOP, EIO и т.д.)
|
|
31
|
+
*/
|
|
32
|
+
export declare function validateBinaryExists(distDir: string, name: string, platform: BinaryPlatform): Promise<boolean>;
|
|
33
|
+
/**
|
|
34
|
+
* Валидирует наличие бинарников для всех указанных платформ
|
|
35
|
+
* @returns Массив отсутствующих платформ
|
|
36
|
+
*/
|
|
37
|
+
export declare function validateAllBinaries(distDir: string, name: string, platforms: BinaryPlatform[]): Promise<BinaryPlatform[]>;
|
|
38
|
+
/**
|
|
39
|
+
* Возвращает дефолтный шаблон имени пакета
|
|
40
|
+
*/
|
|
41
|
+
export declare function getDefaultPackageNameTemplate(scope?: string): string;
|
|
42
|
+
/**
|
|
43
|
+
* Генерирует полное имя пакета для платформы.
|
|
44
|
+
* Поддерживает кастомный шаблон через packageNameTemplate.
|
|
45
|
+
*/
|
|
46
|
+
export declare function getPackageName(config: BinariesConfig, platform: BinaryPlatform): string;
|
|
47
|
+
/**
|
|
48
|
+
* Генерирует путь к пакету в output директории.
|
|
49
|
+
* Создаёт структуру директорий на основе имени пакета.
|
|
50
|
+
*/
|
|
51
|
+
export declare function getPackageOutputPath(config: BinariesConfig, platform: BinaryPlatform): string;
|
|
52
|
+
/**
|
|
53
|
+
* Раскрывает плейсхолдеры в строке
|
|
54
|
+
*/
|
|
55
|
+
export declare function expandPlaceholders(template: string, values: {
|
|
56
|
+
packageDir?: string;
|
|
57
|
+
version?: string;
|
|
58
|
+
platform?: string;
|
|
59
|
+
scope?: string;
|
|
60
|
+
name?: string;
|
|
61
|
+
}): string;
|
|
62
|
+
/**
|
|
63
|
+
* Конвертирует платформу в Node.js process.platform и process.arch
|
|
64
|
+
*/
|
|
65
|
+
export declare function platformToNodeValues(platform: BinaryPlatform): {
|
|
66
|
+
platform: string;
|
|
67
|
+
arch: string;
|
|
68
|
+
};
|
|
69
|
+
/**
|
|
70
|
+
* Возвращает ключ источника для платформы с учётом platformMap.
|
|
71
|
+
* Если platformMap не задан или платформа не найдена, возвращает платформу как есть.
|
|
72
|
+
*/
|
|
73
|
+
export declare function getSourceKey(config: BinariesConfig, platform: BinaryPlatform): string;
|
|
74
|
+
/**
|
|
75
|
+
* Дефолтный шаблон имени архива
|
|
76
|
+
*/
|
|
77
|
+
export declare const DEFAULT_ARCHIVE_NAME_TEMPLATE = "{{name}}-{{platform}}.tar.gz";
|
|
78
|
+
/**
|
|
79
|
+
* Возвращает имя архива для платформы с учётом шаблона.
|
|
80
|
+
*/
|
|
81
|
+
export declare function getArchiveName(config: BinariesConfig, platform: BinaryPlatform): string;
|
|
82
|
+
/**
|
|
83
|
+
* Возвращает путь к tar.gz архиву для указанной платформы.
|
|
84
|
+
*/
|
|
85
|
+
export declare function getArchivePath(config: BinariesConfig, platform: BinaryPlatform): string;
|
|
86
|
+
/**
|
|
87
|
+
* Проверяет существование tar.gz архива для платформы.
|
|
88
|
+
*
|
|
89
|
+
* @returns true если архив существует, false если не найден (ENOENT)
|
|
90
|
+
* @throws Error при других ошибках доступа
|
|
91
|
+
*/
|
|
92
|
+
export declare function validateArchiveExists(config: BinariesConfig, platform: BinaryPlatform): Promise<boolean>;
|
|
93
|
+
/**
|
|
94
|
+
* Универсальная проверка существования источника бинарника.
|
|
95
|
+
* Поддерживает как директории, так и tar.gz архивы.
|
|
96
|
+
*
|
|
97
|
+
* @returns true если источник существует, false если не найден
|
|
98
|
+
* @throws Error при других ошибках доступа
|
|
99
|
+
*/
|
|
100
|
+
export declare function validateBinarySourceExists(config: BinariesConfig, platform: BinaryPlatform): Promise<boolean>;
|
|
101
|
+
/**
|
|
102
|
+
* Универсальная валидация наличия источников бинарников для всех платформ.
|
|
103
|
+
* Поддерживает как директории, так и tar.gz архивы.
|
|
104
|
+
*
|
|
105
|
+
* @returns Массив отсутствующих платформ
|
|
106
|
+
*/
|
|
107
|
+
export declare function validateAllBinarySources(config: BinariesConfig): Promise<BinaryPlatform[]>;
|
|
108
|
+
/**
|
|
109
|
+
* Возвращает путь к источнику бинарника с учётом формата входных данных.
|
|
110
|
+
* Для directory возвращает путь к директории платформы.
|
|
111
|
+
* Для tar.gz возвращает путь к архиву.
|
|
112
|
+
*/
|
|
113
|
+
export declare function getBinarySourcePath(config: BinariesConfig, platform: BinaryPlatform): string;
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import type { BinariesConfig, BinaryPackageResult, BinaryPlatform, BinaryPublishResult } from "../types";
|
|
2
|
+
/**
|
|
3
|
+
* Вычисляет задержку с экспоненциальным backoff.
|
|
4
|
+
*
|
|
5
|
+
* Формула: delay = initialDelay * 2^attempt, ограничено maxDelay.
|
|
6
|
+
*
|
|
7
|
+
* Примеры (с дефолтными параметрами):
|
|
8
|
+
* - attempt 0: 2000ms
|
|
9
|
+
* - attempt 1: 4000ms
|
|
10
|
+
* - attempt 2: 8000ms
|
|
11
|
+
* - attempt 3: 16000ms
|
|
12
|
+
* - attempt 4+: 30000ms (max)
|
|
13
|
+
*
|
|
14
|
+
* @param attempt - Номер попытки (начиная с 0)
|
|
15
|
+
* @param initialDelay - Начальная задержка в мс (default: 2000)
|
|
16
|
+
* @param maxDelay - Максимальная задержка в мс (default: 30000)
|
|
17
|
+
* @returns Задержка в миллисекундах
|
|
18
|
+
*/
|
|
19
|
+
export declare function calculateDelay(attempt: number, initialDelay?: number, maxDelay?: number): number;
|
|
20
|
+
/**
|
|
21
|
+
* Проверяет, можно ли повторить операцию после ошибки.
|
|
22
|
+
*
|
|
23
|
+
* Retriable ошибки (временные, имеет смысл повторить):
|
|
24
|
+
* - Сетевые ошибки: network timeout, ECONNRESET, ETIMEDOUT
|
|
25
|
+
* - Ограничения rate limit: HTTP 429, HTTP 503
|
|
26
|
+
* - Временные ошибки npm registry: registry unavailable, ETARGET
|
|
27
|
+
*
|
|
28
|
+
* Не-retriable ошибки (постоянные, повторять бессмысленно):
|
|
29
|
+
* - Ошибки авторизации (401, 403)
|
|
30
|
+
* - Невалидные данные (400)
|
|
31
|
+
* - Пакет уже существует (409)
|
|
32
|
+
* - Ошибки файловой системы
|
|
33
|
+
*
|
|
34
|
+
* @param error - Любое значение ошибки
|
|
35
|
+
* @returns true если ошибка носит временный характер и retry может помочь
|
|
36
|
+
*/
|
|
37
|
+
export declare function isRetriableError(error: unknown): boolean;
|
|
38
|
+
/**
|
|
39
|
+
* Публикует один платформенный пакет
|
|
40
|
+
*/
|
|
41
|
+
export declare function publishPlatformPackage(config: BinariesConfig, platform: BinaryPlatform, version: string, dryRun?: boolean): Promise<BinaryPublishResult>;
|
|
42
|
+
/**
|
|
43
|
+
* Публикует все платформенные пакеты
|
|
44
|
+
*/
|
|
45
|
+
export declare function publishAllPlatformPackages(config: BinariesConfig, version: string, generatedPackages: BinaryPackageResult[], dryRun?: boolean, verbose?: boolean): Promise<BinaryPublishResult[]>;
|
|
46
|
+
/**
|
|
47
|
+
* Печатает информацию о публикации в dry-run режиме
|
|
48
|
+
*/
|
|
49
|
+
export declare function printPublishDryRun(config: BinariesConfig, generatedPackages: BinaryPackageResult[]): void;
|
|
50
|
+
/**
|
|
51
|
+
* Печатает итоговую статистику публикации
|
|
52
|
+
*/
|
|
53
|
+
export declare function printPublishSummary(results: BinaryPublishResult[], _config: BinariesConfig): void;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { BinariesConfig, BinaryPlatform } from "../types";
|
|
2
|
+
/**
|
|
3
|
+
* Генерирует JS wrapper скрипт для bin/
|
|
4
|
+
*/
|
|
5
|
+
export declare function generateBinaryWrapper(config: BinariesConfig): string;
|
|
6
|
+
/**
|
|
7
|
+
* Интерфейс для optionalDependencies
|
|
8
|
+
*/
|
|
9
|
+
export interface OptionalDependencies {
|
|
10
|
+
[key: string]: string;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Генерирует объект optionalDependencies для основного package.json
|
|
14
|
+
*/
|
|
15
|
+
export declare function generateOptionalDependencies(config: BinariesConfig, version: string, platforms?: BinaryPlatform[]): OptionalDependencies;
|
|
16
|
+
/**
|
|
17
|
+
* Обновления для основного package.json
|
|
18
|
+
*/
|
|
19
|
+
export interface MainPackageUpdates {
|
|
20
|
+
optionalDependencies: OptionalDependencies;
|
|
21
|
+
bin?: Record<string, string>;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Генерирует обновления для основного package.json
|
|
25
|
+
*/
|
|
26
|
+
export declare function generateMainPackageUpdates(config: BinariesConfig, version: string, platforms?: BinaryPlatform[]): MainPackageUpdates;
|
|
27
|
+
/**
|
|
28
|
+
* Обновляет основной package.json с optionalDependencies
|
|
29
|
+
*/
|
|
30
|
+
export declare function updateMainPackageJson(packagePath: string, config: BinariesConfig, version: string, platforms?: BinaryPlatform[], dryRun?: boolean): Promise<void>;
|
|
31
|
+
/**
|
|
32
|
+
* Печатает информацию об обновлениях main package в dry-run режиме
|
|
33
|
+
*/
|
|
34
|
+
export declare function printMainPackageUpdatesDryRun(config: BinariesConfig, version: string, platforms?: BinaryPlatform[]): void;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { ChangelogConfig, ChangelogGenerateOptions, ConventionalCommit } from "../types";
|
|
2
|
+
/**
|
|
3
|
+
* Генерирует CHANGELOG для версии
|
|
4
|
+
*/
|
|
5
|
+
export declare function generateChangelog(options: ChangelogGenerateOptions, config: ChangelogConfig, packageName?: string): string;
|
|
6
|
+
/**
|
|
7
|
+
* Обновляет CHANGELOG файл, добавляя новую версию в начало
|
|
8
|
+
*/
|
|
9
|
+
export declare function updateChangelogFile(changelogPath: string, newEntry: string): Promise<void>;
|
|
10
|
+
/**
|
|
11
|
+
* Генерирует CHANGELOG текст для GitVerse Release
|
|
12
|
+
* (компактный формат без markdown заголовков, но с полной информацией)
|
|
13
|
+
*/
|
|
14
|
+
export declare function generateReleaseNotes(commits: ConventionalCommit[], config: ChangelogConfig, repoUrl?: string, packageName?: string): string;
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import type { GitRepoInfo } from "../types";
|
|
2
|
+
/**
|
|
3
|
+
* Выполняет команду shell
|
|
4
|
+
*/
|
|
5
|
+
export declare function executeCommand(command: string): Promise<string>;
|
|
6
|
+
/**
|
|
7
|
+
* Выполняет beforeCommit hook
|
|
8
|
+
* Возвращает true если хук выполнился успешно
|
|
9
|
+
* Возвращает false если хук упал с ошибкой
|
|
10
|
+
*/
|
|
11
|
+
export declare function runBeforeCommitHook(command: string): Promise<boolean>;
|
|
12
|
+
/**
|
|
13
|
+
* Выполняет git команду
|
|
14
|
+
* Экспортируется для тестирования (позволяет мокать через spyOn)
|
|
15
|
+
*/
|
|
16
|
+
export declare function gitCommand(command: string): Promise<string>;
|
|
17
|
+
/**
|
|
18
|
+
* Получает информацию о Git репозитории
|
|
19
|
+
*
|
|
20
|
+
* Приоритет источников данных:
|
|
21
|
+
* 1. Переменные окружения GitVerse Actions (для CI/CD)
|
|
22
|
+
* 2. Git remote URL (для локального использования)
|
|
23
|
+
*/
|
|
24
|
+
export declare function getRepoInfo(): Promise<GitRepoInfo>;
|
|
25
|
+
/**
|
|
26
|
+
* Получает последний тег с указанным префиксом
|
|
27
|
+
*/
|
|
28
|
+
export declare function getLatestTag(prefix: string): Promise<string | null>;
|
|
29
|
+
/**
|
|
30
|
+
* Получает список коммитов с момента последнего тега
|
|
31
|
+
*/
|
|
32
|
+
export declare function getCommitsSinceTag(tagPrefix: string, path?: string): Promise<string[]>;
|
|
33
|
+
/**
|
|
34
|
+
* Получает текущую версию из package.json
|
|
35
|
+
*/
|
|
36
|
+
export declare function getCurrentVersion(packagePath: string): Promise<string>;
|
|
37
|
+
/**
|
|
38
|
+
* Получает информацию из package.json (name и version)
|
|
39
|
+
*/
|
|
40
|
+
export declare function getPackageInfo(packagePath: string): Promise<{
|
|
41
|
+
name: string;
|
|
42
|
+
version: string;
|
|
43
|
+
}>;
|
|
44
|
+
/**
|
|
45
|
+
* Обновляет версию в package.json
|
|
46
|
+
*/
|
|
47
|
+
export declare function updatePackageVersion(packagePath: string, newVersion: string): Promise<void>;
|
|
48
|
+
/**
|
|
49
|
+
* Создает git коммит
|
|
50
|
+
*/
|
|
51
|
+
export declare function createCommit(message: string, files: string[]): Promise<void>;
|
|
52
|
+
/**
|
|
53
|
+
* Создает git тег
|
|
54
|
+
*/
|
|
55
|
+
export declare function createTag(tag: string, message: string): Promise<void>;
|
|
56
|
+
/**
|
|
57
|
+
* Опции для push операции
|
|
58
|
+
*/
|
|
59
|
+
export interface PushOptions {
|
|
60
|
+
/** Тег для пуша (опционально) */
|
|
61
|
+
tag?: string;
|
|
62
|
+
/** Использовать токен для push через HTTPS */
|
|
63
|
+
useToken?: boolean;
|
|
64
|
+
/** Токен для авторизации */
|
|
65
|
+
token?: string;
|
|
66
|
+
/** Информация о репозитории */
|
|
67
|
+
repoInfo?: GitRepoInfo;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Выполняет git команду с очисткой токенов из ошибок
|
|
71
|
+
* Используется для команд с токенами в URL
|
|
72
|
+
* Экспортируется для тестирования
|
|
73
|
+
*/
|
|
74
|
+
export declare function gitCommandSilent(command: string): Promise<void>;
|
|
75
|
+
/**
|
|
76
|
+
* Пушит изменения и теги в remote
|
|
77
|
+
*/
|
|
78
|
+
export declare function pushChanges(options?: PushOptions): Promise<void>;
|
|
79
|
+
/**
|
|
80
|
+
* Проверяет, что рабочая директория чистая
|
|
81
|
+
*
|
|
82
|
+
* Формат git status --porcelain: "XY PATH"
|
|
83
|
+
* X = status in staging area (index)
|
|
84
|
+
* Y = status in working tree
|
|
85
|
+
*
|
|
86
|
+
* Staged изменения (X != ' ') допустимы - они войдут в коммит релиза
|
|
87
|
+
* Unstaged изменения (Y != ' ') запрещены - нужно закоммитить или stash
|
|
88
|
+
*/
|
|
89
|
+
export declare function isWorkingTreeClean(): Promise<boolean>;
|
|
90
|
+
/**
|
|
91
|
+
* Добавляет все измененные файлы в staging area
|
|
92
|
+
* Используется после успешного выполнения beforeCommit хука
|
|
93
|
+
*/
|
|
94
|
+
export declare function addChangedFiles(): Promise<void>;
|
|
95
|
+
/**
|
|
96
|
+
* Проверяет, что тег существует.
|
|
97
|
+
*
|
|
98
|
+
* @returns true если тег существует, false если тег не найден
|
|
99
|
+
* @throws Error при критических ошибках git (повреждённый репозиторий, git не найден)
|
|
100
|
+
*/
|
|
101
|
+
export declare function tagExists(tag: string): Promise<boolean>;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { ConventionalCommit } from "../types";
|
|
2
|
+
/**
|
|
3
|
+
* Парсит сырой коммит из git log в структуру ConventionalCommit
|
|
4
|
+
*/
|
|
5
|
+
export declare function parseCommit(rawCommit: string): ConventionalCommit | null;
|
|
6
|
+
/**
|
|
7
|
+
* Парсит массив сырых коммитов
|
|
8
|
+
*/
|
|
9
|
+
export declare function parseCommits(rawCommits: string[]): ConventionalCommit[];
|
|
10
|
+
/**
|
|
11
|
+
* Группирует коммиты по типам
|
|
12
|
+
*/
|
|
13
|
+
export declare function groupCommitsByType(commits: ConventionalCommit[]): Record<string, ConventionalCommit[]>;
|
|
14
|
+
/**
|
|
15
|
+
* Фильтрует коммиты по scope
|
|
16
|
+
*/
|
|
17
|
+
export declare function filterCommitsByScope(commits: ConventionalCommit[], scope: string): ConventionalCommit[];
|
|
18
|
+
/**
|
|
19
|
+
* Фильтрует коммиты для пакета с учётом режима monorepo
|
|
20
|
+
*
|
|
21
|
+
* В monorepo режиме: включает коммиты со scope пакета + коммиты без scope (общие)
|
|
22
|
+
* В single-package режиме: включает все коммиты (scope используется для категоризации, не для выбора пакета)
|
|
23
|
+
*/
|
|
24
|
+
export declare function filterCommitsForPackage(commits: ConventionalCommit[], packageName: string, isMonorepo: boolean): ConventionalCommit[];
|
|
25
|
+
/**
|
|
26
|
+
* Проверяет, есть ли breaking changes
|
|
27
|
+
*/
|
|
28
|
+
export declare function hasBreakingChanges(commits: ConventionalCommit[]): boolean;
|
|
29
|
+
/**
|
|
30
|
+
* Проверяет, есть ли новые features
|
|
31
|
+
*/
|
|
32
|
+
export declare function hasFeatures(commits: ConventionalCommit[]): boolean;
|
|
33
|
+
/**
|
|
34
|
+
* Проверяет, есть ли bug fixes
|
|
35
|
+
*/
|
|
36
|
+
export declare function hasFixes(commits: ConventionalCommit[]): boolean;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { RetryConfig } from "../types";
|
|
2
|
+
/**
|
|
3
|
+
* Опции для retry функции
|
|
4
|
+
*/
|
|
5
|
+
export interface RetryOptions {
|
|
6
|
+
/**
|
|
7
|
+
* Максимальное количество попыток
|
|
8
|
+
*/
|
|
9
|
+
maxAttempts: number;
|
|
10
|
+
/**
|
|
11
|
+
* Начальная задержка (мс)
|
|
12
|
+
*/
|
|
13
|
+
initialDelay: number;
|
|
14
|
+
/**
|
|
15
|
+
* Максимальная задержка (мс)
|
|
16
|
+
*/
|
|
17
|
+
maxDelay: number;
|
|
18
|
+
/**
|
|
19
|
+
* Название операции для логирования
|
|
20
|
+
*/
|
|
21
|
+
operationName?: string;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Проверяет, является ли ошибка временной (можно retry)
|
|
25
|
+
*/
|
|
26
|
+
export declare function isRetriableError(error: unknown): boolean;
|
|
27
|
+
/**
|
|
28
|
+
* Выполняет функцию с retry механизмом и экспоненциальным backoff
|
|
29
|
+
*
|
|
30
|
+
* @param fn - Асинхронная функция для выполнения
|
|
31
|
+
* @param options - Опции retry
|
|
32
|
+
* @returns Результат выполнения функции
|
|
33
|
+
* @throws Последняя ошибка после всех попыток
|
|
34
|
+
*/
|
|
35
|
+
export declare function retry<T>(fn: () => Promise<T>, options: RetryOptions): Promise<T>;
|
|
36
|
+
/**
|
|
37
|
+
* Создаёт функцию retry с предустановленными настройками из конфига
|
|
38
|
+
*/
|
|
39
|
+
export declare function createRetryFunction(config: RetryConfig): <T>(fn: () => Promise<T>, operationName?: string) => Promise<T>;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { BumpType, ConventionalCommit, VersionBump } from "../types";
|
|
2
|
+
/**
|
|
3
|
+
* Определяет тип изменения версии на основе коммитов
|
|
4
|
+
*/
|
|
5
|
+
export declare function determineBumpType(commits: ConventionalCommit[], currentVersion?: string, preMajorMode?: string): BumpType | null;
|
|
6
|
+
/**
|
|
7
|
+
* Увеличивает версию согласно типу изменения
|
|
8
|
+
*/
|
|
9
|
+
export declare function bumpVersion(currentVersion: string, bumpType: BumpType, prereleasePrefix?: string): string;
|
|
10
|
+
/**
|
|
11
|
+
* Вычисляет bump версии на основе коммитов
|
|
12
|
+
*/
|
|
13
|
+
export declare function calculateVersionBump(currentVersion: string, commits: ConventionalCommit[], forceVersion?: string, prerelease?: string, preMajorMode?: string): VersionBump;
|
|
14
|
+
/**
|
|
15
|
+
* Сравнивает две версии
|
|
16
|
+
* Возвращает: -1 если a < b, 0 если a === b, 1 если a > b
|
|
17
|
+
*/
|
|
18
|
+
export declare function compareVersions(a: string, b: string): number;
|
package/package.json
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "onreza-release",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Conventional Commits release automation tool with GitVerse and GitHub support",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"release",
|
|
7
|
+
"conventional-commits",
|
|
8
|
+
"changelog",
|
|
9
|
+
"versioning",
|
|
10
|
+
"semantic-release",
|
|
11
|
+
"monorepo",
|
|
12
|
+
"gitverse",
|
|
13
|
+
"github",
|
|
14
|
+
"bun",
|
|
15
|
+
"onreza"
|
|
16
|
+
],
|
|
17
|
+
"homepage": "https://gitverse.ru/onreza/release-tool#readme",
|
|
18
|
+
"bugs": {
|
|
19
|
+
"url": "https://gitverse.ru/onreza/release-tool/tasktracker"
|
|
20
|
+
},
|
|
21
|
+
"repository": {
|
|
22
|
+
"type": "git",
|
|
23
|
+
"url": "https://gitverse.ru/onreza/release-tool.git"
|
|
24
|
+
},
|
|
25
|
+
"license": "MIT",
|
|
26
|
+
"author": "ONREZA <support@onreza.ru>",
|
|
27
|
+
"type": "module",
|
|
28
|
+
"exports": {
|
|
29
|
+
".": {
|
|
30
|
+
"import": "./dist/index.js",
|
|
31
|
+
"types": "./dist/index.d.ts"
|
|
32
|
+
},
|
|
33
|
+
"./cli": {
|
|
34
|
+
"import": "./dist/cli.js",
|
|
35
|
+
"types": "./dist/cli.d.ts"
|
|
36
|
+
}
|
|
37
|
+
},
|
|
38
|
+
"main": "dist/index.js",
|
|
39
|
+
"types": "dist/index.d.ts",
|
|
40
|
+
"bin": {
|
|
41
|
+
"onreza-release": "./dist/cli.js"
|
|
42
|
+
},
|
|
43
|
+
"files": ["dist", "schema.json", "README.md"],
|
|
44
|
+
"scripts": {
|
|
45
|
+
"build": "bun build.ts",
|
|
46
|
+
"dev": "bun build.ts --watch",
|
|
47
|
+
"lint": "biome check",
|
|
48
|
+
"lint:fix": "biome check --write",
|
|
49
|
+
"test": "bun test",
|
|
50
|
+
"test:coverage": "bun test --coverage",
|
|
51
|
+
"typecheck": "tsc --noEmit"
|
|
52
|
+
},
|
|
53
|
+
"dependencies": {
|
|
54
|
+
"@onreza/gitverse-sdk": ">=0.0.0",
|
|
55
|
+
"jsonc-parser": "^3.3.1",
|
|
56
|
+
"tar": "^7.5.3"
|
|
57
|
+
},
|
|
58
|
+
"devDependencies": {
|
|
59
|
+
"@biomejs/biome": "^2.3.11",
|
|
60
|
+
"@types/bun": "1.3.6",
|
|
61
|
+
"typescript": "^5.9.3"
|
|
62
|
+
},
|
|
63
|
+
"publishConfig": {
|
|
64
|
+
"access": "public"
|
|
65
|
+
}
|
|
66
|
+
}
|