github-issue-tower-defence-management 1.67.1 → 1.67.2

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.67.2](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/compare/v1.67.1...v1.67.2) (2026-05-27)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * **core:** surface full GraphQL error payload and add per-page halving fallback in fetchProjectItems ([729138e](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/commit/729138e8e4419f85b1a59ca3d2868322c9837c94))
7
+
1
8
  ## [1.67.1](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/compare/v1.67.0...v1.67.1) (2026-05-26)
2
9
 
3
10
 
@@ -3,10 +3,19 @@ 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.GraphqlProjectItemRepository = exports.PAGINATION_DELAY_MS = void 0;
6
+ exports.GraphqlProjectItemRepository = exports.FETCH_PROJECT_ITEMS_GRAPHQL_ERROR_PAYLOAD_MAX_LENGTH = exports.FETCH_PROJECT_ITEMS_INITIAL_PAGE_SIZE = exports.PAGINATION_DELAY_MS = void 0;
7
7
  const ky_1 = __importDefault(require("ky"));
8
8
  const BaseGitHubRepository_1 = require("../BaseGitHubRepository");
9
9
  exports.PAGINATION_DELAY_MS = 5000;
10
+ exports.FETCH_PROJECT_ITEMS_INITIAL_PAGE_SIZE = 50;
11
+ exports.FETCH_PROJECT_ITEMS_GRAPHQL_ERROR_PAYLOAD_MAX_LENGTH = 4000;
12
+ const stringifyGraphqlErrorsForLog = (errors) => {
13
+ const serialized = JSON.stringify(errors);
14
+ if (serialized.length <= exports.FETCH_PROJECT_ITEMS_GRAPHQL_ERROR_PAYLOAD_MAX_LENGTH) {
15
+ return serialized;
16
+ }
17
+ return `${serialized.slice(0, exports.FETCH_PROJECT_ITEMS_GRAPHQL_ERROR_PAYLOAD_MAX_LENGTH)}...[truncated]`;
18
+ };
10
19
  class GraphqlProjectItemRepository extends BaseGitHubRepository_1.BaseGitHubRepository {
11
20
  constructor() {
12
21
  super(...arguments);
@@ -59,10 +68,10 @@ class GraphqlProjectItemRepository extends BaseGitHubRepository_1.BaseGitHubRepo
59
68
  };
60
69
  this.fetchProjectItems = async (projectId) => {
61
70
  const graphqlQueryString = `
62
- query GetProjectItems($projectId: ID!, $after: String) {
71
+ query GetProjectItems($projectId: ID!, $after: String, $first: Int!) {
63
72
  node(id: $projectId) {
64
73
  ... on ProjectV2 {
65
- items(first: 100, after: $after) {
74
+ items(first: $first, after: $after) {
66
75
  totalCount
67
76
  pageInfo {
68
77
  endCursor
@@ -169,12 +178,13 @@ query GetProjectItems($projectId: ID!, $after: String) {
169
178
  }
170
179
  }
171
180
  `;
172
- const callGraphql = async (projectId, after) => {
181
+ const callGraphql = async (projectId, after, first) => {
173
182
  const graphqlQuery = {
174
183
  query: graphqlQueryString,
175
184
  variables: {
176
185
  projectId: projectId,
177
186
  after: after,
187
+ first: first,
178
188
  },
179
189
  };
180
190
  const response = await ky_1.default
@@ -186,7 +196,7 @@ query GetProjectItems($projectId: ID!, $after: String) {
186
196
  })
187
197
  .json();
188
198
  if (response.errors && response.errors.length > 0) {
189
- throw new Error(`GitHub GraphQL errors: ${response.errors.map((e) => e.message).join('; ')}`);
199
+ throw new Error(`GitHub GraphQL errors: ${stringifyGraphqlErrorsForLog(response.errors)}`);
190
200
  }
191
201
  const rawData = response.data;
192
202
  if (!rawData) {
@@ -198,6 +208,27 @@ query GetProjectItems($projectId: ID!, $after: String) {
198
208
  }
199
209
  return { node: rawNode };
200
210
  };
211
+ const callGraphqlWithHalvingFallback = async (after) => {
212
+ let attemptFirst = exports.FETCH_PROJECT_ITEMS_INITIAL_PAGE_SIZE;
213
+ let lastError = null;
214
+ while (attemptFirst >= 1) {
215
+ try {
216
+ return await callGraphql(projectId, after, attemptFirst);
217
+ }
218
+ catch (error) {
219
+ lastError = error;
220
+ if (attemptFirst === 1) {
221
+ throw error;
222
+ }
223
+ const nextFirst = Math.max(1, Math.floor(attemptFirst / 2));
224
+ console.log(`fetchProjectItems: page request with first=${attemptFirst} failed, halving to first=${nextFirst}: ${error instanceof Error ? error.message : String(error)}`);
225
+ attemptFirst = nextFirst;
226
+ }
227
+ }
228
+ throw lastError instanceof Error
229
+ ? lastError
230
+ : new Error(String(lastError));
231
+ };
201
232
  const issues = [];
202
233
  let after = null;
203
234
  let hasNextPage = true;
@@ -208,7 +239,7 @@ query GetProjectItems($projectId: ID!, $after: String) {
208
239
  if (after !== null) {
209
240
  await new Promise((resolve) => setTimeout(resolve, exports.PAGINATION_DELAY_MS));
210
241
  }
211
- const data = await callGraphql(projectId, after);
242
+ const data = await callGraphqlWithHalvingFallback(after);
212
243
  const pageNodes = data.node.items.nodes;
213
244
  const pageInfo = data.node.items.pageInfo;
214
245
  totalCount = data.node.items.totalCount;
@@ -246,7 +277,7 @@ query GetProjectItems($projectId: ID!, $after: String) {
246
277
  }),
247
278
  });
248
279
  });
