github-issue-tower-defence-management 1.154.1 → 1.156.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.
Files changed (24) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/bin/adapter/entry-points/console/consoleReadApi.js +1 -1
  3. package/bin/adapter/entry-points/console/consoleReadApi.js.map +1 -1
  4. package/bin/adapter/repositories/githubGraphqlClient.js +90 -6
  5. package/bin/adapter/repositories/githubGraphqlClient.js.map +1 -1
  6. package/bin/adapter/repositories/issue/ApiV3CheerioRestIssueRepository.js +88 -1
  7. package/bin/adapter/repositories/issue/ApiV3CheerioRestIssueRepository.js.map +1 -1
  8. package/package.json +1 -1
  9. package/src/adapter/entry-points/console/consoleReadApi.test.ts +27 -9
  10. package/src/adapter/entry-points/console/consoleReadApi.ts +1 -1
  11. package/src/adapter/entry-points/console/ui/e2e/consoleTestHarness.ts +16 -0
  12. package/src/adapter/entry-points/console/webServer.test.ts +1 -5
  13. package/src/adapter/repositories/githubGraphqlClient.test.ts +173 -17
  14. package/src/adapter/repositories/githubGraphqlClient.ts +123 -9
  15. package/src/adapter/repositories/issue/ApiV3CheerioRestIssueRepository.test.ts +165 -0
  16. package/src/adapter/repositories/issue/ApiV3CheerioRestIssueRepository.ts +140 -0
  17. package/src/adapter/repositories/issue/GraphqlProjectItemRepository.test.ts +1 -1
  18. package/src/domain/usecases/adapter-interfaces/IssueRepository.ts +13 -0
  19. package/types/adapter/repositories/githubGraphqlClient.d.ts +11 -1
  20. package/types/adapter/repositories/githubGraphqlClient.d.ts.map +1 -1
  21. package/types/adapter/repositories/issue/ApiV3CheerioRestIssueRepository.d.ts +4 -1
  22. package/types/adapter/repositories/issue/ApiV3CheerioRestIssueRepository.d.ts.map +1 -1
  23. package/types/domain/usecases/adapter-interfaces/IssueRepository.d.ts +10 -0
  24. package/types/domain/usecases/adapter-interfaces/IssueRepository.d.ts.map +1 -1
