git-release-manager 0.0.0 → 0.0.3

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.
Files changed (38) hide show
  1. package/dist/src/config/defaultConfig.json +232 -0
  2. package/dist/src/config/index.js +86 -0
  3. package/dist/src/config/index.js.map +1 -0
  4. package/dist/src/config/types.js +3 -0
  5. package/dist/src/config/types.js.map +1 -0
  6. package/dist/src/core/app.js +218 -0
  7. package/dist/src/core/app.js.map +1 -0
  8. package/dist/src/core/types.js +3 -0
  9. package/dist/src/core/types.js.map +1 -0
  10. package/dist/src/git/commits.js +237 -0
  11. package/dist/src/git/commits.js.map +1 -0
  12. package/dist/src/git/context.js +95 -0
  13. package/dist/src/git/context.js.map +1 -0
  14. package/dist/src/index.js +89 -0
  15. package/dist/src/index.js.map +1 -0
  16. package/dist/src/main.js +22 -0
  17. package/dist/src/main.js.map +1 -0
  18. package/dist/src/output/writer.js +46 -0
  19. package/dist/src/output/writer.js.map +1 -0
  20. package/dist/src/sections/index.js +207 -0
  21. package/dist/src/sections/index.js.map +1 -0
  22. package/dist/src/templates/changelog.detailed.ejs +111 -0
  23. package/dist/src/templates/changelog.ejs +68 -0
  24. package/dist/src/templates/index.js +101 -0
  25. package/dist/src/templates/index.js.map +1 -0
  26. package/dist/src/utils/cli.js +3 -0
  27. package/dist/src/utils/cli.js.map +1 -0
  28. package/dist/src/utils/cmd.js +57 -0
  29. package/dist/src/utils/cmd.js.map +1 -0
  30. package/dist/src/utils/git-utils.js +278 -0
  31. package/dist/src/utils/git-utils.js.map +1 -0
  32. package/dist/src/utils/helpers.js +50 -0
  33. package/dist/src/utils/helpers.js.map +1 -0
  34. package/dist/test/config/loadConfigFile.test.js +94 -0
  35. package/dist/test/config/loadConfigFile.test.js.map +1 -0
  36. package/dist/test/config/readConfig.test.js +125 -0
  37. package/dist/test/config/readConfig.test.js.map +1 -0
  38. package/package.json +7 -7
