github-issue-tower-defence-management 1.148.13 → 1.148.15

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 (22) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/bin/adapter/entry-points/console/ui-dist/assets/index-DY-3a7sI.js +82 -0
  3. package/bin/adapter/entry-points/console/ui-dist/index.html +1 -1
  4. package/bin/adapter/repositories/issue/GraphqlProjectItemRepository.js +2 -1
  5. package/bin/adapter/repositories/issue/GraphqlProjectItemRepository.js.map +1 -1
  6. package/bin/domain/usecases/IssueRejectionEvaluator.js +20 -0
  7. package/bin/domain/usecases/IssueRejectionEvaluator.js.map +1 -1
  8. package/bin/domain/usecases/NotifyFinishedIssuePreparationUseCase.js.map +1 -1
  9. package/package.json +2 -2
  10. package/src/adapter/entry-points/console/ui-dist/assets/index-DY-3a7sI.js +82 -0
  11. package/src/adapter/entry-points/console/ui-dist/index.html +1 -1
  12. package/src/adapter/repositories/issue/GraphqlProjectItemRepository.test.ts +72 -0
  13. package/src/adapter/repositories/issue/GraphqlProjectItemRepository.ts +6 -1
  14. package/src/domain/usecases/IssueRejectionEvaluator.test.ts +119 -0
  15. package/src/domain/usecases/IssueRejectionEvaluator.ts +19 -0
  16. package/src/domain/usecases/NotifyFinishedIssuePreparationUseCase.ts +6 -1
  17. package/types/adapter/repositories/issue/GraphqlProjectItemRepository.d.ts.map +1 -1
  18. package/types/domain/usecases/IssueRejectionEvaluator.d.ts +2 -0
  19. package/types/domain/usecases/IssueRejectionEvaluator.d.ts.map +1 -1
  20. package/types/domain/usecases/NotifyFinishedIssuePreparationUseCase.d.ts.map +1 -1
  21. package/bin/adapter/entry-points/console/ui-dist/assets/index-J8xXGaD4.js +0 -82
  22. package/src/adapter/entry-points/console/ui-dist/assets/index-J8xXGaD4.js +0 -82
@@ -4,7 +4,7 @@
4
4
  <meta charset="UTF-8" />
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
6
  <title>TDPM Console</title>
7
- <script type="module" crossorigin src="/assets/index-J8xXGaD4.js"></script>
7
+ <script type="module" crossorigin src="/assets/index-DY-3a7sI.js"></script>
8
8
  <link rel="stylesheet" crossorigin href="/assets/index-Dihcph6j.css">
9
9
  </head>
10
10
  <body>
@@ -186,6 +186,78 @@ describe('GraphqlProjectItemRepository', () => {
186
186
  expect(sentQuery).not.toContain('assignees(first: 20)');
187
187
  });
188
188
 
