github-issue-tower-defence-management 1.38.0 → 1.39.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.
@@ -0,0 +1,82 @@
1
+ name: Add to Project
2
+
3
+ on:
4
+ workflow_dispatch:
5
+ inputs:
6
+ issue_or_pr_url:
7
+ description: 'Issue or PR URL (https://github.com/<owner>/<repo>/issues/<number> or .../pull/<number>)'
8
+ required: true
9
+ default: ''
10
+
11
+ env:
12
+ PROJECT_V2_ID: PVT_kwHOAGJHa84AFWnr
13
+
14
+ jobs:
15
+ add-to-project:
16
+ runs-on: ubuntu-latest
17
+ steps:
18
+ - name: Add to Project
19
+ env:
20
+ GH_TOKEN: ${{ secrets.GH_TOKEN }}
21
+ run: |
22
+ ISSUE_OR_PR_URL="${{ github.event.inputs.issue_or_pr_url }}"
23
+ ISSUE_OR_PR_URL="${ISSUE_OR_PR_URL%%\?*}"
24
+ ISSUE_OR_PR_URL="${ISSUE_OR_PR_URL%/}"
25
+
26
+ if ! echo "$ISSUE_OR_PR_URL" | grep -qE '^https://github\.com/[^/]+/[^/]+/(issues|pull)/[0-9]+$'; then
27
+ echo "Invalid URL format. Expected: https://github.com/<owner>/<repo>/issues/<number> or .../pull/<number>"
28
+ echo "Got: $ISSUE_OR_PR_URL"
29
+ exit 1
30
+ fi
31
+
32
+ REPO_PATH=$(echo "$ISSUE_OR_PR_URL" | awk -F'/' '{print $4"/"$5}')
33
+ NUMBER=$(echo "$ISSUE_OR_PR_URL" | grep -oE '[0-9]+$')
34
+
35
+ if echo "$ISSUE_OR_PR_URL" | grep -q "/pull/"; then
36
+ RESOURCE_TYPE="pulls"
37
+ else
38
+ RESOURCE_TYPE="issues"
39
+ fi
40
+
41
+ REST_RESPONSE=$(curl -s -w "\n%{http_code}" -H "Authorization: token $GH_TOKEN" \
42
+ "https://api.github.com/repos/$REPO_PATH/$RESOURCE_TYPE/$NUMBER")
43
+ HTTP_STATUS=$(echo "$REST_RESPONSE" | tail -n1)
44
+ REST_BODY=$(echo "$REST_RESPONSE" | sed '$d')
45
+
46
+ if [ "$HTTP_STATUS" != "200" ]; then
47
+ echo "REST API returned HTTP $HTTP_STATUS"
48
+ echo "$REST_BODY"
49
+ exit 1
50
+ fi
51
+
52
+ NODE_ID=$(echo "$REST_BODY" | jq -r '.node_id')
53
+
54
+ if [ -z "$NODE_ID" ] || [ "$NODE_ID" = "null" ]; then
55
+ echo "Failed to get node ID. REST response:"
56
+ echo "$REST_BODY"
57
+ exit 1
58
+ fi
59
+
60
+ echo "Node ID: $NODE_ID"
61
+
62
+ GRAPHQL_PAYLOAD=$(jq -n \
63
+ --arg nodeId "$NODE_ID" \
64
+ --arg projectId "$PROJECT_V2_ID" \
65
+ '{"query": "mutation($contentId: ID!, $projectId: ID!) { addProjectV2ItemById(input: { contentId: $contentId, projectId: $projectId }) { item { id } } }", "variables": {"contentId": $nodeId, "projectId": $projectId}}')
66
+
67
+ RESPONSE=$(curl -s -X POST \
68
+ -H "Authorization: bearer $GH_TOKEN" \
69
+ -H "Content-Type: application/json" \
70
+ https://api.github.com/graphql \
71
+ -d "$GRAPHQL_PAYLOAD")
72
+ echo "$RESPONSE"
73
+
74
+ if ! echo "$RESPONSE" | jq '.' > /dev/null 2>&1; then
75
+ echo "Non-JSON response received"
76
+ exit 1
77
+ fi
78
+
79
+ if echo "$RESPONSE" | jq -e '.errors' > /dev/null; then
80
+ echo "GraphQL error occurred"
81
+ exit 1
82
+ fi
@@ -108,7 +108,9 @@ jobs:
108
108
  github-token: ${{secrets.GH_TOKEN}}
109
109
  script: |
110
110
  const commentBody = context.payload.comment.body;
111
- const createIssueIndex = commentBody.indexOf('/createissue');
111
+ const commandMatch = /(^|\n)\s*\/createissue\b/m.exec(commentBody);
112
+ if (!commandMatch) return;
113
+ const createIssueIndex = commentBody.indexOf('/createissue', commandMatch.index);
112
114
  const issueTitle = commentBody.slice(createIssueIndex + 12).split('\n')[0].trim();
113
115
  const issueNumber = context.issue.number;
114
116
  const commentId = context.payload.comment.id;
