github-issue-tower-defence-management 1.44.10 → 1.46.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/bin/adapter/entry-points/cli/index.js +0 -3
  3. package/bin/adapter/entry-points/cli/index.js.map +1 -1
  4. package/bin/adapter/entry-points/handlers/GetStoryObjectMapUseCaseHandler.js +0 -2
  5. package/bin/adapter/entry-points/handlers/GetStoryObjectMapUseCaseHandler.js.map +1 -1
  6. package/bin/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.js +0 -2
  7. package/bin/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.js.map +1 -1
  8. package/bin/adapter/repositories/BaseGitHubRepository.js +5 -22
  9. package/bin/adapter/repositories/BaseGitHubRepository.js.map +1 -1
  10. package/bin/adapter/repositories/GraphqlProjectRepository.js +40 -0
  11. package/bin/adapter/repositories/GraphqlProjectRepository.js.map +1 -1
  12. package/bin/adapter/repositories/issue/ApiV3CheerioRestIssueRepository.js +36 -1
  13. package/bin/adapter/repositories/issue/ApiV3CheerioRestIssueRepository.js.map +1 -1
  14. package/bin/domain/usecases/StartPreparationUseCase.js +17 -2
  15. package/bin/domain/usecases/StartPreparationUseCase.js.map +1 -1
  16. package/package.json +1 -2
  17. package/src/adapter/entry-points/cli/index.test.ts +0 -3
  18. package/src/adapter/entry-points/cli/index.ts +2 -3
  19. package/src/adapter/entry-points/handlers/GetStoryObjectMapUseCaseHandler.test.ts +0 -6
  20. package/src/adapter/entry-points/handlers/GetStoryObjectMapUseCaseHandler.ts +0 -2
  21. package/src/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.test.ts +0 -6
  22. package/src/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.ts +0 -2
  23. package/src/adapter/repositories/BaseGitHubRepository.test.ts +3 -48
  24. package/src/adapter/repositories/BaseGitHubRepository.ts +5 -33
  25. package/src/adapter/repositories/GraphqlProjectRepository.test.ts +72 -0
  26. package/src/adapter/repositories/GraphqlProjectRepository.ts +57 -1
  27. package/src/adapter/repositories/issue/ApiV3CheerioRestIssueRepository.ts +58 -3
  28. package/src/domain/usecases/RevertOrphanedPreparationUseCase.test.ts +1 -0
  29. package/src/domain/usecases/StartPreparationUseCase.test.ts +125 -7
  30. package/src/domain/usecases/StartPreparationUseCase.ts +32 -3
  31. package/src/domain/usecases/adapter-interfaces/IssueRepository.ts +7 -0
  32. package/types/adapter/entry-points/cli/index.d.ts.map +1 -1
  33. package/types/adapter/entry-points/handlers/GetStoryObjectMapUseCaseHandler.d.ts.map +1 -1
  34. package/types/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.d.ts.map +1 -1
  35. package/types/adapter/repositories/BaseGitHubRepository.d.ts +0 -1
  36. package/types/adapter/repositories/BaseGitHubRepository.d.ts.map +1 -1
  37. package/types/adapter/repositories/GraphqlProjectRepository.d.ts +5 -2
  38. package/types/adapter/repositories/GraphqlProjectRepository.d.ts.map +1 -1
  39. package/types/adapter/repositories/issue/ApiV3CheerioRestIssueRepository.d.ts +3 -0
  40. package/types/adapter/repositories/issue/ApiV3CheerioRestIssueRepository.d.ts.map +1 -1
  41. package/types/domain/usecases/StartPreparationUseCase.d.ts +1 -1
  42. package/types/domain/usecases/StartPreparationUseCase.d.ts.map +1 -1
  43. package/types/domain/usecases/adapter-interfaces/IssueRepository.d.ts +4 -0
  44. package/types/domain/usecases/adapter-interfaces/IssueRepository.d.ts.map +1 -1
  45. package/bin/adapter/repositories/CheerioProjectRepository.js +0 -45
  46. package/bin/adapter/repositories/CheerioProjectRepository.js.map +0 -1
  47. package/src/adapter/repositories/CheerioProjectRepository.test.ts +0 -122
  48. package/src/adapter/repositories/CheerioProjectRepository.ts +0 -65
  49. package/types/adapter/repositories/CheerioProjectRepository.d.ts +0 -17
  50. package/types/adapter/repositories/CheerioProjectRepository.d.ts.map +0 -1
