github-issue-tower-defence-management 1.2.0 → 1.4.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 (76) hide show
  1. package/.github/workflows/assign-all-cards-to-owner.yml +1 -1
  2. package/CHANGELOG.md +35 -0
  3. package/bin/adapter/entry-points/cli/index.js +2 -1
  4. package/bin/adapter/entry-points/cli/index.js.map +1 -1
  5. package/bin/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.js +14 -2
  6. package/bin/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.js.map +1 -1
  7. package/bin/adapter/repositories/BaseGitHubRepository.js +0 -7
  8. package/bin/adapter/repositories/BaseGitHubRepository.js.map +1 -1
  9. package/bin/adapter/repositories/GraphqlProjectRepository.js +14 -0
  10. package/bin/adapter/repositories/GraphqlProjectRepository.js.map +1 -1
  11. package/bin/adapter/repositories/issue/ApiV3CheerioRestIssueRepository.js +9 -1
  12. package/bin/adapter/repositories/issue/ApiV3CheerioRestIssueRepository.js.map +1 -1
  13. package/bin/adapter/repositories/issue/ApiV3IssueRepository.js +17 -0
  14. package/bin/adapter/repositories/issue/ApiV3IssueRepository.js.map +1 -1
  15. package/bin/adapter/repositories/issue/InternalGraphqlIssueRepository.js +19 -5
  16. package/bin/adapter/repositories/issue/InternalGraphqlIssueRepository.js.map +1 -1
  17. package/bin/domain/usecases/AnalyzeStoriesUseCase.js +83 -17
  18. package/bin/domain/usecases/AnalyzeStoriesUseCase.js.map +1 -1
  19. package/bin/domain/usecases/ChangeStatusLongInReviewIssueUseCase.js +37 -0
  20. package/bin/domain/usecases/ChangeStatusLongInReviewIssueUseCase.js.map +1 -0
  21. package/bin/domain/usecases/ClearNextActionHourUseCase.js +8 -2
  22. package/bin/domain/usecases/ClearNextActionHourUseCase.js.map +1 -1
  23. package/bin/domain/usecases/ConvertCheckboxToIssueInStoryIssueUseCase.js +63 -0
  24. package/bin/domain/usecases/ConvertCheckboxToIssueInStoryIssueUseCase.js.map +1 -0
  25. package/bin/domain/usecases/CreateEstimationIssueUseCase.js +15 -0
  26. package/bin/domain/usecases/CreateEstimationIssueUseCase.js.map +1 -1
  27. package/bin/domain/usecases/HandleScheduledEventUseCase.js +14 -2
  28. package/bin/domain/usecases/HandleScheduledEventUseCase.js.map +1 -1
  29. package/package.json +1 -1
  30. package/src/adapter/entry-points/cli/index.test.ts +1 -0
  31. package/src/adapter/entry-points/cli/index.ts +3 -1
  32. package/src/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.ts +19 -0
  33. package/src/adapter/repositories/BaseGitHubRepository.ts +0 -11
  34. package/src/adapter/repositories/GraphqlProjectRepository.test.ts +25 -0
  35. package/src/adapter/repositories/GraphqlProjectRepository.ts +16 -0
  36. package/src/adapter/repositories/issue/ApiV3CheerioRestIssueRepository.ts +21 -1
  37. package/src/adapter/repositories/issue/ApiV3IssueRepository.test.ts +14 -0
  38. package/src/adapter/repositories/issue/ApiV3IssueRepository.ts +31 -0
  39. package/src/adapter/repositories/issue/InternalGraphqlIssueRepository.ts +22 -5
  40. package/src/domain/entities/Project.ts +8 -2
  41. package/src/domain/usecases/AnalyzeStoriesUseCase.ts +155 -24
  42. package/src/domain/usecases/CONTRIBUTING_FOR_TEST.md +254 -0
  43. package/src/domain/usecases/ChangeStatusLongInReviewIssueUseCase.test.ts +204 -0
  44. package/src/domain/usecases/ChangeStatusLongInReviewIssueUseCase.ts +57 -0
  45. package/src/domain/usecases/ClearNextActionHourUseCase.ts +12 -2
  46. package/src/domain/usecases/ConvertCheckboxToIssueInStoryIssueUseCase.test.ts +490 -0
  47. package/src/domain/usecases/ConvertCheckboxToIssueInStoryIssueUseCase.ts +98 -0
  48. package/src/domain/usecases/CreateEstimationIssueUseCase.ts +39 -2
  49. package/src/domain/usecases/HandleScheduledEventUseCase.test.ts +1 -1
  50. package/src/domain/usecases/HandleScheduledEventUseCase.ts +14 -1
  51. package/src/domain/usecases/adapter-interfaces/IssueRepository.ts +5 -0
  52. package/types/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.d.ts +1 -1
  53. package/types/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.d.ts.map +1 -1
  54. package/types/adapter/repositories/BaseGitHubRepository.d.ts.map +1 -1
  55. package/types/adapter/repositories/GraphqlProjectRepository.d.ts.map +1 -1
  56. package/types/adapter/repositories/issue/ApiV3CheerioRestIssueRepository.d.ts +1 -0
  57. package/types/adapter/repositories/issue/ApiV3CheerioRestIssueRepository.d.ts.map +1 -1
  58. package/types/adapter/repositories/issue/ApiV3IssueRepository.d.ts +5 -0
  59. package/types/adapter/repositories/issue/ApiV3IssueRepository.d.ts.map +1 -1
  60. package/types/adapter/repositories/issue/InternalGraphqlIssueRepository.d.ts.map +1 -1
  61. package/types/domain/entities/Project.d.ts +8 -2
  62. package/types/domain/entities/Project.d.ts.map +1 -1
  63. package/types/domain/usecases/AnalyzeStoriesUseCase.d.ts +19 -3
  64. package/types/domain/usecases/AnalyzeStoriesUseCase.d.ts.map +1 -1
  65. package/types/domain/usecases/ChangeStatusLongInReviewIssueUseCase.d.ts +17 -0
  66. package/types/domain/usecases/ChangeStatusLongInReviewIssueUseCase.d.ts.map +1 -0
  67. package/types/domain/usecases/ClearNextActionHourUseCase.d.ts.map +1 -1
  68. package/types/domain/usecases/ConvertCheckboxToIssueInStoryIssueUseCase.d.ts +20 -0
  69. package/types/domain/usecases/ConvertCheckboxToIssueInStoryIssueUseCase.d.ts.map +1 -0
  70. package/types/domain/usecases/CreateEstimationIssueUseCase.d.ts +3 -3
  71. package/types/domain/usecases/CreateEstimationIssueUseCase.d.ts.map +1 -1
  72. package/types/domain/usecases/HandleScheduledEventUseCase.d.ts +3 -1
  73. package/types/domain/usecases/HandleScheduledEventUseCase.d.ts.map +1 -1
  74. package/types/domain/usecases/adapter-interfaces/IssueRepository.d.ts +1 -0
  75. package/types/domain/usecases/adapter-interfaces/IssueRepository.d.ts.map +1 -1
  76. package/types/index.d.ts +1 -1