@@ -116,7 +118,7 @@ jobs:
116
118
  const issueBody = `
117
119
  ${commentBody.slice(createIssueIndex + 12).trim()}
118
120
  Created from a comment: ${commentLink}
119
- `;
121
+ `;
120
122
  const newIssue = await github.rest.issues.create({
121
123
  owner: context.repo.owner,
122
124
  repo: context.repo.repo,
@@ -130,6 +132,8 @@ jobs:
130
132
  with:
131
133
  github-token: ${{secrets.GH_TOKEN}}
132
134
  script: |
135
+ const body = context.payload.comment.body;
136
+ if (!/(^|\n)\s*\/(close|done)\b/m.test(body)) return;
133
137
  await github.rest.issues.update({
134
138
  owner: context.repo.owner,
135
139
  repo: context.repo.repo,
@@ -138,18 +142,42 @@ jobs:
138
142
  });
139
143
  - name: Update Date Field
140
144
  if: ${{ github.event_name == 'issue_comment' && github.event.action == 'created' && contains(github.event.comment.body, '/movenextactiondateto') }}
141
- run: |
142
- DATE_STRING=$(echo "${{ github.event.comment.body }}" | grep -oP '(?<=/movenextactiondateto )\d{8}')
143
- OWNER=$(echo ${{ github.repository }} | cut -d '/' -f 1)
144
- REPO=$(echo ${{ github.repository }} | cut -d '/' -f 2)
145
- ITEM_ID=$(curl -X POST -H "Authorization: bearer ${{ secrets.GH_TOKEN }}" -H "Content-Type: application/json" --data '{ "query": "query { repository(owner: \"'$OWNER'\", name: \"'$REPO'\") { issue(number: '${{ github.event.issue.number }}') { projectItems(first: 10) { nodes { id } } } } }" }' https://api.github.com/graphql | jq -r '.data.repository.issue.projectItems.nodes[0].id')
146
- UPDATE_FIELD_DATA="{\"query\":\"mutation { updateProjectV2ItemFieldValue(input: {projectId: \\\"${{ env.project_v2_id }}\\\", fieldId: \\\"${{ env.field_id }}\\\", itemId: \\\"$ITEM_ID\\\", value: { date: \\\"$DATE_STRING\\\" }}) { clientMutationId }}\"}"
147
- curl --request POST \
148
- -f \
149
- --url https://api.github.com/graphql \
150
- --header "Authorization: Bearer ${{ env.gh_project_token }}" \
151
- --header "Content-Type: application/json" \
152
- --data "$UPDATE_FIELD_DATA"
145
+ uses: actions/github-script@v9
146
+ env:
147
+ PROJECT_V2_ID: ${{ env.project_v2_id }}
148
+ FIELD_ID: ${{ env.field_id }}
149
+ with:
150
+ github-token: ${{ secrets.GH_TOKEN }}
151
+ script: |
152
+ const commentBody = context.payload.comment.body;
153
+ const commandMatch = /(^|\n)\s*\/movenextactiondateto\b/m.exec(commentBody);
154
+ if (!commandMatch) return;
155
+ const dateMatch = /\/movenextactiondateto\s+(\d{8})/.exec(commentBody.slice(commandMatch.index));
156
+ if (!dateMatch) return;
157
+ const dateString = dateMatch[1];
158
+ const projectId = process.env.PROJECT_V2_ID;
159
+ const fieldId = process.env.FIELD_ID;
160
+ const itemIdResult = await github.graphql(
161
+ `query($owner: String!, $repo: String!, $number: Int!) {
162
+ repository(owner: $owner, name: $repo) {
163
+ issue(number: $number) {
164
+ projectItems(first: 10) { nodes { id } }
165
+ }
166
+ }
167
+ }`,
168
+ { owner: context.repo.owner, repo: context.repo.repo, number: context.issue.number }
169
+ );
170
+ const itemId = itemIdResult.repository.issue.projectItems.nodes[0]?.id;
171
+ if (!itemId) { core.setFailed('No project item found for this issue'); return; }
172
+ await github.graphql(
173
+ `mutation($projectId: ID!, $fieldId: ID!, $itemId: ID!, $date: Date!) {
174
+ updateProjectV2ItemFieldValue(input: {
175
+ projectId: $projectId, fieldId: $fieldId, itemId: $itemId,
176
+ value: { date: $date }
177
+ }) { clientMutationId }
178
+ }`,
179
+ { projectId, fieldId, itemId, date: dateString }
180
+ );
153
181
  - name: Change Assignee
154
182
  if: ${{ github.event_name == 'issue_comment' && github.event.action == 'created' && contains(github.event.comment.body, '/changeassignee ') }}
155
183
  uses: actions/github-script@v9
@@ -157,8 +185,9 @@ jobs:
157
185
  github-token: ${{secrets.GH_TOKEN}}
158
186
  script: |
159
187
  const commentBody = context.payload.comment.body;
160
- const assigneeIndex = commentBody.indexOf('/changeassignee ') + 16;
161
- const assigneeName = commentBody.slice(assigneeIndex).split(' ')[0].trim();
188
+ const commandMatch = /(^|\n)\s*\/changeassignee\s+(\S+)/m.exec(commentBody);
189
+ if (!commandMatch) return;
190
+ const assigneeName = commandMatch[2].trim();
162
191
  await github.rest.issues.update({
163
192
  owner: context.repo.owner,
164
193
  repo: context.repo.repo,
package/CHANGELOG.md CHANGED
@@ -1,3 +1,17 @@
1
+ # [1.39.0](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/compare/v1.38.1...v1.39.0) (2026-05-04)
2
+
3
+
4
+ ### Features
5
+
6
+ * **core:** add progress logs to HandleScheduledEventUseCase story-issue creation loop ([a9f5e37](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/commit/a9f5e3712833da43efc18ee9ff709b074339e52c)), closes [#441](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/issues/441)
7
+
8
+ ## [1.38.1](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/compare/v1.38.0...v1.38.1) (2026-05-04)
9
+
10
+
11
+ ### Bug Fixes
12
+
13
+ * **core:** skip issues with story: label in SetNoStoryIssueToStoryUseCase ([9e325a3](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/commit/9e325a3eaccc1e2c3ea5ca3288b459ed12d4d08e))
14
+
1
15
  # [1.38.0](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/compare/v1.37.1...v1.38.0) (2026-05-04)
2
16
 
3
17
 
@@ -57,18 +57,19 @@ class HandleScheduledEventUseCase {
57
57
  storyObject.story.name.startsWith('regular / ')) {
58
58
  continue;
59
59
  }
60
+ const storyStartTime = Date.now();
61
+ console.log(`[HandleScheduledEvent] Creating story issue: story="${storyObject.story.name}"`);
60
62
  const issueNumber = await this.issueRepository.createNewIssue(input.org, input.workingReport.repo, storyObject.story.name, storyObject.story.description, [input.manager], ['story']);
61
63
  const issueUrl = `https://github.com/${input.org}/${input.workingReport.repo}/issues/${issueNumber}`;
62
64
  let issue = null;
