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 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
- 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 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
- console.log(`${now().toISOString()} githubGraphqlClient: query=${(0, exports.extractGraphqlOperationName)(query)} cost=${rateLimit.cost} remaining=${rateLimit.remaining}`);
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)(params.query, response);
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)(params.query, responseBody);
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":"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"}
1
+ {"version":3,"file":"githubGraphqlClient.js","sourceRoot":"","sources":["../../../src/adapter/repositories/githubGraphqlClient.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "github-issue-tower-defence-management",
3
- "version": "1.154.1",
3
+ "version": "1.155.0",
4
4
  "description": "",
5
5
  "main": "bin/index.js",
6
6
  "scripts": {
@@ -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
- () => new Date('2026-08-14T09:00:00.000Z'),
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
- () => new Date('2026-08-14T23:45:12.345Z'),
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('query GetProjectItems { x }', {
146
- data: { node: null },
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('query GetProjectItems { x }', undefined);
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 logGithubGraphqlCost = (
66
- query: string,
67
- responseBody: unknown,
68
- now: () => Date = () => new Date(),
69
- ): void => {
70
- const rateLimit = extractRateLimit(responseBody);
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(params.query, response);
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(params.query, responseBody);
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 logGithubGraphqlCost: (query: string, responseBody: unknown, now?: () => Date) => void;
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,oBAAoB,GAC/B,OAAO,MAAM,EACb,cAAc,OAAO,EACrB,MAAK,MAAM,IAAuB,KACjC,IAQF,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,CAgBZ,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,CAuBnB,CAAC"}
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"}