github-issue-tower-defence-management 1.122.2 → 1.122.3

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 (35) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/bin/adapter/entry-points/cli/index.js +9 -0
  3. package/bin/adapter/entry-points/cli/index.js.map +1 -1
  4. package/bin/adapter/entry-points/console/consoleOperationApi.js +78 -39
  5. package/bin/adapter/entry-points/console/consoleOperationApi.js.map +1 -1
  6. package/bin/adapter/entry-points/console/consoleProjectResolver.js +8 -1
  7. package/bin/adapter/entry-points/console/consoleProjectResolver.js.map +1 -1
  8. package/bin/adapter/entry-points/console/webServer.js +5 -1
  9. package/bin/adapter/entry-points/console/webServer.js.map +1 -1
  10. package/bin/adapter/repositories/issue/ApiV3CheerioRestIssueRepository.js +23 -4
  11. package/bin/adapter/repositories/issue/ApiV3CheerioRestIssueRepository.js.map +1 -1
  12. package/package.json +1 -1
  13. package/src/adapter/entry-points/cli/index.test.ts +3 -1
  14. package/src/adapter/entry-points/cli/index.ts +11 -0
  15. package/src/adapter/entry-points/console/consoleOperationApi.test.ts +190 -11
  16. package/src/adapter/entry-points/console/consoleOperationApi.ts +97 -56
  17. package/src/adapter/entry-points/console/consoleProjectResolver.test.ts +13 -0
  18. package/src/adapter/entry-points/console/consoleProjectResolver.ts +11 -0
  19. package/src/adapter/entry-points/console/ui/e2e/consoleTestHarness.ts +3 -0
  20. package/src/adapter/entry-points/console/webServer.test.ts +4 -0
  21. package/src/adapter/entry-points/console/webServer.ts +9 -1
  22. package/src/adapter/repositories/issue/ApiV3CheerioRestIssueRepository.test.ts +86 -0
  23. package/src/adapter/repositories/issue/ApiV3CheerioRestIssueRepository.ts +34 -7
  24. package/src/domain/usecases/adapter-interfaces/IssueRepository.ts +1 -0
  25. package/types/adapter/entry-points/cli/index.d.ts.map +1 -1
  26. package/types/adapter/entry-points/console/consoleOperationApi.d.ts +2 -0
  27. package/types/adapter/entry-points/console/consoleOperationApi.d.ts.map +1 -1
  28. package/types/adapter/entry-points/console/consoleProjectResolver.d.ts +2 -1
  29. package/types/adapter/entry-points/console/consoleProjectResolver.d.ts.map +1 -1
  30. package/types/adapter/entry-points/console/webServer.d.ts +2 -1
  31. package/types/adapter/entry-points/console/webServer.d.ts.map +1 -1
  32. package/types/adapter/repositories/issue/ApiV3CheerioRestIssueRepository.d.ts +2 -1
  33. package/types/adapter/repositories/issue/ApiV3CheerioRestIssueRepository.d.ts.map +1 -1
  34. package/types/domain/usecases/adapter-interfaces/IssueRepository.d.ts +1 -1
  35. package/types/domain/usecases/adapter-interfaces/IssueRepository.d.ts.map +1 -1
@@ -18,9 +18,12 @@ export type ConsoleProjectResolver = (
18
18
  pjcode: string,
19
19
  ) => Promise<ConsoleProjectBinding | null>;
20
20
 
21
+ export type ConsolePjcodeValidator = (pjcode: string) => boolean;
22
+
21
23
  export type ConsoleOperationContext = {
22
24
  issueRepository: IssueRepository;
23
25
  resolveProject: ConsoleProjectResolver;
26
+ isPjcodeConfigured: ConsolePjcodeValidator;
24
27
  consoleDataOutputDir: string | null;
25
28
  };
26
29
 
@@ -69,18 +72,40 @@ const resolveStatusId = (
69
72
  return match ? match.id : null;
70
73
  };
71
74
 
72
- const loadIssueWithProjectItemId = async (
73
- issueRepository: IssueRepository,
74
- project: Project,
75
+ // Builds the minimal Issue reference the ProjectV2 mutations need. The dashboard
76
+ // already supplies the project item id in the request body, and updateStatus,
77
+ // updateStory and updateNextActionHour read only `issue.itemId` (plus `url` for
78
+ // context). Constructing the reference locally avoids the GraphQL
79
+ // fetchProjectItemByUrl call that issueRepository.get would otherwise perform.
80
+ const projectItemReference = (
75
81
  issueUrl: string,
76
82
  projectItemId: string,
77
- ): Promise<Issue | null> => {
78
- const issue = await issueRepository.get(issueUrl, project);
79
- if (issue === null) {
80
- return null;
81
- }
82
- return { ...issue, itemId: projectItemId };
83
- };
83
+ ): Issue => ({
84
+ nameWithOwner: '',
85
+ number: 0,
86
+ title: '',
87
+ state: 'OPEN',
88
+ status: null,
89
+ story: null,
90
+ nextActionDate: null,
91
+ nextActionHour: null,
92
+ estimationMinutes: null,
93
+ dependedIssueUrls: [],
94
+ completionDate50PercentConfidence: null,
95
+ url: issueUrl,
96
+ assignees: [],
97
+ labels: [],
98
+ org: '',
99
+ repo: '',
100
+ body: '',
101
+ itemId: projectItemId,
102
+ isPr: isPullRequestUrl(issueUrl),
103
+ isInProgress: false,
104
+ isClosed: false,
105
+ createdAt: new Date(0),
106
+ author: '',
107
+ closingIssueReferenceUrls: [],
108
+ });
84
109
 