@@ -6,9 +6,10 @@ class ClearNextActionHourUseCase {
6
6
  this.issueRepository = issueRepository;
7
7
  this.run = async (input) => {
8
8
  const nextActionHour = input.project.nextActionHour;
9
- if (!nextActionHour || input.cacheUsed) {
9
+ if (!nextActionHour) {
10
10
  return;
11
11
  }
12
+ const nextActionDate = input.project.nextActionDate;
12
13
  const targetDates = input.targetDates
13
14
  .filter((targetDate) => targetDate.getMinutes() === 45)
14
15
  .reverse();
@@ -16,7 +17,7 @@ class ClearNextActionHourUseCase {
16
17
  return;
17
18
  }
18
19
  const targetDate = new Date(targetDates[targetDates.length - 1].getTime() + 5 * 60 * 1000);
19
- const targetHour = targetDate.getHours();
20
+ const targetHour = targetDate.getHours() + 1;
20
21
  const isTargetIssue = (issue) => {
21
22
  return (issue.nextActionHour !== null &&
22
23
  issue.nextActionHour <= targetHour &&
@@ -30,6 +31,11 @@ class ClearNextActionHourUseCase {
30
31
  }
31
32
  await this.issueRepository.clearProjectField(input.project, nextActionHour.fieldId, issue);
32
33
  await new Promise((resolve) => setTimeout(resolve, 5000));
34
+ if (!nextActionDate) {
35
+ continue;
36
+ }
37
+ await this.issueRepository.clearProjectField(input.project, nextActionDate.fieldId, issue);
38
+ await new Promise((resolve) => setTimeout(resolve, 5000));
33
39
  }
34
40
  };
35
41
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ClearNextActionHourUseCase.js","sourceRoot":"","sources":["../../../src/domain/usecases/ClearNextActionHourUseCase.ts"],"names":[],"mappings":";;;AAIA,MAAa,0BAA0B;IACrC,YACW,eAA2D;QAA3D,oBAAe,GAAf,eAAe,CAA4C;QAGtE,QAAG,GAAG,KAAK,EAAE,KAKZ,EAAiB,EAAE;YAClB,MAAM,cAAc,GAAG,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC;YACpD,IAAI,CAAC,cAAc,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;gBACvC,OAAO;YACT,CAAC;YACD,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW;iBAClC,MAAM,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,UAAU,EAAE,KAAK,EAAE,CAAC;iBACtD,OAAO,EAAE,CAAC;YACb,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC7B,OAAO;YACT,CAAC;YACD,MAAM,UAAU,GAAG,IAAI,IAAI,CACzB,WAAW,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAC9D,CAAC;YACF,MAAM,UAAU,GAAG,UAAU,CAAC,QAAQ,EAAE,CAAC;YACzC,MAAM,aAAa,GAAG,CAAC,KAAY,EAAW,EAAE;gBAC9C,OAAO,CACL,KAAK,CAAC,cAAc,KAAK,IAAI;oBAC7B,KAAK,CAAC,cAAc,IAAI,UAAU;oBAClC,CAAC,KAAK,CAAC,cAAc,KAAK,IAAI;wBAC5B,KAAK,CAAC,cAAc,CAAC,OAAO,EAAE,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;oBACzD,KAAK,CAAC,KAAK,KAAK,MAAM,CACvB,CAAC;YACJ,CAAC,CAAC;YACF,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;gBACjC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;oBAC1B,SAAS;gBACX,CAAC;gBACD,MAAM,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAC1C,KAAK,CAAC,OAAO,EACb,cAAc,CAAC,OAAO,EACtB,KAAK,CACN,CAAC;gBACF,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;YAC5D,CAAC;QACH,CAAC,CAAC;IA1CC,CAAC;CA2CL;AA9CD,gEA8CC"}
1
+ {"version":3,"file":"ClearNextActionHourUseCase.js","sourceRoot":"","sources":["../../../src/domain/usecases/ClearNextActionHourUseCase.ts"],"names":[],"mappings":";;;AAIA,MAAa,0BAA0B;IACrC,YACW,eAA2D;QAA3D,oBAAe,GAAf,eAAe,CAA4C;QAGtE,QAAG,GAAG,KAAK,EAAE,KAKZ,EAAiB,EAAE;YAClB,MAAM,cAAc,GAAG,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC;YACpD,IAAI,CAAC,cAAc,EAAE,CAAC;gBACpB,OAAO;YACT,CAAC;YACD,MAAM,cAAc,GAAG,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC;YACpD,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW;iBAClC,MAAM,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,UAAU,EAAE,KAAK,EAAE,CAAC;iBACtD,OAAO,EAAE,CAAC;YACb,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC7B,OAAO;YACT,CAAC;YACD,MAAM,UAAU,GAAG,IAAI,IAAI,CACzB,WAAW,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAC9D,CAAC;YACF,MAAM,UAAU,GAAG,UAAU,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;YAC7C,MAAM,aAAa,GAAG,CAAC,KAAY,EAAW,EAAE;gBAC9C,OAAO,CACL,KAAK,CAAC,cAAc,KAAK,IAAI;oBAC7B,KAAK,CAAC,cAAc,IAAI,UAAU;oBAClC,CAAC,KAAK,CAAC,cAAc,KAAK,IAAI;wBAC5B,KAAK,CAAC,cAAc,CAAC,OAAO,EAAE,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;oBACzD,KAAK,CAAC,KAAK,KAAK,MAAM,CACvB,CAAC;YACJ,CAAC,CAAC;YACF,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;gBACjC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;oBAC1B,SAAS;gBACX,CAAC;gBACD,MAAM,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAC1C,KAAK,CAAC,OAAO,EACb,cAAc,CAAC,OAAO,EACtB,KAAK,CACN,CAAC;gBACF,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;gBAC1D,IAAI,CAAC,cAAc,EAAE,CAAC;oBACpB,SAAS;gBACX,CAAC;gBACD,MAAM,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAC1C,KAAK,CAAC,OAAO,EACb,cAAc,CAAC,OAAO,EACtB,KAAK,CACN,CAAC;gBACF,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;YAC5D,CAAC;QACH,CAAC,CAAC;IApDC,CAAC;CAqDL;AAxDD,gEAwDC"}
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ConvertCheckboxToIssueInStoryIssueUseCase = void 0;
4
+ class ConvertCheckboxToIssueInStoryIssueUseCase {
5
+ constructor(issueRepository) {
6
+ this.issueRepository = issueRepository;
7
+ this.run = async (input) => {
8
+ const story = input.project.story;
9
+ if (!story || input.cacheUsed) {
10
+ return;
11
+ }
12
+ for (const storyOption of input.project.story?.stories || []) {
13
+ const storyIssue = input.issues.find((issue) => storyOption.name.startsWith(issue.title));
14
+ const storyObject = input.storyObjectMap.get(storyOption.name);
15
+ if (storyOption.name.startsWith('regular / ')) {
16
+ continue;
17
+ }
18
+ else if (!storyIssue || !storyObject) {
19
+ throw new Error(`Story issue not found: ${storyOption.name}`);
20
+ }
21
+ else if (storyIssue.isClosed ||
22
+ storyIssue.status === input.disabledStatus) {
23
+ continue;
24
+ }
25
+ else if (!storyIssue.body.includes('- [ ] ')) {
26
+ continue;
27
+ }
28
+ const checkboxTextsNotCreatedIssue = this.findCheckboxTextsNotCreatedIssue(storyIssue.body);
29
+ let newBody = storyIssue.body;
30
+ for (const checkboxText of checkboxTextsNotCreatedIssue) {
31
+ const issueTitle = checkboxText.replace('STORYNAME', `${storyOption.name} #${storyIssue.number}`);
32
+ const newIssueNumber = await this.issueRepository.createNewIssue(input.org, input.repo, issueTitle, '', [], []);
33
+ const newIssueUrl = `https://github.com/${input.org}/${input.repo}/issues/${newIssueNumber}`;
34
+ newBody = newBody.replace(`- [ ] ${checkboxText}`, `- [ ] ${newIssueUrl}`);
35
+ await this.issueRepository.updateIssue({
36
+ ...storyIssue,
37
+ body: newBody,
38
+ });
39
+ await new Promise((resolve) => setTimeout(resolve, 30 * 1000));
40
+ const newIssue = await this.issueRepository.getIssueByUrl(newIssueUrl);
41
+ if (!newIssue) {
42
+ throw new Error(`Issue not found: ${newIssueUrl}`);
43
+ }
44
+ await this.issueRepository.updateStory({ ...input.project, story: story }, newIssue, storyOption.id);
45
+ }
46
+ }
47
+ };
48
+ this.findCheckboxTextsNotCreatedIssue = (storyIssueBody) => {
49
+ const regexToFindCheckboxes = /^- \[ ] (.*)$/gm;
50
+ const match = storyIssueBody.match(regexToFindCheckboxes);
51
+ if (!match)
52
+ return [];
53
+ const checkboxes = [];
54
+ for (let i = 0; i < match.length; i++) {
55
+ checkboxes.push(match[i].replace('- [ ] ', '').trim());
56
+ }
57
+ return checkboxes.filter((checkbox) => !checkbox.match(/^https:\/\/github.com\/.*\/issues\/\d+$/) &&
58
+ !checkbox.match(/^#\d+$/));
59
+ };
60
+ }
61
+ }
62
+ exports.ConvertCheckboxToIssueInStoryIssueUseCase = ConvertCheckboxToIssueInStoryIssueUseCase;
63
+ //# sourceMappingURL=ConvertCheckboxToIssueInStoryIssueUseCase.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConvertCheckboxToIssueInStoryIssueUseCase.js","sourceRoot":"","sources":["../../../src/domain/usecases/ConvertCheckboxToIssueInStoryIssueUseCase.ts"],"names":[],"mappings":"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"}
@@ -24,6 +24,8 @@ class CreateEstimationIssueUseCase {
24
24
  else if (!storyIssue.labels.includes('story:action:schedule-control')) {
25
25
  continue;
26
26
  }
27
+ const estimationMinutesField = input.project.remainingEstimationMinutes;
28
+ const completionDate50PercentConfidenceField = input.project.completionDate50PercentConfidence;
27
29
  const assignees = new Set();
28
30
  for (const issueInStory of storyObject.issues) {
29
31
  if (issueInStory.isClosed ||
@@ -32,6 +34,19 @@ class CreateEstimationIssueUseCase {
32
34
  issueInStory.status === input.disabledStatus) {
33
35
  continue;
34
36
  }
37
+ if (estimationMinutesField &&
38
+ !!issueInStory.estimationMinutes &&
39
+ issueInStory.estimationMinutes > 0) {
40
+ await this.issueRepository.createComment(issueInStory, `\`${estimationMinutesField.name}\` field value \`${issueInStory.estimationMinutes}\` is removed to re-estimate.`);
41
+ await this.issueRepository.clearProjectField(input.project, estimationMinutesField.fieldId, issueInStory);
42
+ await new Promise((resolve) => setTimeout(resolve, 5000));
43
+ }
44
+ if (completionDate50PercentConfidenceField &&
45
+ !!issueInStory.completionDate50PercentConfidence) {
46
+ await this.issueRepository.createComment(issueInStory, `\`${completionDate50PercentConfidenceField.name}\` field value \`${this.dateRepository.formatDateWithDayOfWeek(issueInStory.completionDate50PercentConfidence)}\` is removed to re-estimate.`);
47
+ await this.issueRepository.clearProjectField(input.project, completionDate50PercentConfidenceField.fieldId, issueInStory);
48
+ await new Promise((resolve) => setTimeout(resolve, 5000));
49
+ }
35
50
  for (const assignee of issueInStory.assignees) {
36
51
  assignees.add(assignee);
37
52
  }
@@ -1 +1 @@
1
- {"version":3,"file":"CreateEstimationIssueUseCase.js","sourceRoot":"","sources":["../../../src/domain/usecases/CreateEstimationIssueUseCase.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CreateEstimationIssueUseCase.js","sourceRoot":"","sources":["../../../src/domain/usecases/CreateEstimationIssueUseCase.ts"],"names":[],"mappings":"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"}
@@ -9,7 +9,7 @@ class ProjectNotFoundError extends Error {
9
9
  }
10
10
  exports.ProjectNotFoundError = ProjectNotFoundError;
11
11
  class HandleScheduledEventUseCase {
12
- constructor(generateWorkingTimeReportUseCase, actionAnnouncementUseCase, setWorkflowManagementIssueToStoryUseCase, clearNextActionHourUseCase, analyzeProblemByIssueUseCase, analyzeStoriesUseCase, clearDependedIssueURLUseCase, createEstimationIssueUseCase, dateRepository, spreadsheetRepository, projectRepository, issueRepository) {
12
+ constructor(generateWorkingTimeReportUseCase, actionAnnouncementUseCase, setWorkflowManagementIssueToStoryUseCase, clearNextActionHourUseCase, analyzeProblemByIssueUseCase, analyzeStoriesUseCase, clearDependedIssueURLUseCase, createEstimationIssueUseCase, convertCheckboxToIssueInStoryIssueUseCase, dateRepository, spreadsheetRepository, projectRepository, issueRepository) {
13
13
  this.generateWorkingTimeReportUseCase = generateWorkingTimeReportUseCase;
14
14
  this.actionAnnouncementUseCase = actionAnnouncementUseCase;
15
15
  this.setWorkflowManagementIssueToStoryUseCase = setWorkflowManagementIssueToStoryUseCase;
@@ -18,6 +18,7 @@ class HandleScheduledEventUseCase {
18
18
  this.analyzeStoriesUseCase = analyzeStoriesUseCase;
19
19
  this.clearDependedIssueURLUseCase = clearDependedIssueURLUseCase;
20
20
  this.createEstimationIssueUseCase = createEstimationIssueUseCase;
21
+ this.convertCheckboxToIssueInStoryIssueUseCase = convertCheckboxToIssueInStoryIssueUseCase;
21
22
  this.dateRepository = dateRepository;
22
23
  this.spreadsheetRepository = spreadsheetRepository;
23
24
  this.projectRepository = projectRepository;
@@ -134,6 +135,7 @@ class HandleScheduledEventUseCase {
134
135
  org: input.org,
135
136
  repo: input.workingReport.repo,
136
137
  storyObjectMap: storyIssues,
138
+ members: input.workingReport.members,
137
139
  });
138
140
  await this.clearDependedIssueURLUseCase.run({
139
141
  project,
@@ -152,6 +154,16 @@ class HandleScheduledEventUseCase {
152
154
  disabledStatus: input.disabledStatus,
153
155
  storyObjectMap: storyIssues,
154
156
  });
157
+ await this.convertCheckboxToIssueInStoryIssueUseCase.run({
158
+ project,
159
+ issues,
160
+ cacheUsed,
161
+ org: input.org,
162
+ repo: input.workingReport.repo,
163
+ urlOfStoryView: input.urlOfStoryView,
164
+ disabledStatus: input.disabledStatus,
165
+ storyObjectMap: storyIssues,
166
+ });
155
167
  return { project, issues, cacheUsed, targetDateTimes, storyIssues };
156
168
  };
157
169
  this.runForTargetDateTime = async (input) => {
@@ -235,7 +247,7 @@ HandleScheduledEventUseCase.createTargetDateTimes = (from, to) => {
235
247
  targetDate.setSeconds(0);
236
248
  targetDate.setMilliseconds(0);
237
249
  while (targetDate.getTime() <= to.getTime() &&
238
- targetDateTimes.length < 30) {
250
+ targetDateTimes.length < 300) {
239
251
  targetDateTimes.push(new Date(targetDate));
240
252
  targetDate.setMinutes(targetDate.getMinutes() + 1);
241
253
  }
@@ -1 +1 @@
1
- {"version":3,"file":"HandleScheduledEventUseCase.js","sourceRoot":"","sources":["../../../src/domain/usecases/HandleScheduledEventUseCase.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"HandleScheduledEventUseCase.js","sourceRoot":"","sources":["../../../src/domain/usecases/HandleScheduledEventUseCase.ts"],"names":[],"mappings":";;;AAiBA,MAAa,oBAAqB,SAAQ,KAAK;IAC7C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;IACrC,CAAC;CACF;AALD,oDAKC;AAYD,MAAa,2BAA2B;IACtC,YACW,gCAAkE,EAClE,yBAAoD,EACpD,wCAAkF,EAClF,0BAAsD,EACtD,4BAA0D,EAC1D,qBAA4C,EAC5C,4BAA0D,EAC1D,4BAA0D,EAC1D,yCAAoF,EACpF,cAA8B,EAC9B,qBAA4C,EAC5C,iBAAoC,EACpC,eAAgC;QAZhC,qCAAgC,GAAhC,gCAAgC,CAAkC;QAClE,8BAAyB,GAAzB,yBAAyB,CAA2B;QACpD,6CAAwC,GAAxC,wCAAwC,CAA0C;QAClF,+BAA0B,GAA1B,0BAA0B,CAA4B;QACtD,iCAA4B,GAA5B,4BAA4B,CAA8B;QAC1D,0BAAqB,GAArB,qBAAqB,CAAuB;QAC5C,iCAA4B,GAA5B,4BAA4B,CAA8B;QAC1D,iCAA4B,GAA5B,4BAA4B,CAA8B;QAC1D,8CAAyC,GAAzC,yCAAyC,CAA2C;QACpF,mBAAc,GAAd,cAAc,CAAgB;QAC9B,0BAAqB,GAArB,qBAAqB,CAAuB;QAC5C,sBAAiB,GAAjB,iBAAiB,CAAmB;QACpC,oBAAe,GAAf,eAAe,CAAiB;QAG3C,QAAG,GAAG,KAAK,EAAE,KAeZ,EAME,EAAE;YACH,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,CAC/D,KAAK,CAAC,UAAU,CACjB,CAAC;YACF,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,MAAM,IAAI,oBAAoB,CAC5B,kCAAkC,KAAK,CAAC,UAAU,EAAE,CACrD,CAAC;YACJ,CAAC;YACD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;YACnE,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,MAAM,IAAI,oBAAoB,CAC5B,iCACE,SACF,gBAAgB,KAAK,CAAC,UAAU,EAAE,CACnC,CAAC;YACJ,CAAC;YACD,MAAM,GAAG,GAAS,MAAM,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,CAAC;YAClD,MAAM,sBAAsB,GAAG,EAAE,CAAC;YAClC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GACzB,MAAM,IAAI,CAAC,eAAe,CAAC,YAAY,CACrC,SAAS,EACT,sBAAsB,CACvB,CAAC;YACJ,MAAM,WAAW,GAAmB,MAAM,IAAI,CAAC,WAAW,CAAC;gBACzD,OAAO;gBACP,MAAM;aACP,CAAC,CAAC;YACH,KAAK,MAAM,WAAW,IAAI,WAAW,CAAC,MAAM,EAAE,EAAE,CAAC;gBAC/C,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC;gBACnC,IAAI,CAAC,YAAY,EAAE,CAAC;oBAClB,MAAM;gBACR,CAAC;gBACD,IACE,WAAW,CAAC,UAAU;oBACtB,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,EAC/C,CAAC;oBACD,SAAS;gBACX,CAAC;gBACD,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,cAAc,CAC3D,KAAK,CAAC,GAAG,EACT,KAAK,CAAC,aAAa,CAAC,IAAI,EACxB,WAAW,CAAC,KAAK,CAAC,IAAI,EACtB,WAAW,CAAC,KAAK,CAAC,WAAW,EAC7B,CAAC,KAAK,CAAC,OAAO,CAAC,EACf,CAAC,OAAO,CAAC,CACV,CAAC;gBACF,MAAM,QAAQ,GAAG,sBAAsB,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,aAAa,CAAC,IAAI,WAAW,WAAW,EAAE,CAAC;gBACrG,IAAI,KAAK,GAAiB,IAAI,CAAC;gBAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC3B,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;oBAC/D,KAAK,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;oBAC3D,IAAI,CAAC,KAAK,EAAE,CAAC;wBACX,SAAS;oBACX,CAAC;yBAAM,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;wBACzB,SAAS;oBACX,CAAC;oBACD,MAAM;gBACR,CAAC;gBACD,IAAI,CAAC,KAAK,EAAE,CAAC;oBACX,MAAM,IAAI,KAAK,CAAC,yBAAyB,QAAQ,EAAE,CAAC,CAAC;gBACvD,CAAC;qBAAM,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;oBACzB,MAAM,IAAI,KAAK,CAAC,gCAAgC,QAAQ,EAAE,CAAC,CAAC;gBAC9D,CAAC;gBACD,MAAM,IAAI,CAAC,eAAe,CAAC,WAAW,CACpC,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,EACnC,KAAK,EACL,WAAW,CAAC,KAAK,CAAC,EAAE,CACrB,CAAC;gBACF,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;gBAC/D,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;gBACpE,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACd,MAAM,IAAI,KAAK,CAAC,yBAAyB,QAAQ,EAAE,CAAC,CAAC;gBACvD,CAAC;gBACD,WAAW,CAAC,UAAU,GAAG,QAAQ,CAAC;gBAClC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACtB,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC;oBACtB,GAAG,QAAQ;oBACX,gBAAgB,EAAE,CAAC;oBACnB,0BAA0B,EAAE,IAAI,GAAG,EAAE;iBACtC,CAAC,CAAC;YACL,CAAC;YAED,MAAM,eAAe,GACnB,MAAM,IAAI,CAAC,4CAA4C,CACrD,KAAK,CAAC,aAAa,CAAC,cAAc,EAClC,GAAG,CACJ,CAAC;YAEJ,KAAK,MAAM,cAAc,IAAI,eAAe,EAAE,CAAC;gBAC7C,MAAM,IAAI,CAAC,oBAAoB,CAAC;oBAC9B,GAAG,EAAE,KAAK,CAAC,GAAG;oBACd,OAAO,EAAE,KAAK,CAAC,OAAO;oBACtB,aAAa,EAAE,KAAK,CAAC,aAAa;oBAClC,SAAS;oBACT,MAAM;oBACN,cAAc;iBACf,CAAC,CAAC;YACL,CAAC;YACD,MAAM,IAAI,CAAC,4BAA4B,CAAC,GAAG,CAAC;gBAC1C,WAAW,EAAE,eAAe;gBAC5B,OAAO;gBACP,MAAM;gBACN,SAAS;gBACT,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,OAAO,EAAE,KAAK,CAAC,aAAa,CAAC,OAAO;gBACpC,GAAG,EAAE,KAAK,CAAC,GAAG;gBACd,IAAI,EAAE,KAAK,CAAC,aAAa,CAAC,IAAI;gBAC9B,cAAc,EAAE,WAAW;gBAC3B,cAAc,EAAE,KAAK,CAAC,cAAc;aACrC,CAAC,CAAC;YACH,MAAM,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC;gBACvC,WAAW,EAAE,eAAe;gBAC5B,OAAO;gBACP,MAAM;gBACN,SAAS;gBACT,OAAO,EAAE,KAAK,CAAC,aAAa,CAAC,OAAO;gBACpC,OAAO,EAAE,KAAK,CAAC,OAAO;aACvB,CAAC,CAAC;YACH,MAAM,IAAI,CAAC,wCAAwC,CAAC,GAAG,CAAC;gBACtD,WAAW,EAAE,eAAe;gBAC5B,OAAO;gBACP,MAAM;gBACN,SAAS;aACV,CAAC,CAAC;YACH,MAAM,IAAI,CAAC,0BAA0B,CAAC,GAAG,CAAC;gBACxC,WAAW,EAAE,eAAe;gBAC5B,OAAO;gBACP,MAAM;gBACN,SAAS;aACV,CAAC,CAAC;YACH,MAAM,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC;gBACnC,WAAW,EAAE,eAAe;gBAC5B,OAAO;gBACP,MAAM;gBACN,SAAS;gBACT,GAAG,KAAK;gBACR,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,GAAG,EAAE,KAAK,CAAC,GAAG;gBACd,IAAI,EAAE,KAAK,CAAC,aAAa,CAAC,IAAI;gBAC9B,cAAc,EAAE,WAAW;gBAC3B,OAAO,EAAE,KAAK,CAAC,aAAa,CAAC,OAAO;aACrC,CAAC,CAAC;YACH,MAAM,IAAI,CAAC,4BAA4B,CAAC,GAAG,CAAC;gBAC1C,OAAO;gBACP,MAAM;gBACN,SAAS;aACV,CAAC,CAAC;YACH,MAAM,IAAI,CAAC,4BAA4B,CAAC,GAAG,CAAC;gBAC1C,WAAW,EAAE,eAAe;gBAC5B,OAAO;gBACP,MAAM;gBACN,SAAS;gBACT,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,GAAG,EAAE,KAAK,CAAC,GAAG;gBACd,IAAI,EAAE,KAAK,CAAC,aAAa,CAAC,IAAI;gBAC9B,cAAc,EAAE,KAAK,CAAC,cAAc;gBACpC,cAAc,EAAE,KAAK,CAAC,cAAc;gBACpC,cAAc,EAAE,WAAW;aAC5B,CAAC,CAAC;YACH,MAAM,IAAI,CAAC,yCAAyC,CAAC,GAAG,CAAC;gBACvD,OAAO;gBACP,MAAM;gBACN,SAAS;gBACT,GAAG,EAAE,KAAK,CAAC,GAAG;gBACd,IAAI,EAAE,KAAK,CAAC,aAAa,CAAC,IAAI;gBAC9B,cAAc,EAAE,KAAK,CAAC,cAAc;gBACpC,cAAc,EAAE,KAAK,CAAC,cAAc;gBACpC,cAAc,EAAE,WAAW;aAC5B,CAAC,CAAC;YACH,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,eAAe,EAAE,WAAW,EAAE,CAAC;QACtE,CAAC,CAAC;QACF,yBAAoB,GAAG,KAAK,EAAE,KAc7B,EAAiB,EAAE;YAClB,MAAM,UAAU,GAAG,KAAK,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC;YACnD,MAAM,YAAY,GAAG,KAAK,CAAC,cAAc,CAAC,UAAU,EAAE,CAAC;YACvD,IAAI,UAAU,KAAK,CAAC,IAAI,YAAY,KAAK,CAAC,EAAE,CAAC;gBAC3C,MAAM,SAAS,GAAG,IAAI,IAAI,CACxB,KAAK,CAAC,cAAc,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CACrD,CAAC;gBAEF,MAAM,IAAI,CAAC,gCAAgC,CAAC,GAAG,CAAC;oBAC9C,GAAG,KAAK;oBACR,GAAG,KAAK,CAAC,aAAa;oBACtB,UAAU,EAAE,SAAS;iBACtB,CAAC,CAAC;YACL,CAAC;QACH,CAAC,CAAC;QAsBF,iDAA4C,GAAG,KAAK,EAClD,cAAsB,EACtB,GAAS,EACQ,EAAE;YACnB,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAC3D,cAAc,EACd,sBAAsB,CACvB,CAAC;YACF,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,MAAM,IAAI,CAAC,qBAAqB,CAAC,UAAU,CACzC,cAAc,EACd,sBAAsB,EACtB,CAAC,EACD,CAAC,EACD,uBAAuB,CACxB,CAAC;YACJ,CAAC;YACD,MAAM,qBAAqB,GACzB,WAAW,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAExE,MAAM,eAAe,GAAW,qBAAqB;gBACnD,CAAC,CAAC,2BAA2B,CAAC,qBAAqB,CAC/C,qBAAqB,EACrB,GAAG,CACJ;gBACH,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YAEV,MAAM,IAAI,CAAC,qBAAqB,CAAC,UAAU,CACzC,cAAc,EACd,sBAAsB,EACtB,CAAC,EACD,CAAC,EACD,eAAe,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,CAC1D,CAAC;YACF,OAAO,eAAe,CAAC;QACzB,CAAC,CAAC;QACF,gBAAW,GAAG,KAAK,EAAE,KAGpB,EAA2B,EAAE;YAC5B,MAAM,iBAAiB,GAAmB,IAAI,GAAG,EAAE,CAAC;YACpD,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,IAAI,EAAE,CAAC;YACvD,KAAK,MAAM,KAAK,IAAI,WAAW,EAAE,CAAC;gBAChC,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAC7C,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CACnC,CAAC;gBACF,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE;oBAChC,KAAK;oBACL,UAAU,EAAE,UAAU,IAAI,IAAI;oBAC9B,MAAM,EAAE,EAAE;iBACX,CAAC,CAAC;gBACH,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;oBACjC,IAAI,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,EAAE,CAAC;wBAC/B,SAAS;oBACX,CAAC;oBACD,MAAM,0BAA0B,GAC9B,IAAI,CAAC,sCAAsC,CAAC,KAAK,CAAC,CAAC;oBACrD,MAAM,gBAAgB,GAAG,IAAI,CAAC,KAAK,CACjC,KAAK,CAAC,IAAI,CAAC,0BAA0B,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CACpD,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EACf,CAAC,CACF,CACF,CAAC;oBACF,MAAM,YAAY,GAGd;wBACF,gBAAgB;wBAChB,0BAA0B;qBAC3B,CAAC;oBACF,iBAAiB;yBACd,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;wBAChB,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,KAAK,EAAE,GAAG,YAAY,EAAE,CAAC,CAAC;gBACjD,CAAC;YACH,CAAC;YACD,OAAO,iBAAiB,CAAC;QAC3B,CAAC,CAAC;QACF,2CAAsC,GAAG,CACvC,KAAY,EACS,EAAE;YACvB,MAAM,eAAe,GAAG,KAAK,CAAC,eAAe,CAAC;YAC9C,MAAM,wBAAwB,GAAwB,IAAI,GAAG,EAAE,CAAC;YAChE,KAAK,MAAM,WAAW,IAAI,eAAe,EAAE,CAAC;gBAC1C,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC;gBAClC,MAAM,cAAc,GAAG,WAAW,CAAC,eAAe,CAAC;gBACnD,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;oBAC1C,wBAAwB,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;gBAC1C,CAAC;gBACD,MAAM,qBAAqB,GAAG,wBAAwB,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBACxE,wBAAwB,CAAC,GAAG,CAC1B,MAAM,EACN,qBAAqB,GAAG,cAAc,CACvC,CAAC;YACJ,CAAC;YACD,OAAO,wBAAwB,CAAC;QAClC,CAAC,CAAC;IApVC,CAAC;;AAfN,kEAoWC;AArHQ,iDAAqB,GAAG,CAAC,IAAU,EAAE,EAAQ,EAAU,EAAE;IAC9D,MAAM,eAAe,GAAW,EAAE,CAAC;IACnC,IAAI,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC;QAClC,MAAM,UAAU,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC;QAChC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QACzB,UAAU,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QAC9B,OAAO,CAAC,UAAU,CAAC,CAAC;IACtB,CAAC;IACD,MAAM,UAAU,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;IAClC,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;IACrD,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IACzB,UAAU,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IAC9B,OACE,UAAU,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE;QACpC,eAAe,CAAC,MAAM,GAAG,GAAG,EAC5B,CAAC;QACD,eAAe,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QAC3C,UAAU,CAAC,UAAU,CAAC,UAAU,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC;IACrD,CAAC;IACD,OAAO,eAAe,CAAC;AACzB,CAAC,AApB2B,CAoB1B"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "github-issue-tower-defence-management",
3
- "version": "1.2.0",
3
+ "version": "1.4.0",
4
4
  "description": "",
5
5
  "main": "bin/index.js",
6
6
  "scripts": {
@@ -14,6 +14,7 @@ CLI tool for GitHub Issue Tower Defence Management
14
14
  Options:
15
15
  -t, --trigger <type> Trigger type: issue or schedule
16
16
  -c, --config <path> Path to config YAML file
17
+ -v, --verbose Verbose output
17
18
  -i, --issue <url> GitHub Issue URL
18
19
  -h, --help display help for command`);
19
20
  });
@@ -8,6 +8,7 @@ interface Options {
8
8
  trigger: 'issue' | 'schedule';
9
9
  config: string;
10
10
  issue?: string;
11
+ verbose: boolean;
11
12
  }
12
13
 
13
14
  program
@@ -19,6 +20,7 @@ program
19
20
  /^(issue|schedule)$/i,
20
21
  )
21
22
  .requiredOption('-c, --config <path>', 'Path to config YAML file')
23
+ .option('-v, --verbose', 'Verbose output')
22
24
  .option('-i, --issue <url>', 'GitHub Issue URL')
23
25
  .action(async (options: Options) => {
24
26
  if (options.trigger === 'issue' && !options.issue) {
@@ -27,7 +29,7 @@ program
27
29
  }
28
30
  if (options.trigger === 'schedule') {
29
31
  const handler = new HandleScheduledEventUseCaseHandler();
30
- await handler.handle(options.config);
32
+ await handler.handle(options.config, options.verbose);
31
33
  }
32
34
  });
33
35
 
@@ -24,16 +24,32 @@ import { BaseGitHubRepository } from '../../repositories/BaseGitHubRepository';
24
24
  import { AnalyzeStoriesUseCase } from '../../../domain/usecases/AnalyzeStoriesUseCase';
25
25
  import { ClearDependedIssueURLUseCase } from '../../../domain/usecases/ClearDependedIssueURLUseCase';
26
26
  import { CreateEstimationIssueUseCase } from '../../../domain/usecases/CreateEstimationIssueUseCase';
27
+ import axios, { AxiosError } from 'axios';
28
+ import { ConvertCheckboxToIssueInStoryIssueUseCase } from '../../../domain/usecases/ConvertCheckboxToIssueInStoryIssueUseCase';
27
29
 
28
30
  export class HandleScheduledEventUseCaseHandler {
29
31
  handle = async (
30
32
  configFilePath: string,
33
+ verbose: boolean,
31
34
  ): Promise<{
32
35
  project: Project;
33
36
  issues: Issue[];
34
37
  cacheUsed: boolean;
35
38
  targetDateTimes: Date[];
36
39
  }> => {
40
+ axios.interceptors.response.use(
41
+ (response) => response,
42
+ (error: AxiosError) => {
43
+ if (verbose) {
44
+ throw new Error(`API Error: ${JSON.stringify(error)}`);
45
+ }
46
+ if (error.response) {
47
+ throw new Error(`API Error: ${error.response.status}`);
48
+ }
49
+ throw new Error('Network Error');
50
+ },
51
+ );
52
+
37
53
  const configFileContent = fs.readFileSync(configFilePath, 'utf8');
38
54
  const input: unknown = YAML.parse(configFileContent);
39
55
  type inputType = Parameters<HandleScheduledEventUseCase['run']>[0] & {
@@ -140,6 +156,8 @@ export class HandleScheduledEventUseCaseHandler {
140
156
  issueRepository,
141
157
  systemDateRepository,
142
158
  );
159
+ const convertCheckboxToIssueInStoryIssueUseCase =
160
+ new ConvertCheckboxToIssueInStoryIssueUseCase(issueRepository);
143
161
 
144
162
  const handleScheduledEventUseCase = new HandleScheduledEventUseCase(
145
163
  generateWorkingTimeReportUseCase,
@@ -150,6 +168,7 @@ export class HandleScheduledEventUseCaseHandler {
150
168
  analyzeStoriesUseCase,
151
169
  clearDependedIssueURLUseCase,
152
170
  createEstimationIssueUseCase,
171
+ convertCheckboxToIssueInStoryIssueUseCase,
153
172
  systemDateRepository,
154
173
  googleSpreadsheetRepository,
155
174
  projectRepository,
@@ -1,20 +1,9 @@
1
1
  import { promises as fsPromises } from 'fs';
2
2
  import { serialize } from 'cookie';
3
- import axios, { AxiosError } from 'axios';
4
3
  import { getCookieContent } from 'gh-cookie';
5
4
  import fs from 'fs';
6
5
  import { LocalStorageRepository } from './LocalStorageRepository';
7
6
 
8
- axios.interceptors.response.use(
9
- (response) => response,
10
- (error: AxiosError) => {
11
- if (error.response) {
12
- throw new Error(`API Error: ${error.response.status}`);
13
- }
14
- throw new Error('Network Error');
15
- },
16
- );
17
-
18
7
  interface Cookie {
19
8
  name: string;
20
9
  value: string;
@@ -44,6 +44,31 @@ describe('GraphqlProjectRepository', () => {
44
44
  story: null,
45
45
  completionDate50PercentConfidence: null,
46
46
  dependedIssueUrlSeparatedByComma: null,
47
+
48
+ status: {
49
+ fieldId: 'PVTSSF_lAHOAGJHa84AFhgFzgDLt0c',
50
+ name: 'Status',
51
+ statuses: [
52
+ {
53
+ color: 'GRAY',
54
+ description: '',
55
+ id: 'f75ad846',
56
+ name: 'Todo',
57
+ },
58
+ {
59
+ color: 'GRAY',
60
+ description: '',
61
+ id: '47fc9ee4',
62
+ name: 'In Progress',
63
+ },
64
+ {
65
+ color: 'GRAY',
66
+ description: '',
67
+ id: '98236657',
68
+ name: 'Done',
69
+ },
70
+ ],
71
+ },
47
72
  });
48
73
  });
49
74
  });
@@ -190,6 +190,12 @@ export class GraphqlProjectRepository
190
190
  const nextActionHour = project.fields.nodes.find(
191
191
  (field) => normalizeFieldName(field.name) === 'nextactionhour',
192
192
  );
193
+ const status = project.fields.nodes.find(
194
+ (field) => normalizeFieldName(field.name) === 'status',
195
+ );
196
+ if (!status) {
197
+ throw new Error('status field is not found');
198
+ }
193
199
  const story = project.fields.nodes.find(
194
200
  (field) => normalizeFieldName(field.name) === 'story',
195
201
  );
@@ -212,6 +218,16 @@ export class GraphqlProjectRepository
212
218
  return {
213
219
  id: project.id,
214
220
  name: project.title,
221
+ status: {
222
+ name: status.name,
223
+ fieldId: status.id,
224
+ statuses: status.options.map((option) => ({
225
+ id: option.id,
226
+ name: option.name,
227
+ color: option.color,
228
+ description: option.description,
229
+ })),
230
+ },
215
231
  nextActionDate: nextActionDate
216
232
  ? {
217
233
  name: nextActionDate.name,
@@ -62,6 +62,19 @@ export class ApiV3CheerioRestIssueRepository
62
62
  );
63
63
  }
64
64
 
65
+ updateStatus: (
66
+ project: Project,
67
+ issue: Issue,
68
+ statusId: string,
69
+ ) => Promise<void> = async (project, issue, statusId) => {
70
+ await this.graphqlProjectItemRepository.updateProjectField(
71
+ project.id,
72
+ project.status.fieldId,
73
+ issue.itemId,
74
+ { singleSelectOptionId: statusId },
75
+ );
76
+ };
77
+
65
78
  convertProjectItemAndCheerioIssueToIssue = async (
66
79
  item: ProjectItem,
67
80
  cheerioIssue: CheerioIssue,
@@ -169,11 +182,18 @@ export class ApiV3CheerioRestIssueRepository
169
182
  endedAt,
170
183
  };
171
184
  });
185
+ const completionDate50PercentConfidence =
186
+ !('completionDate50PercentConfidence' in issue) ||
187
+ typeof issue.completionDate50PercentConfidence !== 'string'
188
+ ? null
189
+ : new Date(issue.completionDate50PercentConfidence);
172
190
 
173
191
  return {
174
192
  ...issue,
175
193
  nextActionDate: nextActionDate,
176
194
  workingTimeline: workingTimeline,
195
+ completionDate50PercentConfidence:
196
+ completionDate50PercentConfidence,
177
197
  };
178
198
  });
179
199
 
@@ -235,7 +255,7 @@ export class ApiV3CheerioRestIssueRepository
235
255
 
236
256
  return result;
237
257
  };
238
- const issues = await processItemsInBatches(items, 10);
258
+ const issues = await processItemsInBatches(items, 15);
239
259
 
240
260
  // const issues = await Promise.all(
241
261
  // items.map(async (item): Promise<Issue> => {
@@ -1,6 +1,8 @@
1
1
  import { ApiV3IssueRepository } from './ApiV3IssueRepository';
2
2
  import { LocalStorageRepository } from '../LocalStorageRepository';
3
+ import dotenv from 'dotenv';
3
4
 
5
+ dotenv.config();
4
6
  describe('ApiV3IssueRepository', () => {
5
7
  const localStorageRepository = new LocalStorageRepository();
6
8
  const repository = new ApiV3IssueRepository(
@@ -26,4 +28,16 @@ describe('ApiV3IssueRepository', () => {
26
28
  },
27
29
  ]);
28
30
  });
31
+ test('searchIssueByQuery', async () => {
32
+ const result = await repository.searchIssueByQuery(
33
+ 'repo:HiromiShikata/test-repository type:issue state:open in:title+In progress created:>=2024-04-21 assignee:HiromiShikata',
34
+ );
35
+ expect(result).toEqual([
36
+ {
37
+ number: 38,
38
+ title: 'In progress test title',
39
+ url: 'https://github.com/HiromiShikata/test-repository/issues/38',
40
+ },
41
+ ]);
42
+ });
29
43
  });
@@ -56,4 +56,35 @@ export class ApiV3IssueRepository extends BaseGitHubRepository {
56
56
  number: item.number,
57
57
  }));
58
58
  };
59
+ searchIssueByQuery = async (
60
+ query: string,
61
+ ): Promise<
62
+ {
63
+ url: string;
64
+ title: string;
65
+ number: string;
66
+ }[]
67
+ > => {
68
+ const url = `https://api.github.com/search/issues?q=${query}`;
69
+ const response = await axios.get<{
70
+ items: {
71
+ html_url: string;
72
+ title: string;
73
+ number: string;
74
+ }[];
75
+ }>(url, {
76
+ headers: {
77
+ Authorization: `token ${this.ghToken}`,
78
+ Accept: 'application/vnd.github.v3+json',
79
+ },
80
+ });
81
+ if (response.status !== 200) {
82
+ throw new Error(`Failed to search issue: ${response.status}`);
83
+ }
84
+ return response.data.items.map((item) => ({
85
+ url: item.html_url,
86
+ title: item.title,
87
+ number: item.number,
88
+ }));
89
+ };
59
90
  }
@@ -158,11 +158,28 @@ export class InternalGraphqlIssueRepository extends BaseGitHubRepository {
158
158
  cookie: await this.getCookie(),
159
159
  };
160
160
 
161
- const response = await axios.get<GraphqlResponse>(url, {
162
- headers: headers,
163
- withCredentials: true,
164
- });
165
- return response.data.data.node.frontTimelineItems;
161
+ for (let i = 0; i < 3; i++) {
162
+ try {
163
+ const response = await axios.get<GraphqlResponse>(url, {
164
+ headers: headers,
165
+ withCredentials: true,
166
+ });
167
+ if (!response.data?.data?.node?.frontTimelineItems) {
168
+ throw new Error(
169
+ `No frontTimelineItems found. URL: ${issueUrl}, Response: ${JSON.stringify(
170
+ response.data,
171
+ )}`,
172
+ );
173
+ }
174
+ return response.data.data.node.frontTimelineItems;
175
+ } catch (e) {
176
+ if (i === 2) {
177
+ throw e;
178
+ }
179
+ await new Promise((resolve) => setTimeout(resolve, 5000));
180
+ }
181
+ }
182
+ throw new Error('Unreachable');
166
183
  };
167
184
 
168
185
  const frontTimelineItems: GraphqlResponse['data']['node']['frontTimelineItems']['edges'] =
@@ -1,4 +1,5 @@
1
- export type StoryOption = {
1
+ export type StoryOption = FieldOption;
2
+ export type FieldOption = {
2
3
  id: string;
3
4
  name: string;
4
5
  color: string;
@@ -8,6 +9,11 @@ export type Project = {
8
9
  id: string;
9
10
  name: string;
10
11
  // fields: ProjectField[];
12
+ status: {
13
+ name: string;
14
+ fieldId: string;
15
+ statuses: FieldOption[];
16
+ };
11
17
  nextActionDate: {
12
18
  name: string;
13
19
  fieldId: string;
@@ -19,7 +25,7 @@ export type Project = {
19
25
  story: {
20
26
  name: string;
21
27
  fieldId: string;
22
- stories: StoryOption[];
28
+ stories: FieldOption[];
23
29
  workflowManagementStory: {
24
30
  id: string;
25
31
  name: string;