249
- if (pageNodes.length === 100 &&
280
+ if (pageNodes.length > 0 &&
250
281
  !pageInfo.hasNextPage &&
251
282
  cumulativeRawNodes < totalCount) {
252
283
  throw new Error(`fetchProjectItems: page ${pageIndex} has ${pageNodes.length} nodes with hasNextPage=false but only ${cumulativeRawNodes}/${totalCount} items accumulated`);
@@ -1 +1 @@
1
- {"version":3,"file":"GraphqlProjectItemRepository.js","sourceRoot":"","sources":["../../../../src/adapter/repositories/issue/GraphqlProjectItemRepository.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"GraphqlProjectItemRepository.js","sourceRoot":"","sources":["../../../../src/adapter/repositories/issue/GraphqlProjectItemRepository.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.67.1",
3
+ "version": "1.67.2",
4
4
  "description": "",
5
5
  "main": "bin/index.js",
6
6
  "scripts": {
@@ -24,6 +24,38 @@ const mockJsonResponse = <T>(data: T) => ({
24
24
  json: jest.fn().mockResolvedValue(data),
25
25
  });
26
26
 
27
+ const isRecord = (value: unknown): value is Record<string, unknown> =>
28
+ typeof value === 'object' && value !== null;
29
+
30
+ const extractRequestedFirstFromMockCall = (
31
+ call: unknown,
32
+ ): number | undefined => {
33
+ if (!Array.isArray(call)) {
34
+ return undefined;
35
+ }
36
+ const second: unknown = call[1];
37
+ if (!isRecord(second)) {
38
+ return undefined;
39
+ }
40
+ const json: unknown = second.json;
41
+ if (!isRecord(json)) {
42
+ return undefined;
43
+ }
44
+ const variables: unknown = json.variables;
45
+ if (!isRecord(variables)) {
46
+ return undefined;
47
+ }
48
+ const first: unknown = variables.first;
49
+ return typeof first === 'number' ? first : undefined;
50
+ };
51
+
52
+ const extractErrorMessage = (value: unknown): string => {
53
+ if (value instanceof Error) {
54
+ return value.message;
55
+ }
56
+ return '';
57
+ };
58
+
27
59
  describe('GraphqlProjectItemRepository', () => {
28
60
  const makePageResponse = (
29
61
  hasNextPage: boolean,
@@ -76,7 +108,7 @@ describe('GraphqlProjectItemRepository', () => {
76
108
 
77
109
  afterEach(() => {
78
110
  jest.useRealTimers();
79
- mockPost.mockClear();
111
+ mockPost.mockReset();
80
112
  });
81
113
 
82
114
  it('should sleep between paginated requests to avoid 403', async () => {
@@ -111,7 +143,7 @@ describe('GraphqlProjectItemRepository', () => {
111
143
  'dummy-token',
112
144
  );
113
145
 
114
- mockPost.mockReturnValueOnce(
146
+ mockPost.mockImplementation(() =>
115
147
  mockJsonResponse({
116
148
  data: {
117
149
  node: {
@@ -148,7 +180,7 @@ describe('GraphqlProjectItemRepository', () => {
148
180
 
149
181
  await expect(
150
182
  repository.fetchProjectItems('test-project-id'),
151
- ).rejects.toThrow('GitHub GraphQL errors: RATE_LIMITED');
183
+ ).rejects.toThrow('GitHub GraphQL errors: [{"message":"RATE_LIMITED"}]');
152
184
  });
153
185
 
154
186
  it('should throw when data is null in response', async () => {
@@ -158,7 +190,7 @@ describe('GraphqlProjectItemRepository', () => {
158
190
  'dummy-token',
159
191
  );
160
192
 
161
- mockPost.mockReturnValueOnce(
193
+ mockPost.mockImplementation(() =>
162
194
  mockJsonResponse({
163
195
  data: null,
164
196
  }),
@@ -176,7 +208,7 @@ describe('GraphqlProjectItemRepository', () => {
176
208
  'dummy-token',
177
209
  );
178
210
 
179
- mockPost.mockReturnValueOnce(
211
+ mockPost.mockImplementation(() =>
180
212
  mockJsonResponse({
181
213
  data: { node: null },
182
214
  }),
@@ -187,7 +219,7 @@ describe('GraphqlProjectItemRepository', () => {
187
219
  ).rejects.toThrow('No data returned from GitHub API');
188
220
  });
189
221
 
190
- it('should throw when accumulated nodes count does not match totalCount', async () => {
222
+ it('should throw when a returned page contains nodes, declares hasNextPage=false, yet totalCount still indicates more items remain', async () => {
191
223
  const localStorageRepository = new LocalStorageRepository();
192
224
  const repository = new GraphqlProjectItemRepository(
193
225
  localStorageRepository,
@@ -231,7 +263,7 @@ describe('GraphqlProjectItemRepository', () => {
231
263
  await expect(
232
264
  repository.fetchProjectItems('test-project-id'),
233
265
  ).rejects.toThrow(
234
- 'fetchProjectItems: expected 5 items but accumulated 1',
266
+ 'fetchProjectItems: page 1 has 1 nodes with hasNextPage=false but only 1/5 items accumulated',
235
267
  );
236
268
  });
237
269
 
@@ -287,6 +319,103 @@ describe('GraphqlProjectItemRepository', () => {
287
319
  );
288
320
  setTimeoutSpy.mockRestore();
289
321
  });
322
+
323
+ it('should stringify full response errors payload including extensions when callGraphql throws', async () => {
324
+ const localStorageRepository = new LocalStorageRepository();
325
+ const repository = new GraphqlProjectItemRepository(
326
+ localStorageRepository,
327
+ 'dummy-token',
328
+ );
329
+
330
+ mockPost.mockImplementation(() =>
331
+ mockJsonResponse({
332
+ errors: [
333
+ {
334
+ message: 'Something went wrong while executing your query.',
335
+ path: ['node', 'items', 'nodes', 7, 'id'],
336
+ locations: [{ line: 11, column: 11 }],
337
+ extensions: { code: 'INTERNAL' },
338
+ },
339
+ ],
340
+ }),
341
+ );
342
+
343
+ let capturedError: unknown = null;
344
+ await expect(
345
+ repository
346
+ .fetchProjectItems('test-project-id')
347
+ .catch((error: unknown) => {
348
+ capturedError = error;
349
+ throw error;
350
+ }),
351
+ ).rejects.toThrow(/^GitHub GraphQL errors: /);
352
+ expect(capturedError).toBeInstanceOf(Error);
353
+ const message = extractErrorMessage(capturedError);
354
+ expect(message).toContain('"extensions":{"code":"INTERNAL"}');
355
+ expect(message).toContain('"path":["node","items","nodes",7,"id"]');
356
+ expect(message).toContain('"locations":[{"line":11,"column":11}]');
357
+ });
358
+
359
+ it('should fall back to half the page size when first=50 fails and first=25 succeeds', async () => {
360
+ const localStorageRepository = new LocalStorageRepository();
361
+ const repository = new GraphqlProjectItemRepository(
362
+ localStorageRepository,
363
+ 'dummy-token',
364
+ );
365
+
366
+ const failingResponse = mockJsonResponse({
367
+ errors: [
368
+ { message: 'Something went wrong while executing your query.' },
369
+ ],
370
+ });
371
+ const successPageResponse = makePageResponse(false, 'cursor-1', 1);
372
+
373
+ mockPost
374
+ .mockReturnValueOnce(failingResponse)
375
+ .mockReturnValueOnce(successPageResponse);
376
+
377
+ const result = await repository.fetchProjectItems('test-project-id');
378
+
379
+ expect(mockPost).toHaveBeenCalledTimes(2);
380
+ expect(result).toHaveLength(1);
381
+ expect(extractRequestedFirstFromMockCall(mockPost.mock.calls[0])).toBe(
382
+ 50,
383
+ );
384
+ expect(extractRequestedFirstFromMockCall(mockPost.mock.calls[1])).toBe(
385
+ 25,
386
+ );
387
+ });
388
+
389
+ it('should exhaust halving down to first=1 and rethrow the stringified errors payload', async () => {
390
+ const localStorageRepository = new LocalStorageRepository();
391
+ const repository = new GraphqlProjectItemRepository(
392
+ localStorageRepository,
393
+ 'dummy-token',
394
+ );
395
+
396
+ mockPost.mockImplementation(() =>
397
+ mockJsonResponse({
398
+ errors: [
399
+ {
400
+ message: 'Something went wrong while executing your query.',
401
+ extensions: { code: 'INTERNAL' },
402
+ },
403
+ ],
404
+ }),
405
+ );
406
+
407
+ await expect(
408
+ repository.fetchProjectItems('test-project-id'),
409
+ ).rejects.toThrow(
410
+ /GitHub GraphQL errors: .*"extensions":\{"code":"INTERNAL"\}.*/,
411
+ );
412
+
413
+ expect(mockPost).toHaveBeenCalledTimes(6);
414
+ const requestedFirstSeries = mockPost.mock.calls.map((call) =>
415
+ extractRequestedFirstFromMockCall(call),
416
+ );
417
+ expect(requestedFirstSeries).toEqual([50, 25, 12, 6, 3, 1]);
418
+ });
290
419
  });
291
420
 
292
421
  describe('getProjectItemFields', () => {
@@ -20,6 +20,21 @@ export type ProjectItem = {
20
20
  }[];
21
21
  };
22
22
  export const PAGINATION_DELAY_MS = 5000;
23
+ export const FETCH_PROJECT_ITEMS_INITIAL_PAGE_SIZE = 50;
24
+ export const FETCH_PROJECT_ITEMS_GRAPHQL_ERROR_PAYLOAD_MAX_LENGTH = 4000;
25
+
26
+ const stringifyGraphqlErrorsForLog = (
27
+ errors: { message: string }[],
28
+ ): string => {
29
+ const serialized = JSON.stringify(errors);
30
+ if (
31
+ serialized.length <= FETCH_PROJECT_ITEMS_GRAPHQL_ERROR_PAYLOAD_MAX_LENGTH
32
+ ) {
33
+ return serialized;
34
+ }
35
+ return `${serialized.slice(0, FETCH_PROJECT_ITEMS_GRAPHQL_ERROR_PAYLOAD_MAX_LENGTH)}...[truncated]`;
36
+ };
37
+
23
38
  export class GraphqlProjectItemRepository extends BaseGitHubRepository {
24
39
  fetchItemId = async (
25
40
  projectId: string,
@@ -97,10 +112,10 @@ export class GraphqlProjectItemRepository extends BaseGitHubRepository {
97
112
  };
98
113
  fetchProjectItems = async (projectId: string): Promise<ProjectItem[]> => {
99
114
  const graphqlQueryString = `
100
- query GetProjectItems($projectId: ID!, $after: String) {
115
+ query GetProjectItems($projectId: ID!, $after: String, $first: Int!) {
101
116
  node(id: $projectId) {
102
117
  ... on ProjectV2 {
103
- items(first: 100, after: $after) {
118
+ items(first: $first, after: $after) {
104
119
  totalCount
105
120
  pageInfo {
106
121
  endCursor
@@ -210,6 +225,7 @@ query GetProjectItems($projectId: ID!, $after: String) {
210
225
  const callGraphql = async (
211
226
  projectId: string,
212
227
  after: string | null,
228
+ first: number,
213
229
  ): Promise<{
214
230
  node: {
215
231
  items: {
@@ -251,6 +267,7 @@ query GetProjectItems($projectId: ID!, $after: String) {
251
267
  variables: {
252
268
  projectId: projectId,
253
269
  after: after,
270
+ first: first,
254
271
  },
255
272
  };
256
273
  const response = await ky
@@ -301,7 +318,7 @@ query GetProjectItems($projectId: ID!, $after: String) {
301
318
  }>();
302
319
  if (response.errors && response.errors.length > 0) {
303
320
  throw new Error(
304
- `GitHub GraphQL errors: ${response.errors.map((e) => e.message).join('; ')}`,
321
+ `GitHub GraphQL errors: ${stringifyGraphqlErrorsForLog(response.errors)}`,
305
322
  );
306
323
  }
307
324
  const rawData = response.data;
@@ -314,6 +331,65 @@ query GetProjectItems($projectId: ID!, $after: String) {
314
331
  }
315
332
  return { node: rawNode };
316
333
  };
334
+ const callGraphqlWithHalvingFallback = async (
335
+ after: string | null,
336
+ ): Promise<{
337
+ node: {
338
+ items: {
339
+ totalCount: number;
340
+ pageInfo: {
341
+ endCursor: string;
342
+ startCursor: string;
343
+ hasNextPage: boolean;
344
+ };
345
+ nodes: {
346
+ id: string;
347
+ fieldValues: {
348
+ nodes: {
349
+ text: string;
350
+ number: number;
351
+ date: string;
352
+ field: {
353
+ name: string;
354
+ };
355
+ }[];
356
+ };
357
+ content: {
358
+ repository: { nameWithOwner: string };
359
+ number: number;
360
+ title: string;
361
+ state: string;
362
+ url: string;
363
+ createdAt: string;
364
+ author: { login: string } | null;
365
+ labels: { nodes: { name: string }[] };
366
+ assignees: { nodes: { login: string }[] };
367
+ };
368
+ }[];
369
+ };
370
+ };
371
+ }> => {
372
+ let attemptFirst = FETCH_PROJECT_ITEMS_INITIAL_PAGE_SIZE;
373
+ let lastError: unknown = null;
374
+ while (attemptFirst >= 1) {
375
+ try {
376
+ return await callGraphql(projectId, after, attemptFirst);
377
+ } catch (error) {
378
+ lastError = error;
379
+ if (attemptFirst === 1) {
380
+ throw error;
381
+ }
382
+ const nextFirst = Math.max(1, Math.floor(attemptFirst / 2));
383
+ console.log(
384
+ `fetchProjectItems: page request with first=${attemptFirst} failed, halving to first=${nextFirst}: ${error instanceof Error ? error.message : String(error)}`,
385
+ );
386
+ attemptFirst = nextFirst;
387
+ }
388
+ }
389
+ throw lastError instanceof Error
390
+ ? lastError
391
+ : new Error(String(lastError));
392
+ };
317
393
  const issues: ProjectItem[] = [];
318
394
  let after: string | null = null;
319
395
  let hasNextPage = true;
@@ -327,7 +403,7 @@ query GetProjectItems($projectId: ID!, $after: String) {
327
403
  setTimeout(resolve, PAGINATION_DELAY_MS),
328
404
  );
329
405
  }
330
- const data = await callGraphql(projectId, after);
406
+ const data = await callGraphqlWithHalvingFallback(after);
331
407
  const pageNodes = data.node.items.nodes;
332
408
  const pageInfo = data.node.items.pageInfo;
333
409
  totalCount = data.node.items.totalCount;
@@ -393,7 +469,7 @@ query GetProjectItems($projectId: ID!, $after: String) {
393
469
  });
394
470
  });
395
471
  if (
396
- pageNodes.length === 100 &&
472
+ pageNodes.length > 0 &&
397
473
  !pageInfo.hasNextPage &&
398
474
  cumulativeRawNodes < totalCount
399
475
  ) {
@@ -19,6 +19,8 @@ export type ProjectItem = {
19
19
  }[];
20
20
  };
21
21
  export declare const PAGINATION_DELAY_MS = 5000;
22
+ export declare const FETCH_PROJECT_ITEMS_INITIAL_PAGE_SIZE = 50;
23
+ export declare const FETCH_PROJECT_ITEMS_GRAPHQL_ERROR_PAYLOAD_MAX_LENGTH = 4000;
22
24
  export declare class GraphqlProjectItemRepository extends BaseGitHubRepository {
23
25
  fetchItemId: (projectId: string, owner: string, repositoryName: string, issueNumber: number) => Promise<string | undefined>;
24
26
  fetchProjectItems: (projectId: string) => Promise<ProjectItem[]>;
@@ -1 +1 @@
1
- {"version":3,"file":"GraphqlProjectItemRepository.d.ts","sourceRoot":"","sources":["../../../../src/adapter/repositories/issue/GraphqlProjectItemRepository.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,OAAO,EAAE,MAAM,kCAAkC,CAAC;AAC3D,OAAO,EAAE,KAAK,EAAE,MAAM,gCAAgC,CAAC;AACvD,MAAM,MAAM,WAAW,GAAG;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACpC,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE;QACZ,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;KACtB,EAAE,CAAC;CACL,CAAC;AACF,eAAO,MAAM,mBAAmB,OAAO,CAAC;AACxC,qBAAa,4BAA6B,SAAQ,oBAAoB;IACpE,WAAW,GACT,WAAW,MAAM,EACjB,OAAO,MAAM,EACb,gBAAgB,MAAM,EACtB,aAAa,MAAM,KAClB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAoE5B;IACF,iBAAiB,GAAU,WAAW,MAAM,KAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CA8TnE;IACF,gCAAgC,GAC9B,UAAU,MAAM,KACf,OAAO,CACR;QACE,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;KACpB,EAAE,CACJ,CAGC;IAEF,oBAAoB,GAClB,OAAO,MAAM,EACb,gBAAgB,MAAM,EACtB,aAAa,MAAM,KAClB,OAAO,CACR;QACE,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;KACpB,EAAE,CACJ,CAqJC;IACF,qBAAqB,GACnB,UAAU,MAAM,KACf,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CA2L5B;IACF,iBAAiB,GAAI,OAAO,MAAM,KAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAQ/D;IAEF,kBAAkB,GAChB,WAAW,MAAM,EACjB,SAAS,MAAM,EACf,QAAQ,MAAM,EACd,OACI;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,GAChB;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,GAClB;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,GAChB;QAAE,oBAAoB,EAAE,MAAM,CAAA;KAAE,KACnC,OAAO,CAAC,IAAI,CAAC,CAgCd;IAEF,iBAAiB,GACf,WAAW,MAAM,EACjB,SAAS,MAAM,EACf,QAAQ,MAAM,KACb,OAAO,CAAC,IAAI,CAAC,CA+Bd;IACF,sBAAsB,GACpB,SAAS,OAAO,CAAC,IAAI,CAAC,EACtB,SAAS,MAAM,EACf,OAAO,KAAK,CAAC,QAAQ,CAAC,EACtB,MAAM,MAAM,KACX,OAAO,CAAC,IAAI,CAAC,CAEd;IAEF,qBAAqB,GACnB,WAAW,MAAM,EACjB,QAAQ,MAAM,KACb,OAAO,CAAC,IAAI,CAAC,CAgCd;IAEF,+BAA+B,GAC7B,UAAU,MAAM,EAChB,WAAW,MAAM,KAChB,OAAO,CAAC,IAAI,CAAC,CASd;IAEF,iBAAiB,GACf,WAAW,MAAM,EACjB,UAAU,MAAM,KACf,OAAO,CAAC,IAAI,CAAC,CA4Dd;CACH"}
1
+ {"version":3,"file":"GraphqlProjectItemRepository.d.ts","sourceRoot":"","sources":["../../../../src/adapter/repositories/issue/GraphqlProjectItemRepository.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,OAAO,EAAE,MAAM,kCAAkC,CAAC;AAC3D,OAAO,EAAE,KAAK,EAAE,MAAM,gCAAgC,CAAC;AACvD,MAAM,MAAM,WAAW,GAAG;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACpC,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE;QACZ,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;KACtB,EAAE,CAAC;CACL,CAAC;AACF,eAAO,MAAM,mBAAmB,OAAO,CAAC;AACxC,eAAO,MAAM,qCAAqC,KAAK,CAAC;AACxD,eAAO,MAAM,oDAAoD,OAAO,CAAC;AAczE,qBAAa,4BAA6B,SAAQ,oBAAoB;IACpE,WAAW,GACT,WAAW,MAAM,EACjB,OAAO,MAAM,EACb,gBAAgB,MAAM,EACtB,aAAa,MAAM,KAClB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAoE5B;IACF,iBAAiB,GAAU,WAAW,MAAM,KAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CA2XnE;IACF,gCAAgC,GAC9B,UAAU,MAAM,KACf,OAAO,CACR;QACE,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;KACpB,EAAE,CACJ,CAGC;IAEF,oBAAoB,GAClB,OAAO,MAAM,EACb,gBAAgB,MAAM,EACtB,aAAa,MAAM,KAClB,OAAO,CACR;QACE,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;KACpB,EAAE,CACJ,CAqJC;IACF,qBAAqB,GACnB,UAAU,MAAM,KACf,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CA2L5B;IACF,iBAAiB,GAAI,OAAO,MAAM,KAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAQ/D;IAEF,kBAAkB,GAChB,WAAW,MAAM,EACjB,SAAS,MAAM,EACf,QAAQ,MAAM,EACd,OACI;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,GAChB;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,GAClB;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,GAChB;QAAE,oBAAoB,EAAE,MAAM,CAAA;KAAE,KACnC,OAAO,CAAC,IAAI,CAAC,CAgCd;IAEF,iBAAiB,GACf,WAAW,MAAM,EACjB,SAAS,MAAM,EACf,QAAQ,MAAM,KACb,OAAO,CAAC,IAAI,CAAC,CA+Bd;IACF,sBAAsB,GACpB,SAAS,OAAO,CAAC,IAAI,CAAC,EACtB,SAAS,MAAM,EACf,OAAO,KAAK,CAAC,QAAQ,CAAC,EACtB,MAAM,MAAM,KACX,OAAO,CAAC,IAAI,CAAC,CAEd;IAEF,qBAAqB,GACnB,WAAW,MAAM,EACjB,QAAQ,MAAM,KACb,OAAO,CAAC,IAAI,CAAC,CAgCd;IAEF,+BAA+B,GAC7B,UAAU,MAAM,EAChB,WAAW,MAAM,KAChB,OAAO,CAAC,IAAI,CAAC,CASd;IAEF,iBAAiB,GACf,WAAW,MAAM,EACjB,UAAU,MAAM,KACf,OAAO,CAAC,IAAI,CAAC,CA4Dd;CACH"}