189
+ it('requests body field in the Issue content fragment of the GraphQL query', async () => {
190
+ const repository = new GraphqlProjectItemRepository(
191
+ new LocalStorageRepository(),
192
+ 'dummy-token',
193
+ );
194
+ mockPost.mockReturnValueOnce(makePageResponse(false, 'cursor-1', 1));
195
+
196
+ await repository.fetchProjectItems('test-project-id');
197
+
198
+ const sentQuery = extractRequestedQueryFromMockCall(
199
+ mockPost.mock.calls[0],
200
+ );
201
+ expect(sentQuery).toContain('body');
202
+ });
203
+
204
+ it('maps body from Issue content node to ProjectItem.body', async () => {
205
+ const repository = new GraphqlProjectItemRepository(
206
+ new LocalStorageRepository(),
207
+ 'dummy-token',
208
+ );
209
+ mockPost.mockReturnValueOnce(makePageResponse(false, 'cursor-1', 1));
210
+
211
+ const result = await repository.fetchProjectItems('test-project-id');
212
+
213
+ expect(result).toHaveLength(1);
214
+ expect(result[0].body).toBe('body');
215
+ });
216
+
217
+ it('sets ProjectItem.body to null when content node has no body', async () => {
218
+ const repository = new GraphqlProjectItemRepository(
219
+ new LocalStorageRepository(),
220
+ 'dummy-token',
221
+ );
222
+ mockPost.mockReturnValueOnce(
223
+ mockJsonResponse({
224
+ data: {
225
+ node: {
226
+ items: {
227
+ totalCount: 1,
228
+ pageInfo: {
229
+ endCursor: 'cursor-1',
230
+ startCursor: 'cursor-start',
231
+ hasNextPage: false,
232
+ },
233
+ nodes: [
234
+ {
235
+ id: 'item-1',
236
+ fieldValues: { nodes: [] },
237
+ content: {
238
+ repository: { nameWithOwner: 'owner/repo' },
239
+ number: 1,
240
+ title: 'No Body Issue',
241
+ state: 'OPEN',
242
+ url: 'https://github.com/owner/repo/issues/1',
243
+ createdAt: '2024-01-01T00:00:00Z',
244
+ labels: { nodes: [] },
245
+ assignees: { nodes: [] },
246
+ },
247
+ },
248
+ ],
249
+ },
250
+ },
251
+ },
252
+ }),
253
+ );
254
+
255
+ const result = await repository.fetchProjectItems('test-project-id');
256
+
257
+ expect(result).toHaveLength(1);
258
+ expect(result[0].body).toBeNull();
259
+ });
260
+
189
261
  it('logs the rateLimit cost of the request in one line', async () => {
190
262
  const repository = new GraphqlProjectItemRepository(
191
263
  new LocalStorageRepository(),
@@ -43,6 +43,7 @@ type ProjectV2ItemContentNode = {
43
43
  title: string;
44
44
  state: string;
45
45
  url: string;
46
+ body?: string | null;
46
47
  createdAt: string;
47
48
  updatedAt: string;
48
49
  author: { login: string } | null;
@@ -120,6 +121,7 @@ const PROJECT_V2_ITEM_FIELD_VALUES_AND_CONTENT_SELECTION = `
120
121
  title
121
122
  state
122
123
  url
124
+ body
123
125
  createdAt
124
126
  updatedAt
125
127
  author {
@@ -396,6 +398,7 @@ query GetProjectItems($projectId: ID!, $after: String, $first: Int!, $query: Str
396
398
  title: string;
397
399
  state: string;
398
400
  url: string;
401
+ body?: string | null;
399
402
  createdAt: string;
400
403
  updatedAt: string;
401
404
  author: { login: string } | null;
@@ -445,6 +448,7 @@ query GetProjectItems($projectId: ID!, $after: String, $first: Int!, $query: Str
445
448
  title: string;
446
449
  state: string;
447
450
  url: string;
451
+ body?: string | null;
448
452
  createdAt: string;
449
453
  updatedAt: string;
450
454
  author: { login: string } | null;
@@ -507,6 +511,7 @@ query GetProjectItems($projectId: ID!, $after: String, $first: Int!, $query: Str
507
511
  title: string;
508
512
  state: string;
509
513
  url: string;
514
+ body?: string | null;
510
515
  createdAt: string;
511
516
  updatedAt: string;
512
517
  author: { login: string } | null;
@@ -612,7 +617,7 @@ query GetProjectItems($projectId: ID!, $after: String, $first: Int!, $query: Str
612
617
  title: item.content.title,
613
618
  state: this.convertStrToState(item.content.state),
614
619
  url: item.content.url,
615
- body: null,
620
+ body: item.content.body ?? null,
616
621
  labels: item.content.labels?.nodes?.map((l) => l.name) || [],
617
622
  assignees: item.content.assignees?.nodes?.map((a) => a.login) || [],
618
623
  createdAt: item.content.createdAt || new Date().toISOString(),
@@ -542,6 +542,125 @@ describe('IssueRejectionEvaluator', () => {
542
542
  });
543
543
  });
544
544
 
545
+ describe('pullRequestRequired: false in issue body', () => {
546
+ it('should not reject and not call findRelatedOpenPRs when body ends with JSON block containing pullRequestRequired: false', async () => {
547
+ const body = '```json\n{"pullRequestRequired": false}\n```';
548
+
549
+ const result = await evaluator.evaluate({
550
+ url: 'https://github.com/user/repo/issues/1',
551
+ labels: [],
552
+ isPr: false,
553
+ body,
554
+ });
555
+
556
+ expect(mockIssueRepository.findRelatedOpenPRs).not.toHaveBeenCalled();
557
+ expect(result.rejections).toHaveLength(0);
558
+ expect(result.approvedPrUrl).toBeNull();
559
+ });
560
+
561
+ it('should not reject even with trailing whitespace after the closing JSON block', async () => {
562
+ const body = '```json\n{"pullRequestRequired": false}\n```\n ';
563
+
564
+ const result = await evaluator.evaluate({
565
+ url: 'https://github.com/user/repo/issues/1',
566
+ labels: [],
567
+ isPr: false,
568
+ body,
569
+ });
570
+
571
+ expect(mockIssueRepository.findRelatedOpenPRs).not.toHaveBeenCalled();
572
+ expect(result.rejections).toHaveLength(0);
573
+ });
574
+
575
+ it('should still require PR when body has pullRequestRequired: true', async () => {
576
+ mockIssueRepository.findRelatedOpenPRs.mockResolvedValue([]);
577
+ const body = '```json\n{"pullRequestRequired": true}\n```';
578
+
579
+ const result = await evaluator.evaluate({
580
+ url: 'https://github.com/user/repo/issues/1',
581
+ labels: [],
582
+ isPr: false,
583
+ body,
584
+ });
585
+
586
+ expect(result.rejections).toHaveLength(1);
587
+ expect(result.rejections[0].type).toBe('PULL_REQUEST_NOT_FOUND');
588
+ });
589
+
590
+ it('should still require PR when body is null', async () => {
591
+ mockIssueRepository.findRelatedOpenPRs.mockResolvedValue([]);
592
+
593
+ const result = await evaluator.evaluate({
594
+ url: 'https://github.com/user/repo/issues/1',
595
+ labels: [],
596
+ isPr: false,
597
+ body: null,
598
+ });
599
+
600
+ expect(result.rejections).toHaveLength(1);
601
+ expect(result.rejections[0].type).toBe('PULL_REQUEST_NOT_FOUND');
602
+ });
603
+
604
+ it('should still require PR when body is undefined', async () => {
605
+ mockIssueRepository.findRelatedOpenPRs.mockResolvedValue([]);
606
+
607
+ const result = await evaluator.evaluate({
608
+ url: 'https://github.com/user/repo/issues/1',
609
+ labels: [],
610
+ isPr: false,
611
+ });
612
+
613
+ expect(result.rejections).toHaveLength(1);
614
+ expect(result.rejections[0].type).toBe('PULL_REQUEST_NOT_FOUND');
615
+ });
616
+
617
+ it('should still require PR when JSON block with pullRequestRequired: false is not at end of body', async () => {
618
+ mockIssueRepository.findRelatedOpenPRs.mockResolvedValue([]);
619
+ const body =
620
+ '```json\n{"pullRequestRequired": false}\n```\n\nsome text after';
621
+
622
+ const result = await evaluator.evaluate({
623
+ url: 'https://github.com/user/repo/issues/1',
624
+ labels: [],
625
+ isPr: false,
626
+ body,
627
+ });
628
+
629
+ expect(result.rejections).toHaveLength(1);
630
+ expect(result.rejections[0].type).toBe('PULL_REQUEST_NOT_FOUND');
631
+ });
632
+
633
+ it('should still require PR when body has invalid JSON in code block', async () => {
634
+ mockIssueRepository.findRelatedOpenPRs.mockResolvedValue([]);
635
+ const body = '```json\n{invalid json}\n```';
636
+
637
+ const result = await evaluator.evaluate({
638
+ url: 'https://github.com/user/repo/issues/1',
639
+ labels: [],
640
+ isPr: false,
641
+ body,
642
+ });
643
+
644
+ expect(result.rejections).toHaveLength(1);
645
+ expect(result.rejections[0].type).toBe('PULL_REQUEST_NOT_FOUND');
646
+ });
647
+
648
+ it('should still require PR when body has pullRequestRequired not set to false', async () => {
649
+ mockIssueRepository.findRelatedOpenPRs.mockResolvedValue([]);
650
+ const body = '```json\n{"someOtherField": true}\n```';
651
+
652
+ const result = await evaluator.evaluate({
653
+ url: 'https://github.com/user/repo/issues/1',
654
+ labels: [],
655
+ isPr: false,
656
+ body,
657
+ });
658
+
659
+ expect(result.rejections).toHaveLength(1);
660
+ expect(result.rejections[0].type).toBe('PULL_REQUEST_NOT_FOUND');
661
+ });
662
+ });
663
+
545
664
  describe('change-target-must: label behavior', () => {
546
665
  const prUrl = 'https://github.com/user/repo/pull/1';
547
666
 
@@ -45,6 +45,7 @@ export class IssueRejectionEvaluator {
45
45
  url: string;
46
46
  labels: string[];
47
47
  isPr: boolean;
48
+ body?: string | null;
48
49
  },
49
50
  labelsNotRequiringPullRequest: string[] = [],
50
51
  options: EvaluateOptions = {},
@@ -65,6 +66,7 @@ export class IssueRejectionEvaluator {
65
66
  if (
66
67
  !hasLlmAgentLabel &&
67
68
  !hasLabelNotRequiringPullRequest &&
69
+ this.isPullRequestRequiredByBody(issue.body) &&
68
70
  (categoryLabels.length <= 0 || categoryLabels.includes('category:e2e'))
69
71
  ) {
70
72
  let prsToCheck: RelatedPullRequest[];
@@ -259,4 +261,21 @@ export class IssueRejectionEvaluator {
259
261
  targetPath: string,
260
262
  ): boolean =>
261
263
  filePath === targetPath || filePath.startsWith(`${targetPath}/`);
264
+
265
+ private isPullRequestRequiredByBody = (
266
+ body: string | null | undefined,
267
+ ): boolean => {
268
+ if (!body) return true;
269
+ const match = body.trimEnd().match(/```json\n([\s\S]*?)\n```\s*$/);
270
+ if (!match || !match[1]) return true;
271
+ let config: unknown;
272
+ try {
273
+ config = JSON.parse(match[1]);
274
+ } catch {
275
+ return true;
276
+ }
277
+ if (typeof config !== 'object' || config === null) return true;
278
+ if (!('pullRequestRequired' in config)) return true;
279
+ return Reflect.get(config, 'pullRequestRequired') !== false;
280
+ };
262
281
  }
@@ -287,7 +287,12 @@ export class NotifyFinishedIssuePreparationUseCase {
287
287
  allowedIssueAuthors === null || allowedIssueAuthors.includes(author);
288
288
 
289
289
  private collectRejections = async (
290
- issue: { url: string; labels: string[]; isPr: boolean },
290
+ issue: {
291
+ url: string;
292
+ labels: string[];
293
+ isPr: boolean;
294
+ body?: string | null;
295
+ },
291
296
  comments: { author: string; content: string }[],
292
297
  isTrustedAuthor: (author: string) => boolean,
293
298
  labelsNotRequiringPullRequest: string[],
@@ -1 +1 @@
1
- {"version":3,"file":"GraphqlProjectItemRepository.d.ts","sourceRoot":"","sources":["../../../../src/adapter/repositories/issue/GraphqlProjectItemRepository.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAE/D,OAAO,EAAE,OAAO,EAAE,MAAM,kCAAkC,CAAC;AAC3D,OAAO,EAAE,KAAK,EAAE,MAAM,gCAAgC,CAAC;AACvD,MAAM,MAAM,WAAW,GAAG;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACpC,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,yBAAyB,EAAE,MAAM,EAAE,CAAC;IACpC,YAAY,EAAE;QACZ,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;KACtB,EAAE,CAAC;CACL,CAAC;AACF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAsCF,eAAO,MAAM,yBAAyB,KAAK,CAAC;AAC5C,eAAO,MAAM,4BAA4B,KAAK,CAAC;AAuG/C,eAAO,MAAM,mBAAmB,OAAO,CAAC;AACxC,eAAO,MAAM,qCAAqC,MAAM,CAAC;AACzD,eAAO,MAAM,qCAAqC,MAAM,CAAC;AACzD,eAAO,MAAM,oDAAoD,OAAO,CAAC;AACzE,eAAO,MAAM,sBAAsB,IAAI,CAAC;AACxC,eAAO,MAAM,yBAAyB,OAAO,CAAC;AAC9C,eAAO,MAAM,6BAA6B,QAAQ,CAAC;AACnD,eAAO,MAAM,yBAAyB,SAAS,CAAC;AAsDhD,eAAO,MAAM,sBAAsB,GAAU,CAAC,EAC5C,SAAS,MAAM,OAAO,CAAC,CAAC,CAAC,KACxB,OAAO,CAAC,CAAC,CAyBX,CAAC;AAcF,qBAAa,4BAA6B,SAAQ,oBAAoB;IACpE,WAAW,GACT,WAAW,MAAM,EACjB,OAAO,MAAM,EACb,gBAAgB,MAAM,EACtB,aAAa,MAAM,KAClB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAiE5B;IACF,iBAAiB,GACf,WAAW,MAAM,EACjB,QAAQ,MAAM,KACb,OAAO,CAAC,WAAW,EAAE,CAAC,CAyPvB;IACF,OAAO,CAAC,iCAAiC,CA2CvC;IACF,sBAAsB,GACpB,WAAW,MAAM,EACjB,QAAQ,MAAM,KACb,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAqJ5B;IACF,sBAAsB,GAAU,KAAK,MAAM,EAAE,KAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAmEpE;IACF,gCAAgC,GAC9B,UAAU,MAAM,KACf,OAAO,CACR;QACE,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;KACpB,EAAE,CACJ,CAGC;IAEF,oBAAoB,GAClB,OAAO,MAAM,EACb,gBAAgB,MAAM,EACtB,aAAa,MAAM,KAClB,OAAO,CACR;QACE,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;KACpB,EAAE,CACJ,CAkJC;IACF,qBAAqB,GACnB,UAAU,MAAM,EAChB,YAAY,MAAM,KACjB,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAuR5B;IACF,iBAAiB,GAAI,OAAO,MAAM,KAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAQ/D;IAEF,kBAAkB,GAChB,WAAW,MAAM,EACjB,SAAS,MAAM,EACf,QAAQ,MAAM,EACd,OACI;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,GAChB;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,GAClB;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,GAChB;QAAE,oBAAoB,EAAE,MAAM,CAAA;KAAE,KACnC,OAAO,CAAC,IAAI,CAAC,CA4Bd;IAEF,iBAAiB,GACf,WAAW,MAAM,EACjB,SAAS,MAAM,EACf,QAAQ,MAAM,KACb,OAAO,CAAC,IAAI,CAAC,CA2Bd;IACF,sBAAsB,GACpB,SAAS,OAAO,CAAC,IAAI,CAAC,EACtB,SAAS,MAAM,EACf,OAAO,KAAK,CAAC,QAAQ,CAAC,EACtB,MAAM,MAAM,KACX,OAAO,CAAC,IAAI,CAAC,CAEd;IAEF,qBAAqB,GACnB,WAAW,MAAM,EACjB,QAAQ,MAAM,KACb,OAAO,CAAC,IAAI,CAAC,CA6Bd;IAEF,+BAA+B,GAC7B,UAAU,MAAM,EAChB,WAAW,MAAM,KAChB,OAAO,CAAC,IAAI,CAAC,CASd;IAEF,iBAAiB,GACf,WAAW,MAAM,EACjB,UAAU,MAAM,KACf,OAAO,CAAC,MAAM,CAAC,CA+DhB;CACH"}
1
+ {"version":3,"file":"GraphqlProjectItemRepository.d.ts","sourceRoot":"","sources":["../../../../src/adapter/repositories/issue/GraphqlProjectItemRepository.ts"],"names":[],"mappings":"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"}
@@ -17,10 +17,12 @@ export declare class IssueRejectionEvaluator {
17
17
  url: string;
18
18
  labels: string[];
19
19
  isPr: boolean;
20
+ body?: string | null;
20
21
  }, labelsNotRequiringPullRequest?: string[], options?: EvaluateOptions) => Promise<PrRejectionResult>;
21
22
  private resolveOpenPrsForPrItem;
22
23
  private resolveOpenPrsFromUrls;
23
24
  private extractChangeTargetMustPaths;
24
25
  private isFilePathUnderPath;
26
+ private isPullRequestRequiredByBody;
25
27
  }
26
28
  //# sourceMappingURL=IssueRejectionEvaluator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"IssueRejectionEvaluator.d.ts","sourceRoot":"","sources":["../../../src/domain/usecases/IssueRejectionEvaluator.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EAEhB,MAAM,sCAAsC,CAAC;AAE9C,MAAM,MAAM,oBAAoB,GAC5B,wBAAwB,GACxB,8BAA8B,GAC9B,uBAAuB,GACvB,yBAAyB,GACzB,kCAAkC,GAClC,+BAA+B,GAC/B,iCAAiC,GACjC,qCAAqC,CAAC;AAE1C,MAAM,MAAM,iBAAiB,GAAG;IAC9B,UAAU,EAAE;QAAE,IAAI,EAAE,oBAAoB,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC7D,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAQ5B,iBAAiB,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;CACrC,CAAC;AAEF,qBAAa,uBAAuB;IAEhC,OAAO,CAAC,QAAQ,CAAC,eAAe;gBAAf,eAAe,EAAE,IAAI,CACpC,eAAe,EACb,oBAAoB,GACpB,oBAAoB,GACpB,gCAAgC,GAChC,iCAAiC,CACpC;IAGH,QAAQ,GACN,OAAO;QACL,GAAG,EAAE,MAAM,CAAC;QACZ,MAAM,EAAE,MAAM,EAAE,CAAC;QACjB,IAAI,EAAE,OAAO,CAAC;KACf,EACD,gCAA+B,MAAM,EAAO,EAC5C,UAAS,eAAoB,KAC5B,OAAO,CAAC,iBAAiB,CAAC,CAqI3B;IAKF,OAAO,CAAC,uBAAuB,CAgB7B;IAcF,OAAO,CAAC,sBAAsB,CAsB5B;IAEF,OAAO,CAAC,4BAA4B,CAYlC;IAEF,OAAO,CAAC,mBAAmB,CAIwC;CACpE"}
1
+ {"version":3,"file":"IssueRejectionEvaluator.d.ts","sourceRoot":"","sources":["../../../src/domain/usecases/IssueRejectionEvaluator.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EAEhB,MAAM,sCAAsC,CAAC;AAE9C,MAAM,MAAM,oBAAoB,GAC5B,wBAAwB,GACxB,8BAA8B,GAC9B,uBAAuB,GACvB,yBAAyB,GACzB,kCAAkC,GAClC,+BAA+B,GAC/B,iCAAiC,GACjC,qCAAqC,CAAC;AAE1C,MAAM,MAAM,iBAAiB,GAAG;IAC9B,UAAU,EAAE;QAAE,IAAI,EAAE,oBAAoB,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC7D,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAQ5B,iBAAiB,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;CACrC,CAAC;AAEF,qBAAa,uBAAuB;IAEhC,OAAO,CAAC,QAAQ,CAAC,eAAe;gBAAf,eAAe,EAAE,IAAI,CACpC,eAAe,EACb,oBAAoB,GACpB,oBAAoB,GACpB,gCAAgC,GAChC,iCAAiC,CACpC;IAGH,QAAQ,GACN,OAAO;QACL,GAAG,EAAE,MAAM,CAAC;QACZ,MAAM,EAAE,MAAM,EAAE,CAAC;QACjB,IAAI,EAAE,OAAO,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KACtB,EACD,gCAA+B,MAAM,EAAO,EAC5C,UAAS,eAAoB,KAC5B,OAAO,CAAC,iBAAiB,CAAC,CAsI3B;IAKF,OAAO,CAAC,uBAAuB,CAgB7B;IAcF,OAAO,CAAC,sBAAsB,CAsB5B;IAEF,OAAO,CAAC,4BAA4B,CAYlC;IAEF,OAAO,CAAC,mBAAmB,CAIwC;IAEnE,OAAO,CAAC,2BAA2B,CAejC;CACH"}
@@ -1 +1 @@
1
- {"version":3,"file":"NotifyFinishedIssuePreparationUseCase.d.ts","sourceRoot":"","sources":["../../../src/domain/usecases/NotifyFinishedIssuePreparationUseCase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAC3E,OAAO,EAAE,sBAAsB,EAAE,MAAM,6CAA6C,CAAC;AACrF,OAAO,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAe3E,qBAAa,kBAAmB,SAAQ,KAAK;gBAC/B,QAAQ,EAAE,MAAM;CAI7B;AACD,qBAAa,uBAAwB,SAAQ,KAAK;gBAE9C,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,GAAG,IAAI,EAC5B,cAAc,EAAE,MAAM,GAAG,IAAI;CAOhC;AAID,qBAAa,qCAAqC;IAK9C,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,eAAe;IAahC,OAAO,CAAC,QAAQ,CAAC,sBAAsB;IAIvC,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAtBpC,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAA0B;IAClE,OAAO,CAAC,QAAQ,CAAC,+BAA+B,CAAkC;gBAG/D,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,EAAE,UAAU,CAAC,EACtD,eAAe,EAAE,IAAI,CACpC,eAAe,EACb,KAAK,GACL,QAAQ,GACR,cAAc,GACd,oBAAoB,GACpB,mBAAmB,GACnB,oBAAoB,GACpB,gCAAgC,GAChC,oBAAoB,GACpB,iCAAiC,GACjC,qBAAqB,CACxB,EACgB,sBAAsB,EAAE,IAAI,CAC3C,sBAAsB,EACtB,sBAAsB,GAAG,eAAe,CACzC,EACgB,iBAAiB,EAAE,IAAI,CACtC,iBAAiB,EACjB,gBAAgB,CACjB;IAQH,GAAG,GAAU,QAAQ;QACnB,UAAU,EAAE,MAAM,CAAC;QACnB,QAAQ,EAAE,MAAM,CAAC;QACjB,sBAAsB,EAAE,MAAM,CAAC;QAC/B,iCAAiC,EAAE,MAAM,GAAG,IAAI,CAAC;QACjD,mBAAmB,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;QACtC,oBAAoB,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;QACvC,6BAA6B,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;QAChD,uBAAuB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;KACzD,KAAG,OAAO,CAAC,IAAI,CAAC,CAsMf;IAEF,OAAO,CAAC,eAAe,CAIgD;IAEvE,OAAO,CAAC,iBAAiB,CA6CvB;IAEF,OAAO,CAAC,qBAAqB,CAuB3B;IAEF,OAAO,CAAC,gCAAgC,CAoBtC;IAEF,OAAO,CAAC,uBAAuB,CAQ7B;IAEF,OAAO,CAAC,+BAA+B,CAgCrC;CACH"}
1
+ {"version":3,"file":"NotifyFinishedIssuePreparationUseCase.d.ts","sourceRoot":"","sources":["../../../src/domain/usecases/NotifyFinishedIssuePreparationUseCase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAC3E,OAAO,EAAE,sBAAsB,EAAE,MAAM,6CAA6C,CAAC;AACrF,OAAO,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAe3E,qBAAa,kBAAmB,SAAQ,KAAK;gBAC/B,QAAQ,EAAE,MAAM;CAI7B;AACD,qBAAa,uBAAwB,SAAQ,KAAK;gBAE9C,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,GAAG,IAAI,EAC5B,cAAc,EAAE,MAAM,GAAG,IAAI;CAOhC;AAID,qBAAa,qCAAqC;IAK9C,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,eAAe;IAahC,OAAO,CAAC,QAAQ,CAAC,sBAAsB;IAIvC,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAtBpC,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAA0B;IAClE,OAAO,CAAC,QAAQ,CAAC,+BAA+B,CAAkC;gBAG/D,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,EAAE,UAAU,CAAC,EACtD,eAAe,EAAE,IAAI,CACpC,eAAe,EACb,KAAK,GACL,QAAQ,GACR,cAAc,GACd,oBAAoB,GACpB,mBAAmB,GACnB,oBAAoB,GACpB,gCAAgC,GAChC,oBAAoB,GACpB,iCAAiC,GACjC,qBAAqB,CACxB,EACgB,sBAAsB,EAAE,IAAI,CAC3C,sBAAsB,EACtB,sBAAsB,GAAG,eAAe,CACzC,EACgB,iBAAiB,EAAE,IAAI,CACtC,iBAAiB,EACjB,gBAAgB,CACjB;IAQH,GAAG,GAAU,QAAQ;QACnB,UAAU,EAAE,MAAM,CAAC;QACnB,QAAQ,EAAE,MAAM,CAAC;QACjB,sBAAsB,EAAE,MAAM,CAAC;QAC/B,iCAAiC,EAAE,MAAM,GAAG,IAAI,CAAC;QACjD,mBAAmB,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;QACtC,oBAAoB,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;QACvC,6BAA6B,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;QAChD,uBAAuB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;KACzD,KAAG,OAAO,CAAC,IAAI,CAAC,CAsMf;IAEF,OAAO,CAAC,eAAe,CAIgD;IAEvE,OAAO,CAAC,iBAAiB,CAkDvB;IAEF,OAAO,CAAC,qBAAqB,CAuB3B;IAEF,OAAO,CAAC,gCAAgC,CAoBtC;IAEF,OAAO,CAAC,uBAAuB,CAQ7B;IAEF,OAAO,CAAC,+BAA+B,CAgCrC;CACH"}