github-issue-tower-defence-management 1.67.3 → 1.67.5

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 (29) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/README.md +1 -1
  3. package/bin/adapter/entry-points/cli/index.js +2 -2
  4. package/bin/adapter/entry-points/cli/index.js.map +1 -1
  5. package/bin/adapter/entry-points/cli/projectConfig.js +2 -24
  6. package/bin/adapter/entry-points/cli/projectConfig.js.map +1 -1
  7. package/bin/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.js +1 -16
  8. package/bin/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.js.map +1 -1
  9. package/bin/adapter/proxy/RateLimitCache.js +9 -6
  10. package/bin/adapter/proxy/RateLimitCache.js.map +1 -1
  11. package/bin/domain/usecases/HandleScheduledEventUseCase.js +33 -10
  12. package/bin/domain/usecases/HandleScheduledEventUseCase.js.map +1 -1
  13. package/package.json +1 -1
  14. package/src/adapter/entry-points/cli/index.test.ts +0 -117
  15. package/src/adapter/entry-points/cli/index.ts +2 -2
  16. package/src/adapter/entry-points/cli/projectConfig.ts +1 -31
  17. package/src/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.test.ts +0 -94
  18. package/src/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.ts +1 -47
  19. package/src/adapter/proxy/RateLimitCache.test.ts +123 -0
  20. package/src/adapter/proxy/RateLimitCache.ts +9 -6
  21. package/src/adapter/repositories/issue/RestIssueRepository.test.ts +77 -195
  22. package/src/domain/usecases/HandleScheduledEventUseCase.test.ts +65 -0
  23. package/src/domain/usecases/HandleScheduledEventUseCase.ts +120 -24
  24. package/types/adapter/entry-points/cli/projectConfig.d.ts +1 -2
  25. package/types/adapter/entry-points/cli/projectConfig.d.ts.map +1 -1
  26. package/types/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.d.ts.map +1 -1
  27. package/types/adapter/proxy/RateLimitCache.d.ts.map +1 -1
  28. package/types/domain/usecases/HandleScheduledEventUseCase.d.ts +3 -2
  29. package/types/domain/usecases/HandleScheduledEventUseCase.d.ts.map +1 -1
@@ -1,118 +1,25 @@
1
- const mockPost = jest.fn();
2
- const mockGet = jest.fn();
3
- const mockPut = jest.fn();
4
- const mockPatch = jest.fn();
5
- const mockDelete = jest.fn();
6
-
7
- jest.mock('ky', () => ({
8
- default: {
9
- post: mockPost,
10
- get: mockGet,
11
- put: mockPut,
12
- patch: mockPatch,
13
- delete: mockDelete,
14
- extend: jest.fn(),
15
- create: jest.fn(),
16
- stop: jest.fn(),
17
- },
18
- __esModule: true,
19
- }));
20
-
21
1
  import { RestIssueRepository } from './RestIssueRepository';
22
2
  import { LocalStorageRepository } from '../LocalStorageRepository';
23
3
  import { Issue } from '../../../domain/entities/Issue';
24
4
 
