github-issue-tower-defence-management 1.173.0 → 1.173.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/CHANGELOG.md +7 -0
- package/bin/adapter/entry-points/console/consoleReadApi.js +126 -48
- package/bin/adapter/entry-points/console/consoleReadApi.js.map +1 -1
- package/bin/adapter/entry-points/console/ui-dist/assets/{index-ZYMkO0fm.js → index-BcnLfodS.js} +1 -1
- package/bin/adapter/entry-points/console/ui-dist/index.html +1 -1
- package/bin/adapter/repositories/issue/ApiV3CheerioRestIssueRepository.js +19 -17
- package/bin/adapter/repositories/issue/ApiV3CheerioRestIssueRepository.js.map +1 -1
- package/bin/adapter/repositories/issue/githubRateLimitRetry.js +8 -1
- package/bin/adapter/repositories/issue/githubRateLimitRetry.js.map +1 -1
- package/package.json +1 -1
- package/src/adapter/entry-points/console/consoleReadApi.test.ts +254 -0
- package/src/adapter/entry-points/console/consoleReadApi.ts +133 -55
- package/src/adapter/entry-points/console/ui/src/features/console/lib/consoleApi.test.ts +10 -0
- package/src/adapter/entry-points/console/ui/src/features/console/lib/consoleApi.ts +14 -1
- package/src/adapter/entry-points/console/ui-dist/assets/{index-ZYMkO0fm.js → index-BcnLfodS.js} +1 -1
- package/src/adapter/entry-points/console/ui-dist/index.html +1 -1
- package/src/adapter/entry-points/console/webServer.test.ts +35 -0
- package/src/adapter/repositories/issue/ApiV3CheerioRestIssueRepository.ts +47 -19
- package/src/adapter/repositories/issue/githubRateLimitRetry.ts +4 -0
- package/types/adapter/entry-points/console/consoleReadApi.d.ts +2 -0
- package/types/adapter/entry-points/console/consoleReadApi.d.ts.map +1 -1
- package/types/adapter/repositories/issue/ApiV3CheerioRestIssueRepository.d.ts +1 -0
- package/types/adapter/repositories/issue/ApiV3CheerioRestIssueRepository.d.ts.map +1 -1
- package/types/adapter/repositories/issue/githubRateLimitRetry.d.ts +3 -0
- package/types/adapter/repositories/issue/githubRateLimitRetry.d.ts.map +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
## [1.173.1](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/compare/v1.173.0...v1.173.1) (2026-08-23)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Bug Fixes
|
|
5
|
+
|
|
6
|
+
* **console:** return 429 with rate limit message instead of 500 on GitHub rate limit ([#1680](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/issues/1680)) ([1dca110](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/commit/1dca110c68862312a889301ed3e1c4f621bb5626)), closes [#1671](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/issues/1671)
|
|
7
|
+
|
|
1
8
|
# [1.173.0](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/compare/v1.172.2...v1.173.0) (2026-08-23)
|
|
2
9
|
|
|
3
10
|
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.handlePullRequestStatus = exports.handleIssueTitle = exports.handleRelatedPrs = exports.handlePrCommits = exports.handlePrFiles = exports.handleComments = exports.handleItemBody = exports.PullRequestStatusCache = exports.IssueTitleStateCache = exports.deriveMergeableStatus = exports.PULL_REQUEST_STATUS_CACHE_TTL_MS = exports.ISSUE_TITLE_CACHE_TTL_MS = void 0;
|
|
4
|
+
const githubRateLimitRetry_1 = require("../../repositories/issue/githubRateLimitRetry");
|
|
4
5
|
exports.ISSUE_TITLE_CACHE_TTL_MS = 300 * 1000;
|
|
5
6
|
exports.PULL_REQUEST_STATUS_CACHE_TTL_MS = 30 * 1000;
|
|
6
7
|
const deriveMergeableStatus = (mergeable) => {
|
|
@@ -30,6 +31,10 @@ class IssueTitleStateCache {
|
|
|
30
31
|
}
|
|
31
32
|
return entry.state;
|
|
32
33
|
};
|
|
34
|
+
this.getStale = (url) => {
|
|
35
|
+
const entry = this.entries.get(url);
|
|
36
|
+
return entry?.state ?? null;
|
|
37
|
+
};
|
|
33
38
|
this.set = (url, state) => {
|
|
34
39
|
this.entries.set(url, { state, fetchedAtMs: this.nowMs() });
|
|
35
40
|
};
|
|
@@ -50,12 +55,17 @@ class PullRequestStatusCache {
|
|
|
50
55
|
}
|
|
51
56
|
return entry.status;
|
|
52
57
|
};
|
|
58
|
+
this.getStale = (url) => {
|
|
59
|
+
const entry = this.entries.get(url);
|
|
60
|
+
return entry?.status ?? null;
|
|
61
|
+
};
|
|
53
62
|
this.set = (url, status) => {
|
|
54
63
|
this.entries.set(url, { status, fetchedAtMs: this.nowMs() });
|
|
55
64
|
};
|
|
56
65
|
}
|
|
57
66
|
}
|
|
58
67
|
exports.PullRequestStatusCache = PullRequestStatusCache;
|
|
68
|
+
const isGitHubRateLimitError = (error) => error instanceof githubRateLimitRetry_1.GitHubRateLimitError;
|
|
59
69
|
const badRequest = (message) => ({
|
|
60
70
|
statusCode: 400,
|
|
61
71
|
body: { error: message },
|
|
@@ -64,6 +74,10 @@ const ok = (body) => ({
|
|
|
64
74
|
statusCode: 200,
|
|
65
75
|
body,
|
|
66
76
|
});
|
|
77
|
+
const rateLimited = (error) => ({
|
|
78
|
+
statusCode: 429,
|
|
79
|
+
body: { error: error.message },
|
|
80
|
+
});
|
|
67
81
|
const serializeComments = (comments) => comments.map((comment) => ({
|
|
68
82
|
author: comment.author,
|
|
69
83
|
body: comment.body,
|
|
@@ -79,60 +93,100 @@ const handleItemBody = async (issueRepository, url) => {
|
|
|
79
93
|
if (!url) {
|
|
80
94
|
return badRequest('url query parameter is required');
|
|
81
95
|
}
|
|
82
|
-
|
|
83
|
-
|
|
96
|
+
try {
|
|
97
|
+
const body = await issueRepository.getIssueOrPullRequestBody(url);
|
|
98
|
+
return ok({ body });
|
|
99
|
+
}
|
|
100
|
+
catch (error) {
|
|
101
|
+
if (isGitHubRateLimitError(error)) {
|
|
102
|
+
return rateLimited(error);
|
|
103
|
+
}
|
|
104
|
+
throw error;
|
|
105
|
+
}
|
|
84
106
|
};
|
|
85
107
|
exports.handleItemBody = handleItemBody;
|
|
86
108
|
const handleComments = async (issueRepository, url) => {
|
|
87
109
|
if (!url) {
|
|
88
110
|
return badRequest('url query parameter is required');
|
|
89
111
|
}
|
|
90
|
-
|
|
91
|
-
|
|
112
|
+
try {
|
|
113
|
+
const comments = await issueRepository.getIssueOrPullRequestComments(url);
|
|
114
|
+
return ok({ comments: serializeComments(comments) });
|
|
115
|
+
}
|
|
116
|
+
catch (error) {
|
|
117
|
+
if (isGitHubRateLimitError(error)) {
|
|
118
|
+
return rateLimited(error);
|
|
119
|
+
}
|
|
120
|
+
throw error;
|
|
121
|
+
}
|
|
92
122
|
};
|
|
93
123
|
exports.handleComments = handleComments;
|
|
94
124
|
const handlePrFiles = async (issueRepository, url) => {
|
|
95
125
|
if (!url) {
|
|
96
126
|
return badRequest('url query parameter is required');
|
|
97
127
|
}
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
128
|
+
try {
|
|
129
|
+
const detail = await issueRepository.getPullRequestDetail(url);
|
|
130
|
+
if (detail === null) {
|
|
131
|
+
return ok({ files: null });
|
|
132
|
+
}
|
|
133
|
+
return ok({ files: detail.files });
|
|
134
|
+
}
|
|
135
|
+
catch (error) {
|
|
136
|
+
if (isGitHubRateLimitError(error)) {
|
|
137
|
+
return rateLimited(error);
|
|
138
|
+
}
|
|
139
|
+
throw error;
|
|
101
140
|
}
|
|
102
|
-
return ok({ files: detail.files });
|
|
103
141
|
};
|
|
104
142
|
exports.handlePrFiles = handlePrFiles;
|
|
105
143
|
const handlePrCommits = async (issueRepository, url) => {
|
|
106
144
|
if (!url) {
|
|
107
145
|
return badRequest('url query parameter is required');
|
|
108
146
|
}
|
|
109
|
-
|
|
110
|
-
|
|
147
|
+
try {
|
|
148
|
+
const commits = await issueRepository.getPullRequestCommits(url);
|
|
149
|
+
return ok({ commits: serializeCommits(commits) });
|
|
150
|
+
}
|
|
151
|
+
catch (error) {
|
|
152
|
+
if (isGitHubRateLimitError(error)) {
|
|
153
|
+
return rateLimited(error);
|
|
154
|
+
}
|
|
155
|
+
throw error;
|
|
156
|
+
}
|
|
111
157
|
};
|
|
112
158
|
exports.handlePrCommits = handlePrCommits;
|
|
113
159
|
const handleRelatedPrs = async (issueRepository, url) => {
|
|
114
160
|
if (!url) {
|
|
115
161
|
return badRequest('url query parameter is required');
|
|
116
162
|
}
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
const
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
163
|
+
try {
|
|
164
|
+
const relatedPullRequests = await issueRepository.findRelatedOpenPRs(url);
|
|
165
|
+
const withSummaries = await Promise.all(relatedPullRequests.map(async (relatedPullRequest) => {
|
|
166
|
+
const summary = await issueRepository.getPullRequestSummary(relatedPullRequest.url);
|
|
167
|
+
return {
|
|
168
|
+
url: relatedPullRequest.url,
|
|
169
|
+
branchName: relatedPullRequest.branchName,
|
|
170
|
+
createdAt: relatedPullRequest.createdAt.toISOString(),
|
|
171
|
+
isDraft: relatedPullRequest.isDraft,
|
|
172
|
+
isConflicted: relatedPullRequest.isConflicted,
|
|
173
|
+
mergeableStatus: (0, exports.deriveMergeableStatus)(relatedPullRequest.mergeable),
|
|
174
|
+
isPassedAllCiJob: relatedPullRequest.isPassedAllCiJob,
|
|
175
|
+
isCiStateSuccess: relatedPullRequest.isCiStateSuccess,
|
|
176
|
+
isResolvedAllReviewComments: relatedPullRequest.isResolvedAllReviewComments,
|
|
177
|
+
isBranchOutOfDate: relatedPullRequest.isBranchOutOfDate,
|
|
178
|
+
missingRequiredCheckNames: relatedPullRequest.missingRequiredCheckNames,
|
|
179
|
+
summary,
|
|
180
|
+
};
|
|
181
|
+
}));
|
|
182
|
+
return ok({ relatedPullRequests: withSummaries });
|
|
183
|
+
}
|
|
184
|
+
catch (error) {
|
|
185
|
+
if (isGitHubRateLimitError(error)) {
|
|
186
|
+
return rateLimited(error);
|
|
187
|
+
}
|
|
188
|
+
throw error;
|
|
189
|
+
}
|
|
136
190
|
};
|
|
137
191
|
exports.handleRelatedPrs = handleRelatedPrs;
|
|
138
192
|
const handleIssueTitle = async (issueRepository, cache, url) => {
|
|
@@ -143,9 +197,21 @@ const handleIssueTitle = async (issueRepository, cache, url) => {
|
|
|
143
197
|
if (cached !== null) {
|
|
144
198
|
return ok(cached);
|
|
145
199
|
}
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
200
|
+
try {
|
|
201
|
+
const state = await issueRepository.getIssueOrPullRequestState(url);
|
|
202
|
+
cache.set(url, state);
|
|
203
|
+
return ok(state);
|
|
204
|
+
}
|
|
205
|
+
catch (error) {
|
|
206
|
+
if (isGitHubRateLimitError(error)) {
|
|
207
|
+
const stale = cache.getStale(url);
|
|
208
|
+
if (stale !== null) {
|
|
209
|
+
return ok(stale);
|
|
210
|
+
}
|
|
211
|
+
return rateLimited(error);
|
|
212
|
+
}
|
|
213
|
+
throw error;
|
|
214
|
+
}
|
|
149
215
|
};
|
|
150
216
|
exports.handleIssueTitle = handleIssueTitle;
|
|
151
217
|
const handlePullRequestStatus = async (issueRepository, cache, url) => {
|
|
@@ -156,22 +222,34 @@ const handlePullRequestStatus = async (issueRepository, cache, url) => {
|
|
|
156
222
|
if (cached !== null) {
|
|
157
223
|
return ok(cached);
|
|
158
224
|
}
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
225
|
+
try {
|
|
226
|
+
const pullRequest = await issueRepository.getOpenPullRequestCiStatus(url);
|
|
227
|
+
const response = pullRequest === null
|
|
228
|
+
? { found: false, status: null }
|
|
229
|
+
: {
|
|
230
|
+
found: true,
|
|
231
|
+
status: {
|
|
232
|
+
isConflicted: pullRequest.isConflicted,
|
|
233
|
+
mergeableStatus: (0, exports.deriveMergeableStatus)(pullRequest.mergeable),
|
|
234
|
+
isPassedAllCiJob: pullRequest.isPassedAllCiJob,
|
|
235
|
+
isCiStateSuccess: pullRequest.isCiStateSuccess,
|
|
236
|
+
isBranchOutOfDate: pullRequest.isBranchOutOfDate,
|
|
237
|
+
missingRequiredCheckNames: pullRequest.missingRequiredCheckNames,
|
|
238
|
+
},
|
|
239
|
+
};
|
|
240
|
+
cache.set(url, response);
|
|
241
|
+
return ok(response);
|
|
242
|
+
}
|
|
243
|
+
catch (error) {
|
|
244
|
+
if (isGitHubRateLimitError(error)) {
|
|
245
|
+
const stale = cache.getStale(url);
|
|
246
|
+
if (stale !== null) {
|
|
247
|
+
return ok(stale);
|
|
248
|
+
}
|
|
249
|
+
return rateLimited(error);
|
|
250
|
+
}
|
|
251
|
+
throw error;
|
|
252
|
+
}
|
|
175
253
|
};
|
|
176
254
|
exports.handlePullRequestStatus = handlePullRequestStatus;
|
|
177
255
|
//# sourceMappingURL=consoleReadApi.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"consoleReadApi.js","sourceRoot":"","sources":["../../../../src/adapter/entry-points/console/consoleReadApi.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"consoleReadApi.js","sourceRoot":"","sources":["../../../../src/adapter/entry-points/console/consoleReadApi.ts"],"names":[],"mappings":"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"}
|