63
65
  for (let i = 0; i < 3; i++) {
66
+ console.log(`[HandleScheduledEvent] Polling for issue (attempt ${i + 1}/3): url=${issueUrl}`);
64
67
  await new Promise((resolve) => setTimeout(resolve, 30 * 1000));
65
68
  issue = await this.issueRepository.getIssueByUrl(issueUrl);
66
- if (!issue) {
67
- continue;
68
- }
69
- else if (!issue.itemId) {
69
+ if (!issue || !issue.itemId) {
70
70
  continue;
71
71
  }
72
+ console.log(`[HandleScheduledEvent] Issue found: url=${issueUrl} itemId=${issue.itemId}`);
72
73
  break;
73
74
  }
74
75
  if (!issue) {
@@ -78,6 +79,7 @@ class HandleScheduledEventUseCase {
78
79
  throw new Error(`Issue itemId not found. URL: ${issueUrl}`);
79
80
  }
80
81
  await this.issueRepository.updateStory({ ...project, story: projectStory }, issue, storyObject.story.id);
82
+ console.log(`[HandleScheduledEvent] Waiting for story update: url=${issueUrl}`);
81
83
  await new Promise((resolve) => setTimeout(resolve, 10 * 1000));
82
84
  const newIssue = await this.issueRepository.getIssueByUrl(issueUrl);
83
85
  if (!newIssue) {
@@ -86,6 +88,7 @@ class HandleScheduledEventUseCase {
86
88
  storyObject.storyIssue = newIssue;
87
89
  issues.push(newIssue);
88
90
  storyObject.issues.push(newIssue);
91
+ console.log(`[HandleScheduledEvent] Story issue created: story="${storyObject.story.name}" elapsed=${Date.now() - storyStartTime}ms`);
89
92
  }
90
93
  const targetDateTimes = await this.findTargetDateAndUpdateLastExecutionDateTime(input.workingReport.spreadsheetUrl, now);
91
94
  try {
@@ -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":"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"}
@@ -13,11 +13,11 @@ class SetNoStoryIssueToStoryUseCase {
13
13
  }
14
14
  const isTargetIssue = (issue) => {
15
15
  return (issue.story === null &&
16
+ !issue.labels.some((label) => label.toLowerCase().startsWith('story:')) &&
16
17
  (issue.nextActionDate === null ||
17
18
  issue.nextActionDate.getTime() <= input.targetDates[0].getTime()) &&
18
19
  issue.nextActionHour === null &&
19
- issue.state === 'OPEN' &&
20
- issue.story === null);
20
+ issue.state === 'OPEN');
21
21
  };
22
22
  const firstStory = input.project.story?.stories[0];
23
23
  if (!firstStory) {
@@ -1 +1 @@
1
- {"version":3,"file":"SetNoStoryIssueToStoryUseCase.js","sourceRoot":"","sources":["../../../src/domain/usecases/SetNoStoryIssueToStoryUseCase.ts"],"names":[],"mappings":";;;AAIA,MAAa,6BAA6B;IACxC,YAAqB,eAAqD;QAArD,oBAAe,GAAf,eAAe,CAAsC;QAE1E,QAAG,GAAG,KAAK,EAAE,KAKZ,EAAiB,EAAE;YAClB,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;YAClC,IACE,CAAC,KAAK;gBACN,KAAK,CAAC,SAAS;gBACf,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,EACtE,CAAC;gBACD,OAAO;YACT,CAAC;YACD,MAAM,aAAa,GAAG,CAAC,KAAY,EAAW,EAAE;gBAC9C,OAAO,CACL,KAAK,CAAC,KAAK,KAAK,IAAI;oBACpB,CAAC,KAAK,CAAC,cAAc,KAAK,IAAI;wBAC5B,KAAK,CAAC,cAAc,CAAC,OAAO,EAAE,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;oBACnE,KAAK,CAAC,cAAc,KAAK,IAAI;oBAC7B,KAAK,CAAC,KAAK,KAAK,MAAM;oBACtB,KAAK,CAAC,KAAK,KAAK,IAAI,CACrB,CAAC;YACJ,CAAC,CAAC;YACF,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;YACnD,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,OAAO;YACT,CAAC;YACD,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,WAAW,CACpC,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,EAC3B,KAAK,EACL,UAAU,CAAC,EAAE,CACd,CAAC;gBACF,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;YAC5D,CAAC;QACH,CAAC,CAAC;IAzC2E,CAAC;CA0C/E;AA3CD,sEA2CC"}
1
+ {"version":3,"file":"SetNoStoryIssueToStoryUseCase.js","sourceRoot":"","sources":["../../../src/domain/usecases/SetNoStoryIssueToStoryUseCase.ts"],"names":[],"mappings":";;;AAIA,MAAa,6BAA6B;IACxC,YAAqB,eAAqD;QAArD,oBAAe,GAAf,eAAe,CAAsC;QAE1E,QAAG,GAAG,KAAK,EAAE,KAKZ,EAAiB,EAAE;YAClB,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;YAClC,IACE,CAAC,KAAK;gBACN,KAAK,CAAC,SAAS;gBACf,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,EACtE,CAAC;gBACD,OAAO;YACT,CAAC;YACD,MAAM,aAAa,GAAG,CAAC,KAAY,EAAW,EAAE;gBAC9C,OAAO,CACL,KAAK,CAAC,KAAK,KAAK,IAAI;oBACpB,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAC3B,KAAK,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CACzC;oBACD,CAAC,KAAK,CAAC,cAAc,KAAK,IAAI;wBAC5B,KAAK,CAAC,cAAc,CAAC,OAAO,EAAE,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;oBACnE,KAAK,CAAC,cAAc,KAAK,IAAI;oBAC7B,KAAK,CAAC,KAAK,KAAK,MAAM,CACvB,CAAC;YACJ,CAAC,CAAC;YACF,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;YACnD,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,OAAO;YACT,CAAC;YACD,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,WAAW,CACpC,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,EAC3B,KAAK,EACL,UAAU,CAAC,EAAE,CACd,CAAC;gBACF,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;YAC5D,CAAC;QACH,CAAC,CAAC;IA3C2E,CAAC;CA4C/E;AA7CD,sEA6CC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "github-issue-tower-defence-management",
3
- "version": "1.38.0",
3
+ "version": "1.39.0",
4
4
  "description": "",
5
5
  "main": "bin/index.js",
6
6
  "scripts": {
@@ -12,6 +12,7 @@ import { DateRepository } from './adapter-interfaces/DateRepository';
12
12
  import { SpreadsheetRepository } from './adapter-interfaces/SpreadsheetRepository';
13
13
  import { ProjectRepository } from './adapter-interfaces/ProjectRepository';
14
14
  import { IssueRepository } from './adapter-interfaces/IssueRepository';
15
+ import { Issue } from '../entities/Issue';
15
16
  import { Project } from '../entities/Project';
16
17
  import { ChangeStatusByStoryColorUseCase } from './ChangeStatusByStoryColorUseCase';
17
18
  import { SetNoStoryIssueToStoryUseCase } from './SetNoStoryIssueToStoryUseCase';
@@ -309,5 +310,150 @@ describe('HandleScheduledEventUseCase', () => {
309
310
  120,
310
311
  );
311
312
  });
313
+
314
+ describe('story issue creation progress logs', () => {
315
+ const storyInput = {
316
+ projectName: 'test-project',
317
+ org: 'test-org',
318
+ projectUrl: 'https://github.com/test-org/test-project',
319
+ manager: 'test-manager',
320
+ workingReport: {
321
+ repo: 'test-repo',
322
+ members: ['member1'],
323
+ spreadsheetUrl: 'https://docs.google.com/spreadsheets/test',
324
+ },
325
+ urlOfStoryView: 'https://github.com/test-org/test-project/issues',
326
+ disabledStatus: 'disabled',
327
+ defaultStatus: null,
328
+ disabled: false,
329
+ allowIssueCacheMinutes: 60,
330
+ };
331
+
332
+ const storyProject: Project = {
333
+ id: 'proj-1',
334
+ url: 'https://github.com/orgs/test-org/projects/1',
335
+ databaseId: 1,
336
+ name: 'test-project',
337
+ status: { name: 'Status', fieldId: 'f1', statuses: [] },
338
+ nextActionDate: null,
339
+ nextActionHour: null,
340
+ story: {
341
+ name: 'Story',
342
+ fieldId: 'f2',
343
+ databaseId: 2,
344
+ stories: [
345
+ {
346
+ id: 'story-1',
347
+ name: 'feature / StoryOne',
348
+ color: 'BLUE',
349
+ description: 'story desc',
350
+ },
351
+ ],
352
+ workflowManagementStory: { id: 'wm-1', name: 'workflow' },
353
+ },
354
+ remainingEstimationMinutes: null,
355
+ dependedIssueUrlSeparatedByComma: null,
356
+ completionDate50PercentConfidence: null,
357
+ };
358
+
359
+ const capturedLogs: string[] = [];
360
+ let consoleSpy: jest.SpyInstance;
361
+
362
+ beforeEach(() => {
363
+ capturedLogs.length = 0;
364
+ consoleSpy = jest
365
+ .spyOn(console, 'log')
366
+ .mockImplementation((...data: unknown[]) => {
367
+ const firstData = data[0];
368
+ if (
369
+ typeof firstData === 'string' &&
370
+ firstData.startsWith('[HandleScheduledEvent]')
371
+ ) {
372
+ capturedLogs.push(firstData);
373
+ }
374
+ });
375
+ jest.useFakeTimers();
376
+ mockProjectRepository.getProject.mockResolvedValue(storyProject);
377
+ mockIssueRepository.getAllIssues.mockResolvedValue({
378
+ issues: [],
379
+ cacheUsed: false,
380
+ });
381
+ mockIssueRepository.createNewIssue.mockResolvedValue(99);
382
+ const createdIssue = mock<Issue>();
383
+ createdIssue.itemId = 'item-99';
384
+ mockIssueRepository.getIssueByUrl.mockResolvedValue(createdIssue);
385
+ });
386
+
387
+ afterEach(() => {
388
+ consoleSpy.mockRestore();
389
+ jest.useRealTimers();
390
+ });
391
+
392
+ it('should emit Creating story issue log before createNewIssue', async () => {
393
+ const runPromise = useCase.run(storyInput);
394
+ await jest.runAllTimersAsync();
395
+ await runPromise;
396
+
397
+ expect(capturedLogs[0]).toContain('Creating story issue');
398
+ expect(capturedLogs[0]).toContain('feature / StoryOne');
399
+ });
400
+
401
+ it('should emit Polling for issue log before each 30s sleep', async () => {
402
+ const runPromise = useCase.run(storyInput);
403
+ await jest.runAllTimersAsync();
404
+ await runPromise;
405
+
406
+ expect(capturedLogs[1]).toContain('Polling for issue (attempt 1/3)');
407
+ expect(capturedLogs[1]).toContain(
408
+ 'https://github.com/test-org/test-repo/issues/99',
409
+ );
410
+ });
411
+
412
+ it('should emit Issue found log on successful issue lookup', async () => {
413
+ const runPromise = useCase.run(storyInput);
414
+ await jest.runAllTimersAsync();
415
+ await runPromise;
416
+
417
+ expect(capturedLogs[2]).toContain('Issue found');
418
+ expect(capturedLogs[2]).toContain(
419
+ 'https://github.com/test-org/test-repo/issues/99',
420
+ );
421
+ expect(capturedLogs[2]).toContain('itemId=item-99');
422
+ });
423
+
424
+ it('should emit Waiting for story update log before 10s sleep', async () => {
425
+ const runPromise = useCase.run(storyInput);
426
+ await jest.runAllTimersAsync();
427
+ await runPromise;
428
+
429
+ expect(capturedLogs[3]).toContain('Waiting for story update');
430
+ expect(capturedLogs[3]).toContain(
431
+ 'https://github.com/test-org/test-repo/issues/99',
432
+ );
433
+ });
434
+
435
+ it('should emit Story issue created log with elapsed time after iteration completes', async () => {
436
+ const runPromise = useCase.run(storyInput);
437
+ await jest.runAllTimersAsync();
438
+ await runPromise;
439
+
440
+ expect(capturedLogs[4]).toContain('Story issue created');
441
+ expect(capturedLogs[4]).toContain('feature / StoryOne');
442
+ expect(capturedLogs[4]).toMatch(/elapsed=\d+ms/);
443
+ });
444
+
445
+ it('should emit logs in expected order', async () => {
446
+ const runPromise = useCase.run(storyInput);
447
+ await jest.runAllTimersAsync();
448
+ await runPromise;
449
+
450
+ expect(capturedLogs).toHaveLength(5);
451
+ expect(capturedLogs[0]).toContain('Creating story issue');
452
+ expect(capturedLogs[1]).toContain('Polling for issue (attempt 1/3)');
453
+ expect(capturedLogs[2]).toContain('Issue found');
454
+ expect(capturedLogs[3]).toContain('Waiting for story update');
455
+ expect(capturedLogs[4]).toContain('Story issue created');
456
+ });
457
+ });
312
458
  });
313
459
  });
@@ -131,6 +131,10 @@ export class HandleScheduledEventUseCase {
131
131
  ) {
132
132
  continue;
133
133
  }
134
+ const storyStartTime = Date.now();
135
+ console.log(
136
+ `[HandleScheduledEvent] Creating story issue: story="${storyObject.story.name}"`,
137
+ );
134
138
  const issueNumber = await this.issueRepository.createNewIssue(
135
139
  input.org,
136
140
  input.workingReport.repo,
@@ -142,13 +146,17 @@ export class HandleScheduledEventUseCase {
142
146
  const issueUrl = `https://github.com/${input.org}/${input.workingReport.repo}/issues/${issueNumber}`;
143
147
  let issue: Issue | null = null;
144
148
  for (let i = 0; i < 3; i++) {
149
+ console.log(
150
+ `[HandleScheduledEvent] Polling for issue (attempt ${i + 1}/3): url=${issueUrl}`,
151
+ );
145
152
  await new Promise((resolve) => setTimeout(resolve, 30 * 1000));
146
153
  issue = await this.issueRepository.getIssueByUrl(issueUrl);
147
- if (!issue) {
148
- continue;
149
- } else if (!issue.itemId) {
154
+ if (!issue || !issue.itemId) {
150
155
  continue;
151
156
  }
157
+ console.log(
158
+ `[HandleScheduledEvent] Issue found: url=${issueUrl} itemId=${issue.itemId}`,
159
+ );
152
160
  break;
153
161
  }
154
162
  if (!issue) {
@@ -161,6 +169,9 @@ export class HandleScheduledEventUseCase {
161
169
  issue,
162
170
  storyObject.story.id,
163
171
  );
172
+ console.log(
173
+ `[HandleScheduledEvent] Waiting for story update: url=${issueUrl}`,
174
+ );
164
175
  await new Promise((resolve) => setTimeout(resolve, 10 * 1000));
165
176
  const newIssue = await this.issueRepository.getIssueByUrl(issueUrl);
166
177
  if (!newIssue) {
@@ -169,6 +180,9 @@ export class HandleScheduledEventUseCase {
169
180
  storyObject.storyIssue = newIssue;
170
181
  issues.push(newIssue);
171
182
  storyObject.issues.push(newIssue);
183
+ console.log(
184
+ `[HandleScheduledEvent] Story issue created: story="${storyObject.story.name}" elapsed=${Date.now() - storyStartTime}ms`,
185
+ );
172
186
  }
173
187
 
174
188
  const targetDateTimes: Date[] =
@@ -0,0 +1,372 @@
1
+ import { mock } from 'jest-mock-extended';
2
+ import { SetNoStoryIssueToStoryUseCase } from './SetNoStoryIssueToStoryUseCase';
3
+ import { IssueRepository } from './adapter-interfaces/IssueRepository';
4
+ import { Issue } from '../entities/Issue';
5
+ import { Project } from '../entities/Project';
6
+
7
+ describe('SetNoStoryIssueToStoryUseCase', () => {
8
+ const mockIssueRepository = mock<IssueRepository>();
9
+
10
+ const basicStory = {
11
+ name: 'Story Field',
12
+ fieldId: 'storyFieldId',
13
+ databaseId: 123,
14
+ stories: [
15
+ {
16
+ id: 'noStoryId',
17
+ name: 'regular / NO STORY',
18
+ color: 'GRAY' as const,
19
+ description: '',
20
+ },
21
+ {
22
+ id: 'highPriorityId',
23
+ name: 'regular / high priority',
24
+ color: 'RED' as const,
25
+ description: '',
26
+ },
27
+ ],
28
+ workflowManagementStory: {
29
+ id: 'workflowManagementStoryId',
30
+ name: 'workflow management',
31
+ },
32
+ };
33
+
34
+ const basicProject: Project = {
35
+ ...mock<Project>(),
36
+ story: basicStory,
37
+ };
38
+
39
+ const targetDate = new Date('2000-01-01T01:00:00Z');
40
+
41
+ let useCase: SetNoStoryIssueToStoryUseCase;
42
+
43
+ beforeEach(() => {
44
+ jest.clearAllMocks();
45
+ jest.useFakeTimers();
46
+ useCase = new SetNoStoryIssueToStoryUseCase(mockIssueRepository);
47
+ });
48
+
49
+ afterEach(() => {
50
+ jest.useRealTimers();
51
+ });
52
+
53
+ describe('run', () => {
54
+ it('should do nothing when project has no story field', async () => {
55
+ const projectWithoutStory: Project = { ...basicProject, story: null };
56
+
57
+ await useCase.run({
58
+ targetDates: [targetDate],
59
+ project: projectWithoutStory,
60
+ issues: [
61
+ {
62
+ ...mock<Issue>(),
63
+ labels: [],
64
+ story: null,
65
+ state: 'OPEN',
66
+ nextActionDate: null,
67
+ nextActionHour: null,
68
+ },
69
+ ],
70
+ cacheUsed: false,
71
+ });
72
+
73
+ expect(mockIssueRepository.updateStory).not.toHaveBeenCalled();
74
+ });
75
+
76
+ it('should do nothing when cacheUsed is true', async () => {
77
+ await useCase.run({
78
+ targetDates: [targetDate],
79
+ project: basicProject,
80
+ issues: [
81
+ {
82
+ ...mock<Issue>(),
83
+ labels: [],
84
+ story: null,
85
+ state: 'OPEN',
86
+ nextActionDate: null,
87
+ nextActionHour: null,
88
+ },
89
+ ],
90
+ cacheUsed: true,
91
+ });
92
+
93
+ expect(mockIssueRepository.updateStory).not.toHaveBeenCalled();
94
+ });
95
+
96
+ it('should do nothing when no target date has minutes === 0', async () => {
97
+ const nonHourDate = new Date('2000-01-01T01:30:00Z');
98
+
99
+ await useCase.run({
100
+ targetDates: [nonHourDate],
101
+ project: basicProject,
102
+ issues: [
103
+ {
104
+ ...mock<Issue>(),
105
+ labels: [],
106
+ story: null,
107
+ state: 'OPEN',
108
+ nextActionDate: null,
109
+ nextActionHour: null,
110
+ },
111
+ ],
112
+ cacheUsed: false,
113
+ });
114
+
115
+ expect(mockIssueRepository.updateStory).not.toHaveBeenCalled();
116
+ });
117
+
118
+ it('should do nothing when project story has no stories', async () => {
119
+ const projectWithEmptyStories: Project = {
120
+ ...basicProject,
121
+ story: {
122
+ ...basicStory,
123
+ stories: [],
124
+ },
125
+ };
126
+
127
+ await useCase.run({
128
+ targetDates: [targetDate],
129
+ project: projectWithEmptyStories,
130
+ issues: [
131
+ {
132
+ ...mock<Issue>(),
133
+ labels: [],
134
+ story: null,
135
+ state: 'OPEN',
136
+ nextActionDate: null,
137
+ nextActionHour: null,
138
+ },
139
+ ],
140
+ cacheUsed: false,
141
+ });
142
+
143
+ expect(mockIssueRepository.updateStory).not.toHaveBeenCalled();
144
+ });
145
+
146
+ it('should assign first story to eligible issue with no story and no story: labels', async () => {
147
+ const issue: Issue = {
148
+ ...mock<Issue>(),
149
+ labels: [],
150
+ story: null,
151
+ state: 'OPEN',
152
+ nextActionDate: null,
153
+ nextActionHour: null,
154
+ };
155
+
156
+ const promise = useCase.run({
157
+ targetDates: [targetDate],
158
+ project: basicProject,
159
+ issues: [issue],
160
+ cacheUsed: false,
161
+ });
162
+ await jest.runAllTimersAsync();
163
+ await promise;
164
+
165
+ expect(mockIssueRepository.updateStory.mock.calls).toEqual([
166
+ [{ ...basicProject, story: basicProject.story }, issue, 'noStoryId'],
167
+ ]);
168
+ });
169
+
170
+ it('should skip issue that has a story: label', async () => {
171
+ const issue: Issue = {
172
+ ...mock<Issue>(),
173
+ labels: ['story:high-priority'],
174
+ story: null,
175
+ state: 'OPEN',
176
+ nextActionDate: null,
177
+ nextActionHour: null,
178
+ };
179
+
180
+ await useCase.run({
181
+ targetDates: [targetDate],
182
+ project: basicProject,
183
+ issues: [issue],
184
+ cacheUsed: false,
185
+ });
186
+
187
+ expect(mockIssueRepository.updateStory).not.toHaveBeenCalled();
188
+ });
189
+
190
+ it('should skip issue that has a story:workflow-management label', async () => {
191
+ const issue: Issue = {
192
+ ...mock<Issue>(),
193
+ labels: ['story:workflow-management'],
194
+ story: null,
195
+ state: 'OPEN',
196
+ nextActionDate: null,
197
+ nextActionHour: null,
198
+ };
199
+
200
+ await useCase.run({
201
+ targetDates: [targetDate],
202
+ project: basicProject,
203
+ issues: [issue],
204
+ cacheUsed: false,
205
+ });
206
+
207
+ expect(mockIssueRepository.updateStory).not.toHaveBeenCalled();
208
+ });
209
+
210
+ it('should skip issue that has a story: label with uppercase prefix', async () => {
211
+ const issue: Issue = {
212
+ ...mock<Issue>(),
213
+ labels: ['STORY:high-priority'],
214
+ story: null,
215
+ state: 'OPEN',
216
+ nextActionDate: null,
217
+ nextActionHour: null,
218
+ };
219
+
220
+ await useCase.run({
221
+ targetDates: [targetDate],
222
+ project: basicProject,
223
+ issues: [issue],
224
+ cacheUsed: false,
225
+ });
226
+
227
+ expect(mockIssueRepository.updateStory).not.toHaveBeenCalled();
228
+ });
229
+
230
+ it('should skip issue that already has a story assigned', async () => {
231
+ const issue: Issue = {
232
+ ...mock<Issue>(),
233
+ labels: [],
234
+ story: 'regular / NO STORY',
235
+ state: 'OPEN',
236
+ nextActionDate: null,
237
+ nextActionHour: null,
238
+ };
239
+
240
+ await useCase.run({
241
+ targetDates: [targetDate],
242
+ project: basicProject,
243
+ issues: [issue],
244
+ cacheUsed: false,
245
+ });
246
+
247
+ expect(mockIssueRepository.updateStory).not.toHaveBeenCalled();
248
+ });
249
+
250
+ it('should skip CLOSED issue', async () => {
251
+ const issue: Issue = {
252
+ ...mock<Issue>(),
253
+ labels: [],
254
+ story: null,
255
+ state: 'CLOSED',
256
+ nextActionDate: null,
257
+ nextActionHour: null,
258
+ };
259
+
260
+ await useCase.run({
261
+ targetDates: [targetDate],
262
+ project: basicProject,
263
+ issues: [issue],
264
+ cacheUsed: false,
265
+ });
266
+
267
+ expect(mockIssueRepository.updateStory).not.toHaveBeenCalled();
268
+ });
269
+
270
+ it('should skip issue with nextActionDate in the future', async () => {
271
+ const futureDate = new Date('2000-01-02T00:00:00Z');
272
+ const issue: Issue = {
273
+ ...mock<Issue>(),
274
+ labels: [],
275
+ story: null,
276
+ state: 'OPEN',
277
+ nextActionDate: futureDate,
278
+ nextActionHour: null,
279
+ };
280
+
281
+ await useCase.run({
282
+ targetDates: [targetDate],
283
+ project: basicProject,
284
+ issues: [issue],
285
+ cacheUsed: false,
286
+ });
287
+
288
+ expect(mockIssueRepository.updateStory).not.toHaveBeenCalled();
289
+ });
290
+
291
+ it('should skip issue with nextActionHour set', async () => {
292
+ const issue: Issue = {
293
+ ...mock<Issue>(),
294
+ labels: [],
295
+ story: null,
296
+ state: 'OPEN',
297
+ nextActionDate: null,
298
+ nextActionHour: 9,
299
+ };
300
+
301
+ await useCase.run({
302
+ targetDates: [targetDate],
303
+ project: basicProject,
304
+ issues: [issue],
305
+ cacheUsed: false,
306
+ });
307
+
308
+ expect(mockIssueRepository.updateStory).not.toHaveBeenCalled();
309
+ });
310
+
311
+ it('should process issue with nextActionDate equal to or before target date', async () => {
312
+ const pastDate = new Date('2000-01-01T00:00:00Z');
313
+ const issue: Issue = {
314
+ ...mock<Issue>(),
315
+ labels: [],
316
+ story: null,
317
+ state: 'OPEN',
318
+ nextActionDate: pastDate,
319
+ nextActionHour: null,
320
+ };
321
+
322
+ const promise = useCase.run({
323
+ targetDates: [targetDate],
324
+ project: basicProject,
325
+ issues: [issue],
326
+ cacheUsed: false,
327
+ });
328
+ await jest.runAllTimersAsync();
329
+ await promise;
330
+
331
+ expect(mockIssueRepository.updateStory.mock.calls).toEqual([
332
+ [{ ...basicProject, story: basicProject.story }, issue, 'noStoryId'],
333
+ ]);
334
+ });
335
+
336
+ it('should process multiple eligible issues and skip those with story: labels', async () => {
337
+ const eligibleIssue: Issue = {
338
+ ...mock<Issue>(),
339
+ labels: [],
340
+ story: null,
341
+ state: 'OPEN',
342
+ nextActionDate: null,
343
+ nextActionHour: null,
344
+ };
345
+ const issueWithStoryLabel: Issue = {
346
+ ...mock<Issue>(),
347
+ labels: ['story:high-priority'],
348
+ story: null,
349
+ state: 'OPEN',
350
+ nextActionDate: null,
351
+ nextActionHour: null,
352
+ };
353
+
354
+ const promise = useCase.run({
355
+ targetDates: [targetDate],
356
+ project: basicProject,
357
+ issues: [eligibleIssue, issueWithStoryLabel],
358
+ cacheUsed: false,
359
+ });
360
+ await jest.runAllTimersAsync();
361
+ await promise;
362
+
363
+ expect(mockIssueRepository.updateStory.mock.calls).toEqual([
364
+ [
365
+ { ...basicProject, story: basicProject.story },
366
+ eligibleIssue,
367
+ 'noStoryId',
368
+ ],
369
+ ]);
370
+ });
371
+ });
372
+ });
@@ -22,11 +22,13 @@ export class SetNoStoryIssueToStoryUseCase {
22
22
  const isTargetIssue = (issue: Issue): boolean => {
23
23
  return (
24
24
  issue.story === null &&
25
+ !issue.labels.some((label) =>
26
+ label.toLowerCase().startsWith('story:'),
27
+ ) &&
25
28
  (issue.nextActionDate === null ||
26
29
  issue.nextActionDate.getTime() <= input.targetDates[0].getTime()) &&
27
30
  issue.nextActionHour === null &&
28
- issue.state === 'OPEN' &&
29
- issue.story === null
31
+ issue.state === 'OPEN'
30
32
  );
31
33
  };
32
34
  const firstStory = input.project.story?.stories[0];
@@ -1 +1 @@
1
- {"version":3,"file":"HandleScheduledEventUseCase.d.ts","sourceRoot":"","sources":["../../../src/domain/usecases/HandleScheduledEventUseCase.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"HandleScheduledEventUseCase.d.ts","sourceRoot":"","sources":["../../../src/domain/usecases/HandleScheduledEventUseCase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AACvE,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAC3E,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAE,MAAM,4CAA4C,CAAC;AACnF,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,wCAAwC,EAAE,MAAM,4CAA4C,CAAC;AACtG,OAAO,EAAE,kCAAkC,EAAE,MAAM,sCAAsC,CAAC;AAC1F,OAAO,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAC;AAC9E,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAC;AAC9E,OAAO,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAC;AAC9E,OAAO,EAAE,yCAAyC,EAAE,MAAM,6CAA6C,CAAC;AACxG,OAAO,EAAE,+BAA+B,EAAE,MAAM,mCAAmC,CAAC;AACpF,OAAO,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAC;AAChF,OAAO,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAC;AAC9E,OAAO,EAAE,qCAAqC,EAAE,MAAM,yCAAyC,CAAC;AAChG,OAAO,EAAE,+BAA+B,EAAE,MAAM,mCAAmC,CAAC;AACpF,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,qCAAqC,EAAE,MAAM,yCAAyC,CAAC;AAChG,OAAO,EAAE,gCAAgC,EAAE,MAAM,oCAAoC,CAAC;AAEtF,qBAAa,oBAAqB,SAAQ,KAAK;gBACjC,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,2BAA2B;IAEpC,QAAQ,CAAC,yBAAyB,EAAE,yBAAyB;IAC7D,QAAQ,CAAC,wCAAwC,EAAE,wCAAwC;IAC3F,QAAQ,CAAC,0BAA0B,EAAE,kCAAkC;IACvE,QAAQ,CAAC,4BAA4B,EAAE,4BAA4B;IACnE,QAAQ,CAAC,qBAAqB,EAAE,qBAAqB;IACrD,QAAQ,CAAC,4BAA4B,EAAE,4BAA4B;IACnE,QAAQ,CAAC,4BAA4B,EAAE,4BAA4B;IACnE,QAAQ,CAAC,yCAAyC,EAAE,yCAAyC;IAC7F,QAAQ,CAAC,+BAA+B,EAAE,+BAA+B;IACzE,QAAQ,CAAC,6BAA6B,EAAE,6BAA6B;IACrE,QAAQ,CAAC,4BAA4B,EAAE,4BAA4B;IACnE,QAAQ,CAAC,qCAAqC,EAAE,qCAAqC;IACrF,QAAQ,CAAC,+BAA+B,EAAE,+BAA+B;IACzE,QAAQ,CAAC,uBAAuB,EAAE,uBAAuB;IACzD,QAAQ,CAAC,qCAAqC,EAAE,qCAAqC;IACrF,QAAQ,CAAC,gCAAgC,EAAE,gCAAgC;IAC3E,QAAQ,CAAC,cAAc,EAAE,cAAc;IACvC,QAAQ,CAAC,qBAAqB,EAAE,qBAAqB;IACrD,QAAQ,CAAC,iBAAiB,EAAE,iBAAiB;IAC7C,QAAQ,CAAC,eAAe,EAAE,eAAe;gBAnBhC,yBAAyB,EAAE,yBAAyB,EACpD,wCAAwC,EAAE,wCAAwC,EAClF,0BAA0B,EAAE,kCAAkC,EAC9D,4BAA4B,EAAE,4BAA4B,EAC1D,qBAAqB,EAAE,qBAAqB,EAC5C,4BAA4B,EAAE,4BAA4B,EAC1D,4BAA4B,EAAE,4BAA4B,EAC1D,yCAAyC,EAAE,yCAAyC,EACpF,+BAA+B,EAAE,+BAA+B,EAChE,6BAA6B,EAAE,6BAA6B,EAC5D,4BAA4B,EAAE,4BAA4B,EAC1D,qCAAqC,EAAE,qCAAqC,EAC5E,+BAA+B,EAAE,+BAA+B,EAChE,uBAAuB,EAAE,uBAAuB,EAChD,qCAAqC,EAAE,qCAAqC,EAC5E,gCAAgC,EAAE,gCAAgC,EAClE,cAAc,EAAE,cAAc,EAC9B,qBAAqB,EAAE,qBAAqB,EAC5C,iBAAiB,EAAE,iBAAiB,EACpC,eAAe,EAAE,eAAe;IAG3C,GAAG,GAAU,OAAO;QAClB,WAAW,EAAE,MAAM,CAAC;QACpB,GAAG,EAAE,MAAM,CAAC;QACZ,UAAU,EAAE,MAAM,CAAC;QACnB,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;QACxB,aAAa,EAAE;YACb,IAAI,EAAE,MAAM,CAAC;YACb,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1B,cAAc,EAAE,MAAM,CAAC;SACxB,CAAC;QACF,cAAc,EAAE,MAAM,CAAC;QACvB,cAAc,EAAE,MAAM,CAAC;QACvB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;QAC7B,QAAQ,EAAE,OAAO,CAAC;QAClB,sBAAsB,EAAE,MAAM,CAAC;QAC/B,gBAAgB,CAAC,EAAE;YACjB,uBAAuB,EAAE,MAAM,CAAC;YAChC,iBAAiB,EAAE,MAAM,CAAC;YAC1B,gBAAgB,EAAE,MAAM,CAAC;YACzB,WAAW,CAAC,EAAE,MAAM,CAAC;YACrB,2BAA2B,EAAE,MAAM,GAAG,IAAI,CAAC;YAC3C,8BAA8B,CAAC,EAAE,MAAM,CAAC;SACzC,GAAG,IAAI,CAAC;QACT,yBAAyB,CAAC,EAAE;YAC1B,iBAAiB,EAAE,MAAM,CAAC;YAC1B,uBAAuB,EAAE,MAAM,CAAC;YAChC,0BAA0B,EAAE,MAAM,CAAC;YACnC,sBAAsB,EAAE,MAAM,CAAC;YAC/B,iCAAiC,EAAE,MAAM,GAAG,IAAI,CAAC;SAClD,GAAG,IAAI,CAAC;KACV,KAAG,OAAO,CAAC;QACV,OAAO,EAAE,OAAO,CAAC;QACjB,MAAM,EAAE,KAAK,EAAE,CAAC;QAChB,SAAS,EAAE,OAAO,CAAC;QACnB,eAAe,EAAE,IAAI,EAAE,CAAC;QACxB,WAAW,EAAE,cAAc,CAAC;KAC7B,GAAG,IAAI,CAAC,CAsIP;IACF,eAAe,GACb,OAAO,UAAU,CAAC,2BAA2B,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EACxD,SAAS,OAAO,EAChB,QAAQ,KAAK,EAAE,EACf,WAAW,OAAO,EAClB,iBAAiB,IAAI,EAAE,EACvB,gBAAgB,cAAc,KAC7B,OAAO,CAAC,IAAI,CAAC,CA2Id;IACF,MAAM,CAAC,qBAAqB,GAAI,MAAM,IAAI,EAAE,IAAI,IAAI,KAAG,IAAI,EAAE,CAoB3D;IACF,4CAA4C,GAC1C,gBAAgB,MAAM,EACtB,KAAK,IAAI,KACR,OAAO,CAAC,IAAI,EAAE,CAAC,CAgChB;IACF,WAAW,GAAU,OAAO;QAC1B,OAAO,EAAE,OAAO,CAAC;QACjB,MAAM,EAAE,KAAK,EAAE,CAAC;KACjB,KAAG,OAAO,CAAC,cAAc,CAAC,CAoBzB;CACH"}
@@ -1 +1 @@
1
- {"version":3,"file":"SetNoStoryIssueToStoryUseCase.d.ts","sourceRoot":"","sources":["../../../src/domain/usecases/SetNoStoryIssueToStoryUseCase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AACvE,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAE9C,qBAAa,6BAA6B;IAC5B,QAAQ,CAAC,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE,aAAa,CAAC;gBAArD,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE,aAAa,CAAC;IAE1E,GAAG,GAAU,OAAO;QAClB,WAAW,EAAE,IAAI,EAAE,CAAC;QACpB,OAAO,EAAE,OAAO,CAAC;QACjB,MAAM,EAAE,KAAK,EAAE,CAAC;QAChB,SAAS,EAAE,OAAO,CAAC;KACpB,KAAG,OAAO,CAAC,IAAI,CAAC,CAkCf;CACH"}
1
+ {"version":3,"file":"SetNoStoryIssueToStoryUseCase.d.ts","sourceRoot":"","sources":["../../../src/domain/usecases/SetNoStoryIssueToStoryUseCase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AACvE,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAE9C,qBAAa,6BAA6B;IAC5B,QAAQ,CAAC,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE,aAAa,CAAC;gBAArD,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE,aAAa,CAAC;IAE1E,GAAG,GAAU,OAAO;QAClB,WAAW,EAAE,IAAI,EAAE,CAAC;QACpB,OAAO,EAAE,OAAO,CAAC;QACjB,MAAM,EAAE,KAAK,EAAE,CAAC;QAChB,SAAS,EAAE,OAAO,CAAC;KACpB,KAAG,OAAO,CAAC,IAAI,CAAC,CAoCf;CACH"}