85
110
  const recordDone = (
86
111
  context: ConsoleOperationContext,
@@ -117,6 +142,25 @@ const isOperationResponse = (
117
142
  ): value is ConsoleOperationResponse =>
118
143
  Object.prototype.hasOwnProperty.call(value, 'statusCode');
119
144
 
145
+ // Validates that a pjcode is configured WITHOUT loading the ProjectV2 via
146
+ // GraphQL. Close operations only need the pjcode (for recordDone namespacing)
147
+ // and the issue/PR URL, both of which are handled through REST. Loading the
148
+ // full project here would make close fail whenever the GraphQL quota is
149
+ // exhausted, even though closing a GitHub issue or PR needs only REST.
150
+ const resolveConfiguredPjcode = (
151
+ context: ConsoleOperationContext,
152
+ body: Record<string, unknown>,
153
+ ): string | ConsoleOperationResponse => {
154
+ const pjcode = body.pjcode;
155
+ if (!isNonEmptyString(pjcode)) {
156
+ return badRequest('pjcode is required');
157
+ }
158
+ if (!context.isPjcodeConfigured(pjcode)) {
159
+ return badRequest(`no project configured for pjcode "${pjcode}"`);
160
+ }
161
+ return pjcode;
162
+ };
163
+
120
164
  const updateStatusByName = async (
121
165
  issueRepository: IssueRepository,
122
166
  project: Project,
@@ -128,16 +172,11 @@ const updateStatusByName = async (
128
172
  if (statusId === null) {
129
173
  return badRequest(`status option "${statusName}" not found in project`);
130
174
  }
131
- const issue = await loadIssueWithProjectItemId(
132
- issueRepository,
175
+ await issueRepository.updateStatus(
133
176
  project,
134
- issueUrl,
135
- projectItemId,
177
+ projectItemReference(issueUrl, projectItemId),
178
+ statusId,
136
179
  );
137
- if (issue === null) {
138
- return badRequest('issue not found');
139
- }
140
- await issueRepository.updateStatus(project, issue, statusId);
141
180
  return null;
142
181
  };
143
182
 
@@ -157,6 +196,20 @@ export const handleReview = async (
157
196
  if (!isNonEmptyString(projectItemId)) {
158
197
  return badRequest('projectItemId is required');
159
198
  }
199
+
200
+ if (action === 'close') {
201
+ const pjcodeResult = resolveConfiguredPjcode(context, body);
202
+ if (typeof pjcodeResult !== 'string') {
203
+ return pjcodeResult;
204
+ }
205
+ await context.issueRepository.closePullRequest(prUrl);
206
+ if (isNonEmptyString(body.commentBody)) {
207
+ await context.issueRepository.createCommentByUrl(prUrl, body.commentBody);
208
+ }
209
+ recordDone(context, pjcodeResult, projectItemId);
210
+ return ok();
211
+ }
212
+
160
213
  const binding = await resolveBinding(context, body);
161
214
  if (isOperationResponse(binding)) {
162
215
  return binding;
@@ -213,15 +266,6 @@ export const handleReview = async (
213
266
  return ok();
214
267
  }
215
268
 
216
- if (action === 'close') {
217
- await context.issueRepository.closePullRequest(prUrl);
218
- if (isNonEmptyString(body.commentBody)) {
219
- await context.issueRepository.createCommentByUrl(prUrl, body.commentBody);
220
- }
221
- recordDone(context, pjcode, projectItemId);
222
- return ok();
223
- }
224
-
225
269
  return badRequest(`unknown review action "${action}"`);
226
270
  };
227
271
 
@@ -241,6 +285,30 @@ export const handleTriage = async (
241
285
  if (!isNonEmptyString(projectItemId)) {
242
286
  return badRequest('projectItemId is required');
243
287
  }
288
+
289
+ if (action === 'close' || action === 'close_not_planned') {
290
+ const pjcodeResult = resolveConfiguredPjcode(context, body);
291
+ if (typeof pjcodeResult !== 'string') {
292
+ return pjcodeResult;
293
+ }
294
+ if (isNonEmptyString(body.commentBody)) {
295
+ await context.issueRepository.createCommentByUrl(
296
+ issueUrl,
297
+ body.commentBody,
298
+ );
299
+ }
300
+ if (isPullRequestUrl(issueUrl)) {
301
+ await context.issueRepository.closePullRequest(issueUrl);
302
+ } else {
303
+ await context.issueRepository.closeIssueByUrl(
304
+ issueUrl,
305
+ action === 'close_not_planned' ? 'not_planned' : 'completed',
306
+ );
307
+ }
308
+ recordDone(context, pjcodeResult, projectItemId);
309
+ return ok();
310
+ }
311
+
244
312
  const binding = await resolveBinding(context, body);
245
313
  if (isOperationResponse(binding)) {
246
314
  return binding;
@@ -274,43 +342,15 @@ export const handleTriage = async (
274
342
  if (project.story === null) {
275
343
  return badRequest('project does not have a story field');
276
344
  }
277
- const issue = await loadIssueWithProjectItemId(
278
- context.issueRepository,
279
- project,
280
- issueUrl,
281
- projectItemId,
282
- );
283
- if (issue === null) {
284
- return badRequest('issue not found');
285
- }
286
345
  await context.issueRepository.updateStory(
287
346
  { ...project, story: project.story },
288
- issue,
347
+ projectItemReference(issueUrl, projectItemId),
289
348
  storyOptionId,
290
349
  );
291
350
  recordDone(context, pjcode, projectItemId);
292
351
  return ok();
293
352
  }
294
353
 
295
- if (action === 'close' || action === 'close_not_planned') {
296
- if (isNonEmptyString(body.commentBody)) {
297
- await context.issueRepository.createCommentByUrl(
298
- issueUrl,
299
- body.commentBody,
300
- );
301
- }
302
- if (isPullRequestUrl(issueUrl)) {
303
- await context.issueRepository.closePullRequest(issueUrl);
304
- } else {
305
- await context.issueRepository.closeIssueByUrl(
306
- issueUrl,
307
- action === 'close_not_planned' ? 'not_planned' : 'completed',
308
- );
309
- }
310
- recordDone(context, pjcode, projectItemId);
311
- return ok();
312
- }
313
-
314
354
  if (action === 'snooze_1day' || action === 'snooze_1week') {
315
355
  const days = action === 'snooze_1day' ? 1 : 7;
316
356
  const target = new Date(Date.now() + days * 24 * 60 * 60 * 1000);
@@ -318,6 +358,7 @@ export const handleTriage = async (
318
358
  issueUrl,
319
359
  project,
320
360
  target,
361
+ projectItemId,
321
362
  );
322
363
  recordDone(context, pjcode, projectItemId);
323
364
  return ok();
@@ -3,6 +3,7 @@ import { Project } from '../../../domain/entities/Project';
3
3
  import {
4
4
  buildPjcodeToProjectUrl,
5
5
  createConsoleProjectResolver,
6
+ createPjcodeConfigChecker,
6
7
  } from './consoleProjectResolver';
7
8
 
8
9
  describe('buildPjcodeToProjectUrl', () => {
@@ -39,6 +40,18 @@ describe('buildPjcodeToProjectUrl', () => {
39
40
  });
40
41
  });
41
42
 
43
+ describe('createPjcodeConfigChecker', () => {
44
+ it('reports true only for a configured pjcode without loading any project', () => {
45
+ const isConfigured = createPjcodeConfigChecker({
46
+ umino: 'https://github.com/orgs/umino/projects/1',
47
+ xmile: 'https://github.com/orgs/xmile/projects/2',
48
+ });
49
+ expect(isConfigured('umino')).toBe(true);
50
+ expect(isConfigured('xmile')).toBe(true);
51
+ expect(isConfigured('unknown')).toBe(false);
52
+ });
53
+ });
54
+
42
55
  describe('createConsoleProjectResolver', () => {
43
56
  const uminoProject: Project = { ...mock<Project>(), id: 'PVT_umino' };
44
57
  const xmileProject: Project = { ...mock<Project>(), id: 'PVT_xmile' };
@@ -1,5 +1,6 @@
1
1
  import { Project } from '../../../domain/entities/Project';
2
2
  import {
3
+ ConsolePjcodeValidator,
3
4
  ConsoleProjectBinding,
4
5
  ConsoleProjectResolver,
5
6
  } from './consoleOperationApi';
@@ -25,6 +26,16 @@ export const buildPjcodeToProjectUrl = (
25
26
  return mapping;
26
27
  };
27
28
 
29
+ // Builds a synchronous predicate that reports whether a pjcode is configured,
30
+ // using only the local pjcode-to-project-url mapping. This lets close
31
+ // operations validate the pjcode without loading the ProjectV2 via GraphQL.
32
+ export const createPjcodeConfigChecker = (
33
+ pjcodeToProjectUrl: Record<string, string>,
34
+ ): ConsolePjcodeValidator => {
35
+ return (pjcode: string): boolean =>
36
+ Object.prototype.hasOwnProperty.call(pjcodeToProjectUrl, pjcode);
37
+ };
38
+
28
39
  export const createConsoleProjectResolver = (
29
40
  pjcodeToProjectUrl: Record<string, string>,
30
41
  loadProject: ConsoleProjectLoader,
@@ -505,6 +505,8 @@ export const startConsoleE2eHarness = async (): Promise<ConsoleE2eHarness> => {
505
505
  pjcode: string,
506
506
  ): Promise<ConsoleProjectBinding | null> =>
507
507
  pjcode === CONSOLE_E2E_PJCODE ? { pjcode, project } : null;
508
+ const isPjcodeConfigured = (pjcode: string): boolean =>
509
+ pjcode === CONSOLE_E2E_PJCODE;
508
510
 
509
511
  const reviewCommentCalls: ConsoleE2eReviewCommentCall[] = [];
510
512
  const requestChangesCalls: ConsoleE2eRequestChangesCall[] = [];
@@ -518,6 +520,7 @@ export const startConsoleE2eHarness = async (): Promise<ConsoleE2eHarness> => {
518
520
  requestChangesCalls,
519
521
  ),
520
522
  resolveProject,
523
+ isPjcodeConfigured,
521
524
  issueTitleStateCache: new IssueTitleStateCache(),
522
525
  pullRequestStatusCache: new PullRequestStatusCache(),
523
526
  inTmuxDataDir: null,
@@ -651,6 +651,7 @@ describe('webServer new routes integration', () => {
651
651
  issueRepository,
652
652
  resolveProject: async (pjcode) =>
653
653
  pjcode === 'umino' ? { pjcode, project: buildProject() } : null,
654
+ isPjcodeConfigured: (pjcode) => pjcode === 'umino',
654
655
  port: 0,
655
656
  });
656
657
  try {
@@ -702,6 +703,7 @@ describe('webServer new routes integration', () => {
702
703
  issueRepository,
703
704
  resolveProject: async (pjcode) =>
704
705
  pjcode === 'umino' ? { pjcode, project: buildProject() } : null,
706
+ isPjcodeConfigured: (pjcode) => pjcode === 'umino',
705
707
  port: 0,
706
708
  });
707
709
  try {
@@ -750,6 +752,7 @@ describe('webServer new routes integration', () => {
750
752
  issueRepository,
751
753
  resolveProject: async (pjcode) =>
752
754
  pjcode === 'umino' ? { pjcode, project: buildProject() } : null,
755
+ isPjcodeConfigured: (pjcode) => pjcode === 'umino',
753
756
  port: 0,
754
757
  });
755
758
  try {
@@ -788,6 +791,7 @@ describe('webServer new routes integration', () => {
788
791
  issueRepository,
789
792
  resolveProject: async (pjcode) =>
790
793
  pjcode === 'umino' ? { pjcode, project: buildProject() } : null,
794
+ isPjcodeConfigured: (pjcode) => pjcode === 'umino',
791
795
  port: 0,
792
796
  });
793
797
  try {
@@ -20,6 +20,7 @@ import {
20
20
  } from './consoleReadApi';
21
21
  import {
22
22
  ConsoleOperationContext,
23
+ ConsolePjcodeValidator,
23
24
  ConsoleProjectResolver,
24
25
  handleComment,
25
26
  handleIntmux,
@@ -173,6 +174,7 @@ export type WebServerOptions = {
173
174
  imageFetcher?: ImageFetcher | null;
174
175
  issueRepository?: IssueRepository | null;
175
176
  resolveProject?: ConsoleProjectResolver | null;
177
+ isPjcodeConfigured?: ConsolePjcodeValidator | null;
176
178
  issueTitleStateCache?: IssueTitleStateCache | null;
177
179
  pullRequestStatusCache?: PullRequestStatusCache | null;
178
180
  };
@@ -430,12 +432,18 @@ const handleOperationApi = async (
430
432
  ): Promise<{ statusCode: number; body: unknown } | null> => {
431
433
  const issueRepository = options.issueRepository ?? null;
432
434
  const resolveProject = options.resolveProject ?? null;
433
- if (issueRepository === null || resolveProject === null) {
435
+ const isPjcodeConfigured = options.isPjcodeConfigured ?? null;
436
+ if (
437
+ issueRepository === null ||
438
+ resolveProject === null ||
439
+ isPjcodeConfigured === null
440
+ ) {
434
441
  return null;
435
442
  }
436
443
  const context: ConsoleOperationContext = {
437
444
  issueRepository,
438
445
  resolveProject,
446
+ isPjcodeConfigured,
439
447
  consoleDataOutputDir: options.consoleDataOutputDir,
440
448
  };
441
449
  const dispatched = dispatchOperation(context, requestPath, body);
@@ -593,6 +593,92 @@ describe('ApiV3CheerioRestIssueRepository', () => {
593
593
  });
594
594
  });
595
595
 
596
+ describe('getCachedProject', () => {
597
+ it('returns the daemon-cached project without any GraphQL project load', async () => {
598
+ const { repository, localStorageCacheRepository, projectRepository } =
599
+ createApiV3CheerioRestIssueRepository();
600
+ const cachedProject = buildTestProject('cached-project');
601
+ localStorageCacheRepository.getSingle.mockResolvedValue({
602
+ lastFetchedAt: '2026-07-07T00:30:00.000Z',
603
+ lastFullFetchAt: '2026-07-07T00:00:00.000Z',
604
+ project: cachedProject,
605
+ issues: [],
606
+ });
607
+
608
+ const result = await repository.getCachedProject('cached-project');
609
+
610
+ expect(result).toEqual(cachedProject);
611
+ expect(localStorageCacheRepository.getSingle).toHaveBeenCalledWith(
612
+ 'allIssues-cached-project',
613
+ );
614
+ expect(projectRepository.getProject).not.toHaveBeenCalled();
615
+ });
616
+
617
+ it('returns null on a cache miss so the caller can fall back to GraphQL', async () => {
618
+ const { repository, localStorageCacheRepository, projectRepository } =
619
+ createApiV3CheerioRestIssueRepository();
620
+ localStorageCacheRepository.getSingle.mockResolvedValue(null);
621
+
622
+ const result = await repository.getCachedProject('missing-project');
623
+
624
+ expect(result).toBeNull();
625
+ expect(projectRepository.getProject).not.toHaveBeenCalled();
626
+ });
627
+ });
628
+
629
+ describe('updateNextActionDate', () => {
630
+ const projectWithNextActionDate = (): Project => ({
631
+ ...buildTestProject('nad-project'),
632
+ nextActionDate: { name: 'Next Action Date', fieldId: 'nad-field' },
633
+ });
634
+
635
+ it('uses the provided project item id and skips the GraphQL item fetch', async () => {
636
+ const { repository, graphqlProjectItemRepository } =
637
+ createApiV3CheerioRestIssueRepository();
638
+ graphqlProjectItemRepository.updateProjectField.mockResolvedValue();
639
+
640
+ await repository.updateNextActionDate(
641
+ 'https://github.com/o/r/issues/1',
642
+ projectWithNextActionDate(),
643
+ new Date('2026-07-20T00:00:00.000Z'),
644
+ 'given-item-id',
645
+ );
646
+
647
+ expect(
648
+ graphqlProjectItemRepository.fetchProjectItemByUrl,
649
+ ).not.toHaveBeenCalled();
650
+ expect(
651
+ graphqlProjectItemRepository.updateProjectField,
652
+ ).toHaveBeenCalledWith('nad-project', 'nad-field', 'given-item-id', {
653
+ date: '2026-07-20',
654
+ });
655
+ });
656
+
657
+ it('falls back to fetchProjectItemByUrl when no project item id is provided', async () => {
658
+ const { repository, graphqlProjectItemRepository } =
659
+ createApiV3CheerioRestIssueRepository();
660
+ graphqlProjectItemRepository.updateProjectField.mockResolvedValue();
661
+ graphqlProjectItemRepository.fetchProjectItemByUrl.mockResolvedValue(
662
+ buildProjectItem('https://github.com/o/r/issues/1', 'fallback'),
663
+ );
664
+
665
+ await repository.updateNextActionDate(
666
+ 'https://github.com/o/r/issues/1',
667
+ projectWithNextActionDate(),
668
+ new Date('2026-07-20T00:00:00.000Z'),
669
+ );
670
+
671
+ expect(
672
+ graphqlProjectItemRepository.fetchProjectItemByUrl,
673
+ ).toHaveBeenCalledWith('https://github.com/o/r/issues/1', 'nad-project');
674
+ expect(
675
+ graphqlProjectItemRepository.updateProjectField,
676
+ ).toHaveBeenCalledWith('nad-project', 'nad-field', 'item-fallback', {
677
+ date: '2026-07-20',
678
+ });
679
+ });
680
+ });
681
+
596
682
  describe('setDependedIssueUrl', () => {
597
683
  const projectWithDependedIssueUrlField = {
598
684
  ...mock<Project>(),
@@ -680,6 +680,25 @@ export class ApiV3CheerioRestIssueRepository
680
680
  };
681
681
  };
682
682
 
683
+ // Reads the Project (status/story option ids and field ids) that the TDPM
684
+ // daemon persisted into the `allIssues-${projectId}` cache, without any
685
+ // GraphQL call. Returns null on cache miss so callers can fall back to a
686
+ // GraphQL project load only when the daemon has not populated the cache yet.
687
+ getCachedProject = async (
688
+ projectId: Project['id'],
689
+ ): Promise<Project | null> => {
690
+ const raw = await this.localStorageCacheRepository.getSingle(
691
+ `allIssues-${projectId}`,
692
+ );
693
+ if (typeof raw !== 'object' || raw === null || !('project' in raw)) {
694
+ return null;
695
+ }
696
+ if (!typia.is<Project>(raw.project)) {
697
+ return null;
698
+ }
699
+ return raw.project;
700
+ };
701
+
683
702
  private toDateString = (date: Date): string =>
684
703
  `${date.getUTCFullYear()}-${String(date.getUTCMonth() + 1).padStart(2, '0')}-${String(date.getUTCDate()).padStart(2, '0')}`;
685
704
 
@@ -855,22 +874,30 @@ export class ApiV3CheerioRestIssueRepository
855
874
  issueUrl: string,
856
875
  project: Project,
857
876
  date: Date,
877
+ projectItemId?: string,
858
878
  ): Promise<void> => {
859
879
  if (!project.nextActionDate) {
860
880
  return;
861
881
  }
862
- const projectItem =
863
- await this.graphqlProjectItemRepository.fetchProjectItemByUrl(
864
- issueUrl,
865
- project.id,
866
- );
867
- if (!projectItem) {
882
+ // When the caller already knows the project item id (e.g. the console,
883
+ // which receives it in the request body), use it directly and skip the
884
+ // GraphQL fetchProjectItemByUrl lookup. Fall back to the lookup only when
885
+ // no id was supplied, preserving the original behavior for other callers.
886
+ const itemId =
887
+ projectItemId ??
888
+ (
889
+ await this.graphqlProjectItemRepository.fetchProjectItemByUrl(
890
+ issueUrl,
891
+ project.id,
892
+ )
893
+ )?.id;
894
+ if (!itemId) {
868
895
  return;
869
896
  }
870
897
  return this.graphqlProjectItemRepository.updateProjectField(
871
898
  project.id,
872
899
  project.nextActionDate.fieldId,
873
- projectItem.id,
900
+ itemId,
874
901
  { date: date.toISOString().split('T')[0] },
875
902
  );
876
903
  };
@@ -92,6 +92,7 @@ export interface IssueRepository {
92
92
  issueUrl: string,
93
93
  project: Project,
94
94
  date: Date,
95
+ projectItemId?: string,
95
96
  ) => Promise<void>;
96
97
  updateNextActionHour: (
97
98
  project: Project & {
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/adapter/entry-points/cli/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EACL,UAAU,EACV,cAAc,EACd,wBAAwB,EACxB,YAAY,EACZ,kBAAkB,GACnB,MAAM,iBAAiB,CAAC;AAkIzB,eAAO,MAAM,OAAO,SAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/adapter/entry-points/cli/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EACL,UAAU,EACV,cAAc,EACd,wBAAwB,EACxB,YAAY,EACZ,kBAAkB,GACnB,MAAM,iBAAiB,CAAC;AAmIzB,eAAO,MAAM,OAAO,SAAgB,CAAC"}
@@ -7,9 +7,11 @@ export type ConsoleProjectBinding = {
7
7
  project: Project;
8
8
  };
9
9
  export type ConsoleProjectResolver = (pjcode: string) => Promise<ConsoleProjectBinding | null>;
10
+ export type ConsolePjcodeValidator = (pjcode: string) => boolean;
10
11
  export type ConsoleOperationContext = {
11
12
  issueRepository: IssueRepository;
12
13
  resolveProject: ConsoleProjectResolver;
14
+ isPjcodeConfigured: ConsolePjcodeValidator;
13
15
  consoleDataOutputDir: string | null;
14
16
  };
15
17
  export type ConsoleOperationResponse = {
@@ -1 +1 @@
1
- {"version":3,"file":"consoleOperationApi.d.ts","sourceRoot":"","sources":["../../../../src/adapter/entry-points/console/consoleOperationApi.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EAEhB,MAAM,6DAA6D,CAAC;AACrE,OAAO,EAAE,OAAO,EAAE,MAAM,kCAAkC,CAAC;AAI3D,eAAO,MAAM,8BAA8B,uBAAuB,CAAC;AACnE,eAAO,MAAM,4BAA4B,qBAAqB,CAAC;AAE/D,MAAM,MAAM,qBAAqB,GAAG;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG,CACnC,MAAM,EAAE,MAAM,KACX,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC,CAAC;AAE3C,MAAM,MAAM,uBAAuB,GAAG;IACpC,eAAe,EAAE,eAAe,CAAC;IACjC,cAAc,EAAE,sBAAsB,CAAC;IACvC,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;CACrC,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,OAAO,CAAC;CACf,CAAC;AAkHF,eAAO,MAAM,YAAY,GACvB,SAAS,uBAAuB,EAChC,MAAM,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC5B,OAAO,CAAC,wBAAwB,CA+ElC,CAAC;AAEF,eAAO,MAAM,YAAY,GACvB,SAAS,uBAAuB,EAChC,MAAM,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC5B,OAAO,CAAC,wBAAwB,CAgGlC,CAAC;AAEF,eAAO,MAAM,aAAa,GACxB,SAAS,uBAAuB,EAChC,MAAM,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC5B,OAAO,CAAC,wBAAwB,CA2BlC,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAC9B,SAAS,uBAAuB,EAChC,MAAM,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC5B,OAAO,CAAC,wBAAwB,CAiClC,CAAC;AAEF,eAAO,MAAM,YAAY,GACvB,SAAS,uBAAuB,EAChC,MAAM,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC5B,OAAO,CAAC,wBAAwB,CAiClC,CAAC"}
1
+ {"version":3,"file":"consoleOperationApi.d.ts","sourceRoot":"","sources":["../../../../src/adapter/entry-points/console/consoleOperationApi.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EAEhB,MAAM,6DAA6D,CAAC;AACrE,OAAO,EAAE,OAAO,EAAE,MAAM,kCAAkC,CAAC;AAI3D,eAAO,MAAM,8BAA8B,uBAAuB,CAAC;AACnE,eAAO,MAAM,4BAA4B,qBAAqB,CAAC;AAE/D,MAAM,MAAM,qBAAqB,GAAG;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG,CACnC,MAAM,EAAE,MAAM,KACX,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC,CAAC;AAE3C,MAAM,MAAM,sBAAsB,GAAG,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC;AAEjE,MAAM,MAAM,uBAAuB,GAAG;IACpC,eAAe,EAAE,eAAe,CAAC;IACjC,cAAc,EAAE,sBAAsB,CAAC;IACvC,kBAAkB,EAAE,sBAAsB,CAAC;IAC3C,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;CACrC,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,OAAO,CAAC;CACf,CAAC;AAsJF,eAAO,MAAM,YAAY,GACvB,SAAS,uBAAuB,EAChC,MAAM,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC5B,OAAO,CAAC,wBAAwB,CAoFlC,CAAC;AAEF,eAAO,MAAM,YAAY,GACvB,SAAS,uBAAuB,EAChC,MAAM,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC5B,OAAO,CAAC,wBAAwB,CA6FlC,CAAC;AAEF,eAAO,MAAM,aAAa,GACxB,SAAS,uBAAuB,EAChC,MAAM,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC5B,OAAO,CAAC,wBAAwB,CA2BlC,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAC9B,SAAS,uBAAuB,EAChC,MAAM,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC5B,OAAO,CAAC,wBAAwB,CAiClC,CAAC;AAEF,eAAO,MAAM,YAAY,GACvB,SAAS,uBAAuB,EAChC,MAAM,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC5B,OAAO,CAAC,wBAAwB,CAiClC,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import { Project } from '../../../domain/entities/Project';
2
- import { ConsoleProjectResolver } from './consoleOperationApi';
2
+ import { ConsolePjcodeValidator, ConsoleProjectResolver } from './consoleOperationApi';
3
3
  export type ConsoleProjectLoader = (projectUrl: string) => Promise<Project | null>;
4
4
  export declare const buildPjcodeToProjectUrl: (defaultPjcode: string, defaultProjectUrl: string, consoleProjects: Record<string, string> | null) => Record<string, string>;
5
+ export declare const createPjcodeConfigChecker: (pjcodeToProjectUrl: Record<string, string>) => ConsolePjcodeValidator;
5
6
  export declare const createConsoleProjectResolver: (pjcodeToProjectUrl: Record<string, string>, loadProject: ConsoleProjectLoader) => ConsoleProjectResolver;
6
7
  //# sourceMappingURL=consoleProjectResolver.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"consoleProjectResolver.d.ts","sourceRoot":"","sources":["../../../../src/adapter/entry-points/console/consoleProjectResolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,kCAAkC,CAAC;AAC3D,OAAO,EAEL,sBAAsB,EACvB,MAAM,uBAAuB,CAAC;AAE/B,MAAM,MAAM,oBAAoB,GAAG,CACjC,UAAU,EAAE,MAAM,KACf,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;AAE7B,eAAO,MAAM,uBAAuB,GAClC,eAAe,MAAM,EACrB,mBAAmB,MAAM,EACzB,iBAAiB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,KAC7C,MAAM,CAAC,MAAM,EAAE,MAAM,CAWvB,CAAC;AAEF,eAAO,MAAM,4BAA4B,GACvC,oBAAoB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC1C,aAAa,oBAAoB,KAChC,sBAmBF,CAAC"}
1
+ {"version":3,"file":"consoleProjectResolver.d.ts","sourceRoot":"","sources":["../../../../src/adapter/entry-points/console/consoleProjectResolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,kCAAkC,CAAC;AAC3D,OAAO,EACL,sBAAsB,EAEtB,sBAAsB,EACvB,MAAM,uBAAuB,CAAC;AAE/B,MAAM,MAAM,oBAAoB,GAAG,CACjC,UAAU,EAAE,MAAM,KACf,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;AAE7B,eAAO,MAAM,uBAAuB,GAClC,eAAe,MAAM,EACrB,mBAAmB,MAAM,EACzB,iBAAiB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,KAC7C,MAAM,CAAC,MAAM,EAAE,MAAM,CAWvB,CAAC;AAKF,eAAO,MAAM,yBAAyB,GACpC,oBAAoB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KACzC,sBAGF,CAAC;AAEF,eAAO,MAAM,4BAA4B,GACvC,oBAAoB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC1C,aAAa,oBAAoB,KAChC,sBAmBF,CAAC"}
@@ -1,7 +1,7 @@
1
1
  import * as http from 'http';
2
2
  import { IssueRepository } from '../../../domain/usecases/adapter-interfaces/IssueRepository';
3
3
  import { IssueTitleStateCache, PullRequestStatusCache } from './consoleReadApi';
4
- import { ConsoleProjectResolver } from './consoleOperationApi';
4
+ import { ConsolePjcodeValidator, ConsoleProjectResolver } from './consoleOperationApi';
5
5
  import { ImageFetcher } from './consoleImageProxy';
6
6
  export declare const DEFAULT_WEB_PORT = 9981;
7
7
  export declare const DEFAULT_DASHBOARD_PROJECT_NAMES: string[];
@@ -23,6 +23,7 @@ export type WebServerOptions = {
23
23
  imageFetcher?: ImageFetcher | null;
24
24
  issueRepository?: IssueRepository | null;
25
25
  resolveProject?: ConsoleProjectResolver | null;
26
+ isPjcodeConfigured?: ConsolePjcodeValidator | null;
26
27
  issueTitleStateCache?: IssueTitleStateCache | null;
27
28
  pullRequestStatusCache?: PullRequestStatusCache | null;
28
29
  };
@@ -1 +1 @@
1
- {"version":3,"file":"webServer.d.ts","sourceRoot":"","sources":["../../../../src/adapter/entry-points/console/webServer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAG7B,OAAO,EAAE,eAAe,EAAE,MAAM,6DAA6D,CAAC;AAM9F,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EAQvB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAEL,sBAAsB,EAMvB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,YAAY,EAAqB,MAAM,qBAAqB,CAAC;AAOtE,eAAO,MAAM,gBAAgB,OAAO,CAAC;AAErC,eAAO,MAAM,+BAA+B,UAA0B,CAAC;AAEvE,eAAO,MAAM,oBAAoB,eAAe,CAAC;AAmCjD,eAAO,MAAM,aAAa,GAAI,aAAa,MAAM,KAAG,OAGiB,CAAC;AAEtE,eAAO,MAAM,aAAa,GAAI,aAAa,MAAM,KAAG,OAGrB,CAAC;AAIhC,eAAO,MAAM,iBAAiB,GAAI,aAAa,MAAM,KAAG,OAmBvD,CAAC;AAEF,eAAO,MAAM,YAAY,GACvB,eAAe,MAAM,EACrB,eAAe,MAAM,GAAG,IAAI,KAC3B,OAAoE,CAAC;AAExE,eAAO,MAAM,oBAAoB,GAC/B,YAAY,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,EACpC,aAAa,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,KACzC,MAAM,GAAG,IAQX,CAAC;AAuCF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,qBAAqB,EAAE,MAAM,EAAE,CAAC;IAChC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,YAAY,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;IACnC,eAAe,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC;IACzC,cAAc,CAAC,EAAE,sBAAsB,GAAG,IAAI,CAAC;IAC/C,oBAAoB,CAAC,EAAE,oBAAoB,GAAG,IAAI,CAAC;IACnD,sBAAsB,CAAC,EAAE,sBAAsB,GAAG,IAAI,CAAC;CACxD,CAAC;AAMF,eAAO,MAAM,sBAAsB,cAAc,CAAC;AAElD,eAAO,MAAM,wBAAwB,aAAa,CAAC;AAInD,eAAO,MAAM,wBAAwB,GACnC,cAAc,MAAM,EACpB,aAAa,MAAM,KAClB,MAAM,GAAG,IAWX,CAAC;AAEF,eAAO,MAAM,yBAAyB,GACpC,eAAe,MAAM,EACrB,aAAa,MAAM,KAClB,MAAM,GAAG,IAeX,CAAC;AAoVF,eAAO,MAAM,uBAAuB,GAClC,SAAS,gBAAgB,EACzB,aAAa,MAAM,KAClB,MAAM,GAAG,IAeX,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAC3B,SAAS,gBAAgB,EACzB,SAAS,IAAI,CAAC,eAAe,EAC7B,UAAU,IAAI,CAAC,cAAc,KAC5B,OAAO,CAAC,IAAI,CAwEd,CAAC;AAcF,eAAO,MAAM,eAAe,GAAI,SAAS,gBAAgB,KAAG,IAAI,CAAC,MAM7D,CAAC;AAEL,MAAM,MAAM,qBAAqB,GAAG,gBAAgB,GAAG;IACrD,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,eAAO,MAAM,cAAc,GACzB,SAAS,qBAAqB,KAC7B,OAAO,CAAC,IAAI,CAAC,MAAM,CAQlB,CAAC"}
1
+ {"version":3,"file":"webServer.d.ts","sourceRoot":"","sources":["../../../../src/adapter/entry-points/console/webServer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAG7B,OAAO,EAAE,eAAe,EAAE,MAAM,6DAA6D,CAAC;AAM9F,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EAQvB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAEL,sBAAsB,EACtB,sBAAsB,EAMvB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,YAAY,EAAqB,MAAM,qBAAqB,CAAC;AAOtE,eAAO,MAAM,gBAAgB,OAAO,CAAC;AAErC,eAAO,MAAM,+BAA+B,UAA0B,CAAC;AAEvE,eAAO,MAAM,oBAAoB,eAAe,CAAC;AAmCjD,eAAO,MAAM,aAAa,GAAI,aAAa,MAAM,KAAG,OAGiB,CAAC;AAEtE,eAAO,MAAM,aAAa,GAAI,aAAa,MAAM,KAAG,OAGrB,CAAC;AAIhC,eAAO,MAAM,iBAAiB,GAAI,aAAa,MAAM,KAAG,OAmBvD,CAAC;AAEF,eAAO,MAAM,YAAY,GACvB,eAAe,MAAM,EACrB,eAAe,MAAM,GAAG,IAAI,KAC3B,OAAoE,CAAC;AAExE,eAAO,MAAM,oBAAoB,GAC/B,YAAY,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,EACpC,aAAa,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,KACzC,MAAM,GAAG,IAQX,CAAC;AAuCF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,qBAAqB,EAAE,MAAM,EAAE,CAAC;IAChC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,YAAY,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;IACnC,eAAe,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC;IACzC,cAAc,CAAC,EAAE,sBAAsB,GAAG,IAAI,CAAC;IAC/C,kBAAkB,CAAC,EAAE,sBAAsB,GAAG,IAAI,CAAC;IACnD,oBAAoB,CAAC,EAAE,oBAAoB,GAAG,IAAI,CAAC;IACnD,sBAAsB,CAAC,EAAE,sBAAsB,GAAG,IAAI,CAAC;CACxD,CAAC;AAMF,eAAO,MAAM,sBAAsB,cAAc,CAAC;AAElD,eAAO,MAAM,wBAAwB,aAAa,CAAC;AAInD,eAAO,MAAM,wBAAwB,GACnC,cAAc,MAAM,EACpB,aAAa,MAAM,KAClB,MAAM,GAAG,IAWX,CAAC;AAEF,eAAO,MAAM,yBAAyB,GACpC,eAAe,MAAM,EACrB,aAAa,MAAM,KAClB,MAAM,GAAG,IAeX,CAAC;AA0VF,eAAO,MAAM,uBAAuB,GAClC,SAAS,gBAAgB,EACzB,aAAa,MAAM,KAClB,MAAM,GAAG,IAeX,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAC3B,SAAS,gBAAgB,EACzB,SAAS,IAAI,CAAC,eAAe,EAC7B,UAAU,IAAI,CAAC,cAAc,KAC5B,OAAO,CAAC,IAAI,CAwEd,CAAC;AAcF,eAAO,MAAM,eAAe,GAAI,SAAS,gBAAgB,KAAG,IAAI,CAAC,MAM7D,CAAC;AAEL,MAAM,MAAM,qBAAqB,GAAG,gBAAgB,GAAG;IACrD,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,eAAO,MAAM,cAAc,GACzB,SAAS,qBAAqB,KAC7B,OAAO,CAAC,IAAI,CAAC,MAAM,CAQlB,CAAC"}
@@ -37,6 +37,7 @@ export declare class ApiV3CheerioRestIssueRepository extends BaseGitHubRepositor
37
37
  convertProjectItemToIssue: (item: ProjectItem) => Issue;
38
38
  private restoreIssuesFromCache;
39
39
  private readCachedProjectIssues;
40
+ getCachedProject: (projectId: Project["id"]) => Promise<Project | null>;
40
41
  private toDateString;
41
42
  getAllIssues: (projectId: Project["id"]) => Promise<{
42
43
  issues: Issue[];
@@ -62,7 +63,7 @@ export declare class ApiV3CheerioRestIssueRepository extends BaseGitHubRepositor
62
63
  getIssueByUrl: (url: string) => Promise<Issue | null>;
63
64
  addIssueToProject: (project: Project, issueUrl: string) => Promise<void>;
64
65
  setDependedIssueUrl: (prUrl: string, project: Project, issueUrl: string) => Promise<void>;
65
- updateNextActionDate: (issueUrl: string, project: Project, date: Date) => Promise<void>;
66
+ updateNextActionDate: (issueUrl: string, project: Project, date: Date, projectItemId?: string) => Promise<void>;
66
67
  updateNextActionHour: (project: Project & {
67
68
  nextActionHour: NonNullable<Project["nextActionHour"]>;
68
69
  }, issue: Issue, hour: number) => Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"ApiV3CheerioRestIssueRepository.d.ts","sourceRoot":"","sources":["../../../../src/adapter/repositories/issue/ApiV3CheerioRestIssueRepository.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ApiV3CheerioRestIssueRepository.d.ts","sourceRoot":"","sources":["../../../../src/adapter/repositories/issue/ApiV3CheerioRestIssueRepository.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,kBAAkB,EAClB,YAAY,EACZ,iBAAiB,EAEjB,iBAAiB,EACjB,4BAA4B,EAC5B,+BAA+B,EAChC,MAAM,6DAA6D,CAAC;AACrE,OAAO,EAAE,OAAO,EAAE,MAAM,kCAAkC,CAAC;AAC3D,OAAO,EAAE,KAAK,EAAE,MAAM,gCAAgC,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EACL,4BAA4B,EAC5B,WAAW,EACZ,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,2BAA2B,EAAE,MAAM,gCAAgC,CAAC;AAE7E,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAE/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAE,MAAM,EAAE,MAAM,iCAAiC,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,+DAA+D,CAAC;AAClG,OAAO,EAAE,cAAc,EAAE,MAAM,4DAA4D,CAAC;AAC5F,OAAO,EACL,KAAK,EAKN,MAAM,wBAAwB,CAAC;AAEhC,eAAO,MAAM,4BAA4B,QAAiB,CAAC;AAC3D,eAAO,MAAM,gCAAgC,QAAgB,CAAC;AAE9D,MAAM,MAAM,mBAAmB,GAAG;IAChC,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,KAAK,EAAE,CAAC;CACjB,CAAC;AAsbF,qBAAa,+BACX,SAAQ,oBACR,YAAW,eAAe;IAGxB,QAAQ,CAAC,oBAAoB,EAAE,IAAI,CAAC,oBAAoB,EAAE,aAAa,CAAC;IACxE,QAAQ,CAAC,mBAAmB,EAAE,IAAI,CAChC,mBAAmB,EACjB,gBAAgB,GAChB,aAAa,GACb,eAAe,GACf,UAAU,GACV,cAAc,GACd,aAAa,GACb,oBAAoB,CACvB;IACD,QAAQ,CAAC,4BAA4B,EAAE,IAAI,CACzC,4BAA4B,EAC1B,mBAAmB,GACnB,wBAAwB,GACxB,wBAAwB,GACxB,uBAAuB,GACvB,oBAAoB,GACpB,mBAAmB,GACnB,wBAAwB,GACxB,mBAAmB,CACtB;IACD,QAAQ,CAAC,2BAA2B,EAAE,IAAI,CACxC,2BAA2B,EAC3B,WAAW,GAAG,WAAW,CAC1B;IACD,QAAQ,CAAC,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,EAAE,YAAY,CAAC;IACjE,QAAQ,CAAC,cAAc,EAAE,cAAc;IACvC,QAAQ,CAAC,sBAAsB,EAAE,sBAAsB;IACvD,QAAQ,CAAC,OAAO,EAAE,MAAM;IACxB,QAAQ,CAAC,KAAK,EAAE,KAAK;gBA9BZ,oBAAoB,EAAE,IAAI,CAAC,oBAAoB,EAAE,aAAa,CAAC,EAC/D,mBAAmB,EAAE,IAAI,CAChC,mBAAmB,EACjB,gBAAgB,GAChB,aAAa,GACb,eAAe,GACf,UAAU,GACV,cAAc,GACd,aAAa,GACb,oBAAoB,CACvB,EACQ,4BAA4B,EAAE,IAAI,CACzC,4BAA4B,EAC1B,mBAAmB,GACnB,wBAAwB,GACxB,wBAAwB,GACxB,uBAAuB,GACvB,oBAAoB,GACpB,mBAAmB,GACnB,wBAAwB,GACxB,mBAAmB,CACtB,EACQ,2BAA2B,EAAE,IAAI,CACxC,2BAA2B,EAC3B,WAAW,GAAG,WAAW,CAC1B,EACQ,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,EAAE,YAAY,CAAC,EACxD,cAAc,EAAE,cAAc,EAC9B,sBAAsB,EAAE,sBAAsB,EAC9C,OAAO,GAAE,MAAwC,EACjD,KAAK,GAAE,KAAiB;IAKnC,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAGpC;IAEJ,OAAO,CAAC,uBAAuB,CAE4C;IAE3E,YAAY,EAAE,CACZ,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,MAAM,KACb,OAAO,CAAC,IAAI,CAAC,CAOhB;IAEF,yBAAyB,GAAI,MAAM,WAAW,KAAG,KAAK,CAyDpD;IACF,OAAO,CAAC,sBAAsB,CA+C5B;IAEF,OAAO,CAAC,uBAAuB,CA8B7B;IAMF,gBAAgB,GACd,WAAW,OAAO,CAAC,IAAI,CAAC,KACvB,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAWxB;IAEF,OAAO,CAAC,YAAY,CAC0G;IAE9H,YAAY,GACV,WAAW,OAAO,CAAC,IAAI,CAAC,KACvB,OAAO,CAAC;QACT,MAAM,EAAE,KAAK,EAAE,CAAC;QAChB,OAAO,EAAE,OAAO,CAAC;QACjB,SAAS,EAAE,OAAO,CAAC;KACpB,CAAC,CAQA;IAEF,OAAO,CAAC,gBAAgB,CA+DtB;IACF,cAAc,GACZ,KAAK,MAAM,EACX,MAAM,MAAM,EACZ,OAAO,MAAM,EACb,MAAM,MAAM,EACZ,WAAW,MAAM,EAAE,EACnB,QAAQ,MAAM,EAAE,KACf,OAAO,CAAC,MAAM,CAAC,CAShB;IACF,WAAW,GAAU,OAAO;QAC1B,KAAK,EAAE,MAAM,CAAC;QACd,cAAc,EAAE,MAAM,CAAC;QACvB,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;QACtB,KAAK,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;QAClC,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,KAAG,OAAO,CACT;QACE,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;KAChB,EAAE,CACJ,CAEC;IACF,WAAW,GAAU,OAAO,KAAK,KAAG,OAAO,CAAC,IAAI,CAAC,CAE/C;IACF,aAAa,GAAU,KAAK,MAAM,KAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,CAOxD;IACF,iBAAiB,GACf,SAAS,OAAO,EAChB,UAAU,MAAM,KACf,OAAO,CAAC,IAAI,CAAC,CAKd;IACF,mBAAmB,GACjB,OAAO,MAAM,EACb,SAAS,OAAO,EAChB,UAAU,MAAM,KACf,OAAO,CAAC,IAAI,CAAC,CA4Bd;IAEF,oBAAoB,GAClB,UAAU,MAAM,EAChB,SAAS,OAAO,EAChB,MAAM,IAAI,EACV,gBAAgB,MAAM,KACrB,OAAO,CAAC,IAAI,CAAC,CAyBd;IACF,oBAAoB,GAClB,SAAS,OAAO,GAAG;QACjB,cAAc,EAAE,WAAW,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC;KACxD,EACD,OAAO,KAAK,EACZ,MAAM,MAAM,KACX,OAAO,CAAC,IAAI,CAAC,CAOd;IACF,WAAW,GACT,SAAS,OAAO,GAAG;QAAE,KAAK,EAAE,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAA;KAAE,EAC3D,OAAO,KAAK,EACZ,eAAe,MAAM,KACpB,OAAO,CAAC,IAAI,CAAC,CAOd;IACF,iBAAiB,GACf,SAAS,OAAO,EAChB,SAAS,MAAM,EACf,OAAO,KAAK,KACX,OAAO,CAAC,IAAI,CAAC,CAOd;IACF,aAAa,GAAU,OAAO,KAAK,EAAE,SAAS,MAAM,KAAG,OAAO,CAAC,IAAI,CAAC,CAElE;IACF,sBAAsB,GACpB,SAAS,OAAO,EAChB,SAAS,MAAM,EACf,OAAO,KAAK,EACZ,MAAM,MAAM,KACX,OAAO,CAAC,IAAI,CAAC,CAOd;IAEF,YAAY,GAAI,OAAO,KAAK,EAAE,QAAQ,KAAK,CAAC,QAAQ,CAAC,KAAG,OAAO,CAAC,IAAI,CAAC,CAEnE;IACF,WAAW,GAAI,OAAO,KAAK,EAAE,OAAO,MAAM,KAAG,OAAO,CAAC,IAAI,CAAC,CAExD;IACF,kBAAkB,GAChB,OAAO,KAAK,EACZ,cAAc,MAAM,CAAC,MAAM,CAAC,EAAE,KAC7B,OAAO,CAAC,IAAI,CAAC,CAEd;IACF,GAAG,GAAU,WAAW,MAAM,EAAE,UAAU,OAAO,KAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,CAEvE;IACF,MAAM,GAAU,OAAO,KAAK,EAAE,UAAU,OAAO,KAAG,OAAO,CAAC,IAAI,CAAC,CAE7D;IACF,OAAO,CAAC,aAAa,CAoBnB;IAEF,OAAO,CAAC,eAAe,CAyJrB;IAEF,OAAO,CAAC,4BAA4B,CAgFlC;IAEF,kBAAkB,GAChB,UAAU,MAAM,KACf,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAoM9B;IAEF,YAAY,GAAU,SAAS,OAAO,KAAG,OAAO,CAAC,KAAK,EAAE,CAAC,CAGvD;IAEF,iBAAiB,GAAU,SAAS,OAAO,KAAG,OAAO,CAAC,cAAc,CAAC,CAmBnE;IAEF,kBAAkB,GAChB,OAAO,MAAM,KACZ,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAuHnC;IAEF,gBAAgB,GAAU,OAAO,MAAM,KAAG,OAAO,CAAC,IAAI,CAAC,CAmBrD;IAEF,eAAe,GACb,UAAU,MAAM,EAChB,aAAa,WAAW,GAAG,aAAa,KACvC,OAAO,CAAC,IAAI,CAAC,CAqBd;IAEF,8BAA8B,GAAU,OAAO,MAAM,KAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAyCvE;IAEF,kBAAkB,GAAU,OAAO,MAAM,KAAG,OAAO,CAAC,IAAI,CAAC,CAoBvD;IAEF,+BAA+B,GAC7B,OAAO,MAAM,EACb,iBAAiB,MAAM,GAAG,IAAI,EAC9B,aAAa,MAAM,EACnB,wBAAuB,+BAA+B,GAAG,IAAW,KACnE,OAAO,CAAC,IAAI,CAAC,CAsCd;IAEF,OAAO,CAAC,uBAAuB,CAmC7B;IAEF,8BAA8B,GAC5B,OAAO,MAAM,EACb,MAAM,MAAM,EACZ,MAAM,MAAM,EACZ,MAAM,4BAA4B,EAClC,aAAa,MAAM,KAClB,OAAO,CAAC,IAAI,CAAC,CAoCd;IAEF,OAAO,CAAC,qBAAqB,CA8B3B;IAEF,OAAO,CAAC,2BAA2B,CAmBjC;IAEF,uBAAuB,GACrB,OAAO,MAAM,EACb,YAAY,MAAM,KACjB,OAAO,CAAC,IAAI,CAAC,CAmBd;IAEF,kBAAkB,GAChB,cAAc,MAAM,EACpB,aAAa,MAAM,KAClB,OAAO,CAAC,IAAI,CAAC,CAEd;IAEF,yBAAyB,GAAU,KAAK,MAAM,KAAG,OAAO,CAAC,MAAM,CAAC,CAyB9D;IAEF,6BAA6B,GAC3B,KAAK,MAAM,KACV,OAAO,CAAC,YAAY,EAAE,CAAC,CA2CxB;IAEF,oBAAoB,GAClB,OAAO,MAAM,KACZ,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAmDlC;IAEF,OAAO,CAAC,qBAAqB,CAiD3B;IAEF,qBAAqB,GACnB,OAAO,MAAM,KACZ,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAoD7B;IAEF,0BAA0B,GACxB,KAAK,MAAM,KACV,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,OAAO,CAAC;QAAC,aAAa,EAAE,OAAO,CAAA;KAAE,CAAC,CAkDpE;IAEF,qBAAqB,GACnB,OAAO,MAAM,KACZ,OAAO,CAAC;QACT,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;QAClB,YAAY,EAAE,MAAM,CAAC;KACtB,GAAG,IAAI,CAAC,CAuCP;CACH"}