25
- const mockJsonResponse = <T>(data: T) => ({
26
- json: jest.fn().mockResolvedValue(data),
27
- });
28
-
29
- const buildIssue = (overrides: Partial<Issue> = {}): Issue => ({
30
- nameWithOwner: 'HiromiShikata/test-repository',
31
- number: 40,
32
- title: 'Test Issue',
33
- state: 'OPEN',
34
- status: null,
35
- story: null,
36
- nextActionDate: null,
37
- nextActionHour: null,
38
- estimationMinutes: null,
39
- dependedIssueUrls: [],
40
- completionDate50PercentConfidence: null,
41
- url: 'https://github.com/HiromiShikata/test-repository/issues/40',
42
- assignees: [],
43
- labels: ['test'],
44
- org: 'HiromiShikata',
45
- repo: 'test-repository',
46
- body: 'Test body',
47
- itemId: '',
48
- isPr: false,
49
- isInProgress: false,
50
- isClosed: false,
51
- createdAt: new Date(),
52
- author: '',
53
- ...overrides,
54
- });
55
-
56
- const buildGetIssueResponse = (
57
- labels: string[],
58
- assignees: string[],
59
- ): {
60
- labels: Array<{ name: string }>;
61
- assignees: Array<{ login: string }>;
62
- title: string;
63
- body: string;
64
- number: number;
65
- state: string;
66
- created_at: string;
67
- } => ({
68
- labels: labels.map((name) => ({ name })),
69
- assignees: assignees.map((login) => ({ login })),
70
- title: 'Test Issue',
71
- body: 'Test body',
72
- number: 40,
73
- state: 'OPEN',
74
- created_at: '2020-01-01T00:00:00Z',
75
- });
76
-
77
5
  describe('RestIssueRepository', () => {
78
6
  const localStorageRepository = new LocalStorageRepository();
79
7
  const restIssueRepository: RestIssueRepository = new RestIssueRepository(
80
8
  localStorageRepository,
81
- 'dummy-token',
9
+ process.env.GH_TOKEN || 'dummy',
82
10
  );
83
11
 
84
- afterEach(() => {
85
- mockPost.mockReset();
86
- mockGet.mockReset();
87
- mockPut.mockReset();
88
- mockPatch.mockReset();
89
- mockDelete.mockReset();
90
- });
91
-
92
12
  describe('createComment', () => {
93
13
  it('should create a comment', async () => {
94
- mockPost.mockResolvedValue(undefined);
95
-
96
14
  await restIssueRepository.createComment(
97
15
  'https://github.com/HiromiShikata/test-repository/issues/40',
98
16
  'test comment',
99
17
  );
100
-
101
- expect(mockPost).toHaveBeenCalledTimes(1);
102
- expect(mockPost).toHaveBeenCalledWith(
103
- 'https://api.github.com/repos/HiromiShikata/test-repository/issues/40/comments',
104
- {
105
- json: { body: 'test comment' },
106
- headers: { Authorization: 'token dummy-token' },
107
- },
108
- );
109
18
  });
110
19
  });
111
20
  describe('createNewIssue', () => {
112
21
  it('should create a new issue', async () => {
113
- mockPost.mockReturnValue(mockJsonResponse({ number: 123 }));
114
-
115
- const issueNumber = await restIssueRepository.createNewIssue(
22
+ await restIssueRepository.createNewIssue(
116
23
  'HiromiShikata',
117
24
  'test-repository',
118
25
  'test issue',
@@ -120,35 +27,35 @@ describe('RestIssueRepository', () => {
120
27
  ['HiromiShikata'],
121
28
  ['test'],
122
29
  );
123
-
124
- expect(issueNumber).toBe(123);
125
- expect(mockPost).toHaveBeenCalledTimes(1);
126
- expect(mockPost).toHaveBeenCalledWith(
127
- 'https://api.github.com/repos/HiromiShikata/test-repository/issues',
128
- {
129
- json: {
130
- title: 'test issue',
131
- body: 'test body',
132
- assignees: ['HiromiShikata'],
133
- labels: ['test'],
134
- },
135
- headers: { Authorization: 'token dummy-token' },
136
- },
137
- );
138
30
  });
139
31
  });
140
32
  describe('updateLabels', () => {
141
33
  it('should update issue labels', async () => {
142
- const issue = buildIssue();
143
-
144
- mockPut.mockResolvedValue(undefined);
145
- mockGet
146
- .mockReturnValueOnce(
147
- mockJsonResponse(buildGetIssueResponse(['default'], [])),
148
- )
149
- .mockReturnValueOnce(
150
- mockJsonResponse(buildGetIssueResponse(['test', 'updated'], [])),
151
- );
34
+ const issue: Issue = {
35
+ nameWithOwner: 'HiromiShikata/test-repository',
36
+ number: 40,
37
+ title: 'Test Issue',
38
+ state: 'OPEN',
39
+ status: null,
40
+ story: null,
41
+ nextActionDate: null,
42
+ nextActionHour: null,
43
+ estimationMinutes: null,
44
+ dependedIssueUrls: [],
45
+ completionDate50PercentConfidence: null,
46
+ url: 'https://github.com/HiromiShikata/test-repository/issues/40',
47
+ assignees: [],
48
+ labels: ['test'],
49
+ org: 'HiromiShikata',
50
+ repo: 'test-repository',
51
+ body: 'Test body',
52
+ itemId: '',
53
+ isPr: false,
54
+ isInProgress: false,
55
+ isClosed: false,
56
+ createdAt: new Date(),
57
+ author: '',
58
+ };
152
59
 
153
60
  await restIssueRepository.updateLabels(issue, ['default']);
154
61
  const issueDefault = await restIssueRepository.getIssue(issue.url);
@@ -158,45 +65,35 @@ describe('RestIssueRepository', () => {
158
65
  expect(updatedIssue.labels).toContain('updated');
159
66
  expect(updatedIssue.labels).toContain('test');
160
67
  expect(updatedIssue.labels).not.toContain('default');
161
-
162
- expect(mockPut).toHaveBeenCalledTimes(2);
163
- expect(mockPut).toHaveBeenNthCalledWith(
164
- 1,
165
- 'https://api.github.com/repos/HiromiShikata/test-repository/issues/40/labels',
166
- {
167
- json: { labels: ['default'] },
168
- headers: {
169
- Authorization: 'token dummy-token',
170
- Accept: 'application/vnd.github.v3+json',
171
- },
172
- },
173
- );
174
- expect(mockPut).toHaveBeenNthCalledWith(
175
- 2,
176
- 'https://api.github.com/repos/HiromiShikata/test-repository/issues/40/labels',
177
- {
178
- json: { labels: ['test', 'updated'] },
179
- headers: {
180
- Authorization: 'token dummy-token',
181
- Accept: 'application/vnd.github.v3+json',
182
- },
183
- },
184
- );
185
68
  });
186
69
  });
187
70
  describe('removeLabel', () => {
188
71
  it('should remove a specific label from issue', async () => {
189
- const issue = buildIssue();
190
-
191
- mockPut.mockResolvedValue(undefined);
192
- mockDelete.mockResolvedValue(undefined);
193
- mockGet
194
- .mockReturnValueOnce(
195
- mockJsonResponse(buildGetIssueResponse(['test', 'to-remove'], [])),
196
- )
197
- .mockReturnValueOnce(
198
- mockJsonResponse(buildGetIssueResponse(['test'], [])),
199
- );
72
+ const issue: Issue = {
73
+ nameWithOwner: 'HiromiShikata/test-repository',
74
+ number: 40,
75
+ title: 'Test Issue',
76
+ state: 'OPEN',
77
+ status: null,
78
+ story: null,
79
+ nextActionDate: null,
80
+ nextActionHour: null,
81
+ estimationMinutes: null,
82
+ dependedIssueUrls: [],
83
+ completionDate50PercentConfidence: null,
84
+ url: 'https://github.com/HiromiShikata/test-repository/issues/40',
85
+ assignees: [],
86
+ labels: ['test'],
87
+ org: 'HiromiShikata',
88
+ repo: 'test-repository',
89
+ body: 'Test body',
90
+ itemId: '',
91
+ isPr: false,
92
+ isInProgress: false,
93
+ isClosed: false,
94
+ createdAt: new Date(),
95
+ author: '',
96
+ };
200
97
 
201
98
  await restIssueRepository.updateLabels(issue, ['test', 'to-remove']);
202
99
  const issueBefore = await restIssueRepository.getIssue(issue.url);
@@ -207,32 +104,35 @@ describe('RestIssueRepository', () => {
207
104
  const issueAfter = await restIssueRepository.getIssue(issue.url);
208
105
  expect(issueAfter.labels).not.toContain('to-remove');
209
106
  expect(issueAfter.labels).toContain('test');
210
-
211
- expect(mockDelete).toHaveBeenCalledTimes(1);
212
- expect(mockDelete).toHaveBeenCalledWith(
213
- 'https://api.github.com/repos/HiromiShikata/test-repository/issues/40/labels/to-remove',
214
- {
215
- headers: {
216
- Authorization: 'token dummy-token',
217
- Accept: 'application/vnd.github.v3+json',
218
- },
219
- },
220
- );
221
107
  });
222
108
  });
223
109
  describe('updateAssigneeList', () => {
224
110
  it('should update issue assignees', async () => {
225
- const issue = buildIssue();
226
-
227
- mockPatch.mockResolvedValue(undefined);
228
- mockGet
229
- .mockReturnValueOnce(
230
- mockJsonResponse(buildGetIssueResponse(['test'], ['HiromiShikata'])),
231
- )
232
- .mockReturnValueOnce(
233
- mockJsonResponse(buildGetIssueResponse(['test'], [])),
234
- );
235
-
111
+ const issue: Issue = {
112
+ nameWithOwner: 'HiromiShikata/test-repository',
113
+ number: 40,
114
+ title: 'Test Issue',
115
+ state: 'OPEN',
116
+ status: null,
117
+ story: null,
118
+ nextActionDate: null,
119
+ nextActionHour: null,
120
+ estimationMinutes: null,
121
+ dependedIssueUrls: [],
122
+ completionDate50PercentConfidence: null,
123
+ url: 'https://github.com/HiromiShikata/test-repository/issues/40',
124
+ assignees: [],
125
+ labels: ['test'],
126
+ org: 'HiromiShikata',
127
+ repo: 'test-repository',
128
+ body: 'Test body',
129
+ itemId: '',
130
+ isPr: false,
131
+ isInProgress: false,
132
+ isClosed: false,
133
+ createdAt: new Date(),
134
+ author: '',
135
+ };
236
136
  await restIssueRepository.updateAssigneeList(issue, ['HiromiShikata']);
237
137
  const issueWithAssignee = await restIssueRepository.getIssue(issue.url);
238
138
  expect(issueWithAssignee.assignees).toContain('HiromiShikata');
@@ -241,24 +141,6 @@ describe('RestIssueRepository', () => {
241
141
  issue.url,
242
142
  );
243
143
  expect(issueWithoutAssignee.assignees).not.toContain('HiromiShikata');
244
-
245
- expect(mockPatch).toHaveBeenCalledTimes(2);
246
- expect(mockPatch).toHaveBeenNthCalledWith(
247
- 1,
248
- 'https://api.github.com/repos/HiromiShikata/test-repository/issues/40',
249
- {
250
- json: { assignees: ['HiromiShikata'] },
251
- headers: { Authorization: 'token dummy-token' },
252
- },
253
- );
254
- expect(mockPatch).toHaveBeenNthCalledWith(
255
- 2,
256
- 'https://api.github.com/repos/HiromiShikata/test-repository/issues/40',
257
- {
258
- json: { assignees: [] },
259
- headers: { Authorization: 'token dummy-token' },
260
- },
261
- );
262
144
  });
263
145
  });
264
146
  });
@@ -736,5 +736,70 @@ describe('HandleScheduledEventUseCase', () => {
736
736
  expect(slowSweepValueCall).toBeUndefined();
737
737
  });
738
738
  });
739
+
740
+ describe('spreadsheet access failure error issue creation', () => {
741
+ const failureInput = {
742
+ projectName: 'test-project',
743
+ org: 'test-org',
744
+ projectUrl: 'https://github.com/test-org/test-project',
745
+ manager: 'test-manager',
746
+ workingReport: {
747
+ repo: 'test-repo',
748
+ members: ['member1'],
749
+ spreadsheetUrl: 'https://docs.google.com/spreadsheets/test',
750
+ },
751
+ urlOfStoryView: 'https://github.com/test-org/test-project/issues',
752
+ disabled: false,
753
+ allowIssueCacheMinutes: 60,
754
+ };
755
+
756
+ it('should create an error issue and rethrow when spreadsheet read fails in findTargetDateAndUpdateLastExecutionDateTime', async () => {
757
+ const readError = new Error('boom on getSheet');
758
+ mockSpreadsheetRepository.getSheet.mockRejectedValueOnce(readError);
759
+
760
+ await expect(useCase.run(failureInput)).rejects.toThrow(
761
+ 'boom on getSheet',
762
+ );
763
+
764
+ expect(mockIssueRepository.createNewIssue).toHaveBeenCalledWith(
765
+ failureInput.org,
766
+ failureInput.workingReport.repo,
767
+ 'Error in HandleScheduledEvent / spreadsheet read failure',
768
+ expect.stringContaining(failureInput.workingReport.spreadsheetUrl),
769
+ [failureInput.manager],
770
+ ['error'],
771
+ );
772
+ const body = mockIssueRepository.createNewIssue.mock.calls[0][3];
773
+ expect(body).toContain('Operation: read');
774
+ expect(body).toContain('boom on getSheet');
775
+ expect(body).toContain(readError.stack ?? '');
776
+ });
777
+
778
+ it('should create an error issue and rethrow when spreadsheet write fails in findTargetDateAndUpdateLastExecutionDateTime', async () => {
779
+ const writeError = new Error('boom on updateCell');
780
+ mockSpreadsheetRepository.getSheet.mockResolvedValueOnce([
781
+ ['LastExecutionDateTime'],
782
+ ['2024-01-01T00:00:00Z'],
783
+ ]);
784
+ mockSpreadsheetRepository.updateCell.mockRejectedValueOnce(writeError);
785
+
786
+ await expect(useCase.run(failureInput)).rejects.toThrow(
787
+ 'boom on updateCell',
788
+ );
789
+
790
+ expect(mockIssueRepository.createNewIssue).toHaveBeenCalledWith(
791
+ failureInput.org,
792
+ failureInput.workingReport.repo,
793
+ 'Error in HandleScheduledEvent / spreadsheet write failure',
794
+ expect.stringContaining(failureInput.workingReport.spreadsheetUrl),
795
+ [failureInput.manager],
796
+ ['error'],
797
+ );
798
+ const body = mockIssueRepository.createNewIssue.mock.calls[0][3];
799
+ expect(body).toContain('Operation: write');
800
+ expect(body).toContain('boom on updateCell');
801
+ expect(body).toContain(writeError.stack ?? '');
802
+ });
803
+ });
739
804
  });
740
805
  });
@@ -202,11 +202,17 @@ export class HandleScheduledEventUseCase {
202
202
  await this.findTargetDateAndUpdateLastExecutionDateTime(
203
203
  input.workingReport.spreadsheetUrl,
204
204
  now,
205
+ input.org,
206
+ input.workingReport.repo,
207
+ input.manager,
205
208
  );
206
209
 
207
210
  const runSlowSweep = await this.shouldRunSlowSweep(
208
211
  input.workingReport.spreadsheetUrl,
209
212
  now,
213
+ input.org,
214
+ input.workingReport.repo,
215
+ input.manager,
210
216
  );
211
217
 
212
218
  let rotationOrder: RotationOrderEntry[] | null = null;
@@ -436,21 +442,76 @@ ${JSON.stringify(e)}
436
442
  }
437
443
  return targetDateTimes;
438
444
  };
445
+ runSpreadsheetOperation = async <T>(
446
+ operation: 'read' | 'write',
447
+ spreadsheetUrl: string,
448
+ org: string,
449
+ repo: string,
450
+ manager: Member['name'],
451
+ action: () => Promise<T>,
452
+ ): Promise<T> => {
453
+ try {
454
+ return await action();
455
+ } catch (e) {
456
+ if (!(e instanceof Error)) {
457
+ throw e;
458
+ }
459
+ await this.issueRepository.createNewIssue(
460
+ org,
461
+ repo,
462
+ `Error in HandleScheduledEvent / spreadsheet ${operation} failure`,
463
+ `Spreadsheet URL: ${spreadsheetUrl}
464
+ Operation: ${operation}
465
+
466
+ ${e.message}
467
+ \`\`\`
468
+ ${e.stack}
469
+ \`\`\`
470
+ \`\`\`
471
+ ${JSON.stringify(e)}
472
+ \`\`\`
473
+
474
+ `,
475
+ [manager],
476
+ ['error'],
477
+ );
478
+ throw e;
479
+ }
480
+ };
439
481
  findTargetDateAndUpdateLastExecutionDateTime = async (
440
482
  spreadsheetUrl: string,
441
483
  now: Date,
484
+ org: string,
485
+ repo: string,
486
+ manager: Member['name'],
442
487
  ): Promise<Date[]> => {
443
- const sheetValues = await this.spreadsheetRepository.getSheet(
488
+ const sheetValues = await this.runSpreadsheetOperation(
489
+ 'read',
444
490
  spreadsheetUrl,
445
- 'HandleScheduledEvent',
491
+ org,
492
+ repo,
493
+ manager,
494
+ () =>
495
+ this.spreadsheetRepository.getSheet(
496
+ spreadsheetUrl,
497
+ 'HandleScheduledEvent',
498
+ ),
446
499
  );
447
500
  if (!sheetValues) {
448
- await this.spreadsheetRepository.updateCell(
501
+ await this.runSpreadsheetOperation(
502
+ 'write',
449
503
  spreadsheetUrl,
450
- 'HandleScheduledEvent',
451
- 1,
452
- 1,
453
- 'LastExecutionDateTime',
504
+ org,
505
+ repo,
506
+ manager,
507
+ () =>
508
+ this.spreadsheetRepository.updateCell(
509
+ spreadsheetUrl,
510
+ 'HandleScheduledEvent',
511
+ 1,
512
+ 1,
513
+ 'LastExecutionDateTime',
514
+ ),
454
515
  );
455
516
  }
456
517
  const lastExecutionDateTime =
@@ -463,22 +524,41 @@ ${JSON.stringify(e)}
463
524
  )
464
525
  : [now];
465
526
 
466
- await this.spreadsheetRepository.updateCell(
527
+ await this.runSpreadsheetOperation(
528
+ 'write',
467
529
  spreadsheetUrl,
468
- 'HandleScheduledEvent',
469
- 1,
470
- 2,
471
- targetDateTimes[targetDateTimes.length - 1].toISOString(),
530
+ org,
531
+ repo,
532
+ manager,
533
+ () =>
534
+ this.spreadsheetRepository.updateCell(
535
+ spreadsheetUrl,
536
+ 'HandleScheduledEvent',
537
+ 1,
538
+ 2,
539
+ targetDateTimes[targetDateTimes.length - 1].toISOString(),
540
+ ),
472
541
  );
473
542
  return targetDateTimes;
474
543
  };
475
544
  shouldRunSlowSweep = async (
476
545
  spreadsheetUrl: string,
477
546
  now: Date,
547
+ org: string,
548
+ repo: string,
549
+ manager: Member['name'],
478
550
  ): Promise<boolean> => {
479
- const sheetValues = await this.spreadsheetRepository.getSheet(
551
+ const sheetValues = await this.runSpreadsheetOperation(
552
+ 'read',
480
553
  spreadsheetUrl,
481
- 'HandleScheduledEvent',
554
+ org,
555
+ repo,
556
+ manager,
557
+ () =>
558
+ this.spreadsheetRepository.getSheet(
559
+ spreadsheetUrl,
560
+ 'HandleScheduledEvent',
561
+ ),
482
562
  );
483
563
  const lastSlowSweepDateTime =
484
564
  sheetValues && sheetValues[1] && sheetValues[1][4]
@@ -490,19 +570,35 @@ ${JSON.stringify(e)}
490
570
  if (elapsedSeconds < SLOW_SWEEP_INTERVAL_SECONDS) {
491
571
  return false;
492
572
  }
493
- await this.spreadsheetRepository.updateCell(
573
+ await this.runSpreadsheetOperation(
574
+ 'write',
494
575
  spreadsheetUrl,
495
- 'HandleScheduledEvent',
496
- 1,
497
- 3,
498
- 'LastSlowSweepDateTime',
576
+ org,
577
+ repo,
578
+ manager,
579
+ () =>
580
+ this.spreadsheetRepository.updateCell(
581
+ spreadsheetUrl,
582
+ 'HandleScheduledEvent',
583
+ 1,
584
+ 3,
585
+ 'LastSlowSweepDateTime',
586
+ ),
499
587
  );
500
- await this.spreadsheetRepository.updateCell(
588
+ await this.runSpreadsheetOperation(
589
+ 'write',
501
590
  spreadsheetUrl,
502
- 'HandleScheduledEvent',
503
- 1,
504
- 4,
505
- now.toISOString(),
591
+ org,
592
+ repo,
593
+ manager,
594
+ () =>
595
+ this.spreadsheetRepository.updateCell(
596
+ spreadsheetUrl,
597
+ 'HandleScheduledEvent',
598
+ 1,
599
+ 4,
600
+ now.toISOString(),
601
+ ),
506
602
  );
507
603
  return true;
508
604
  };
@@ -18,8 +18,7 @@ export type ConfigFile = {
18
18
  };
19
19
  export declare const isRecord: (value: unknown) => value is Record<string, unknown>;
20
20
  export declare const loadConfigFile: (configFilePath: string) => ConfigFile;
21
- export declare const knownProjectReadmeConfigKeys: readonly string[];
22
- export declare const parseProjectReadmeConfig: (readme: string, projectUrl?: string) => ConfigFile;
21
+ export declare const parseProjectReadmeConfig: (readme: string) => ConfigFile;
23
22
  export declare const mergeConfigs: (configFile: ConfigFile, cliOverrides: ConfigFile, readmeOverrides: ConfigFile) => ConfigFile;
24
23
  export declare const fetchProjectReadme: (projectUrl: string, token: string) => Promise<string | null>;
25
24
  //# sourceMappingURL=projectConfig.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"projectConfig.d.ts","sourceRoot":"","sources":["../../../../src/adapter/entry-points/cli/projectConfig.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,UAAU,GAAG;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,2BAA2B,CAAC,EAAE,MAAM,CAAC;IACrC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,8BAA8B,CAAC,EAAE,MAAM,CAAC;IACxC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,iCAAiC,CAAC,EAAE,MAAM,CAAC;IAC3C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,8BAA8B,CAAC,EAAE,MAAM,CAAC;IACxC,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC/B,gCAAgC,CAAC,EAAE,MAAM,CAAC;IAC1C,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,0BAA0B,CAAC,EAAE,MAAM,CAAC;CACrC,CAAC;AAoCF,eAAO,MAAM,QAAQ,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CACH,CAAC;AAEvE,eAAO,MAAM,cAAc,GAAI,gBAAgB,MAAM,KAAG,UAkDvD,CAAC;AAEF,eAAO,MAAM,4BAA4B,EAAE,SAAS,MAAM,EAezD,CAAC;AAEF,eAAO,MAAM,wBAAwB,GACnC,QAAQ,MAAM,EACd,aAAa,MAAM,KAClB,UAgEF,CAAC;AAEF,eAAO,MAAM,YAAY,GACvB,YAAY,UAAU,EACtB,cAAc,UAAU,EACxB,iBAAiB,UAAU,KAC1B,UA2DD,CAAC;AAkBH,eAAO,MAAM,kBAAkB,GAC7B,YAAY,MAAM,EAClB,OAAO,MAAM,KACZ,OAAO,CAAC,MAAM,GAAG,IAAI,CA0DvB,CAAC"}
1
+ {"version":3,"file":"projectConfig.d.ts","sourceRoot":"","sources":["../../../../src/adapter/entry-points/cli/projectConfig.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,UAAU,GAAG;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,2BAA2B,CAAC,EAAE,MAAM,CAAC;IACrC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,8BAA8B,CAAC,EAAE,MAAM,CAAC;IACxC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,iCAAiC,CAAC,EAAE,MAAM,CAAC;IAC3C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,8BAA8B,CAAC,EAAE,MAAM,CAAC;IACxC,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC/B,gCAAgC,CAAC,EAAE,MAAM,CAAC;IAC1C,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,0BAA0B,CAAC,EAAE,MAAM,CAAC;CACrC,CAAC;AAoCF,eAAO,MAAM,QAAQ,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CACH,CAAC;AAEvE,eAAO,MAAM,cAAc,GAAI,gBAAgB,MAAM,KAAG,UAkDvD,CAAC;AAEF,eAAO,MAAM,wBAAwB,GAAI,QAAQ,MAAM,KAAG,UAsDzD,CAAC;AAEF,eAAO,MAAM,YAAY,GACvB,YAAY,UAAU,EACtB,cAAc,UAAU,EACxB,iBAAiB,UAAU,KAC1B,UA2DD,CAAC;AAkBH,eAAO,MAAM,kBAAkB,GAC7B,YAAY,MAAM,EAClB,OAAO,MAAM,KACZ,OAAO,CAAC,MAAM,GAAG,IAAI,CA0DvB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"HandleScheduledEventUseCaseHandler.d.ts","sourceRoot":"","sources":["../../../../src/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.ts"],"names":[],"mappings":"AAuBA,OAAO,EAAE,KAAK,EAAE,MAAM,gCAAgC,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,kCAAkC,CAAC;AA2B3D,qBAAa,kCAAkC;IAC7C,MAAM,GACJ,gBAAgB,MAAM,EACtB,UAAU,OAAO,KAChB,OAAO,CAAC;QACT,OAAO,EAAE,OAAO,CAAC;QACjB,MAAM,EAAE,KAAK,EAAE,CAAC;QAChB,SAAS,EAAE,OAAO,CAAC;QACnB,eAAe,EAAE,IAAI,EAAE,CAAC;KACzB,GAAG,IAAI,CAAC,CAiSP;CACH"}
1
+ {"version":3,"file":"HandleScheduledEventUseCaseHandler.d.ts","sourceRoot":"","sources":["../../../../src/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.ts"],"names":[],"mappings":"AAuBA,OAAO,EAAE,KAAK,EAAE,MAAM,gCAAgC,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,kCAAkC,CAAC;AA2B3D,qBAAa,kCAAkC;IAC7C,MAAM,GACJ,gBAAgB,MAAM,EACtB,UAAU,OAAO,KAChB,OAAO,CAAC;QACT,OAAO,EAAE,OAAO,CAAC;QACjB,MAAM,EAAE,KAAK,EAAE,CAAC;QAChB,SAAS,EAAE,OAAO,CAAC;QACnB,eAAe,EAAE,IAAI,EAAE,CAAC;KACzB,GAAG,IAAI,CAAC,CAmPP;CACH"}
@@ -1 +1 @@
1
- {"version":3,"file":"RateLimitCache.d.ts","sourceRoot":"","sources":["../../../src/adapter/proxy/RateLimitCache.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,iBAAiB;IAChC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,eAAe,EAAE,OAAO,CAAC;IACzB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;CACrD;AAED,eAAO,MAAM,UAAU,OAAO,CAAC;AAI/B,eAAO,MAAM,QAAQ,QAAO,MAG3B,CAAC;AAEF,eAAO,MAAM,SAAS,GAAI,OAAO,MAAM,KAAG,MACqB,CAAC;AAEhE,eAAO,MAAM,iBAAiB,GAAI,OAAO,MAAM,KAAG,MACC,CAAC;AAiCpD,eAAO,MAAM,cAAc,GACzB,OAAO,MAAM,EACb,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,KACrD,IA2BF,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAC9B,OAAO,MAAM,EACb,QAAQ,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,KACvC,IAkBF,CAAC;AAEF,eAAO,MAAM,4BAA4B,GACvC,MAAM,MAAM,KACX,MAAM,CAAC,MAAM,EAAE,gBAAgB,CA0BjC,CAAC;AAEF,eAAO,MAAM,aAAa,GAAI,OAAO,MAAM,KAAG,iBAAiB,GAAG,IA8CjE,CAAC"}
1
+ {"version":3,"file":"RateLimitCache.d.ts","sourceRoot":"","sources":["../../../src/adapter/proxy/RateLimitCache.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,iBAAiB;IAChC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,eAAe,EAAE,OAAO,CAAC;IACzB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;CACrD;AAED,eAAO,MAAM,UAAU,OAAO,CAAC;AAI/B,eAAO,MAAM,QAAQ,QAAO,MAG3B,CAAC;AAEF,eAAO,MAAM,SAAS,GAAI,OAAO,MAAM,KAAG,MACqB,CAAC;AAEhE,eAAO,MAAM,iBAAiB,GAAI,OAAO,MAAM,KAAG,MACC,CAAC;AAiCpD,eAAO,MAAM,cAAc,GACzB,OAAO,MAAM,EACb,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,KACrD,IA8BF,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAC9B,OAAO,MAAM,EACb,QAAQ,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,KACvC,IAkBF,CAAC;AAEF,eAAO,MAAM,4BAA4B,GACvC,MAAM,MAAM,KACX,MAAM,CAAC,MAAM,EAAE,gBAAgB,CA0BjC,CAAC;AAEF,eAAO,MAAM,aAAa,GAAI,OAAO,MAAM,KAAG,iBAAiB,GAAG,IA8CjE,CAAC"}
@@ -94,8 +94,9 @@ export declare class HandleScheduledEventUseCase {
94
94
  }>;
95
95
  runSlowSweepUseCases: (input: Parameters<HandleScheduledEventUseCase["run"]>[0], project: Project, issues: Issue[], cacheUsed: boolean, targetDateTimes: Date[], storyObjectMap: StoryObjectMap) => Promise<void>;
96
96
  static createTargetDateTimes: (from: Date, to: Date) => Date[];
97
- findTargetDateAndUpdateLastExecutionDateTime: (spreadsheetUrl: string, now: Date) => Promise<Date[]>;
98
- shouldRunSlowSweep: (spreadsheetUrl: string, now: Date) => Promise<boolean>;
97
+ runSpreadsheetOperation: <T>(operation: "read" | "write", spreadsheetUrl: string, org: string, repo: string, manager: Member["name"], action: () => Promise<T>) => Promise<T>;
98
+ findTargetDateAndUpdateLastExecutionDateTime: (spreadsheetUrl: string, now: Date, org: string, repo: string, manager: Member["name"]) => Promise<Date[]>;
99
+ shouldRunSlowSweep: (spreadsheetUrl: string, now: Date, org: string, repo: string, manager: Member["name"]) => Promise<boolean>;
99
100
  storyIssues: (input: {
100
101
  project: Project;
101
102
  issues: Issue[];
@@ -1 +1 @@
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,EACL,kBAAkB,EAClB,uBAAuB,EACxB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,gCAAgC,EAAE,MAAM,oCAAoC,CAAC;AACtF,OAAO,EAAE,yCAAyC,EAAE,MAAM,6CAA6C,CAAC;AACxG,OAAO,EAAE,+BAA+B,EAAE,MAAM,mCAAmC,CAAC;AACpF,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAE5E,qBAAa,oBAAqB,SAAQ,KAAK;gBACjC,OAAO,EAAE,MAAM;CAI5B;AAID,qBAAa,2BAA2B;IAEpC,QAAQ,CAAC,+BAA+B,EAAE,+BAA+B;IACzE,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,gCAAgC,EAAE,gCAAgC;IAC3E,QAAQ,CAAC,yCAAyC,EAAE,yCAAyC;IAC7F,QAAQ,CAAC,2BAA2B,EAAE,2BAA2B,GAAG,IAAI;IACxE,QAAQ,CAAC,cAAc,EAAE,cAAc;IACvC,QAAQ,CAAC,qBAAqB,EAAE,qBAAqB;IACrD,QAAQ,CAAC,iBAAiB,EAAE,iBAAiB;IAC7C,QAAQ,CAAC,eAAe,EAAE,eAAe;gBArBhC,+BAA+B,EAAE,+BAA+B,EAChE,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,gCAAgC,EAAE,gCAAgC,EAClE,yCAAyC,EAAE,yCAAyC,EACpF,2BAA2B,EAAE,2BAA2B,GAAG,IAAI,EAC/D,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,QAAQ,EAAE,OAAO,CAAC;QAClB,sBAAsB,EAAE,MAAM,CAAC;QAC/B,gBAAgB,CAAC,EAAE;YACjB,gBAAgB,EAAE,MAAM,CAAC;YACzB,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;YACpC,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;YACpC,cAAc,EAAE,MAAM,CAAC;YACvB,2BAA2B,EAAE,MAAM,GAAG,IAAI,CAAC;YAC3C,8BAA8B,CAAC,EAAE,MAAM,CAAC;YACxC,mBAAmB,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;YACtC,8BAA8B,CAAC,EAAE,MAAM,CAAC;YACxC,mBAAmB,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;YACtC,kBAAkB,CAAC,EAAE,MAAM,CAAC;YAC5B,0BAA0B,CAAC,EAAE,MAAM,CAAC;YACpC,0BAA0B,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;SAC5C,GAAG,IAAI,CAAC;QACT,yBAAyB,CAAC,EAAE;YAC1B,8BAA8B,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;SAChD,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;QAC5B,aAAa,EAAE,kBAAkB,EAAE,GAAG,IAAI,CAAC;KAC5C,GAAG,IAAI,CAAC,CAwJP;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,EAC9B,cAAc,OAAO,KACpB,OAAO,CAAC;QAAE,aAAa,EAAE,kBAAkB,EAAE,GAAG,IAAI,CAAA;KAAE,CAAC,CAqDxD;IACF,oBAAoB,GAClB,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,CA4Fd;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,kBAAkB,GAChB,gBAAgB,MAAM,EACtB,KAAK,IAAI,KACR,OAAO,CAAC,OAAO,CAAC,CA8BjB;IACF,WAAW,GAAU,OAAO;QAC1B,OAAO,EAAE,OAAO,CAAC;QACjB,MAAM,EAAE,KAAK,EAAE,CAAC;KACjB,KAAG,OAAO,CAAC,cAAc,CAAC,CAoBzB;CACH"}
1
+ {"version":3,"file":"HandleScheduledEventUseCase.d.ts","sourceRoot":"","sources":["../../../src/domain/usecases/HandleScheduledEventUseCase.ts"],"names":[],"mappings":"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"}