github-issue-tower-defence-management 1.154.1 → 1.155.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/CHANGELOG.md +7 -0
- package/bin/adapter/repositories/githubGraphqlClient.js +64 -6
- package/bin/adapter/repositories/githubGraphqlClient.js.map +1 -1
- package/package.json +1 -1
- package/src/adapter/repositories/githubGraphqlClient.test.ts +120 -17
- package/src/adapter/repositories/githubGraphqlClient.ts +80 -9
- package/src/adapter/repositories/issue/GraphqlProjectItemRepository.test.ts +1 -1
- package/types/adapter/repositories/githubGraphqlClient.d.ts +11 -1
- package/types/adapter/repositories/githubGraphqlClient.d.ts.map +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
# [1.155.0](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/compare/v1.154.1...v1.155.0) (2026-08-15)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Features
|
|
5
|
+
|
|
6
|
+
* 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)
|
|
7
|
+
|
|
1
8
|
## [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
9
|
|
|
3
10
|
|
|
@@ -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,64 @@ const extractRateLimit = (responseBody) => {
|
|
|
49
49
|
}
|
|
50
50
|
return { cost, remaining };
|
|
51
51
|
};
|
|
52
|
-
|
|
53
|
-
|
|
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 frameModuleName = (frame) => {
|
|
60
|
+
const match = frame.match(FRAME_LOCATION_PATTERN);
|
|
61
|
+
if (!match) {
|
|
62
|
+
return null;
|
|
63
|
+
}
|
|
64
|
+
const location = match[1];
|
|
65
|
+
if (location.startsWith('node:') || location.includes('/node_modules/')) {
|
|
66
|
+
return null;
|
|
67
|
+
}
|
|
68
|
+
const fileName = location.split('/').slice(-1)[0];
|
|
69
|
+
const moduleName = fileName
|
|
70
|
+
.replace(MODULE_FILE_EXTENSION_PATTERN, '')
|
|
71
|
+
.replace(TEST_MODULE_SUFFIX_PATTERN, '');
|
|
72
|
+
if (moduleName.length === 0 || moduleName === GRAPHQL_CLIENT_MODULE_NAME) {
|
|
73
|
+
return null;
|
|
74
|
+
}
|
|
75
|
+
return moduleName;
|
|
76
|
+
};
|
|
77
|
+
const extractGraphqlCallSite = (stack) => {
|
|
78
|
+
if (!stack) {
|
|
79
|
+
return exports.UNKNOWN_GRAPHQL_CALL_SITE;
|
|
80
|
+
}
|
|
81
|
+
const moduleNames = stack
|
|
82
|
+
.split('\n')
|
|
83
|
+
.map((line) => line.trim())
|
|
84
|
+
.filter((line) => line.startsWith('at '))
|
|
85
|
+
.map(frameModuleName)
|
|
86
|
+
.filter((moduleName) => moduleName !== null)
|
|
87
|
+
.filter((moduleName, index, allModuleNames) => allModuleNames[index - 1] !== moduleName);
|
|
88
|
+
if (moduleNames.length === 0) {
|
|
89
|
+
return exports.UNKNOWN_GRAPHQL_CALL_SITE;
|
|
90
|
+
}
|
|
91
|
+
return moduleNames
|
|
92
|
+
.slice(0, exports.GRAPHQL_CALL_SITE_FRAME_COUNT)
|
|
93
|
+
.join(exports.GRAPHQL_CALL_SITE_SEPARATOR);
|
|
94
|
+
};
|
|
95
|
+
exports.extractGraphqlCallSite = extractGraphqlCallSite;
|
|
96
|
+
const captureGraphqlCallSite = () => (0, exports.extractGraphqlCallSite)(new Error().stack);
|
|
97
|
+
exports.captureGraphqlCallSite = captureGraphqlCallSite;
|
|
98
|
+
const logGithubGraphqlCost = (params) => {
|
|
99
|
+
const rateLimit = extractRateLimit(params.responseBody);
|
|
54
100
|
if (!rateLimit) {
|
|
55
101
|
return;
|
|
56
102
|
}
|
|
57
|
-
|
|
103
|
+
const now = params.now ?? (() => new Date());
|
|
104
|
+
const callSite = params.callSite ?? exports.UNKNOWN_GRAPHQL_CALL_SITE;
|
|
105
|
+
console.log(`${now().toISOString()} githubGraphqlClient: query=${(0, exports.extractGraphqlOperationName)(params.query)} cost=${rateLimit.cost} remaining=${rateLimit.remaining} caller=${callSite}`);
|
|
58
106
|
};
|
|
59
107
|
exports.logGithubGraphqlCost = logGithubGraphqlCost;
|
|
60
108
|
const postGithubGraphqlJson = async (params) => {
|
|
109
|
+
const callSite = (0, exports.captureGraphqlCallSite)();
|
|
61
110
|
const response = await ky_1.default
|
|
62
111
|
.post(exports.GITHUB_GRAPHQL_ENDPOINT, {
|
|
63
112
|
json: {
|
|
@@ -71,11 +120,16 @@ const postGithubGraphqlJson = async (params) => {
|
|
|
71
120
|
},
|
|
72
121
|
})
|
|
73
122
|
.json();
|
|
74
|
-
(0, exports.logGithubGraphqlCost)(
|
|
123
|
+
(0, exports.logGithubGraphqlCost)({
|
|
124
|
+
query: params.query,
|
|
125
|
+
responseBody: response,
|
|
126
|
+
callSite,
|
|
127
|
+
});
|
|
75
128
|
return response;
|
|
76
129
|
};
|
|
77
130
|
exports.postGithubGraphqlJson = postGithubGraphqlJson;
|
|
78
131
|
const fetchGithubGraphql = async (params) => {
|
|
132
|
+
const callSite = (0, exports.captureGraphqlCallSite)();
|
|
79
133
|
const response = await fetch(exports.GITHUB_GRAPHQL_ENDPOINT, {
|
|
80
134
|
method: 'POST',
|
|
81
135
|
headers: {
|
|
@@ -93,7 +147,11 @@ const fetchGithubGraphql = async (params) => {
|
|
|
93
147
|
.clone()
|
|
94
148
|
.json()
|
|
95
149
|
.catch(() => null);
|
|
96
|
-
(0, exports.logGithubGraphqlCost)(
|
|
150
|
+
(0, exports.logGithubGraphqlCost)({
|
|
151
|
+
query: params.query,
|
|
152
|
+
responseBody,
|
|
153
|
+
callSite,
|
|
154
|
+
});
|
|
97
155
|
}
|
|
98
156
|
return response;
|
|
99
157
|
};
|
|
@@ -1 +1 @@
|
|
|
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;
|
|
1
|
+
{"version":3,"file":"githubGraphqlClient.js","sourceRoot":"","sources":["../../../src/adapter/repositories/githubGraphqlClient.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -19,6 +19,7 @@ import {
|
|
|
19
19
|
GITHUB_GRAPHQL_ENDPOINT,
|
|
20
20
|
GITHUB_GRAPHQL_REQUEST_TIMEOUT_MS,
|
|
21
21
|
RATE_LIMIT_SELECTION,
|
|
22
|
+
extractGraphqlCallSite,
|
|
22
23
|
extractGraphqlOperationName,
|
|
23
24
|
fetchGithubGraphql,
|
|
24
25
|
injectRateLimitSelection,
|
|
@@ -117,39 +118,141 @@ describe('githubGraphqlClient', () => {
|
|
|
117
118
|
});
|
|
118
119
|
});
|
|
119
120
|
|
|
121
|
+
describe('extractGraphqlCallSite', () => {
|
|
122
|
+
it('names the nearest modules outside the graphql client', () => {
|
|
123
|
+
const stack = [
|
|
124
|
+
'Error',
|
|
125
|
+
' at captureGraphqlCallSite (/app/bin/adapter/repositories/githubGraphqlClient.js:80:20)',
|
|
126
|
+
' at postGithubGraphqlJson (/app/bin/adapter/repositories/githubGraphqlClient.js:120:22)',
|
|
127
|
+
' at GraphqlProjectItemRepository.fetchProjectItemByUrl (/app/bin/adapter/repositories/issue/GraphqlProjectItemRepository.js:1042:11)',
|
|
128
|
+
' at ApiV3CheerioRestIssueRepository.getIssueByUrl (/app/bin/adapter/repositories/issue/ApiV3CheerioRestIssueRepository.js:813:11)',
|
|
129
|
+
' at async ConvertCheckboxToIssueInStoryIssueUseCase.run (/app/bin/domain/usecases/ConvertCheckboxToIssueInStoryIssueUseCase.js:63:31)',
|
|
130
|
+
' at async HandleScheduledEventUseCase.runSlowSweepUseCases (/app/bin/domain/usecases/HandleScheduledEventUseCase.js:552:5)',
|
|
131
|
+
].join('\n');
|
|
132
|
+
|
|
133
|
+
expect(extractGraphqlCallSite(stack)).toBe(
|
|
134
|
+
'GraphqlProjectItemRepository<-ApiV3CheerioRestIssueRepository<-ConvertCheckboxToIssueInStoryIssueUseCase',
|
|
135
|
+
);
|
|
136
|
+
});
|
|
137
|
+
|
|
138
|
+
it('collapses the retry and fallback wrappers into their own module so the owning repository and use case are named', () => {
|
|
139
|
+
const stack = [
|
|
140
|
+
'Error',
|
|
141
|
+
' at postGithubGraphqlJson (/app/bin/adapter/repositories/githubGraphqlClient.js:120:22)',
|
|
142
|
+
' at callWithRateLimitRetry (/app/bin/adapter/repositories/issue/GraphqlProjectItemRepository.js:255:15)',
|
|
143
|
+
' at callGraphql (/app/bin/adapter/repositories/issue/GraphqlProjectItemRepository.js:280:12)',
|
|
144
|
+
' at callGraphqlWithHalvingFallback (/app/bin/adapter/repositories/issue/GraphqlProjectItemRepository.js:310:12)',
|
|
145
|
+
' at GraphqlProjectItemRepository.fetchProjectItems (/app/bin/adapter/repositories/issue/GraphqlProjectItemRepository.js:410:11)',
|
|
146
|
+
' at async StartPreparationUseCase.run (/app/bin/domain/usecases/StartPreparationUseCase.js:456:11)',
|
|
147
|
+
].join('\n');
|
|
148
|
+
|
|
149
|
+
expect(extractGraphqlCallSite(stack)).toBe(
|
|
150
|
+
'GraphqlProjectItemRepository<-StartPreparationUseCase',
|
|
151
|
+
);
|
|
152
|
+
});
|
|
153
|
+
|
|
154
|
+
it('names the same call site whether or not the engine qualifies a nested helper with its class name', () => {
|
|
155
|
+
const frames = (nestedHelperFrameName: string): string =>
|
|
156
|
+
[
|
|
157
|
+
'Error',
|
|
158
|
+
' at postGithubGraphqlJson (/app/bin/adapter/repositories/githubGraphqlClient.js:120:22)',
|
|
159
|
+
` at ${nestedHelperFrameName} (/app/bin/adapter/repositories/issue/GraphqlProjectItemRepository.js:310:12)`,
|
|
160
|
+
' at GraphqlProjectItemRepository.fetchProjectItems (/app/bin/adapter/repositories/issue/GraphqlProjectItemRepository.js:410:11)',
|
|
161
|
+
' at async StartPreparationUseCase.run (/app/bin/domain/usecases/StartPreparationUseCase.js:456:11)',
|
|
162
|
+
].join('\n');
|
|
163
|
+
|
|
164
|
+
expect(
|
|
165
|
+
extractGraphqlCallSite(frames('callGraphqlWithHalvingFallback')),
|
|
166
|
+
).toBe('GraphqlProjectItemRepository<-StartPreparationUseCase');
|
|
167
|
+
expect(
|
|
168
|
+
extractGraphqlCallSite(
|
|
169
|
+
frames('GraphqlProjectItemRepository.callGraphqlWithHalvingFallback'),
|
|
170
|
+
),
|
|
171
|
+
).toBe('GraphqlProjectItemRepository<-StartPreparationUseCase');
|
|
172
|
+
});
|
|
173
|
+
|
|
174
|
+
it('names the module of a frame that carries a file location instead of a function name', () => {
|
|
175
|
+
const stack = [
|
|
176
|
+
'Error',
|
|
177
|
+
' at postGithubGraphqlJson (/app/bin/adapter/repositories/githubGraphqlClient.js:120:22)',
|
|
178
|
+
' at /app/bin/domain/usecases/AnonymousCaller.js:12:9',
|
|
179
|
+
' at StartPreparationUseCase.run (/app/bin/domain/usecases/StartPreparationUseCase.js:456:11)',
|
|
180
|
+
].join('\n');
|
|
181
|
+
|
|
182
|
+
expect(extractGraphqlCallSite(stack)).toBe(
|
|
183
|
+
'AnonymousCaller<-StartPreparationUseCase',
|
|
184
|
+
);
|
|
185
|
+
});
|
|
186
|
+
|
|
187
|
+
it('skips test runner and node internal frames so the caller of a test run is still named', () => {
|
|
188
|
+
const stack = [
|
|
189
|
+
'Error',
|
|
190
|
+
' at postGithubGraphqlJson (/app/src/adapter/repositories/githubGraphqlClient.ts:139:42)',
|
|
191
|
+
' at GraphqlProjectItemRepository.fetchProjectItems (/app/src/adapter/repositories/issue/GraphqlProjectItemRepository.ts:566:26)',
|
|
192
|
+
' at Object.<anonymous> (/app/src/adapter/repositories/issue/GraphqlProjectItemRepository.test.ts:288:26)',
|
|
193
|
+
' at Promise.finally.completed (/app/node_modules/jest-circus/build/jestAdapterInit.js:1561:28)',
|
|
194
|
+
' at new Promise (<anonymous>)',
|
|
195
|
+
' at processTicksAndRejections (node:internal/process/task_queues:104:5)',
|
|
196
|
+
].join('\n');
|
|
197
|
+
|
|
198
|
+
expect(extractGraphqlCallSite(stack)).toBe(
|
|
199
|
+
'GraphqlProjectItemRepository',
|
|
200
|
+
);
|
|
201
|
+
});
|
|
202
|
+
|
|
203
|
+
it('returns unknown when no stack is available', () => {
|
|
204
|
+
expect(extractGraphqlCallSite(undefined)).toBe('unknown');
|
|
205
|
+
});
|
|
206
|
+
|
|
207
|
+
it('returns unknown when every frame is inside the graphql client', () => {
|
|
208
|
+
const stack = [
|
|
209
|
+
'Error',
|
|
210
|
+
' at postGithubGraphqlJson (/app/bin/adapter/repositories/githubGraphqlClient.js:120:22)',
|
|
211
|
+
].join('\n');
|
|
212
|
+
|
|
213
|
+
expect(extractGraphqlCallSite(stack)).toBe('unknown');
|
|
214
|
+
});
|
|
215
|
+
});
|
|
216
|
+
|
|
120
217
|
describe('logGithubGraphqlCost', () => {
|
|
121
218
|
it('logs one line with query name, cost and remaining', () => {
|
|
122
|
-
logGithubGraphqlCost(
|
|
123
|
-
'query GetProjectItems { x }',
|
|
124
|
-
{ data: { rateLimit: { cost: 3, remaining: 4200 } } },
|
|
125
|
-
|
|
126
|
-
|
|
219
|
+
logGithubGraphqlCost({
|
|
220
|
+
query: 'query GetProjectItems { x }',
|
|
221
|
+
responseBody: { data: { rateLimit: { cost: 3, remaining: 4200 } } },
|
|
222
|
+
callSite: 'GraphqlProjectItemRepository<-StartPreparationUseCase',
|
|
223
|
+
now: () => new Date('2026-08-14T09:00:00.000Z'),
|
|
224
|
+
});
|
|
127
225
|
expect(consoleLogSpy).toHaveBeenCalledTimes(1);
|
|
128
226
|
expect(consoleLogSpy).toHaveBeenCalledWith(
|
|
129
|
-
'2026-08-14T09:00:00.000Z githubGraphqlClient: query=GetProjectItems cost=3 remaining=4200',
|
|
227
|
+
'2026-08-14T09:00:00.000Z githubGraphqlClient: query=GetProjectItems cost=3 remaining=4200 caller=GraphqlProjectItemRepository<-StartPreparationUseCase',
|
|
130
228
|
);
|
|
131
229
|
});
|
|
132
230
|
|
|
133
231
|
it('opens the line with the time the cost was charged, so a point maps to a rate-limit window', () => {
|
|
134
|
-
logGithubGraphqlCost(
|
|
135
|
-
'query GetProjectItems { x }',
|
|
136
|
-
{ data: { rateLimit: { cost: 4, remaining: 4200 } } },
|
|
137
|
-
|
|
138
|
-
|
|
232
|
+
logGithubGraphqlCost({
|
|
233
|
+
query: 'query GetProjectItems { x }',
|
|
234
|
+
responseBody: { data: { rateLimit: { cost: 4, remaining: 4200 } } },
|
|
235
|
+
callSite: 'GraphqlProjectItemRepository<-StartPreparationUseCase',
|
|
236
|
+
now: () => new Date('2026-08-14T23:45:12.345Z'),
|
|
237
|
+
});
|
|
139
238
|
expect(consoleLogSpy).toHaveBeenCalledWith(
|
|
140
|
-
'2026-08-14T23:45:12.345Z githubGraphqlClient: query=GetProjectItems cost=4 remaining=4200',
|
|
239
|
+
'2026-08-14T23:45:12.345Z githubGraphqlClient: query=GetProjectItems cost=4 remaining=4200 caller=GraphqlProjectItemRepository<-StartPreparationUseCase',
|
|
141
240
|
);
|
|
142
241
|
});
|
|
143
242
|
|
|
144
243
|
it('does not log when rateLimit is absent', () => {
|
|
145
|
-
logGithubGraphqlCost(
|
|
146
|
-
|
|
244
|
+
logGithubGraphqlCost({
|
|
245
|
+
query: 'query GetProjectItems { x }',
|
|
246
|
+
responseBody: { data: { node: null } },
|
|
147
247
|
});
|
|
148
248
|
expect(consoleLogSpy).not.toHaveBeenCalled();
|
|
149
249
|
});
|
|
150
250
|
|
|
151
251
|
it('does not log when the body is not an object', () => {
|
|
152
|
-
logGithubGraphqlCost(
|
|
252
|
+
logGithubGraphqlCost({
|
|
253
|
+
query: 'query GetProjectItems { x }',
|
|
254
|
+
responseBody: undefined,
|
|
255
|
+
});
|
|
153
256
|
expect(consoleLogSpy).not.toHaveBeenCalled();
|
|
154
257
|
});
|
|
155
258
|
});
|
|
@@ -183,7 +286,7 @@ describe('githubGraphqlClient', () => {
|
|
|
183
286
|
expect(headers.Authorization).toBe('Bearer token-a');
|
|
184
287
|
expect(consoleLogSpy).toHaveBeenCalledWith(
|
|
185
288
|
expect.stringMatching(
|
|
186
|
-
/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}Z githubGraphqlClient: query=GetItem cost=1 remaining=4999
|
|
289
|
+
/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}Z githubGraphqlClient: query=GetItem cost=1 remaining=4999 caller=\S+$/,
|
|
187
290
|
),
|
|
188
291
|
);
|
|
189
292
|
});
|
|
@@ -249,7 +352,7 @@ describe('githubGraphqlClient', () => {
|
|
|
249
352
|
expect(sentBody.variables).toEqual({ a: 1 });
|
|
250
353
|
expect(consoleLogSpy).toHaveBeenCalledWith(
|
|
251
354
|
expect.stringMatching(
|
|
252
|
-
/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}Z githubGraphqlClient: query=PullRequestStatus cost=2 remaining=4321
|
|
355
|
+
/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}Z githubGraphqlClient: query=PullRequestStatus cost=2 remaining=4321 caller=\S+$/,
|
|
253
356
|
),
|
|
254
357
|
);
|
|
255
358
|
});
|
|
@@ -62,17 +62,78 @@ const extractRateLimit = (
|
|
|
62
62
|
return { cost, remaining };
|
|
63
63
|
};
|
|
64
64
|
|
|
65
|
-
export const
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
65
|
+
export const GRAPHQL_CALL_SITE_FRAME_COUNT = 3;
|
|
66
|
+
|
|
67
|
+
export const GRAPHQL_CALL_SITE_SEPARATOR = '<-';
|
|
68
|
+
|
|
69
|
+
export const UNKNOWN_GRAPHQL_CALL_SITE = 'unknown';
|
|
70
|
+
|
|
71
|
+
const GRAPHQL_CLIENT_MODULE_NAME = 'githubGraphqlClient';
|
|
72
|
+
|
|
73
|
+
const FRAME_LOCATION_PATTERN = /\(?([^()\s]+):\d+:\d+\)?$/;
|
|
74
|
+
|
|
75
|
+
const MODULE_FILE_EXTENSION_PATTERN = /\.(?:[cm]?[jt]sx?)$/;
|
|
76
|
+
|
|
77
|
+
const TEST_MODULE_SUFFIX_PATTERN = /\.(?:test|spec)$/;
|
|
78
|
+
|
|
79
|
+
const frameModuleName = (frame: string): string | null => {
|
|
80
|
+
const match = frame.match(FRAME_LOCATION_PATTERN);
|
|
81
|
+
if (!match) {
|
|
82
|
+
return null;
|
|
83
|
+
}
|
|
84
|
+
const location = match[1];
|
|
85
|
+
if (location.startsWith('node:') || location.includes('/node_modules/')) {
|
|
86
|
+
return null;
|
|
87
|
+
}
|
|
88
|
+
const fileName = location.split('/').slice(-1)[0];
|
|
89
|
+
const moduleName = fileName
|
|
90
|
+
.replace(MODULE_FILE_EXTENSION_PATTERN, '')
|
|
91
|
+
.replace(TEST_MODULE_SUFFIX_PATTERN, '');
|
|
92
|
+
if (moduleName.length === 0 || moduleName === GRAPHQL_CLIENT_MODULE_NAME) {
|
|
93
|
+
return null;
|
|
94
|
+
}
|
|
95
|
+
return moduleName;
|
|
96
|
+
};
|
|
97
|
+
|
|
98
|
+
export const extractGraphqlCallSite = (stack: string | undefined): string => {
|
|
99
|
+
if (!stack) {
|
|
100
|
+
return UNKNOWN_GRAPHQL_CALL_SITE;
|
|
101
|
+
}
|
|
102
|
+
const moduleNames = stack
|
|
103
|
+
.split('\n')
|
|
104
|
+
.map((line) => line.trim())
|
|
105
|
+
.filter((line) => line.startsWith('at '))
|
|
106
|
+
.map(frameModuleName)
|
|
107
|
+
.filter((moduleName): moduleName is string => moduleName !== null)
|
|
108
|
+
.filter(
|
|
109
|
+
(moduleName, index, allModuleNames) =>
|
|
110
|
+
allModuleNames[index - 1] !== moduleName,
|
|
111
|
+
);
|
|
112
|
+
if (moduleNames.length === 0) {
|
|
113
|
+
return UNKNOWN_GRAPHQL_CALL_SITE;
|
|
114
|
+
}
|
|
115
|
+
return moduleNames
|
|
116
|
+
.slice(0, GRAPHQL_CALL_SITE_FRAME_COUNT)
|
|
117
|
+
.join(GRAPHQL_CALL_SITE_SEPARATOR);
|
|
118
|
+
};
|
|
119
|
+
|
|
120
|
+
export const captureGraphqlCallSite = (): string =>
|
|
121
|
+
extractGraphqlCallSite(new Error().stack);
|
|
122
|
+
|
|
123
|
+
export const logGithubGraphqlCost = (params: {
|
|
124
|
+
query: string;
|
|
125
|
+
responseBody: unknown;
|
|
126
|
+
callSite?: string;
|
|
127
|
+
now?: () => Date;
|
|
128
|
+
}): void => {
|
|
129
|
+
const rateLimit = extractRateLimit(params.responseBody);
|
|
71
130
|
if (!rateLimit) {
|
|
72
131
|
return;
|
|
73
132
|
}
|
|
133
|
+
const now = params.now ?? (() => new Date());
|
|
134
|
+
const callSite = params.callSite ?? UNKNOWN_GRAPHQL_CALL_SITE;
|
|
74
135
|
console.log(
|
|
75
|
-
`${now().toISOString()} githubGraphqlClient: query=${extractGraphqlOperationName(query)} cost=${rateLimit.cost} remaining=${rateLimit.remaining}`,
|
|
136
|
+
`${now().toISOString()} githubGraphqlClient: query=${extractGraphqlOperationName(params.query)} cost=${rateLimit.cost} remaining=${rateLimit.remaining} caller=${callSite}`,
|
|
76
137
|
);
|
|
77
138
|
};
|
|
78
139
|
|
|
@@ -81,6 +142,7 @@ export const postGithubGraphqlJson = async <T>(params: {
|
|
|
81
142
|
query: string;
|
|
82
143
|
variables?: Record<string, unknown>;
|
|
83
144
|
}): Promise<T> => {
|
|
145
|
+
const callSite = captureGraphqlCallSite();
|
|
84
146
|
const response = await ky
|
|
85
147
|
.post(GITHUB_GRAPHQL_ENDPOINT, {
|
|
86
148
|
json: {
|
|
@@ -94,7 +156,11 @@ export const postGithubGraphqlJson = async <T>(params: {
|
|
|
94
156
|
},
|
|
95
157
|
})
|
|
96
158
|
.json<T>();
|
|
97
|
-
logGithubGraphqlCost(
|
|
159
|
+
logGithubGraphqlCost({
|
|
160
|
+
query: params.query,
|
|
161
|
+
responseBody: response,
|
|
162
|
+
callSite,
|
|
163
|
+
});
|
|
98
164
|
return response;
|
|
99
165
|
};
|
|
100
166
|
|
|
@@ -104,6 +170,7 @@ export const fetchGithubGraphql = async (params: {
|
|
|
104
170
|
variables?: Record<string, unknown>;
|
|
105
171
|
timeoutMs?: number;
|
|
106
172
|
}): Promise<Response> => {
|
|
173
|
+
const callSite = captureGraphqlCallSite();
|
|
107
174
|
const response = await fetch(GITHUB_GRAPHQL_ENDPOINT, {
|
|
108
175
|
method: 'POST',
|
|
109
176
|
headers: {
|
|
@@ -123,7 +190,11 @@ export const fetchGithubGraphql = async (params: {
|
|
|
123
190
|
.clone()
|
|
124
191
|
.json()
|
|
125
192
|
.catch((): null => null);
|
|
126
|
-
logGithubGraphqlCost(
|
|
193
|
+
logGithubGraphqlCost({
|
|
194
|
+
query: params.query,
|
|
195
|
+
responseBody,
|
|
196
|
+
callSite,
|
|
197
|
+
});
|
|
127
198
|
}
|
|
128
199
|
return response;
|
|
129
200
|
};
|
|
@@ -288,7 +288,7 @@ describe('GraphqlProjectItemRepository', () => {
|
|
|
288
288
|
await repository.fetchProjectItems('test-project-id');
|
|
289
289
|
expect(consoleLogSpy).toHaveBeenCalledWith(
|
|
290
290
|
expect.stringMatching(
|
|
291
|
-
/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}Z githubGraphqlClient: query=GetProjectItems cost=3 remaining=4200
|
|
291
|
+
/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}Z githubGraphqlClient: query=GetProjectItems cost=3 remaining=4200 caller=GraphqlProjectItemRepository\S*$/,
|
|
292
292
|
),
|
|
293
293
|
);
|
|
294
294
|
} finally {
|
|
@@ -8,7 +8,17 @@ export type GithubGraphqlRateLimit = {
|
|
|
8
8
|
export declare const isMutationOperation: (query: string) => boolean;
|
|
9
9
|
export declare const extractGraphqlOperationName: (query: string) => string;
|
|
10
10
|
export declare const injectRateLimitSelection: (query: string) => string;
|
|
11
|
-
export declare const
|
|
11
|
+
export declare const GRAPHQL_CALL_SITE_FRAME_COUNT = 3;
|
|
12
|
+
export declare const GRAPHQL_CALL_SITE_SEPARATOR = "<-";
|
|
13
|
+
export declare const UNKNOWN_GRAPHQL_CALL_SITE = "unknown";
|
|
14
|
+
export declare const extractGraphqlCallSite: (stack: string | undefined) => string;
|
|
15
|
+
export declare const captureGraphqlCallSite: () => string;
|
|
16
|
+
export declare const logGithubGraphqlCost: (params: {
|
|
17
|
+
query: string;
|
|
18
|
+
responseBody: unknown;
|
|
19
|
+
callSite?: string;
|
|
20
|
+
now?: () => Date;
|
|
21
|
+
}) => void;
|
|
12
22
|
export declare const postGithubGraphqlJson: <T>(params: {
|
|
13
23
|
ghToken: string;
|
|
14
24
|
query: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"githubGraphqlClient.d.ts","sourceRoot":"","sources":["../../../src/adapter/repositories/githubGraphqlClient.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,uBAAuB,mCAAmC,CAAC;AAExE,eAAO,MAAM,iCAAiC,SAAU,CAAC;AAEzD,eAAO,MAAM,oBAAoB,iCAAiC,CAAC;AAEnE,MAAM,MAAM,sBAAsB,GAAG;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAAI,OAAO,MAAM,KAAG,OACV,CAAC;AAE3C,eAAO,MAAM,2BAA2B,GAAI,OAAO,MAAM,KAAG,MAK3D,CAAC;AAEF,eAAO,MAAM,wBAAwB,GAAI,OAAO,MAAM,KAAG,MASxD,CAAC;AAgCF,eAAO,MAAM,
|
|
1
|
+
{"version":3,"file":"githubGraphqlClient.d.ts","sourceRoot":"","sources":["../../../src/adapter/repositories/githubGraphqlClient.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,uBAAuB,mCAAmC,CAAC;AAExE,eAAO,MAAM,iCAAiC,SAAU,CAAC;AAEzD,eAAO,MAAM,oBAAoB,iCAAiC,CAAC;AAEnE,MAAM,MAAM,sBAAsB,GAAG;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAAI,OAAO,MAAM,KAAG,OACV,CAAC;AAE3C,eAAO,MAAM,2BAA2B,GAAI,OAAO,MAAM,KAAG,MAK3D,CAAC;AAEF,eAAO,MAAM,wBAAwB,GAAI,OAAO,MAAM,KAAG,MASxD,CAAC;AAgCF,eAAO,MAAM,6BAA6B,IAAI,CAAC;AAE/C,eAAO,MAAM,2BAA2B,OAAO,CAAC;AAEhD,eAAO,MAAM,yBAAyB,YAAY,CAAC;AA6BnD,eAAO,MAAM,sBAAsB,GAAI,OAAO,MAAM,GAAG,SAAS,KAAG,MAoBlE,CAAC;AAEF,eAAO,MAAM,sBAAsB,QAAO,MACC,CAAC;AAE5C,eAAO,MAAM,oBAAoB,GAAI,QAAQ;IAC3C,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;CAClB,KAAG,IAUH,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAAU,CAAC,EAAE,QAAQ;IACrD,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACrC,KAAG,OAAO,CAAC,CAAC,CAqBZ,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAAU,QAAQ;IAC/C,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,KAAG,OAAO,CAAC,QAAQ,CA4BnB,CAAC"}
|