@@ -0,0 +1,232 @@
1
+ {
2
+ "appName": "Git Release Manager",
3
+ "output": "stdout",
4
+ "tag": {
5
+ "format": "^v(\\d+)\\.(\\d+)\\.(\\d+)(?:-([a-zA-Z0-9]+)\\.(\\d+))?$"
6
+ },
7
+ "channels": {
8
+ "dev": {
9
+ "title": "Development",
10
+ "description": "Development channel is for testing new features and bug fixes before they are released to the public.",
11
+ "branch": "dev",
12
+ "prerelease": true
13
+ },
14
+ "alpha": {
15
+ "title": "Alpha",
16
+ "description": "Alpha channel is for testing new features and bug fixes before they are released to the public.",
17
+ "branch": "test",
18
+ "prerelease": true
19
+ },
20
+ "beta": {
21
+ "title": "Beta",
22
+ "description": "Beta channel is for testing new features and bug fixes before they are released to the public.",
23
+ "branch": "test",
24
+ "prerelease": true
25
+ },
26
+ "preview": {
27
+ "title": "Preview",
28
+ "description": "Preview channel is for testing new features and bug fixes before they are released to the public.",
29
+ "branch": "release/*",
30
+ "prerelease": true
31
+ },
32
+ "stable": {
33
+ "title": "Stable",
34
+ "description": "Stable channel is for the final release of new features and bug fixes.",
35
+ "branch": "main",
36
+ "prerelease": false
37
+ }
38
+ },
39
+ "noteTypes": [
40
+ {
41
+ "sign": "!",
42
+ "type": "breaking-change",
43
+ "terms": ["BREAKING CHANGE", "BREAKING CHANGES", "BREAKING"],
44
+ "title": "⚠️ BREAKING CHANGE",
45
+ "order": 1
46
+ },
47
+ {
48
+ "sign": "-",
49
+ "type": "deprecate",
50
+ "terms": ["DEPRECATE", "DEPRECATION"],
51
+ "title": "📉 DEPRECATE",
52
+ "order": 2
53
+ },
54
+ {
55
+ "sign": "+",
56
+ "type": "new",
57
+ "terms": ["NEW"],
58
+ "title": "🆕 NEW",
59
+ "order": 3
60
+ },
61
+ {
62
+ "sign": "~",
63
+ "type": "change",
64
+ "terms": ["CHANGE", "CHANGES"],
65
+ "title": "🔄 CHANGE",
66
+ "order": 4
67
+ },
68
+ {
69
+ "sign": "*",
70
+ "type": "highlight",
71
+ "terms": ["HIGHLIGHT", "HIGHLIGHTS"],
72
+ "title": "🌟 KEY HIGHLIGHTS",
73
+ "order": 5
74
+ },
75
+ {
76
+ "sign": "?",
77
+ "type": "experimental",
78
+ "terms": ["EXPERIMENTAL"],
79
+ "title": "🔬 EXPERIMENTAL",
80
+ "order": 6
81
+ },
82
+ {
83
+ "sign": "",
84
+ "type": "known-issue",
85
+ "terms": ["KNOWN ISSUE", "KNOWN ISSUES", "ISSUE", "ISSUES"],
86
+ "title": "🐛 KNOWN ISSUES"
87
+ }
88
+ ],
89
+ "commitTypes": [
90
+ {
91
+ "type": "feature",
92
+ "terms": ["feat"],
93
+ "title": "✨ New Features & Enhancements",
94
+ "order": 1
95
+ },
96
+ {
97
+ "type": "bug-fix",
98
+ "terms": ["fix"],
99
+ "title": "🐞 Resolved Issues",
100
+ "order": 2
101
+ },
102
+ {
103
+ "type": "documentation",
104
+ "terms": ["docs"],
105
+ "title": "📚 Documentation",
106
+ "order": 3
107
+ },
108
+ {
109
+ "type": "style",
110
+ "terms": ["style"],
111
+ "title": "🎨 Code Style",
112
+ "order": 4
113
+ },
114
+ {
115
+ "type": "refactor",
116
+ "terms": ["refactor"],
117
+ "title": "♻️ Refactoring",
118
+ "order": 5
119
+ },
120
+ {
121
+ "type": "performance",
122
+ "terms": ["perf"],
123
+ "title": "🚀 Performance Improvements",
124
+ "order": 6
125
+ },
126
+ {
127
+ "type": "test",
128
+ "terms": ["test"],
129
+ "title": "🧪 Tests",
130
+ "order": 7
131
+ },
132
+ {
133
+ "type": "ci-cd",
134
+ "terms": ["ci"],
135
+ "title": "🔄 CI/CD",
136
+ "order": 8
137
+ },
138
+ {
139
+ "type": "chore",
140
+ "terms": ["chore"],
141
+ "title": "🔧 Codebase Maintenance and Updates",
142
+ "order": 9
143
+ }
144
+ ],
145
+ "linkTypes": [
146
+ {
147
+ "type": "basic",
148
+ "sign": ["#"],
149
+ "title": "Linked to"
150
+ },
151
+ {
152
+ "type": "closed",
153
+ "terms": ["Closes", "Closed"],
154
+ "title": "Closed",
155
+ "order": 1
156
+ },
157
+ {
158
+ "type": "fixed",
159
+ "terms": ["Fixes", "Fixed"],
160
+ "title": "Fixed",
161
+ "order": 2
162
+ },
163
+ {
164
+ "type": "resolved",
165
+ "terms": ["Resolves", "Resolved"],
166
+ "title": "Resolved",
167
+ "order": 3
168
+ },
169
+ {
170
+ "type": "related",
171
+ "terms": ["Related", "Related to"],
172
+ "title": "Related to",
173
+ "order": 4
174
+ },
175
+ {
176
+ "type": "connects",
177
+ "terms": ["Connects", "Connects to"],
178
+ "title": "Connects to",
179
+ "order": 5
180
+ }
181
+ ],
182
+ "mentionTypes": [
183
+ {
184
+ "type": "co-authored-by",
185
+ "terms": ["Co-authored-by"],
186
+ "title": "Co-authored-by",
187
+ "order": 1
188
+ },
189
+ {
190
+ "type": "signed-off-by",
191
+ "terms": ["Signed-off-by"],
192
+ "title": "Signed Off By",
193
+ "order": 2
194
+ },
195
+ {
196
+ "type": "acked-by",
197
+ "terms": ["Acked-by"],
198
+ "title": "Acknowledged By",
199
+ "order": 3
200
+ },
201
+ {
202
+ "type": "reviewed-by",
203
+ "terms": ["Reviewed-by"],
204
+ "title": "Reviewed By",
205
+ "order": 4
206
+ },
207
+ {
208
+ "type": "helped-by",
209
+ "terms": ["Helped-by"],
210
+ "title": "Helped By",
211
+ "order": 5
212
+ }
213
+ ],
214
+ "fileGroups": {
215
+ "Code": ["src/", "plugins/", "pkg/", "cmake/", "build/", "bin/", "sysmodules/", "modules/"],
216
+ "Docs": ["docs/", ".github/", ".config/", ".vscode/", "README.md", "README.tr.md", "CONTRIBUTING.md", "CODE_OF_CONDUCT.md", "CHANGELOG.md", "release.config.mjs"],
217
+ "Tests": ["tests/", "data/", "cache/", "temp/", "drafts/", "log/"],
218
+ "Configurations": ["config/", ".editorconfig", ".env", ".gitignore", ".gitmodules", ".gitattributes", ".golangci.yml", "Dockerfile", "Makefile", "CMakeLists.txt", "package.json", "package-lock.json", "t.txt"],
219
+ "Assets": ["assets/", "dist/", "templates/"]
220
+ },
221
+ "allowedBranches": ["dev", "test", "release/*", "main"],
222
+ "allowedChannels": ["beta", "rc", "alpha", "stable"],
223
+ "options": {
224
+ "commits": {
225
+ "sort": "date"
226
+ }
227
+ },
228
+ "helpers": {
229
+ "groupBy": "function(array, key, config) { return array.reduce((result, item) => { const groupKey = key.split('.').reduce((acc, part) => acc && acc[part], item); if (!result[groupKey]) { const matchingType = config.commitTypes.find(ct => ct.terms.includes(groupKey)); const typeTitle = matchingType ? matchingType.title : 'Other Changes'; result[groupKey] = { title: typeTitle, items: [] }; } result[groupKey].items.push(item); return result; }, {}); }",
230
+ "groupByNotes": "function(array, config, includeUnmatched = true) { return array.reduce((result, item) => { if (!item.notes || item.notes.length === 0) return result; item.notes.forEach(note => { const groupKey = note.type; const matchingType = config.noteTypes.find(nt => nt.type === groupKey); if (!matchingType && !includeUnmatched) return; if (!result[groupKey]) { const typeTitle = matchingType ? matchingType.title : groupKey; result[groupKey] = { title: typeTitle, items: [] }; } result[groupKey].items.push({ note, commit: item }); }); return result; }, {}); }"
231
+ }
232
+ }
@@ -0,0 +1,86 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.loadConfigFile = loadConfigFile;
37
+ exports.readConfig = readConfig;
38
+ const path = __importStar(require("path"));
39
+ const fs = __importStar(require("fs"));
40
+ const DEFAULT_CONFIG_PATH = path.resolve(__dirname, 'defaultConfig.json');
41
+ const LOCAL_CONFIG_PATH = path.resolve(process.cwd(), '.grm/config.json');
42
+ async function loadConfigFile(filePath) {
43
+ try {
44
+ const configContent = await fs.promises.readFile(filePath, 'utf-8');
45
+ const config = JSON.parse(configContent);
46
+ // Helper fonksiyonlarını string'den fonksiyona dönüştür
47
+ if (config.helpers) {
48
+ Object.keys(config.helpers).forEach(key => {
49
+ const helperKey = key;
50
+ if (typeof config.helpers[helperKey] === 'string') {
51
+ // eslint-disable-next-line no-eval
52
+ config.helpers[helperKey] = eval(`(${config.helpers[helperKey]})`);
53
+ }
54
+ });
55
+ }
56
+ return config;
57
+ }
58
+ catch (error) {
59
+ if (error.code === 'ENOENT') {
60
+ return {}; // Dosya bulunamazsa boş obje döndür
61
+ }
62
+ throw error; // Diğer hataları tekrar fırlat
63
+ }
64
+ }
65
+ async function readConfig(customConfigPath = null, environment = null) {
66
+ const envSuffix = environment ? `.${environment}` : '';
67
+ // Handle custom config path
68
+ let finalCustomConfigPath = customConfigPath ? path.resolve(customConfigPath.replace(/\.json$/, `${envSuffix}.json`)) : null;
69
+ let customConfig = {};
70
+ if (finalCustomConfigPath && fs.existsSync(finalCustomConfigPath)) {
71
+ customConfig = await loadConfigFile(finalCustomConfigPath);
72
+ }
73
+ let localConfig = {};
74
+ if (Object.keys(customConfig).length === 0) {
75
+ // Only load local config if custom config is empty
76
+ let finalLocalConfigPath = LOCAL_CONFIG_PATH.replace(/\.json$/, `${envSuffix}.json`);
77
+ localConfig = fs.existsSync(finalLocalConfigPath) ? await loadConfigFile(finalLocalConfigPath) : {};
78
+ }
79
+ // Handle default config path
80
+ let defaultConfigPath = DEFAULT_CONFIG_PATH.replace(/\.json$/, `${envSuffix}.json`);
81
+ let defaultConfig = fs.existsSync(defaultConfigPath) ? await loadConfigFile(defaultConfigPath) : await loadConfigFile(DEFAULT_CONFIG_PATH);
82
+ const result = { ...defaultConfig, ...localConfig, ...customConfig };
83
+ // Merge configurations with condition: default < (local if custom is empty) < custom
84
+ return result;
85
+ }
86
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/config/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/config/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,218 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getRangeDetails = getRangeDetails;
4
+ exports.run = run;
5
+ exports.getChangeInformation = getChangeInformation;
6
+ const fs = require("fs").promises;
7
+ const path = require("path"); // Import Node.js's path module
8
+ const commits_1 = require("../git/commits");
9
+ const context_1 = require("../git/context");
10
+ const git_utils_1 = require("../utils/git-utils");
11
+ const helpers_1 = require("../utils/helpers");
12
+ const sections_1 = require("../sections");
13
+ const templates_1 = require("../templates");
14
+ const writer_1 = require("../output/writer");
15
+ async function getRangeDetails(options) {
16
+ let resolvedFrom;
17
+ let resolvedTo;
18
+ let resolvedRange;
19
+ let commitCount = 0;
20
+ let tagList;
21
+ let latestTag;
22
+ // let branchList: Array<Branch>;
23
+ // let latestBranch: Branch | null;
24
+ if (options) {
25
+ if (options.range) {
26
+ const { from, to } = (0, helpers_1.parseRange)(options.range);
27
+ resolvedFrom = await (0, git_utils_1.resolveReference)(from, true);
28
+ resolvedTo = await (0, git_utils_1.resolveReference)(to, false);
29
+ }
30
+ else if (options.point) {
31
+ resolvedFrom = await (0, git_utils_1.resolveReference)(null, true);
32
+ resolvedTo = await (0, git_utils_1.resolveReference)(options.point, false);
33
+ }
34
+ else {
35
+ if (options.from) {
36
+ resolvedFrom = await (0, git_utils_1.resolveReference)(options.from, true);
37
+ }
38
+ else {
39
+ resolvedFrom = await (0, git_utils_1.resolveReference)(null, true);
40
+ }
41
+ if (options.to) {
42
+ resolvedTo = await (0, git_utils_1.resolveReference)(options.to, false);
43
+ }
44
+ else {
45
+ resolvedTo = await (0, git_utils_1.resolveReference)(null, false);
46
+ }
47
+ }
48
+ }
49
+ else {
50
+ resolvedFrom = await (0, git_utils_1.resolveReference)(null, true);
51
+ resolvedTo = await (0, git_utils_1.resolveReference)(null, false);
52
+ }
53
+ resolvedRange = `${resolvedFrom === null || resolvedFrom === void 0 ? void 0 : resolvedFrom.reference}..${resolvedTo === null || resolvedTo === void 0 ? void 0 : resolvedTo.reference}`;
54
+ commitCount = await (0, git_utils_1.getCommitCount)(resolvedRange);
55
+ tagList = await (0, git_utils_1.getTags)(resolvedRange);
56
+ latestTag = (tagList === null || tagList === void 0 ? void 0 : tagList.length) > 0 ? tagList[0] : null;
57
+ // branchList = await getBranches(resolvedRange);
58
+ // latestBranch = branchList?.length > 0 ? branchList[0] : null;
59
+ return {
60
+ resolvedFrom,
61
+ resolvedTo,
62
+ resolvedRange,
63
+ commitCount,
64
+ tagList,
65
+ latestTag,
66
+ // branchList,
67
+ // latestBranch
68
+ };
69
+ }
70
+ async function run(options, config) {
71
+ let templatePath = config.defaultTemplate;
72
+ if (options.template)
73
+ templatePath = options.template;
74
+ let outputOpt = config.output;
75
+ if (options.output)
76
+ outputOpt = options.output;
77
+ let fileData = "";
78
+ try {
79
+ const now = new Date();
80
+ const date = now.toISOString().split("T")[0];
81
+ const repository = await (0, context_1.getGitContextAsync)();
82
+ const rangeInfo = await getRangeDetails(options);
83
+ if (options === null || options === void 0 ? void 0 : options.mergeAll) {
84
+ const changeInfo = await getChangeInformation(rangeInfo);
85
+ const commits = await (0, commits_1.listCommitsAsync)(rangeInfo.resolvedRange, config);
86
+ const sections = (0, sections_1.createSections)(commits, config);
87
+ const context = {
88
+ date,
89
+ ...rangeInfo,
90
+ changeInfo,
91
+ repository,
92
+ commits,
93
+ sections,
94
+ config,
95
+ };
96
+ fileData = await (0, templates_1.renderTemplate)(templatePath, options === null || options === void 0 ? void 0 : options.environment, context);
97
+ }
98
+ else {
99
+ for (let index = 0; index < rangeInfo.tagList.length; index++) {
100
+ const tag = rangeInfo.tagList[index];
101
+ let resolvedFrom = rangeInfo.resolvedFrom;
102
+ let resolvedTo = rangeInfo.resolvedTo;
103
+ if (rangeInfo.tagList[rangeInfo.tagList.length - 1].reference == tag.reference) {
104
+ resolvedFrom = rangeInfo.resolvedFrom;
105
+ resolvedTo = await (0, git_utils_1.resolveReference)(tag.name, false);
106
+ }
107
+ else if (rangeInfo.tagList[0].reference == tag.reference) {
108
+ const previousTag = rangeInfo.tagList[index + 1];
109
+ resolvedFrom = await (0, git_utils_1.resolveReference)(previousTag.name, true);
110
+ resolvedTo = rangeInfo.resolvedTo;
111
+ }
112
+ else {
113
+ const previousTag = rangeInfo.tagList[index + 1];
114
+ resolvedFrom = await (0, git_utils_1.resolveReference)(previousTag.name, true);
115
+ resolvedTo = await (0, git_utils_1.resolveReference)(tag.name, false);
116
+ }
117
+ const resolvedRange = `${resolvedFrom === null || resolvedFrom === void 0 ? void 0 : resolvedFrom.reference}..${resolvedTo === null || resolvedTo === void 0 ? void 0 : resolvedTo.reference}`;
118
+ const commitCount = await (0, git_utils_1.getCommitCount)(resolvedRange);
119
+ const newRangeInfo = {
120
+ resolvedFrom,
121
+ resolvedTo,
122
+ resolvedRange,
123
+ commitCount,
124
+ latestTag: tag,
125
+ tagList: [tag],
126
+ };
127
+ const changeInfo = await getChangeInformation(newRangeInfo);
128
+ const commits = await (0, commits_1.listCommitsAsync)(newRangeInfo.resolvedRange, config);
129
+ const sections = (0, sections_1.createSections)(commits, config);
130
+ const context = {
131
+ date,
132
+ ...newRangeInfo,
133
+ changeInfo,
134
+ repository,
135
+ commits,
136
+ sections,
137
+ config,
138
+ };
139
+ const renderedData = await (0, templates_1.renderTemplate)(templatePath, options === null || options === void 0 ? void 0 : options.environment, context);
140
+ fileData += `\n\n${renderedData}`;
141
+ }
142
+ }
143
+ (0, writer_1.writeOutput)(fileData, outputOpt);
144
+ }
145
+ catch (error) {
146
+ console.error("Error getting git logs:", error);
147
+ process.exit(1);
148
+ }
149
+ }
150
+ async function getChangeInformation(rangeInfo) {
151
+ let header;
152
+ let summary;
153
+ let currentTag;
154
+ let changeCommitsCount = await (0, git_utils_1.getCommitCount)(rangeInfo.resolvedRange);
155
+ currentTag = rangeInfo.latestTag;
156
+ header = (currentTag === null || currentTag === void 0 ? void 0 : currentTag.name) || null;
157
+ if ((currentTag === null || currentTag === void 0 ? void 0 : currentTag.reference) != rangeInfo.resolvedTo.reference) {
158
+ const commitsAhead = await (0, git_utils_1.getCommitCount)(`${currentTag === null || currentTag === void 0 ? void 0 : currentTag.reference}..${rangeInfo.resolvedTo.reference}`);
159
+ header += ` (+${commitsAhead} commits)`;
160
+ }
161
+ summary = "Changes";
162
+ if (rangeInfo.resolvedFrom.value) {
163
+ switch (rangeInfo.resolvedFrom.type) {
164
+ case helpers_1.referenceTypesEnum.commit:
165
+ summary += ` from commit ${rangeInfo.resolvedFrom.value}`;
166
+ break;
167
+ case helpers_1.referenceTypesEnum.branch:
168
+ summary += ` from ${rangeInfo.resolvedFrom.value} branch`;
169
+ break;
170
+ case helpers_1.referenceTypesEnum.date:
171
+ summary += ` after ${rangeInfo.resolvedFrom.value}`;
172
+ break;
173
+ case helpers_1.referenceTypesEnum.tag:
174
+ summary += ` from ${rangeInfo.resolvedFrom.value} tag`;
175
+ break;
176
+ case helpers_1.referenceTypesEnum.ref:
177
+ summary += ` from reference ${rangeInfo.resolvedFrom.value}`;
178
+ break;
179
+ default:
180
+ break;
181
+ }
182
+ }
183
+ else {
184
+ summary += ` from initial commit`;
185
+ }
186
+ if (rangeInfo.resolvedTo.value) {
187
+ switch (rangeInfo.resolvedTo.type) {
188
+ case helpers_1.referenceTypesEnum.commit:
189
+ summary += ` to commit ${rangeInfo.resolvedTo.value}`;
190
+ break;
191
+ case helpers_1.referenceTypesEnum.branch:
192
+ summary += ` to ${rangeInfo.resolvedTo.value} branch`;
193
+ break;
194
+ case helpers_1.referenceTypesEnum.date:
195
+ summary += ` before ${rangeInfo.resolvedTo.value}`;
196
+ break;
197
+ case helpers_1.referenceTypesEnum.tag:
198
+ summary += ` to ${rangeInfo.resolvedTo.value} tag`;
199
+ break;
200
+ case helpers_1.referenceTypesEnum.ref:
201
+ summary += ` to reference ${rangeInfo.resolvedTo.value}`;
202
+ break;
203
+ default:
204
+ break;
205
+ }
206
+ }
207
+ else {
208
+ summary += ` to HEAD`;
209
+ }
210
+ return {
211
+ header,
212
+ summary,
213
+ currentTag,
214
+ changeCommitsCount,
215
+ };
216
+ }
217
+ ///
218
+ //# sourceMappingURL=app.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app.js","sourceRoot":"","sources":["../../../src/core/app.ts"],"names":[],"mappings":";;AAiCA,0CAuDC;AAED,kBA0FC;AASD,oDAyEC;AAtQD,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC;AAClC,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,+BAA+B;AAE7D,4CAAkD;AAClD,4CAAoD;AAGpD,kDAS4B;AAC5B,8CAAkE;AAClE,0CAA6C;AAC7C,4CAA8C;AAC9C,6CAA+C;AAaxC,KAAK,UAAU,eAAe,CACnC,OAAiB;IAEjB,IAAI,YAA0B,CAAC;IAC/B,IAAI,UAAwB,CAAC;IAC7B,IAAI,aAAqB,CAAC;IAC1B,IAAI,WAAW,GAAW,CAAC,CAAC;IAC5B,IAAI,OAAmB,CAAC;IACxB,IAAI,SAAqB,CAAC;IAC1B,iCAAiC;IACjC,mCAAmC;IAEnC,IAAI,OAAO,EAAE,CAAC;QACZ,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,IAAA,oBAAU,EAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAC/C,YAAY,GAAG,MAAM,IAAA,4BAAgB,EAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAClD,UAAU,GAAG,MAAM,IAAA,4BAAgB,EAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QACjD,CAAC;aAAM,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YACzB,YAAY,GAAG,MAAM,IAAA,4BAAgB,EAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAClD,UAAU,GAAG,MAAM,IAAA,4BAAgB,EAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC5D,CAAC;aAAM,CAAC;YACN,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;gBACjB,YAAY,GAAG,MAAM,IAAA,4BAAgB,EAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAC5D,CAAC;iBAAM,CAAC;gBACN,YAAY,GAAG,MAAM,IAAA,4BAAgB,EAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACpD,CAAC;YAED,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC;gBACf,UAAU,GAAG,MAAM,IAAA,4BAAgB,EAAC,OAAO,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;YACzD,CAAC;iBAAM,CAAC;gBACN,UAAU,GAAG,MAAM,IAAA,4BAAgB,EAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACnD,CAAC;QACH,CAAC;IACH,CAAC;SAAM,CAAC;QACN,YAAY,GAAG,MAAM,IAAA,4BAAgB,EAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAClD,UAAU,GAAG,MAAM,IAAA,4BAAgB,EAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACnD,CAAC;IAED,aAAa,GAAG,GAAG,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,SAAS,KAAK,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,SAAS,EAAE,CAAC;IACvE,WAAW,GAAG,MAAM,IAAA,0BAAc,EAAC,aAAa,CAAC,CAAC;IAClD,OAAO,GAAG,MAAM,IAAA,mBAAO,EAAC,aAAa,CAAC,CAAC;IACvC,SAAS,GAAG,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,IAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACpD,iDAAiD;IACjD,gEAAgE;IAEhE,OAAO;QACL,YAAY;QACZ,UAAU;QACV,aAAa;QACb,WAAW;QACX,OAAO;QACP,SAAS;QACT,cAAc;QACd,eAAe;KAChB,CAAC;AACJ,CAAC;AAEM,KAAK,UAAU,GAAG,CAAC,OAAgB,EAAE,MAAc;IACxD,IAAI,YAAY,GAAG,MAAM,CAAC,eAAe,CAAC;IAC1C,IAAI,OAAO,CAAC,QAAQ;QAAE,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC;IAEtD,IAAI,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC;IAC9B,IAAI,OAAO,CAAC,MAAM;QAAE,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC;IAE/C,IAAI,QAAQ,GAAW,EAAE,CAAC;IAE1B,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAE7C,MAAM,UAAU,GAAG,MAAM,IAAA,4BAAkB,GAAE,CAAC;QAE9C,MAAM,SAAS,GAAG,MAAM,eAAe,CAAC,OAAO,CAAC,CAAC;QAEjD,IAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,QAAQ,EAAE,CAAC;YACtB,MAAM,UAAU,GAAG,MAAM,oBAAoB,CAAC,SAAS,CAAC,CAAC;YAEzD,MAAM,OAAO,GAAG,MAAM,IAAA,0BAAgB,EAAC,SAAS,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;YACxE,MAAM,QAAQ,GAAG,IAAA,yBAAc,EAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YAEjD,MAAM,OAAO,GAAG;gBACd,IAAI;gBACJ,GAAG,SAAS;gBACZ,UAAU;gBACV,UAAU;gBACV,OAAO;gBACP,QAAQ;gBACR,MAAM;aACP,CAAC;YAEF,QAAQ,GAAG,MAAM,IAAA,0BAAc,EAAC,YAAY,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW,EAAE,OAAO,CAAC,CAAC;QAC/E,CAAC;aAAM,CAAC;YAEN,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;gBAC9D,MAAM,GAAG,GAAG,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gBAErC,IAAI,YAAY,GAAG,SAAS,CAAC,YAAY,CAAC;gBAC1C,IAAI,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC;gBAEtC,IAAI,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,SAAS,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;oBAC/E,YAAY,GAAG,SAAS,CAAC,YAAY,CAAC;oBACtC,UAAU,GAAG,MAAM,IAAA,4BAAgB,EAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;gBACvD,CAAC;qBAAM,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;oBAC3D,MAAM,WAAW,GAAG,SAAS,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;oBACjD,YAAY,GAAG,MAAM,IAAA,4BAAgB,EAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;oBAC9D,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC;gBACpC,CAAC;qBAAM,CAAC;oBACN,MAAM,WAAW,GAAG,SAAS,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;oBACjD,YAAY,GAAG,MAAM,IAAA,4BAAgB,EAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;oBAC9D,UAAU,GAAG,MAAM,IAAA,4BAAgB,EAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;gBACvD,CAAC;gBAED,MAAM,aAAa,GAAG,GAAG,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,SAAS,KAAK,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,SAAS,EAAE,CAAC;gBAC7E,MAAM,WAAW,GAAG,MAAM,IAAA,0BAAc,EAAC,aAAa,CAAC,CAAC;gBACxD,MAAM,YAAY,GAAG;oBACnB,YAAY;oBACZ,UAAU;oBACV,aAAa;oBACb,WAAW;oBACX,SAAS,EAAE,GAAG;oBACd,OAAO,EAAE,CAAC,GAAG,CAAC;iBACf,CAAC;gBACF,MAAM,UAAU,GAAG,MAAM,oBAAoB,CAAC,YAAY,CAAC,CAAC;gBAE5D,MAAM,OAAO,GAAG,MAAM,IAAA,0BAAgB,EAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;gBAC3E,MAAM,QAAQ,GAAG,IAAA,yBAAc,EAAC,OAAO,EAAE,MAAM,CAAC,CAAC;gBAEjD,MAAM,OAAO,GAAG;oBACd,IAAI;oBACJ,GAAG,YAAY;oBACf,UAAU;oBACV,UAAU;oBACV,OAAO;oBACP,QAAQ;oBACR,MAAM;iBACP,CAAC;gBAEF,MAAM,YAAY,GAAG,MAAM,IAAA,0BAAc,EAAC,YAAY,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW,EAAE,OAAO,CAAC,CAAC;gBACvF,QAAQ,IAAI,OAAO,YAAY,EAAE,CAAC;YACpC,CAAC;QACH,CAAC;QACD,IAAA,oBAAW,EAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAEnC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,KAAK,CAAC,CAAC;QAChD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AASM,KAAK,UAAU,oBAAoB,CACxC,SAAuB;IAEvB,IAAI,MAAqB,CAAC;IAC1B,IAAI,OAAsB,CAAC;IAC3B,IAAI,UAAsB,CAAC;IAC3B,IAAI,kBAAkB,GAAG,MAAM,IAAA,0BAAc,EAAC,SAAS,CAAC,aAAa,CAAC,CAAC;IAEvE,UAAU,GAAG,SAAS,CAAC,SAAS,CAAC;IAEjC,MAAM,GAAG,CAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,IAAI,KAAI,IAAI,CAAC;IAElC,IAAI,CAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,SAAS,KAAI,SAAS,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC;QAC5D,MAAM,YAAY,GAAG,MAAM,IAAA,0BAAc,EACvC,GAAG,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,SAAS,KAAK,SAAS,CAAC,UAAU,CAAC,SAAS,EAAE,CAC9D,CAAC;QACF,MAAM,IAAI,MAAM,YAAY,WAAW,CAAC;IAC1C,CAAC;IAED,OAAO,GAAG,SAAS,CAAC;IACpB,IAAI,SAAS,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;QACjC,QAAQ,SAAS,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;YACpC,KAAK,4BAAkB,CAAC,MAAM;gBAC5B,OAAO,IAAI,gBAAgB,SAAS,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;gBAC1D,MAAM;YACR,KAAK,4BAAkB,CAAC,MAAM;gBAC5B,OAAO,IAAI,SAAS,SAAS,CAAC,YAAY,CAAC,KAAK,SAAS,CAAC;gBAC1D,MAAM;YACR,KAAK,4BAAkB,CAAC,IAAI;gBAC1B,OAAO,IAAI,UAAU,SAAS,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;gBACpD,MAAM;YACR,KAAK,4BAAkB,CAAC,GAAG;gBACzB,OAAO,IAAI,SAAS,SAAS,CAAC,YAAY,CAAC,KAAK,MAAM,CAAC;gBACvD,MAAM;YACR,KAAK,4BAAkB,CAAC,GAAG;gBACzB,OAAO,IAAI,mBAAmB,SAAS,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;gBAC7D,MAAM;YACR;gBACE,MAAM;QACV,CAAC;IACH,CAAC;SAAM,CAAC;QACN,OAAO,IAAI,sBAAsB,CAAC;IACpC,CAAC;IACD,IAAI,SAAS,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QAC/B,QAAQ,SAAS,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;YAClC,KAAK,4BAAkB,CAAC,MAAM;gBAC5B,OAAO,IAAI,cAAc,SAAS,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;gBACtD,MAAM;YACR,KAAK,4BAAkB,CAAC,MAAM;gBAC5B,OAAO,IAAI,OAAO,SAAS,CAAC,UAAU,CAAC,KAAK,SAAS,CAAC;gBACtD,MAAM;YACR,KAAK,4BAAkB,CAAC,IAAI;gBAC1B,OAAO,IAAI,WAAW,SAAS,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;gBACnD,MAAM;YACR,KAAK,4BAAkB,CAAC,GAAG;gBACzB,OAAO,IAAI,OAAO,SAAS,CAAC,UAAU,CAAC,KAAK,MAAM,CAAC;gBACnD,MAAM;YACR,KAAK,4BAAkB,CAAC,GAAG;gBACzB,OAAO,IAAI,iBAAiB,SAAS,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;gBACzD,MAAM;YACR;gBACE,MAAM;QACV,CAAC;IACH,CAAC;SAAM,CAAC;QACN,OAAO,IAAI,UAAU,CAAC;IACxB,CAAC;IAED,OAAO;QACL,MAAM;QACN,OAAO;QACP,UAAU;QACV,kBAAkB;KACnB,CAAC;AACJ,CAAC;AAED,GAAG"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/core/types.ts"],"names":[],"mappings":""}