github-issue-tower-defence-management 1.196.1 → 1.197.1
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.
- package/CHANGELOG.md +14 -0
- package/README.md +1 -0
- package/bin/adapter/entry-points/cli/index.js +66 -0
- package/bin/adapter/entry-points/cli/index.js.map +1 -1
- package/bin/adapter/entry-points/cli/projectConfig.js +6 -0
- package/bin/adapter/entry-points/cli/projectConfig.js.map +1 -1
- package/bin/adapter/entry-points/console/consoleDataDelivery.js +1 -20
- package/bin/adapter/entry-points/console/consoleDataDelivery.js.map +1 -1
- package/bin/adapter/entry-points/console/ui-dist/assets/{index-CYwLv9pf.js → index-lT5OKx7e.js} +2 -2
- package/bin/adapter/entry-points/console/ui-dist/index.html +1 -1
- package/bin/domain/usecases/CliErrorReportUseCase.js +50 -0
- package/bin/domain/usecases/CliErrorReportUseCase.js.map +1 -0
- package/package.json +1 -1
- package/src/adapter/entry-points/cli/index.ts +85 -0
- package/src/adapter/entry-points/cli/projectConfig.ts +14 -0
- package/src/adapter/entry-points/console/consoleDataDelivery.test.ts +12 -6
- package/src/adapter/entry-points/console/consoleDataDelivery.ts +1 -31
- package/src/adapter/entry-points/console/ui/src/features/console/logic/overlay.test.ts +30 -18
- package/src/adapter/entry-points/console/ui/src/features/console/logic/overlay.ts +12 -3
- package/src/adapter/entry-points/console/ui/src/features/console/pages/ConsolePage.tsx +3 -1
- package/src/adapter/entry-points/console/ui-dist/assets/{index-CYwLv9pf.js → index-lT5OKx7e.js} +2 -2
- package/src/adapter/entry-points/console/ui-dist/index.html +1 -1
- package/src/adapter/entry-points/console/webServer.test.ts +10 -4
- package/src/adapter/entry-points/handlers/consoleListsWriter.test.ts +2 -2
- package/src/domain/usecases/CliErrorReportUseCase.test.ts +151 -0
- package/src/domain/usecases/CliErrorReportUseCase.ts +72 -0
- package/types/adapter/entry-points/cli/index.d.ts.map +1 -1
- package/types/adapter/entry-points/cli/projectConfig.d.ts +1 -0
- package/types/adapter/entry-points/cli/projectConfig.d.ts.map +1 -1
- package/types/adapter/entry-points/console/consoleDataDelivery.d.ts.map +1 -1
- package/types/domain/usecases/CliErrorReportUseCase.d.ts +14 -0
- package/types/domain/usecases/CliErrorReportUseCase.d.ts.map +1 -0
|
@@ -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-
|
|
7
|
+
<script type="module" crossorigin src="/assets/index-lT5OKx7e.js"></script>
|
|
8
8
|
<link rel="stylesheet" crossorigin href="/assets/index-CLHvrafO.css">
|
|
9
9
|
</head>
|
|
10
10
|
<body>
|
|
@@ -545,7 +545,7 @@ describe('webServer new routes integration', () => {
|
|
|
545
545
|
},
|
|
546
546
|
});
|
|
547
547
|
|
|
548
|
-
it('serves a data list file
|
|
548
|
+
it('serves a data list file through the token gate without done filtering', async () => {
|
|
549
549
|
const tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'console-server-'));
|
|
550
550
|
const dataDir = path.join(tmpDir, 'data');
|
|
551
551
|
const listDir = path.join(dataDir, 'acme', 'prs');
|
|
@@ -554,12 +554,15 @@ describe('webServer new routes integration', () => {
|
|
|
554
554
|
path.join(listDir, 'list.json'),
|
|
555
555
|
JSON.stringify({
|
|
556
556
|
pjcode: 'acme',
|
|
557
|
-
items: [
|
|
557
|
+
items: [
|
|
558
|
+
{ projectItemId: 'PVTI_keep' },
|
|
559
|
+
{ projectItemId: 'PVTI_also_keep' },
|
|
560
|
+
],
|
|
558
561
|
}),
|
|
559
562
|
);
|
|
560
563
|
fs.writeFileSync(
|
|
561
564
|
path.join(listDir, '.done.json'),
|
|
562
|
-
JSON.stringify({ projectItemIds: ['
|
|
565
|
+
JSON.stringify({ projectItemIds: ['PVTI_also_keep'] }),
|
|
563
566
|
);
|
|
564
567
|
const server = await startWebServer({
|
|
565
568
|
accessToken: testToken,
|
|
@@ -588,7 +591,10 @@ describe('webServer new routes integration', () => {
|
|
|
588
591
|
const parsed: unknown = JSON.parse(authorized.body);
|
|
589
592
|
expect(parsed).toEqual({
|
|
590
593
|
pjcode: 'acme',
|
|
591
|
-
items: [
|
|
594
|
+
items: [
|
|
595
|
+
{ projectItemId: 'PVTI_keep' },
|
|
596
|
+
{ projectItemId: 'PVTI_also_keep' },
|
|
597
|
+
],
|
|
592
598
|
});
|
|
593
599
|
} finally {
|
|
594
600
|
await closeServer(server);
|
|
@@ -312,12 +312,12 @@ describe('writeConsoleLists', () => {
|
|
|
312
312
|
expect(todoByHumanServedItemCount()).toBe(1);
|
|
313
313
|
});
|
|
314
314
|
|
|
315
|
-
it('
|
|
315
|
+
it('serves an item regardless of a done record accumulated between regenerations', () => {
|
|
316
316
|
regenerateTodoByHuman();
|
|
317
317
|
expect(todoByHumanServedItemCount()).toBe(1);
|
|
318
318
|
|
|
319
319
|
recordDoneProjectItemId(outDir, 'demo', 'todo-by-human', 'item-1');
|
|
320
|
-
expect(todoByHumanServedItemCount()).toBe(
|
|
320
|
+
expect(todoByHumanServedItemCount()).toBe(1);
|
|
321
321
|
|
|
322
322
|
regenerateTodoByHuman();
|
|
323
323
|
expect(todoByHumanServedItemCount()).toBe(1);
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
import { mock } from 'jest-mock-extended';
|
|
2
|
+
import { IssueRepository } from './adapter-interfaces/IssueRepository';
|
|
3
|
+
import { CliErrorReportUseCase } from './CliErrorReportUseCase';
|
|
4
|
+
|
|
5
|
+
describe('CliErrorReportUseCase', () => {
|
|
6
|
+
jest.setTimeout(30 * 1000);
|
|
7
|
+
|
|
8
|
+
const mockIssueRepository = mock<IssueRepository>();
|
|
9
|
+
const useCase = new CliErrorReportUseCase(mockIssueRepository);
|
|
10
|
+
|
|
11
|
+
beforeEach(() => {
|
|
12
|
+
jest.clearAllMocks();
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
const owner = 'test-owner';
|
|
16
|
+
const repo = 'test-repo';
|
|
17
|
+
const commandLine =
|
|
18
|
+
'github-issue-tower-defence-management startDaemon --configFilePath config.yml';
|
|
19
|
+
|
|
20
|
+
describe('run', () => {
|
|
21
|
+
it('should call createNewIssue when searchIssue returns no matching open issue', async () => {
|
|
22
|
+
const error = new Error('something went wrong');
|
|
23
|
+
error.name = 'TypeError';
|
|
24
|
+
mockIssueRepository.searchIssue.mockResolvedValue([]);
|
|
25
|
+
mockIssueRepository.createNewIssue.mockResolvedValue(42);
|
|
26
|
+
|
|
27
|
+
await useCase.run({ error, owner, repo, commandLine });
|
|
28
|
+
|
|
29
|
+
expect(mockIssueRepository.searchIssue).toHaveBeenCalledWith({
|
|
30
|
+
owner,
|
|
31
|
+
repositoryName: repo,
|
|
32
|
+
type: 'issue',
|
|
33
|
+
state: 'open',
|
|
34
|
+
title: 'CLI error: TypeError: something went wrong',
|
|
35
|
+
});
|
|
36
|
+
expect(mockIssueRepository.createNewIssue).toHaveBeenCalledWith(
|
|
37
|
+
owner,
|
|
38
|
+
repo,
|
|
39
|
+
'CLI error: TypeError: something went wrong',
|
|
40
|
+
expect.stringContaining('something went wrong'),
|
|
41
|
+
[],
|
|
42
|
+
[],
|
|
43
|
+
);
|
|
44
|
+
expect(mockIssueRepository.createCommentByUrl).not.toHaveBeenCalled();
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
it('should call createCommentByUrl when searchIssue returns a result whose title matches exactly', async () => {
|
|
48
|
+
const error = new Error('something went wrong');
|
|
49
|
+
error.name = 'TypeError';
|
|
50
|
+
const title = 'CLI error: TypeError: something went wrong';
|
|
51
|
+
const existingIssueUrl =
|
|
52
|
+
'https://github.com/test-owner/test-repo/issues/10';
|
|
53
|
+
mockIssueRepository.searchIssue.mockResolvedValue([
|
|
54
|
+
{ url: existingIssueUrl, title, number: '10' },
|
|
55
|
+
]);
|
|
56
|
+
mockIssueRepository.createCommentByUrl.mockResolvedValue(undefined);
|
|
57
|
+
|
|
58
|
+
await useCase.run({ error, owner, repo, commandLine });
|
|
59
|
+
|
|
60
|
+
expect(mockIssueRepository.createCommentByUrl).toHaveBeenCalledWith(
|
|
61
|
+
existingIssueUrl,
|
|
62
|
+
expect.stringContaining('something went wrong'),
|
|
63
|
+
);
|
|
64
|
+
expect(mockIssueRepository.createNewIssue).not.toHaveBeenCalled();
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
it('should not call createCommentByUrl when searchIssue returns a result with a different title', async () => {
|
|
68
|
+
const error = new Error('something went wrong');
|
|
69
|
+
error.name = 'TypeError';
|
|
70
|
+
mockIssueRepository.searchIssue.mockResolvedValue([
|
|
71
|
+
{
|
|
72
|
+
url: 'https://github.com/test-owner/test-repo/issues/9',
|
|
73
|
+
title: 'CLI error: TypeError: something else entirely',
|
|
74
|
+
number: '9',
|
|
75
|
+
},
|
|
76
|
+
]);
|
|
77
|
+
mockIssueRepository.createNewIssue.mockResolvedValue(11);
|
|
78
|
+
|
|
79
|
+
await useCase.run({ error, owner, repo, commandLine });
|
|
80
|
+
|
|
81
|
+
expect(mockIssueRepository.createNewIssue).toHaveBeenCalled();
|
|
82
|
+
expect(mockIssueRepository.createCommentByUrl).not.toHaveBeenCalled();
|
|
83
|
+
});
|
|
84
|
+
|
|
85
|
+
it('should truncate long messages to 80 characters in the title', async () => {
|
|
86
|
+
const longMessage = 'a'.repeat(120);
|
|
87
|
+
const error = new Error(longMessage);
|
|
88
|
+
mockIssueRepository.searchIssue.mockResolvedValue([]);
|
|
89
|
+
mockIssueRepository.createNewIssue.mockResolvedValue(1);
|
|
90
|
+
|
|
91
|
+
await useCase.run({ error, owner, repo, commandLine });
|
|
92
|
+
|
|
93
|
+
const expectedTitle = `CLI error: Error: ${'a'.repeat(80)}`;
|
|
94
|
+
expect(mockIssueRepository.searchIssue).toHaveBeenCalledWith(
|
|
95
|
+
expect.objectContaining({ title: expectedTitle }),
|
|
96
|
+
);
|
|
97
|
+
expect(mockIssueRepository.createNewIssue).toHaveBeenCalledWith(
|
|
98
|
+
owner,
|
|
99
|
+
repo,
|
|
100
|
+
expectedTitle,
|
|
101
|
+
expect.any(String),
|
|
102
|
+
[],
|
|
103
|
+
[],
|
|
104
|
+
);
|
|
105
|
+
});
|
|
106
|
+
|
|
107
|
+
it('should not throw when searchIssue rejects', async () => {
|
|
108
|
+
const error = new Error('some error');
|
|
109
|
+
mockIssueRepository.searchIssue.mockRejectedValue(
|
|
110
|
+
new Error('network error'),
|
|
111
|
+
);
|
|
112
|
+
const consoleSpy = jest
|
|
113
|
+
.spyOn(console, 'error')
|
|
114
|
+
.mockImplementation(() => undefined);
|
|
115
|
+
|
|
116
|
+
await expect(
|
|
117
|
+
useCase.run({ error, owner, repo, commandLine }),
|
|
118
|
+
).resolves.toBeUndefined();
|
|
119
|
+
expect(consoleSpy).toHaveBeenCalled();
|
|
120
|
+
consoleSpy.mockRestore();
|
|
121
|
+
});
|
|
122
|
+
|
|
123
|
+
it('should include the command line in the issue body', async () => {
|
|
124
|
+
const error = new Error('cmd error');
|
|
125
|
+
mockIssueRepository.searchIssue.mockResolvedValue([]);
|
|
126
|
+
mockIssueRepository.createNewIssue.mockResolvedValue(2);
|
|
127
|
+
|
|
128
|
+
await useCase.run({ error, owner, repo, commandLine });
|
|
129
|
+
|
|
130
|
+
const bodyArg = mockIssueRepository.createNewIssue.mock.calls[0][3];
|
|
131
|
+
expect(bodyArg).toContain(commandLine);
|
|
132
|
+
});
|
|
133
|
+
|
|
134
|
+
it('should handle non-Error values', async () => {
|
|
135
|
+
const error = 'plain string error';
|
|
136
|
+
mockIssueRepository.searchIssue.mockResolvedValue([]);
|
|
137
|
+
mockIssueRepository.createNewIssue.mockResolvedValue(3);
|
|
138
|
+
|
|
139
|
+
await useCase.run({ error, owner, repo, commandLine });
|
|
140
|
+
|
|
141
|
+
expect(mockIssueRepository.createNewIssue).toHaveBeenCalledWith(
|
|
142
|
+
owner,
|
|
143
|
+
repo,
|
|
144
|
+
expect.stringContaining('CLI error: Error:'),
|
|
145
|
+
expect.any(String),
|
|
146
|
+
[],
|
|
147
|
+
[],
|
|
148
|
+
);
|
|
149
|
+
});
|
|
150
|
+
});
|
|
151
|
+
});
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import type { IssueRepository } from './adapter-interfaces/IssueRepository';
|
|
2
|
+
|
|
3
|
+
type CliErrorReportRepository = Pick<
|
|
4
|
+
IssueRepository,
|
|
5
|
+
'searchIssue' | 'createNewIssue' | 'createCommentByUrl'
|
|
6
|
+
>;
|
|
7
|
+
|
|
8
|
+
export class CliErrorReportUseCase {
|
|
9
|
+
constructor(private readonly issueRepository: CliErrorReportRepository) {}
|
|
10
|
+
|
|
11
|
+
run = async (params: {
|
|
12
|
+
error: unknown;
|
|
13
|
+
owner: string;
|
|
14
|
+
repo: string;
|
|
15
|
+
commandLine: string;
|
|
16
|
+
}): Promise<void> => {
|
|
17
|
+
const { error, owner, repo, commandLine } = params;
|
|
18
|
+
const errorName =
|
|
19
|
+
error instanceof Error ? (error.name ?? 'Error') : 'Error';
|
|
20
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
21
|
+
const stack =
|
|
22
|
+
error instanceof Error && error.stack ? error.stack : String(error);
|
|
23
|
+
const title = `CLI error: ${errorName}: ${message.slice(0, 80)}`;
|
|
24
|
+
const occurredAt = new Date().toISOString();
|
|
25
|
+
|
|
26
|
+
const buildBody = (prefix: string): string =>
|
|
27
|
+
[
|
|
28
|
+
`${prefix}`,
|
|
29
|
+
``,
|
|
30
|
+
`Error name: ${errorName}`,
|
|
31
|
+
`Message: ${message}`,
|
|
32
|
+
`Command: \`${commandLine}\``,
|
|
33
|
+
`Occurred at: ${occurredAt}`,
|
|
34
|
+
``,
|
|
35
|
+
`Stack trace:`,
|
|
36
|
+
`\`\`\``,
|
|
37
|
+
stack,
|
|
38
|
+
`\`\`\``,
|
|
39
|
+
].join('\n');
|
|
40
|
+
|
|
41
|
+
try {
|
|
42
|
+
const results = await this.issueRepository.searchIssue({
|
|
43
|
+
owner,
|
|
44
|
+
repositoryName: repo,
|
|
45
|
+
type: 'issue',
|
|
46
|
+
state: 'open',
|
|
47
|
+
title,
|
|
48
|
+
});
|
|
49
|
+
const existing = results.find((r) => r.title === title);
|
|
50
|
+
if (existing) {
|
|
51
|
+
await this.issueRepository.createCommentByUrl(
|
|
52
|
+
existing.url,
|
|
53
|
+
buildBody('CLI error recurrence'),
|
|
54
|
+
);
|
|
55
|
+
} else {
|
|
56
|
+
await this.issueRepository.createNewIssue(
|
|
57
|
+
owner,
|
|
58
|
+
repo,
|
|
59
|
+
title,
|
|
60
|
+
buildBody('CLI error report'),
|
|
61
|
+
[],
|
|
62
|
+
[],
|
|
63
|
+
);
|
|
64
|
+
}
|
|
65
|
+
} catch (reportError) {
|
|
66
|
+
console.error(
|
|
67
|
+
'CliErrorReportUseCase: failed to report error:',
|
|
68
|
+
reportError,
|
|
69
|
+
);
|
|
70
|
+
}
|
|
71
|
+
};
|
|
72
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/adapter/entry-points/cli/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,OAAO,EACL,UAAU,EACV,kBAAkB,EAClB,cAAc,EACd,YAAY,EACZ,wBAAwB,GACzB,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/adapter/entry-points/cli/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,OAAO,EACL,UAAU,EACV,kBAAkB,EAClB,cAAc,EACd,YAAY,EACZ,wBAAwB,GACzB,MAAM,iBAAiB,CAAC;AA+OzB,eAAO,MAAM,OAAO,SAAgB,CAAC;AA0lCrC,eAAO,MAAM,uBAAuB,GAAI,OAAO,OAAO,KAAG,IAGxD,CAAC;AAwCF,eAAO,MAAM,aAAa,GACxB,MAAM,MAAM,EAAE,EACd,kBAAkB,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,KACzC,OAAO,CAAC,IAAI,CAqCd,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"projectConfig.d.ts","sourceRoot":"","sources":["../../../../src/adapter/entry-points/cli/projectConfig.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,UAAU,GAAG;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,2BAA2B,CAAC,EAAE,MAAM,CAAC;IACrC,8BAA8B,CAAC,EAAE,MAAM,CAAC;IACxC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,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;IACpC,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;IAChC,6BAA6B,CAAC,EAAE,MAAM,EAAE,CAAC;IACzC,uBAAuB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjD,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,KAAK,CAAC,EAAE,UAAU,EAAE,CAAC;IACrB,0BAA0B,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"projectConfig.d.ts","sourceRoot":"","sources":["../../../../src/adapter/entry-points/cli/projectConfig.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,UAAU,GAAG;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,2BAA2B,CAAC,EAAE,MAAM,CAAC;IACrC,8BAA8B,CAAC,EAAE,MAAM,CAAC;IACxC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,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;IACpC,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;IAChC,6BAA6B,CAAC,EAAE,MAAM,EAAE,CAAC;IACzC,uBAAuB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjD,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,KAAK,CAAC,EAAE,UAAU,EAAE,CAAC;IACrB,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC,wBAAwB,CAAC,EAAE,MAAM,CAAC;CACnC,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAsDF,eAAO,MAAM,QAAQ,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CACH,CAAC;AAiDvE,eAAO,MAAM,cAAc,GAAI,gBAAgB,MAAM,KAAG,UAkFvD,CAAC;AAEF,eAAO,MAAM,wBAAwB,GACnC,QAAQ,MAAM,EACd,aAAa,MAAM,KAClB,UAkFF,CAAC;AAEF,eAAO,MAAM,YAAY,GACvB,YAAY,UAAU,EACtB,cAAc,UAAU,EACxB,iBAAiB,UAAU,KAC1B,UAmGD,CAAC;AAkBH,eAAO,MAAM,kBAAkB,GAC7B,YAAY,MAAM,EAClB,OAAO,MAAM,KACZ,OAAO,CAAC,MAAM,GAAG,IAAI,CAoDvB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"consoleDataDelivery.d.ts","sourceRoot":"","sources":["../../../../src/adapter/entry-points/console/consoleDataDelivery.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"consoleDataDelivery.d.ts","sourceRoot":"","sources":["../../../../src/adapter/entry-points/console/consoleDataDelivery.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAE3D,OAAO,EAAE,sBAAsB,EAAE,CAAC;AAElC,MAAM,MAAM,gBAAgB,GACxB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAC7C;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAC5D;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CAAC;AAO9D,eAAO,MAAM,qBAAqB,GAChC,aAAa,MAAM,KAClB,gBAAgB,GAAG,IAoCrB,CAAC;AAmBF,MAAM,MAAM,mBAAmB,GAAG;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,eAAO,MAAM,wBAAwB,GACnC,sBAAsB,MAAM,EAC5B,OAAO,gBAAgB,KACtB,mBAuCF,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { IssueRepository } from './adapter-interfaces/IssueRepository';
|
|
2
|
+
type CliErrorReportRepository = Pick<IssueRepository, 'searchIssue' | 'createNewIssue' | 'createCommentByUrl'>;
|
|
3
|
+
export declare class CliErrorReportUseCase {
|
|
4
|
+
private readonly issueRepository;
|
|
5
|
+
constructor(issueRepository: CliErrorReportRepository);
|
|
6
|
+
run: (params: {
|
|
7
|
+
error: unknown;
|
|
8
|
+
owner: string;
|
|
9
|
+
repo: string;
|
|
10
|
+
commandLine: string;
|
|
11
|
+
}) => Promise<void>;
|
|
12
|
+
}
|
|
13
|
+
export {};
|
|
14
|
+
//# sourceMappingURL=CliErrorReportUseCase.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CliErrorReportUseCase.d.ts","sourceRoot":"","sources":["../../../src/domain/usecases/CliErrorReportUseCase.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAE5E,KAAK,wBAAwB,GAAG,IAAI,CAClC,eAAe,EACf,aAAa,GAAG,gBAAgB,GAAG,oBAAoB,CACxD,CAAC;AAEF,qBAAa,qBAAqB;IACpB,OAAO,CAAC,QAAQ,CAAC,eAAe;gBAAf,eAAe,EAAE,wBAAwB;IAEtE,GAAG,GAAU,QAAQ;QACnB,KAAK,EAAE,OAAO,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;KACrB,KAAG,OAAO,CAAC,IAAI,CAAC,CAuDf;CACH"}
|