package/CHANGELOG.md CHANGED
@@ -1,3 +1,22 @@
1
+ # [1.156.0](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/compare/v1.155.0...v1.156.0) (2026-08-15)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * name the GraphQL caller when the package runs from node_modules ([#1585](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/issues/1585)) ([e0caa90](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/commit/e0caa906194a032591f85b7b1164b5ad14be42ef)), closes [#1584](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/issues/1584)
7
+
8
+
9
+ ### Features
10
+
11
+ * serve console pull request status over REST ([#1583](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/issues/1583)) ([5ab092c](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/commit/5ab092ccdb6425b714dd980449d76f4fb86133d8)), closes [#1582](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/issues/1582)
12
+
13
+ # [1.155.0](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/compare/v1.154.1...v1.155.0) (2026-08-15)
14
+
15
+
16
+ ### Features
17
+
18
+ * name the calling repository and use case on the GraphQL cost log line ([#1581](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/issues/1581)) ([8efd497](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/commit/8efd4979fc7be18ab25c74540f5bf185c71cb13b)), closes [#1580](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/issues/1580)
19
+
1
20
  ## [1.154.1](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/compare/v1.154.0...v1.154.1) (2026-08-15)
2
21
 
3
22
 
@@ -156,7 +156,7 @@ const handlePullRequestStatus = async (issueRepository, cache, url) => {
156
156
  if (cached !== null) {
157
157
  return ok(cached);
158
158
  }
159
- const pullRequest = await issueRepository.getOpenPullRequest(url);
159
+ const pullRequest = await issueRepository.getOpenPullRequestCiStatus(url);
160
160
  const response = pullRequest === null
161
161
  ? { found: false, status: null }
162
162
  : {
@@ -1 +1 @@
1
- {"version":3,"file":"consoleReadApi.js","sourceRoot":"","sources":["../../../../src/adapter/entry-points/console/consoleReadApi.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"consoleReadApi.js","sourceRoot":"","sources":["../../../../src/adapter/entry-points/console/consoleReadApi.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.fetchGithubGraphql = exports.postGithubGraphqlJson = exports.logGithubGraphqlCost = exports.injectRateLimitSelection = exports.extractGraphqlOperationName = exports.isMutationOperation = exports.RATE_LIMIT_SELECTION = exports.GITHUB_GRAPHQL_REQUEST_TIMEOUT_MS = exports.GITHUB_GRAPHQL_ENDPOINT = void 0;
6
+ exports.fetchGithubGraphql = exports.postGithubGraphqlJson = exports.logGithubGraphqlCost = exports.captureGraphqlCallSite = exports.extractGraphqlCallSite = exports.UNKNOWN_GRAPHQL_CALL_SITE = exports.GRAPHQL_CALL_SITE_SEPARATOR = exports.GRAPHQL_CALL_SITE_FRAME_COUNT = exports.injectRateLimitSelection = exports.extractGraphqlOperationName = exports.isMutationOperation = exports.RATE_LIMIT_SELECTION = exports.GITHUB_GRAPHQL_REQUEST_TIMEOUT_MS = exports.GITHUB_GRAPHQL_ENDPOINT = void 0;
7
7
  const ky_1 = __importDefault(require("ky"));
8
8
  exports.GITHUB_GRAPHQL_ENDPOINT = 'https://api.github.com/graphql';
9
9
  exports.GITHUB_GRAPHQL_REQUEST_TIMEOUT_MS = 120000;
@@ -49,15 +49,90 @@ const extractRateLimit = (responseBody) => {
49
49
  }
50
50
  return { cost, remaining };
51
51
  };
52
- const logGithubGraphqlCost = (query, responseBody, now = () => new Date()) => {
53
- const rateLimit = extractRateLimit(responseBody);
52
+ exports.GRAPHQL_CALL_SITE_FRAME_COUNT = 3;
53
+ exports.GRAPHQL_CALL_SITE_SEPARATOR = '<-';
54
+ exports.UNKNOWN_GRAPHQL_CALL_SITE = 'unknown';
55
+ const GRAPHQL_CLIENT_MODULE_NAME = 'githubGraphqlClient';
56
+ const FRAME_LOCATION_PATTERN = /\(?([^()\s]+):\d+:\d+\)?$/;
57
+ const MODULE_FILE_EXTENSION_PATTERN = /\.(?:[cm]?[jt]sx?)$/;
58
+ const TEST_MODULE_SUFFIX_PATTERN = /\.(?:test|spec)$/;
59
+ const NODE_MODULES_SEGMENT = '/node_modules/';
60
+ const ownPackagePathPrefix = (modulePath) => {
61
+ const segmentIndex = modulePath.lastIndexOf(NODE_MODULES_SEGMENT);
62
+ if (segmentIndex === -1) {
63
+ return null;
64
+ }
65
+ const packageRootIndex = segmentIndex + NODE_MODULES_SEGMENT.length;
66
+ const segments = modulePath.slice(packageRootIndex).split('/');
67
+ const nameSegmentCount = segments[0].startsWith('@') ? 2 : 1;
68
+ if (segments.length <= nameSegmentCount) {
69
+ return null;
70
+ }
71
+ return modulePath.slice(0, packageRootIndex + segments.slice(0, nameSegmentCount).join('/').length + 1);
72
+ };
73
+ const isInsideOwnPackage = (location, ownPackagePrefix) => {
74
+ if (ownPackagePrefix === null || !location.startsWith(ownPackagePrefix)) {
75
+ return false;
76
+ }
77
+ const pathBelowPackageRoot = `/${location.slice(ownPackagePrefix.length)}`;
78
+ return !pathBelowPackageRoot.includes(NODE_MODULES_SEGMENT);
79
+ };
80
+ const frameModuleName = (frame, ownPackagePrefix) => {
81
+ const match = frame.match(FRAME_LOCATION_PATTERN);
82
+ if (!match) {
83
+ return null;
84
+ }
85
+ const location = match[1];
86
+ if (location.startsWith('node:')) {
87
+ return null;
88
+ }
89
+ if (location.includes(NODE_MODULES_SEGMENT) &&
90
+ !isInsideOwnPackage(location, ownPackagePrefix)) {
91
+ return null;
92
+ }
93
+ const fileName = location.split('/').slice(-1)[0];
94
+ const moduleName = fileName
95
+ .replace(MODULE_FILE_EXTENSION_PATTERN, '')
96
+ .replace(TEST_MODULE_SUFFIX_PATTERN, '');
97
+ if (moduleName.length === 0 || moduleName === GRAPHQL_CLIENT_MODULE_NAME) {
98
+ return null;
99
+ }
100
+ return moduleName;
101
+ };
102
+ const extractGraphqlCallSite = (stack, modulePath = __filename) => {
103
+ if (!stack) {
104
+ return exports.UNKNOWN_GRAPHQL_CALL_SITE;
105
+ }
106
+ const ownPackagePrefix = ownPackagePathPrefix(modulePath);
107
+ const moduleNames = stack
108
+ .split('\n')
109
+ .map((line) => line.trim())
110
+ .filter((line) => line.startsWith('at '))
111
+ .map((frame) => frameModuleName(frame, ownPackagePrefix))
112
+ .filter((moduleName) => moduleName !== null)
113
+ .filter((moduleName, index, allModuleNames) => allModuleNames[index - 1] !== moduleName);
114
+ if (moduleNames.length === 0) {
115
+ return exports.UNKNOWN_GRAPHQL_CALL_SITE;
116
+ }
117
+ return moduleNames
118
+ .slice(0, exports.GRAPHQL_CALL_SITE_FRAME_COUNT)
119
+ .join(exports.GRAPHQL_CALL_SITE_SEPARATOR);
120
+ };
121
+ exports.extractGraphqlCallSite = extractGraphqlCallSite;
122
+ const captureGraphqlCallSite = () => (0, exports.extractGraphqlCallSite)(new Error().stack);
123
+ exports.captureGraphqlCallSite = captureGraphqlCallSite;
124
+ const logGithubGraphqlCost = (params) => {
125
+ const rateLimit = extractRateLimit(params.responseBody);
54
126
  if (!rateLimit) {
55
127
  return;
56
128
  }
57
- console.log(`${now().toISOString()} githubGraphqlClient: query=${(0, exports.extractGraphqlOperationName)(query)} cost=${rateLimit.cost} remaining=${rateLimit.remaining}`);
129
+ const now = params.now ?? (() => new Date());
130
+ const callSite = params.callSite ?? exports.UNKNOWN_GRAPHQL_CALL_SITE;
131
+ console.log(`${now().toISOString()} githubGraphqlClient: query=${(0, exports.extractGraphqlOperationName)(params.query)} cost=${rateLimit.cost} remaining=${rateLimit.remaining} caller=${callSite}`);
58
132
  };
59
133
  exports.logGithubGraphqlCost = logGithubGraphqlCost;
60
134
  const postGithubGraphqlJson = async (params) => {
135
+ const callSite = (0, exports.captureGraphqlCallSite)();
61
136
  const response = await ky_1.default
62
137
  .post(exports.GITHUB_GRAPHQL_ENDPOINT, {
63
138
  json: {
@@ -71,11 +146,16 @@ const postGithubGraphqlJson = async (params) => {
71
146
  },
72
147
  })
73
148
  .json();
74
- (0, exports.logGithubGraphqlCost)(params.query, response);
149
+ (0, exports.logGithubGraphqlCost)({
150
+ query: params.query,
151
+ responseBody: response,
152
+ callSite,
153
+ });
75
154
  return response;
76
155
  };
77
156
  exports.postGithubGraphqlJson = postGithubGraphqlJson;
78
157
  const fetchGithubGraphql = async (params) => {
158
+ const callSite = (0, exports.captureGraphqlCallSite)();
79
159
  const response = await fetch(exports.GITHUB_GRAPHQL_ENDPOINT, {
80
160
  method: 'POST',
81
161
  headers: {
@@ -93,7 +173,11 @@ const fetchGithubGraphql = async (params) => {
93
173
  .clone()
94
174
  .json()
95
175
  .catch(() => null);
96
- (0, exports.logGithubGraphqlCost)(params.query, responseBody);
176
+ (0, exports.logGithubGraphqlCost)({
177
+ query: params.query,
178
+ responseBody,
179
+ callSite,
180
+ });
97
181
  }
98
182
  return response;
99
183
  };
@@ -1 +1 @@
1
- {"version":3,"file":"githubGraphqlClient.js","sourceRoot":"","sources":["../../../src/adapter/repositories/githubGraphqlClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"githubGraphqlClient.js","sourceRoot":"","sources":["../../../src/adapter/repositories/githubGraphqlClient.ts"],"names":[],"mappings":";;;;;;AAAA,4CAAoB;AAEP,QAAA,uBAAuB,GAAG,gCAAgC,CAAC;AAE3D,QAAA,iCAAiC,GAAG,MAAO,CAAC;AAE5C,QAAA,oBAAoB,GAAG,8BAA8B,CAAC;AAO5D,MAAM,mBAAmB,GAAG,CAAC,KAAa,EAAW,EAAE,CAC5D,KAAK,CAAC,SAAS,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AAD9B,QAAA,mBAAmB,uBACW;AAEpC,MAAM,2BAA2B,GAAG,CAAC,KAAa,EAAU,EAAE;IACnE,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CACvB,mDAAmD,CACpD,CAAC;IACF,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;AACxC,CAAC,CAAC;AALW,QAAA,2BAA2B,+BAKtC;AAEK,MAAM,wBAAwB,GAAG,CAAC,KAAa,EAAU,EAAE;IAChE,IAAI,IAAA,2BAAmB,EAAC,KAAK,CAAC,EAAE,CAAC;QAC/B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,cAAc,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAC9C,IAAI,cAAc,KAAK,CAAC,CAAC,EAAE,CAAC;QAC1B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC,KAAK,4BAAoB,KAAK,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,CAAC;AACtG,CAAC,CAAC;AATW,QAAA,wBAAwB,4BASnC;AAEF,MAAM,gBAAgB,GAAG,CACvB,YAAqB,EACU,EAAE;IACjC,IACE,OAAO,YAAY,KAAK,QAAQ;QAChC,YAAY,KAAK,IAAI;QACrB,CAAC,CAAC,MAAM,IAAI,YAAY,CAAC,EACzB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,IAAI,GAAY,YAAY,CAAC,IAAI,CAAC;IACxC,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,IAAI,CAAC,CAAC,WAAW,IAAI,IAAI,CAAC,EAAE,CAAC;QACxE,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,SAAS,GAAY,IAAI,CAAC,SAAS,CAAC;IAC1C,IACE,OAAO,SAAS,KAAK,QAAQ;QAC7B,SAAS,KAAK,IAAI;QAClB,CAAC,CAAC,MAAM,IAAI,SAAS,CAAC;QACtB,CAAC,CAAC,WAAW,IAAI,SAAS,CAAC,EAC3B,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,SAAS,CAAC;IACtC,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;QAC9D,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;AAC7B,CAAC,CAAC;AAEW,QAAA,6BAA6B,GAAG,CAAC,CAAC;AAElC,QAAA,2BAA2B,GAAG,IAAI,CAAC;AAEnC,QAAA,yBAAyB,GAAG,SAAS,CAAC;AAEnD,MAAM,0BAA0B,GAAG,qBAAqB,CAAC;AAEzD,MAAM,sBAAsB,GAAG,2BAA2B,CAAC;AAE3D,MAAM,6BAA6B,GAAG,qBAAqB,CAAC;AAE5D,MAAM,0BAA0B,GAAG,kBAAkB,CAAC;AAEtD,MAAM,oBAAoB,GAAG,gBAAgB,CAAC;AAE9C,MAAM,oBAAoB,GAAG,CAAC,UAAkB,EAAiB,EAAE;IACjE,MAAM,YAAY,GAAG,UAAU,CAAC,WAAW,CAAC,oBAAoB,CAAC,CAAC;IAClE,IAAI,YAAY,KAAK,CAAC,CAAC,EAAE,CAAC;QACxB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,gBAAgB,GAAG,YAAY,GAAG,oBAAoB,CAAC,MAAM,CAAC;IACpE,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC/D,MAAM,gBAAgB,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7D,IAAI,QAAQ,CAAC,MAAM,IAAI,gBAAgB,EAAE,CAAC;QACxC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,UAAU,CAAC,KAAK,CACrB,CAAC,EACD,gBAAgB,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAC5E,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,kBAAkB,GAAG,CACzB,QAAgB,EAChB,gBAA+B,EACtB,EAAE;IACX,IAAI,gBAAgB,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACxE,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,oBAAoB,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC;IAC3E,OAAO,CAAC,oBAAoB,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC;AAC9D,CAAC,CAAC;AAEF,MAAM,eAAe,GAAG,CACtB,KAAa,EACb,gBAA+B,EAChB,EAAE;IACjB,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;IAClD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IAC1B,IAAI,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACjC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IACE,QAAQ,CAAC,QAAQ,CAAC,oBAAoB,CAAC;QACvC,CAAC,kBAAkB,CAAC,QAAQ,EAAE,gBAAgB,CAAC,EAC/C,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAClD,MAAM,UAAU,GAAG,QAAQ;SACxB,OAAO,CAAC,6BAA6B,EAAE,EAAE,CAAC;SAC1C,OAAO,CAAC,0BAA0B,EAAE,EAAE,CAAC,CAAC;IAC3C,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,IAAI,UAAU,KAAK,0BAA0B,EAAE,CAAC;QACzE,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC,CAAC;AAEK,MAAM,sBAAsB,GAAG,CACpC,KAAyB,EACzB,aAAqB,UAAU,EACvB,EAAE;IACV,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,iCAAyB,CAAC;IACnC,CAAC;IACD,MAAM,gBAAgB,GAAG,oBAAoB,CAAC,UAAU,CAAC,CAAC;IAC1D,MAAM,WAAW,GAAG,KAAK;SACtB,KAAK,CAAC,IAAI,CAAC;SACX,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;SAC1B,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;SACxC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,eAAe,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;SACxD,MAAM,CAAC,CAAC,UAAU,EAAwB,EAAE,CAAC,UAAU,KAAK,IAAI,CAAC;SACjE,MAAM,CACL,CAAC,UAAU,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE,CACpC,cAAc,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,UAAU,CAC3C,CAAC;IACJ,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7B,OAAO,iCAAyB,CAAC;IACnC,CAAC;IACD,OAAO,WAAW;SACf,KAAK,CAAC,CAAC,EAAE,qCAA6B,CAAC;SACvC,IAAI,CAAC,mCAA2B,CAAC,CAAC;AACvC,CAAC,CAAC;AAxBW,QAAA,sBAAsB,0BAwBjC;AAEK,MAAM,sBAAsB,GAAG,GAAW,EAAE,CACjD,IAAA,8BAAsB,EAAC,IAAI,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC;AAD/B,QAAA,sBAAsB,0BACS;AAErC,MAAM,oBAAoB,GAAG,CAAC,MAKpC,EAAQ,EAAE;IACT,MAAM,SAAS,GAAG,gBAAgB,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IACxD,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO;IACT,CAAC;IACD,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;IAC7C,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,iCAAyB,CAAC;IAC9D,OAAO,CAAC,GAAG,CACT,GAAG,GAAG,EAAE,CAAC,WAAW,EAAE,+BAA+B,IAAA,mCAA2B,EAAC,MAAM,CAAC,KAAK,CAAC,SAAS,SAAS,CAAC,IAAI,cAAc,SAAS,CAAC,SAAS,WAAW,QAAQ,EAAE,CAC5K,CAAC;AACJ,CAAC,CAAC;AAfW,QAAA,oBAAoB,wBAe/B;AAEK,MAAM,qBAAqB,GAAG,KAAK,EAAK,MAI9C,EAAc,EAAE;IACf,MAAM,QAAQ,GAAG,IAAA,8BAAsB,GAAE,CAAC;IAC1C,MAAM,QAAQ,GAAG,MAAM,YAAE;SACtB,IAAI,CAAC,+BAAuB,EAAE;QAC7B,IAAI,EAAE;YACJ,KAAK,EAAE,IAAA,gCAAwB,EAAC,MAAM,CAAC,KAAK,CAAC;YAC7C,GAAG,CAAC,MAAM,CAAC,SAAS,KAAK,SAAS;gBAChC,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE;gBACjC,CAAC,CAAC,EAAE,CAAC;SACR;QACD,OAAO,EAAE;YACP,aAAa,EAAE,UAAU,MAAM,CAAC,OAAO,EAAE;SAC1C;KACF,CAAC;SACD,IAAI,EAAK,CAAC;IACb,IAAA,4BAAoB,EAAC;QACnB,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,YAAY,EAAE,QAAQ;QACtB,QAAQ;KACT,CAAC,CAAC;IACH,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC;AAzBW,QAAA,qBAAqB,yBAyBhC;AAEK,MAAM,kBAAkB,GAAG,KAAK,EAAE,MAKxC,EAAqB,EAAE;IACtB,MAAM,QAAQ,GAAG,IAAA,8BAAsB,GAAE,CAAC;IAC1C,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,+BAAuB,EAAE;QACpD,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,aAAa,EAAE,UAAU,MAAM,CAAC,OAAO,EAAE;YACzC,cAAc,EAAE,kBAAkB;SACnC;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;YACnB,KAAK,EAAE,IAAA,gCAAwB,EAAC,MAAM,CAAC,KAAK,CAAC;YAC7C,SAAS,EAAE,MAAM,CAAC,SAAS;SAC5B,CAAC;QACF,MAAM,EAAE,WAAW,CAAC,OAAO,CACzB,MAAM,CAAC,SAAS,IAAI,yCAAiC,CACtD;KACF,CAAC,CAAC;IACH,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAC;QAChB,MAAM,YAAY,GAAY,MAAM,QAAQ;aACzC,KAAK,EAAE;aACP,IAAI,EAAE;aACN,KAAK,CAAC,GAAS,EAAE,CAAC,IAAI,CAAC,CAAC;QAC3B,IAAA,4BAAoB,EAAC;YACnB,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,YAAY;YACZ,QAAQ;SACT,CAAC,CAAC;IACL,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC;AAjCW,QAAA,kBAAkB,sBAiC7B"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ApiV3CheerioRestIssueRepository = exports.REQUIRED_CHECKS_CACHE_TTL_MS = exports.INCREMENTAL_FETCH_SKEW_BUFFER_MS = exports.FULL_ISSUE_FETCH_INTERVAL_MS = void 0;
3
+ exports.ApiV3CheerioRestIssueRepository = exports.graphqlMergeableFromRestMergeable = exports.REQUIRED_CHECKS_CACHE_TTL_MS = exports.INCREMENTAL_FETCH_SKEW_BUFFER_MS = exports.FULL_ISSUE_FETCH_INTERVAL_MS = void 0;
4
4
  const gitHubRawUrl_1 = require("./gitHubRawUrl");
5
5
  const ProjectIssuesCacheRepository_1 = require("../ProjectIssuesCacheRepository");
6
6
  const BaseGitHubRepository_1 = require("../BaseGitHubRepository");
@@ -62,6 +62,31 @@ function isPullRequestFilesResponse(value) {
62
62
  function isRecord(value) {
63
63
  return typeof value === 'object' && value !== null;
64
64
  }
65
+ function isRestPullRequestCiStatusResponse(value) {
66
+ if (!isRecord(value))
67
+ return false;
68
+ const head = value.head;
69
+ const base = value.base;
70
+ return (typeof value.html_url === 'string' &&
71
+ typeof value.state === 'string' &&
72
+ typeof value.draft === 'boolean' &&
73
+ (value.mergeable === null || typeof value.mergeable === 'boolean') &&
74
+ isRecord(head) &&
75
+ typeof head.ref === 'string' &&
76
+ typeof head.sha === 'string' &&
77
+ isRecord(base) &&
78
+ typeof base.ref === 'string');
79
+ }
80
+ const graphqlMergeableFromRestMergeable = (mergeable) => {
81
+ if (mergeable === true) {
82
+ return 'MERGEABLE';
83
+ }
84
+ if (mergeable === false) {
85
+ return 'CONFLICTING';
86
+ }
87
+ return 'UNKNOWN';
88
+ };
89
+ exports.graphqlMergeableFromRestMergeable = graphqlMergeableFromRestMergeable;
65
90
  function isNullableString(value) {
66
91
  return value === null || typeof value === 'string';
67
92
  }
@@ -953,6 +978,68 @@ class ApiV3CheerioRestIssueRepository extends BaseGitHubRepository_1.BaseGitHubR
953
978
  }
954
979
  return this.buildRelatedPullRequestFromSlim(owner, repo, slimPullRequest);
955
980
  };
981
+ this.fetchRestPullRequestCiStatus = async (owner, repo, prNumber, prUrl) => {
982
+ const maxAttempts = 3;
983
+ const retryDelayMilliseconds = 1000;
984
+ let lastPullRequest = null;
985
+ for (let attempt = 0; attempt < maxAttempts; attempt++) {
986
+ if (attempt > 0) {
987
+ await this.sleep(retryDelayMilliseconds);
988
+ }
989
+ const response = await this.fetchWithRateLimitRetry(() => fetch(`https://api.github.com/repos/${encodeURIComponent(owner)}/${encodeURIComponent(repo)}/pulls/${prNumber}`, {
990
+ method: 'GET',
991
+ headers: {
992
+ Authorization: `Bearer ${this.ghToken}`,
993
+ Accept: 'application/vnd.github+json',
994
+ },
995
+ }));
996
+ if (response.status === 404) {
997
+ return null;
998
+ }
999
+ if (!response.ok) {
1000
+ const reason = await this.formatGitHubErrorWithStatus(response);
1001
+ throw new Error(`Failed to fetch pull request status for ${prUrl}: ${reason}`);
1002
+ }
1003
+ const body = await response.json();
1004
+ if (!isRestPullRequestCiStatusResponse(body)) {
1005
+ throw new Error(`Unexpected response shape when fetching pull request status for ${prUrl}`);
1006
+ }
1007
+ lastPullRequest = body;
1008
+ if (body.state !== 'open' || body.mergeable !== null) {
1009
+ return body;
1010
+ }
1011
+ }
1012
+ return lastPullRequest;
1013
+ };
1014
+ this.getOpenPullRequestCiStatus = async (prUrl) => {
1015
+ const parsedUrl = this.parseIssueUrl(prUrl);
1016
+ if (!parsedUrl.isPr) {
1017
+ return null;
1018
+ }
1019
+ const { owner, repo, issueNumber: prNumber } = parsedUrl;
1020
+ const pullRequest = await this.fetchRestPullRequestCiStatus(owner, repo, prNumber, prUrl);
1021
+ if (!pullRequest || pullRequest.state !== 'open') {
1022
+ return null;
1023
+ }
1024
+ const requiredCheckNames = await this.getRequiredCheckNames(owner, repo, pullRequest.base.ref);
1025
+ const ciContexts = await this.getCommitCiContexts(owner, repo, pullRequest.head.sha);
1026
+ const status = this.computePrStatus(pullRequest.html_url, pullRequest.head.ref, {
1027
+ isDraft: pullRequest.draft,
1028
+ mergeable: (0, exports.graphqlMergeableFromRestMergeable)(pullRequest.mergeable),
1029
+ requiredCheckNames,
1030
+ ciContexts,
1031
+ reviewThreads: [],
1032
+ });
1033
+ return {
1034
+ url: status.url,
1035
+ isConflicted: status.isConflicted,
1036
+ mergeable: status.mergeable,
1037
+ isPassedAllCiJob: status.isPassedAllCiJob,
1038
+ isCiStateSuccess: status.isCiStateSuccess,
1039
+ isBranchOutOfDate: status.isBranchOutOfDate,
1040
+ missingRequiredCheckNames: status.missingRequiredCheckNames,
1041
+ };
1042
+ };
956
1043
  // Resolves many pull requests with one GraphQL query per hundred instead of
957
1044
  // one query per pull request. A URL this cannot settle is left out of the
958
1045
  // returned map rather than mapped to null, so the caller falls back to