@@ -87,6 +87,9 @@ describe('StartPreparationUseCase', () => {
87
87
  | 'updateStatus'
88
88
  | 'findRelatedOpenPRs'
89
89
  | 'getOpenPullRequest'
90
+ | 'closePullRequest'
91
+ | 'deletePullRequestBranch'
92
+ | 'createCommentByUrl'
90
93
  >
91
94
  >;
92
95
  let mockClaudeRepository: Mocked<Pick<ClaudeRepository, 'getUsage'>>;
@@ -108,6 +111,9 @@ describe('StartPreparationUseCase', () => {
108
111
  updateStatus: jest.fn(),
109
112
  findRelatedOpenPRs: jest.fn().mockResolvedValue([]),
110
113
  getOpenPullRequest: jest.fn().mockResolvedValue(null),
114
+ closePullRequest: jest.fn().mockResolvedValue(undefined),
115
+ deletePullRequestBranch: jest.fn().mockResolvedValue(undefined),
116
+ createCommentByUrl: jest.fn().mockResolvedValue(undefined),
111
117
  };
112
118
  mockClaudeRepository = {
113
119
  getUsage: jest.fn().mockResolvedValue([]),
@@ -225,6 +231,7 @@ describe('StartPreparationUseCase', () => {
225
231
  const existingPR: RelatedPullRequest = {
226
232
  url: 'https://github.com/user/repo/pull/42',
227
233
  branchName: 'i1',
234
+ createdAt: new Date('2024-01-01'),
228
235
  isConflicted: false,
229
236
  isPassedAllCiJob: false,
230
237
  isCiStateSuccess: false,
@@ -286,6 +293,7 @@ describe('StartPreparationUseCase', () => {
286
293
  mockIssueRepository.getOpenPullRequest.mockResolvedValue({
287
294
  url: 'https://github.com/user/repo/pull/354',
288
295
  branchName: 'dependabot/npm_and_yarn/multi-cc382f683c',
296
+ createdAt: new Date('2024-01-01'),
289
297
  isConflicted: false,
290
298
  isPassedAllCiJob: false,
291
299
  isCiStateSuccess: false,
@@ -385,6 +393,7 @@ describe('StartPreparationUseCase', () => {
385
393
  mockIssueRepository.getOpenPullRequest.mockResolvedValue({
386
394
  url: 'https://github.com/user/repo/pull/999',
387
395
  branchName: null,
396
+ createdAt: new Date('2024-01-01'),
388
397
  isConflicted: false,
389
398
  isPassedAllCiJob: false,
390
399
  isCiStateSuccess: false,
@@ -432,6 +441,7 @@ describe('StartPreparationUseCase', () => {
432
441
  mockIssueRepository.getOpenPullRequest.mockResolvedValue({
433
442
  url: 'https://github.com/user/repo/pull/999',
434
443
  branchName: 'evil$(rm -rf /)',
444
+ createdAt: new Date('2024-01-01'),
435
445
  isConflicted: false,
436
446
  isPassedAllCiJob: false,
437
447
  isCiStateSuccess: false,
@@ -463,18 +473,19 @@ describe('StartPreparationUseCase', () => {
463
473
  );
464
474
  consoleErrorSpy.mockRestore();
465
475
  });
466
- it('should skip and not call wrapper when issue has multiple related open PRs', async () => {
476
+ it('should auto-resolve by adopting oldest PR, closing newer PR with branch delete and comments when issue has multiple related open PRs', async () => {
467
477
  const awaitingIssues: Issue[] = [
468
478
  createMockIssue({
469
- url: 'url1',
479
+ url: 'https://github.com/user/repo/issues/1',
470
480
  title: 'Issue 1',
471
481
  labels: ['category:impl'],
472
482
  status: 'Awaiting Workspace',
473
483
  }),
474
484
  ];
475
- const pr1: RelatedPullRequest = {
485
+ const olderPR: RelatedPullRequest = {
476
486
  url: 'https://github.com/user/repo/pull/42',
477
487
  branchName: 'i1',
488
+ createdAt: new Date('2024-01-01T00:00:00Z'),
478
489
  isConflicted: false,
479
490
  isPassedAllCiJob: false,
480
491
  isCiStateSuccess: false,
@@ -482,9 +493,10 @@ describe('StartPreparationUseCase', () => {
482
493
  isBranchOutOfDate: false,
483
494
  missingRequiredCheckNames: [],
484
495
  };
485
- const pr2: RelatedPullRequest = {
496
+ const newerPR: RelatedPullRequest = {
486
497
  url: 'https://github.com/user/repo/pull/43',
487
498
  branchName: 'i1-fix',
499
+ createdAt: new Date('2024-01-02T00:00:00Z'),
488
500
  isConflicted: false,
489
501
  isPassedAllCiJob: false,
490
502
  isCiStateSuccess: false,
@@ -496,7 +508,100 @@ describe('StartPreparationUseCase', () => {
496
508
  mockIssueRepository.getStoryObjectMap.mockResolvedValue(
497
509
  createMockStoryObjectMap(awaitingIssues),
498
510
  );
499
- mockIssueRepository.findRelatedOpenPRs.mockResolvedValue([pr1, pr2]);
511
+ mockIssueRepository.findRelatedOpenPRs.mockResolvedValue([
512
+ olderPR,
513
+ newerPR,
514
+ ]);
515
+ mockLocalCommandRunner.runCommand.mockResolvedValue({
516
+ stdout: '',
517
+ stderr: '',
518
+ exitCode: 0,
519
+ });
520
+ await useCase.run({
521
+ projectUrl: 'https://github.com/user/repo',
522
+ awaitingWorkspaceStatus: 'Awaiting Workspace',
523
+ preparationStatus: 'Preparation',
524
+ defaultAgentName: 'agent1',
525
+ defaultLlmModelName: 'claude-opus',
526
+ defaultLlmAgentName: null,
527
+ configFilePath: '/path/to/config.yml',
528
+ maximumPreparingIssuesCount: null,
529
+ utilizationPercentageThreshold: 90,
530
+ allowedIssueAuthors: null,
531
+ codexHomeCandidates: null,
532
+ allowIssueCacheMinutes: 0,
533
+ });
534
+ expect(mockIssueRepository.closePullRequest).toHaveBeenCalledWith(
535
+ newerPR.url,
536
+ );
537
+ expect(mockIssueRepository.deletePullRequestBranch).toHaveBeenCalledWith(
538
+ newerPR.url,
539
+ newerPR.branchName,
540
+ );
541
+ expect(mockIssueRepository.createCommentByUrl).toHaveBeenCalledWith(
542
+ newerPR.url,
543
+ expect.stringContaining(olderPR.url),
544
+ );
545
+ expect(mockIssueRepository.createCommentByUrl).toHaveBeenCalledWith(
546
+ 'https://github.com/user/repo/issues/1',
547
+ expect.stringContaining(newerPR.url),
548
+ );
549
+ expect(mockIssueRepository.closePullRequest).not.toHaveBeenCalledWith(
550
+ olderPR.url,
551
+ );
552
+ expect(mockLocalCommandRunner.runCommand.mock.calls).toHaveLength(1);
553
+ expect(mockLocalCommandRunner.runCommand.mock.calls[0]).toEqual([
554
+ 'aw',
555
+ [
556
+ 'https://github.com/user/repo/issues/1',
557
+ 'impl',
558
+ 'claude-opus',
559
+ '--configFilePath',
560
+ '/path/to/config.yml',
561
+ '--branch',
562
+ 'i1',
563
+ ],
564
+ ]);
565
+ });
566
+ it('should skip issue after resolving duplicates when adopted canonical PR has null branchName', async () => {
567
+ const awaitingIssues: Issue[] = [
568
+ createMockIssue({
569
+ url: 'https://github.com/user/repo/issues/1',
570
+ title: 'Issue 1',
571
+ labels: ['category:impl'],
572
+ status: 'Awaiting Workspace',
573
+ }),
574
+ ];
575
+ const olderPRNullBranch: RelatedPullRequest = {
576
+ url: 'https://github.com/user/repo/pull/42',
577
+ branchName: null,
578
+ createdAt: new Date('2024-01-01T00:00:00Z'),
579
+ isConflicted: false,
580
+ isPassedAllCiJob: false,
581
+ isCiStateSuccess: false,
582
+ isResolvedAllReviewComments: false,
583
+ isBranchOutOfDate: false,
584
+ missingRequiredCheckNames: [],
585
+ };
586
+ const newerPR: RelatedPullRequest = {
587
+ url: 'https://github.com/user/repo/pull/43',
588
+ branchName: 'i1-fix',
589
+ createdAt: new Date('2024-01-02T00:00:00Z'),
590
+ isConflicted: false,
591
+ isPassedAllCiJob: false,
592
+ isCiStateSuccess: false,
593
+ isResolvedAllReviewComments: false,
594
+ isBranchOutOfDate: false,
595
+ missingRequiredCheckNames: [],
596
+ };
597
+ mockProjectRepository.getByUrl.mockResolvedValue(mockProject);
598
+ mockIssueRepository.getStoryObjectMap.mockResolvedValue(
599
+ createMockStoryObjectMap(awaitingIssues),
600
+ );
601
+ mockIssueRepository.findRelatedOpenPRs.mockResolvedValue([
602
+ olderPRNullBranch,
603
+ newerPR,
604
+ ]);
500
605
  const consoleWarnSpy = jest
501
606
  .spyOn(console, 'warn')
502
607
  .mockImplementation(() => {});
@@ -514,10 +619,22 @@ describe('StartPreparationUseCase', () => {
514
619
  codexHomeCandidates: null,
515
620
  allowIssueCacheMinutes: 0,
516
621
  });
622
+ expect(mockIssueRepository.closePullRequest).toHaveBeenCalledWith(
623
+ newerPR.url,
624
+ );
625
+ expect(mockIssueRepository.createCommentByUrl).toHaveBeenCalledWith(
626
+ newerPR.url,
627
+ expect.stringContaining(olderPRNullBranch.url),
628
+ );
629
+ expect(mockIssueRepository.createCommentByUrl).toHaveBeenCalledWith(
630
+ 'https://github.com/user/repo/issues/1',
631
+ expect.stringContaining(newerPR.url),
632
+ );
517
633
  expect(mockLocalCommandRunner.runCommand.mock.calls).toHaveLength(0);
518
- expect(mockIssueRepository.updateStatus.mock.calls).toHaveLength(0);
519
634
  expect(consoleWarnSpy).toHaveBeenCalledWith(
520
- 'Skipping issue url1: 2 related open PRs found (ambiguous).',
635
+ expect.stringContaining(
636
+ 'adopted canonical PR has unavailable head branch',
637
+ ),
521
638
  );
522
639
  consoleWarnSpy.mockRestore();
523
640
  });
@@ -533,6 +650,7 @@ describe('StartPreparationUseCase', () => {
533
650
  const prWithNullBranch: RelatedPullRequest = {
534
651
  url: 'https://github.com/user/repo/pull/42',
535
652
  branchName: null,
653
+ createdAt: new Date('2024-01-01'),
536
654
  isConflicted: false,
537
655
  isPassedAllCiJob: false,
538
656
  isCiStateSuccess: false,
@@ -15,6 +15,9 @@ export class StartPreparationUseCase {
15
15
  | 'updateStatus'
16
16
  | 'findRelatedOpenPRs'
17
17
  | 'getOpenPullRequest'
18
+ | 'closePullRequest'
19
+ | 'deletePullRequestBranch'
20
+ | 'createCommentByUrl'
18
21
  >,
19
22
  private readonly claudeRepository: Pick<ClaudeRepository, 'getUsage'>,
20
23
  private readonly localCommandRunner: LocalCommandRunner,
@@ -202,10 +205,36 @@ export class StartPreparationUseCase {
202
205
  issue.url,
203
206
  );
204
207
  if (relatedPRs.length > 1) {
205
- console.warn(
206
- `Skipping issue ${issue.url}: ${relatedPRs.length} related open PRs found (ambiguous).`,
208
+ const sortedPRs = [...relatedPRs].sort(
209
+ (a, b) => a.createdAt.getTime() - b.createdAt.getTime(),
207
210
  );
208
- continue;
211
+ const canonicalPR = sortedPRs[0];
212
+ const duplicatePRs = sortedPRs.slice(1);
213
+ for (const duplicatePR of duplicatePRs) {
214
+ await this.issueRepository.closePullRequest(duplicatePR.url);
215
+ if (duplicatePR.branchName !== null) {
216
+ await this.issueRepository.deletePullRequestBranch(
217
+ duplicatePR.url,
218
+ duplicatePR.branchName,
219
+ );
220
+ }
221
+ await this.issueRepository.createCommentByUrl(
222
+ duplicatePR.url,
223
+ `This PR was automatically closed to resolve multiple-open-PR ambiguity for issue ${issue.url}. The adopted canonical PR is ${canonicalPR.url}.`,
224
+ );
225
+ }
226
+ const removedPrUrls = duplicatePRs.map((pr) => pr.url).join(', ');
227
+ await this.issueRepository.createCommentByUrl(
228
+ issue.url,
229
+ `${duplicatePRs.length} duplicate PR(s) were automatically closed to resolve multiple-open-PR ambiguity.\n\nRemoved PRs: ${removedPrUrls}\nAdopted PR: ${canonicalPR.url}`,
230
+ );
231
+ if (canonicalPR.branchName === null) {
232
+ console.warn(
233
+ `Skipping issue ${issue.url}: adopted canonical PR has unavailable head branch.`,
234
+ );
235
+ continue;
236
+ }
237
+ branchName = canonicalPR.branchName;
209
238
  } else if (relatedPRs.length === 1) {
210
239
  if (relatedPRs[0].branchName === null) {
211
240
  console.warn(
@@ -6,6 +6,7 @@ import { StoryObjectMap } from '../../entities/StoryObjectMap';
6
6
  export type RelatedPullRequest = {
7
7
  url: string;
8
8
  branchName: string | null;
9
+ createdAt: Date;
9
10
  isConflicted: boolean;
10
11
  isPassedAllCiJob: boolean;
11
12
  isCiStateSuccess: boolean;
@@ -73,6 +74,12 @@ export interface IssueRepository {
73
74
  update: (issue: Issue, project: Project) => Promise<void>;
74
75
  findRelatedOpenPRs: (issueUrl: string) => Promise<RelatedPullRequest[]>;
75
76
  getOpenPullRequest: (prUrl: string) => Promise<RelatedPullRequest | null>;
77
+ closePullRequest: (prUrl: string) => Promise<void>;
78
+ deletePullRequestBranch: (prUrl: string, branchName: string) => Promise<void>;
79
+ createCommentByUrl: (
80
+ issueOrPrUrl: string,
81
+ commentBody: string,
82
+ ) => Promise<void>;
76
83
  getAllOpened: (project: Project) => Promise<Issue[]>;
77
84
  getStoryObjectMap: (
78
85
  project: Project,
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/adapter/entry-points/cli/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EACL,UAAU,EACV,cAAc,EACd,wBAAwB,EACxB,YAAY,EACZ,kBAAkB,GACnB,MAAM,iBAAiB,CAAC;AAwEzB,eAAO,MAAM,OAAO,SAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/adapter/entry-points/cli/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EACL,UAAU,EACV,cAAc,EACd,wBAAwB,EACxB,YAAY,EACZ,kBAAkB,GACnB,MAAM,iBAAiB,CAAC;AAuEzB,eAAO,MAAM,OAAO,SAAgB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"GetStoryObjectMapUseCaseHandler.d.ts","sourceRoot":"","sources":["../../../../src/adapter/entry-points/handlers/GetStoryObjectMapUseCaseHandler.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,KAAK,EAAE,MAAM,gCAAgC,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,kCAAkC,CAAC;AAI3D,OAAO,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AAEzE,qBAAa,+BAA+B;IAC1C,MAAM,GACJ,gBAAgB,MAAM,EACtB,UAAU,OAAO,EACjB,oBAAoB,MAAM,KACzB,OAAO,CAAC;QACT,OAAO,EAAE,OAAO,CAAC;QACjB,MAAM,EAAE,KAAK,EAAE,CAAC;QAChB,SAAS,EAAE,OAAO,CAAC;QACnB,cAAc,EAAE,cAAc,CAAC;KAChC,CAAC,CAsEA;CACH"}
1
+ {"version":3,"file":"GetStoryObjectMapUseCaseHandler.d.ts","sourceRoot":"","sources":["../../../../src/adapter/entry-points/handlers/GetStoryObjectMapUseCaseHandler.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,KAAK,EAAE,MAAM,gCAAgC,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,kCAAkC,CAAC;AAG3D,OAAO,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AAEzE,qBAAa,+BAA+B;IAC1C,MAAM,GACJ,gBAAgB,MAAM,EACtB,UAAU,OAAO,EACjB,oBAAoB,MAAM,KACzB,OAAO,CAAC;QACT,OAAO,EAAE,OAAO,CAAC;QACjB,MAAM,EAAE,KAAK,EAAE,CAAC;QAChB,SAAS,EAAE,OAAO,CAAC;QACnB,cAAc,EAAE,cAAc,CAAC;KAChC,CAAC,CAqEA;CACH"}
@@ -1 +1 @@
1
- {"version":3,"file":"HandleScheduledEventUseCaseHandler.d.ts","sourceRoot":"","sources":["../../../../src/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.ts"],"names":[],"mappings":"AAqBA,OAAO,EAAE,KAAK,EAAE,MAAM,gCAAgC,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,kCAAkC,CAAC;AAqB3D,qBAAa,kCAAkC;IAC7C,MAAM,GACJ,gBAAgB,MAAM,EACtB,UAAU,OAAO,KAChB,OAAO,CAAC;QACT,OAAO,EAAE,OAAO,CAAC;QACjB,MAAM,EAAE,KAAK,EAAE,CAAC;QAChB,SAAS,EAAE,OAAO,CAAC;QACnB,eAAe,EAAE,IAAI,EAAE,CAAC;KACzB,GAAG,IAAI,CAAC,CAqQP;CACH"}
1
+ {"version":3,"file":"HandleScheduledEventUseCaseHandler.d.ts","sourceRoot":"","sources":["../../../../src/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.ts"],"names":[],"mappings":"AAqBA,OAAO,EAAE,KAAK,EAAE,MAAM,gCAAgC,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,kCAAkC,CAAC;AAoB3D,qBAAa,kCAAkC;IAC7C,MAAM,GACJ,gBAAgB,MAAM,EACtB,UAAU,OAAO,KAChB,OAAO,CAAC;QACT,OAAO,EAAE,OAAO,CAAC;QACjB,MAAM,EAAE,KAAK,EAAE,CAAC;QAChB,SAAS,EAAE,OAAO,CAAC;QACnB,eAAe,EAAE,IAAI,EAAE,CAAC;KACzB,GAAG,IAAI,CAAC,CAoQP;CACH"}
@@ -17,7 +17,6 @@ export declare class BaseGitHubRepository {
17
17
  readonly ghUserPassword: string | undefined;
18
18
  readonly ghAuthenticatorKey: string | undefined;
19
19
  cookie: string | null;
20
- protected cookieRefreshRetryDelayMs: number;
21
20
  constructor(localStorageRepository: LocalStorageRepository, jsonFilePath?: string, ghToken?: string, ghUserName?: string | undefined, ghUserPassword?: string | undefined, ghAuthenticatorKey?: string | undefined);
22
21
  protected extractIssueFromUrl: (issueUrl: string) => {
23
22
  owner: string;
@@ -1 +1 @@
1
- {"version":3,"file":"BaseGitHubRepository.d.ts","sourceRoot":"","sources":["../../../src/adapter/repositories/BaseGitHubRepository.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAGlE,UAAU,MAAM;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;CACtC;AAED,qBAAa,oBAAoB;IAI7B,QAAQ,CAAC,sBAAsB,EAAE,sBAAsB;IACvD,QAAQ,CAAC,YAAY,EAAE,MAAM;IAC7B,QAAQ,CAAC,OAAO,EAAE,MAAM;IACxB,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS;IACvC,QAAQ,CAAC,cAAc,EAAE,MAAM,GAAG,SAAS;IAC3C,QAAQ,CAAC,kBAAkB,EAAE,MAAM,GAAG,SAAS;IARjD,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,SAAS,CAAC,yBAAyB,SAAQ;gBAEhC,sBAAsB,EAAE,sBAAsB,EAC9C,YAAY,GAAE,MAAwC,EACtD,OAAO,GAAE,MAAwC,EACjD,UAAU,GAAE,MAAM,GAAG,SAAoC,EACzD,cAAc,GAAE,MAAM,GAAG,SAAwC,EACjE,kBAAkB,GAAE,MAAM,GAAG,SACf;IAIzB,SAAS,CAAC,mBAAmB,GAC3B,UAAU,MAAM,KACf;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAevE;IAEF,SAAS,QAAa,OAAO,CAAC,MAAM,CAAC,CAKnC;IACF,YAAY,QAAa,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAwBtD;IACF,SAAS,CAAC,0BAA0B,QAAa,OAAO,CAAC,MAAM,CAAC,CAqB9D;IACF,SAAS,CAAC,QAAQ,GAAI,QAAQ,MAAM,KAAG,MAAM,IAAI,MAAM,CAoBrD;IAEF,SAAS,CAAC,4BAA4B,GACpC,YAAY,OAAO,KAClB,OAAO,CAAC,MAAM,CAAC,CAmChB;IACF,aAAa,QAAa,OAAO,CAAC,IAAI,CAAC,CA0BrC;CACH"}
1
+ {"version":3,"file":"BaseGitHubRepository.d.ts","sourceRoot":"","sources":["../../../src/adapter/repositories/BaseGitHubRepository.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAGlE,UAAU,MAAM;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;CACtC;AAED,qBAAa,oBAAoB;IAG7B,QAAQ,CAAC,sBAAsB,EAAE,sBAAsB;IACvD,QAAQ,CAAC,YAAY,EAAE,MAAM;IAC7B,QAAQ,CAAC,OAAO,EAAE,MAAM;IACxB,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS;IACvC,QAAQ,CAAC,cAAc,EAAE,MAAM,GAAG,SAAS;IAC3C,QAAQ,CAAC,kBAAkB,EAAE,MAAM,GAAG,SAAS;IAPjD,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;gBAEX,sBAAsB,EAAE,sBAAsB,EAC9C,YAAY,GAAE,MAAwC,EACtD,OAAO,GAAE,MAAwC,EACjD,UAAU,GAAE,MAAM,GAAG,SAAoC,EACzD,cAAc,GAAE,MAAM,GAAG,SAAwC,EACjE,kBAAkB,GAAE,MAAM,GAAG,SACf;IAIzB,SAAS,CAAC,mBAAmB,GAC3B,UAAU,MAAM,KACf;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAevE;IAEF,SAAS,QAAa,OAAO,CAAC,MAAM,CAAC,CAKnC;IACF,YAAY,QAAa,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAwBtD;IACF,SAAS,CAAC,0BAA0B,QAAa,OAAO,CAAC,MAAM,CAAC,CAS9D;IACF,SAAS,CAAC,QAAQ,GAAI,QAAQ,MAAM,KAAG,MAAM,IAAI,MAAM,CAoBrD;IAEF,SAAS,CAAC,4BAA4B,GACpC,YAAY,OAAO,KAClB,OAAO,CAAC,MAAM,CAAC,CAmChB;IACF,aAAa,QAAa,OAAO,CAAC,IAAI,CAAC,CAYrC;CACH"}
@@ -1,7 +1,7 @@
1
1
  import { BaseGitHubRepository } from './BaseGitHubRepository';
2
2
  import { ProjectRepository } from '../../domain/usecases/adapter-interfaces/ProjectRepository';
3
- import { Project } from '../../domain/entities/Project';
4
- export declare class GraphqlProjectRepository extends BaseGitHubRepository implements Pick<ProjectRepository, 'getProject' | 'findProjectIdByUrl' | 'getByUrl'> {
3
+ import { FieldOption, Project } from '../../domain/entities/Project';
4
+ export declare class GraphqlProjectRepository extends BaseGitHubRepository implements Pick<ProjectRepository, 'getProject' | 'findProjectIdByUrl' | 'getByUrl' | 'updateStoryList'> {
5
5
  extractProjectFromUrl: (projectUrl: string) => {
6
6
  owner: string;
7
7
  projectNumber: number;
@@ -10,5 +10,8 @@ export declare class GraphqlProjectRepository extends BaseGitHubRepository imple
10
10
  findProjectIdByUrl: (projectUrl: string) => Promise<Project["id"] | null>;
11
11
  getProject: (projectId: Project["id"]) => Promise<Project | null>;
12
12
  getByUrl: (url: string) => Promise<Project>;
13
+ updateStoryList: (project: Project, newStoryList: (Omit<FieldOption, "id"> & {
14
+ id: FieldOption["id"] | null;
15
+ })[]) => Promise<FieldOption[]>;
13
16
  }
14
17
  //# sourceMappingURL=GraphqlProjectRepository.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"GraphqlProjectRepository.d.ts","sourceRoot":"","sources":["../../../src/adapter/repositories/GraphqlProjectRepository.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,4DAA4D,CAAC;AAC/F,OAAO,EAAe,OAAO,EAAE,MAAM,+BAA+B,CAAC;AAGrE,qBAAa,wBACX,SAAQ,oBACR,YACE,IAAI,CAAC,iBAAiB,EAAE,YAAY,GAAG,oBAAoB,GAAG,UAAU,CAAC;IAE3E,qBAAqB,GACnB,YAAY,MAAM,KACjB;QACD,KAAK,EAAE,MAAM,CAAC;QACd,aAAa,EAAE,MAAM,CAAC;KACvB,CAMC;IACF,cAAc,GACZ,OAAO,MAAM,EACb,eAAe,MAAM,KACpB,OAAO,CAAC,MAAM,CAAC,CAqDhB;IACF,kBAAkB,GAChB,YAAY,MAAM,KACjB,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAG9B;IACF,UAAU,GAAU,WAAW,OAAO,CAAC,IAAI,CAAC,KAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAkNpE;IACF,QAAQ,GAAU,KAAK,MAAM,KAAG,OAAO,CAAC,OAAO,CAAC,CAU9C;CACH"}
1
+ {"version":3,"file":"GraphqlProjectRepository.d.ts","sourceRoot":"","sources":["../../../src/adapter/repositories/GraphqlProjectRepository.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,4DAA4D,CAAC;AAC/F,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AAGrE,qBAAa,wBACX,SAAQ,oBACR,YACE,IAAI,CACF,iBAAiB,EACjB,YAAY,GAAG,oBAAoB,GAAG,UAAU,GAAG,iBAAiB,CACrE;IAEH,qBAAqB,GACnB,YAAY,MAAM,KACjB;QACD,KAAK,EAAE,MAAM,CAAC;QACd,aAAa,EAAE,MAAM,CAAC;KACvB,CAMC;IACF,cAAc,GACZ,OAAO,MAAM,EACb,eAAe,MAAM,KACpB,OAAO,CAAC,MAAM,CAAC,CAqDhB;IACF,kBAAkB,GAChB,YAAY,MAAM,KACjB,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAG9B;IACF,UAAU,GAAU,WAAW,OAAO,CAAC,IAAI,CAAC,KAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAkNpE;IACF,QAAQ,GAAU,KAAK,MAAM,KAAG,OAAO,CAAC,OAAO,CAAC,CAU9C;IACF,eAAe,GACb,SAAS,OAAO,EAChB,cAAc,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,GAAG;QACvC,EAAE,EAAE,WAAW,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;KAC9B,CAAC,EAAE,KACH,OAAO,CAAC,WAAW,EAAE,CAAC,CA+CvB;CACH"}
@@ -53,5 +53,8 @@ export declare class ApiV3CheerioRestIssueRepository extends BaseGitHubRepositor
53
53
  getAllOpened: (project: Project) => Promise<Issue[]>;
54
54
  getStoryObjectMap: (project: Project, allowCacheMinutes: number) => Promise<StoryObjectMap>;
55
55
  getOpenPullRequest: (prUrl: string) => Promise<RelatedPullRequest | null>;
56
+ closePullRequest: (prUrl: string) => Promise<void>;
57
+ deletePullRequestBranch: (prUrl: string, branchName: string) => Promise<void>;
58
+ createCommentByUrl: (issueOrPrUrl: string, commentBody: string) => Promise<void>;
56
59
  }
57
60
  //# sourceMappingURL=ApiV3CheerioRestIssueRepository.d.ts.map
@@ -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":"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"}
@@ -7,7 +7,7 @@ export declare class StartPreparationUseCase {
7
7
  private readonly issueRepository;
8
8
  private readonly claudeRepository;
9
9
  private readonly localCommandRunner;
10
- constructor(projectRepository: Pick<ProjectRepository, 'getByUrl' | 'prepareStatus'>, issueRepository: Pick<IssueRepository, 'getStoryObjectMap' | 'updateStatus' | 'findRelatedOpenPRs' | 'getOpenPullRequest'>, claudeRepository: Pick<ClaudeRepository, 'getUsage'>, localCommandRunner: LocalCommandRunner);
10
+ constructor(projectRepository: Pick<ProjectRepository, 'getByUrl' | 'prepareStatus'>, issueRepository: Pick<IssueRepository, 'getStoryObjectMap' | 'updateStatus' | 'findRelatedOpenPRs' | 'getOpenPullRequest' | 'closePullRequest' | 'deletePullRequestBranch' | 'createCommentByUrl'>, claudeRepository: Pick<ClaudeRepository, 'getUsage'>, localCommandRunner: LocalCommandRunner);
11
11
  run: (params: {
12
12
  projectUrl: string;
13
13
  awaitingWorkspaceStatus: string;
@@ -1 +1 @@
1
- {"version":3,"file":"StartPreparationUseCase.d.ts","sourceRoot":"","sources":["../../../src/domain/usecases/StartPreparationUseCase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAC7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,uCAAuC,CAAC;AAEzE,qBAAa,uBAAuB;IAEhC,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAIlC,OAAO,CAAC,QAAQ,CAAC,eAAe;IAOhC,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,kBAAkB;gBAZlB,iBAAiB,EAAE,IAAI,CACtC,iBAAiB,EACjB,UAAU,GAAG,eAAe,CAC7B,EACgB,eAAe,EAAE,IAAI,CACpC,eAAe,EACb,mBAAmB,GACnB,cAAc,GACd,oBAAoB,GACpB,oBAAoB,CACvB,EACgB,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,EAAE,UAAU,CAAC,EACpD,kBAAkB,EAAE,kBAAkB;IAGzD,GAAG,GAAU,QAAQ;QACnB,UAAU,EAAE,MAAM,CAAC;QACnB,uBAAuB,EAAE,MAAM,CAAC;QAChC,iBAAiB,EAAE,MAAM,CAAC;QAC1B,gBAAgB,EAAE,MAAM,CAAC;QACzB,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;QACnC,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;QACnC,cAAc,EAAE,MAAM,CAAC;QACvB,2BAA2B,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3C,8BAA8B,EAAE,MAAM,CAAC;QACvC,mBAAmB,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;QACrC,mBAAmB,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;QACrC,sBAAsB,EAAE,MAAM,CAAC;KAChC,KAAG,OAAO,CAAC,IAAI,CAAC,CA+Nf;CACH"}
1
+ {"version":3,"file":"StartPreparationUseCase.d.ts","sourceRoot":"","sources":["../../../src/domain/usecases/StartPreparationUseCase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAC7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,uCAAuC,CAAC;AAEzE,qBAAa,uBAAuB;IAEhC,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAIlC,OAAO,CAAC,QAAQ,CAAC,eAAe;IAUhC,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,kBAAkB;gBAflB,iBAAiB,EAAE,IAAI,CACtC,iBAAiB,EACjB,UAAU,GAAG,eAAe,CAC7B,EACgB,eAAe,EAAE,IAAI,CACpC,eAAe,EACb,mBAAmB,GACnB,cAAc,GACd,oBAAoB,GACpB,oBAAoB,GACpB,kBAAkB,GAClB,yBAAyB,GACzB,oBAAoB,CACvB,EACgB,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,EAAE,UAAU,CAAC,EACpD,kBAAkB,EAAE,kBAAkB;IAGzD,GAAG,GAAU,QAAQ;QACnB,UAAU,EAAE,MAAM,CAAC;QACnB,uBAAuB,EAAE,MAAM,CAAC;QAChC,iBAAiB,EAAE,MAAM,CAAC;QAC1B,gBAAgB,EAAE,MAAM,CAAC;QACzB,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;QACnC,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;QACnC,cAAc,EAAE,MAAM,CAAC;QACvB,2BAA2B,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3C,8BAA8B,EAAE,MAAM,CAAC;QACvC,mBAAmB,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;QACrC,mBAAmB,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;QACrC,sBAAsB,EAAE,MAAM,CAAC;KAChC,KAAG,OAAO,CAAC,IAAI,CAAC,CAyPf;CACH"}
@@ -5,6 +5,7 @@ import { StoryObjectMap } from '../../entities/StoryObjectMap';
5
5
  export type RelatedPullRequest = {
6
6
  url: string;
7
7
  branchName: string | null;
8
+ createdAt: Date;
8
9
  isConflicted: boolean;
9
10
  isPassedAllCiJob: boolean;
10
11
  isCiStateSuccess: boolean;
@@ -38,6 +39,9 @@ export interface IssueRepository {
38
39
  update: (issue: Issue, project: Project) => Promise<void>;
39
40
  findRelatedOpenPRs: (issueUrl: string) => Promise<RelatedPullRequest[]>;
40
41
  getOpenPullRequest: (prUrl: string) => Promise<RelatedPullRequest | null>;
42
+ closePullRequest: (prUrl: string) => Promise<void>;
43
+ deletePullRequestBranch: (prUrl: string, branchName: string) => Promise<void>;
44
+ createCommentByUrl: (issueOrPrUrl: string, commentBody: string) => Promise<void>;
41
45
  getAllOpened: (project: Project) => Promise<Issue[]>;
42
46
  getStoryObjectMap: (project: Project, allowCacheMinutes: number) => Promise<StoryObjectMap>;
43
47
  }
@@ -1 +1 @@
1
- {"version":3,"file":"IssueRepository.d.ts","sourceRoot":"","sources":["../../../../src/domain/usecases/adapter-interfaces/IssueRepository.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"IssueRepository.d.ts","sourceRoot":"","sources":["../../../../src/domain/usecases/adapter-interfaces/IssueRepository.ts"],"names":[],"mappings":"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"}
@@ -1,45 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.CheerioProjectRepository = void 0;
7
- const ky_1 = __importDefault(require("ky"));
8
- const BaseGitHubRepository_1 = require("./BaseGitHubRepository");
9
- class CheerioProjectRepository extends BaseGitHubRepository_1.BaseGitHubRepository {
10
- constructor(localStorageRepository, jsonFilePath = './tmp/github.com.cookies.json', ghToken = process.env.GH_TOKEN || 'dummy', ghUserName = process.env.GH_USER_NAME, ghUserPassword = process.env.GH_USER_PASSWORD, ghAuthenticatorKey = process.env
11
- .GH_AUTHENTICATOR_KEY) {
12
- super(localStorageRepository, jsonFilePath, ghToken, ghUserName, ghUserPassword, ghAuthenticatorKey);
13
- this.localStorageRepository = localStorageRepository;
14
- this.jsonFilePath = jsonFilePath;
15
- this.ghToken = ghToken;
16
- this.ghUserName = ghUserName;
17
- this.ghUserPassword = ghUserPassword;
18
- this.ghAuthenticatorKey = ghAuthenticatorKey;
19
- this.updateStoryList = async (project, newStoryList) => {
20
- const browserHeaders = await this.createHeader();
21
- const raw = await ky_1.default
22
- .put(`https://github.com/memexes/${project.databaseId}/columns`, {
23
- json: {
24
- memexProjectColumnId: project.story?.databaseId,
25
- settings: { width: 200, options: newStoryList },
26
- },
27
- headers: {
28
- 'github-verified-fetch': 'true',
29
- origin: 'https://github.com',
30
- 'x-requested-with': 'XMLHttpRequest',
31
- ...browserHeaders,
32
- },
33
- })
34
- .json();
35
- return raw.memexProjectColumn.settings.options.map((v) => ({
36
- id: v.id,
37
- name: v.name,
38
- color: v.color,
39
- description: v.description,
40
- }));
41
- };
42
- }
43
- }
44
- exports.CheerioProjectRepository = CheerioProjectRepository;
45
- //# sourceMappingURL=CheerioProjectRepository.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CheerioProjectRepository.js","sourceRoot":"","sources":["../../../src/adapter/repositories/CheerioProjectRepository.ts"],"names":[],"mappings":";;;;;;AAAA,4CAAoB;AACpB,iEAA8D;AAK9D,MAAa,wBACX,SAAQ,2CAAoB;IAG5B,YACW,sBAA8C,EAC9C,eAAuB,+BAA+B,EACtD,UAAkB,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,OAAO,EACjD,aAAiC,OAAO,CAAC,GAAG,CAAC,YAAY,EACzD,iBAAqC,OAAO,CAAC,GAAG,CAAC,gBAAgB,EACjE,qBAAyC,OAAO,CAAC,GAAG;SAC1D,oBAAoB;QAEvB,KAAK,CACH,sBAAsB,EACtB,YAAY,EACZ,OAAO,EACP,UAAU,EACV,cAAc,EACd,kBAAkB,CACnB,CAAC;QAfO,2BAAsB,GAAtB,sBAAsB,CAAwB;QAC9C,iBAAY,GAAZ,YAAY,CAA0C;QACtD,YAAO,GAAP,OAAO,CAA0C;QACjD,eAAU,GAAV,UAAU,CAA+C;QACzD,mBAAc,GAAd,cAAc,CAAmD;QACjE,uBAAkB,GAAlB,kBAAkB,CACJ;QAWzB,oBAAe,GAAG,KAAK,EACrB,OAAgB,EAChB,YAEI,EACoB,EAAE;YAC1B,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;YACjD,MAAM,GAAG,GAAG,MAAM,YAAE;iBACjB,GAAG,CAAC,8BAA8B,OAAO,CAAC,UAAU,UAAU,EAAE;gBAC/D,IAAI,EAAE;oBACJ,oBAAoB,EAAE,OAAO,CAAC,KAAK,EAAE,UAAU;oBAC/C,QAAQ,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,YAAY,EAAE;iBAChD;gBACD,OAAO,EAAE;oBACP,uBAAuB,EAAE,MAAM;oBAC/B,MAAM,EAAE,oBAAoB;oBAC5B,kBAAkB,EAAE,gBAAgB;oBACpC,GAAG,cAAc;iBAClB;aACF,CAAC;iBACD,IAAI,EAQD,CAAC;YACP,OAAO,GAAG,CAAC,kBAAkB,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACzD,EAAE,EAAE,CAAC,CAAC,EAAE;gBACR,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,KAAK,EAAE,CAAC,CAAC,KAAK;gBACd,WAAW,EAAE,CAAC,CAAC,WAAW;aAC3B,CAAC,CAAC,CAAC;QACN,CAAC,CAAC;IApCF,CAAC;CAqCF;AA1DD,4DA0DC"}
@@ -1,122 +0,0 @@
1
- import { CheerioProjectRepository } from './CheerioProjectRepository';
2
- import dotenv from 'dotenv';
3
- import { LocalStorageRepository } from './LocalStorageRepository';
4
- import { FieldOption, Project } from '../../domain/entities/Project';
5
-
6
- dotenv.config();
7
-
8
- describe('CheerioProjectRepository', () => {
9
- jest.setTimeout(60 * 1000);
10
- const localStorageRepository = new LocalStorageRepository();
11
-
12
- const repository = new CheerioProjectRepository(
13
- localStorageRepository,
14
- './tmp/github.com.cookies.json',
15
- process.env.GH_TOKEN,
16
- );
17
- beforeAll(async () => {
18
- await repository.refreshCookie();
19
- });
20
- beforeEach(async () => {
21
- await new Promise((resolve) => setTimeout(resolve, 2000));
22
- });
23
-
24
- describe('updateStoryList', () => {
25
- it('success', async () => {
26
- const project: Project = {
27
- completionDate50PercentConfidence: null,
28
- dependedIssueUrlSeparatedByComma: null,
29
- id: 'PVT_kwHOAGJHa84AFhgF',
30
- url: 'https://github.com/users/HiromiShikata/projects/49',
31
- databaseId: 1447941,
32
- name: 'V2 project on owner for testing',
33
- nextActionDate: {
34
- fieldId: 'PVTF_lAHOAGJHa84AFhgFzgVlnK4',
35
- name: 'NextActionDate',
36
- },
37
- nextActionHour: null,
38
- remainingEstimationMinutes: null,
39
- status: {
40
- fieldId: 'PVTSSF_lAHOAGJHa84AFhgFzgDLt0c',
41
- name: 'Status',
42
- statuses: [
43
- {
44
- color: 'GRAY',
45
- description: '',
46
- id: 'f75ad846',
47
- name: 'Todo',
48
- },
49
- {
50
- color: 'GRAY',
51
- description: '',
52
- id: '47fc9ee4',
53
- name: 'In Progress',
54
- },
55
- {
56
- color: 'GRAY',
57
- description: '',
58
- id: '98236657',
59
- name: 'Done',
60
- },
61
- ],
62
- },
63
- story: {
64
- fieldId: 'PVTSSF_lAHOAGJHa84AFhgFzg1oBms',
65
- databaseId: 224921195,
66
- name: 'Story',
67
- stories: [
68
- {
69
- color: 'GRAY',
70
- description: '',
71
- id: 'af410dae',
72
- name: 'story1',
73
- },
74
- {
75
- color: 'GRAY',
76
- description: '',
77
- id: '696ccdef',
78
- name: 'Workflow Management',
79
- },
80
- {
81
- color: 'GRAY',
82
- description: '',
83
- id: '4fa21881',
84
- name: 'test',
85
- },
86
- ],
87
- workflowManagementStory: {
88
- id: '696ccdef',
89
- name: 'Workflow Management',
90
- },
91
- },
92
- };
93
-
94
- const storyOption: Omit<FieldOption, 'id'> & { id: null } = {
95
- id: null,
96
- name: 'test-story-from-unit-test',
97
- color: 'BLUE',
98
- description: 'created by unit test',
99
- };
100
- const story = project.story;
101
- if (!story) {
102
- throw new Error('story is null');
103
- }
104
- const newStoryList: Parameters<typeof repository.updateStoryList>['1'] =
105
- [];
106
- newStoryList.push(...story.stories.slice(0, 2), storyOption);
107
-
108
- const res = await repository.updateStoryList(project, newStoryList);
109
- expect(res[0]).toEqual(newStoryList[0]);
110
- expect(res[1]).toEqual(newStoryList[1]);
111
- expect(res[1].id).toBeDefined();
112
- expect(res[2].name).toEqual(newStoryList[2].name);
113
- expect(res[2].color).toEqual(newStoryList[2].color);
114
- expect(res[2].description).toEqual(newStoryList[2].description);
115
- const resRemoved = await repository.updateStoryList(
116
- project,
117
- story.stories,
118
- );
119
- expect(resRemoved).toEqual(story.stories);
120
- });
121
- });
122
- });