github-issue-tower-defence-management 2.7.0 → 2.8.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.
- package/CHANGELOG.md +7 -0
- package/bin/adapter/entry-points/cli/index.js +3 -1
- package/bin/adapter/entry-points/cli/index.js.map +1 -1
- package/bin/adapter/entry-points/console/consoleAirplaneSnapshotApi.js +347 -0
- package/bin/adapter/entry-points/console/consoleAirplaneSnapshotApi.js.map +1 -0
- package/bin/adapter/entry-points/console/ui-dist/assets/index-DkMqSpkk.js +88 -0
- package/bin/adapter/entry-points/console/ui-dist/index.html +1 -1
- package/bin/adapter/entry-points/console/webServer.js +28 -0
- package/bin/adapter/entry-points/console/webServer.js.map +1 -1
- package/jest.config.js +1 -0
- package/package.json +1 -1
- package/src/adapter/entry-points/cli/index.ts +4 -1
- package/src/adapter/entry-points/console/consoleAirplaneSnapshotApi.test.ts +658 -0
- package/src/adapter/entry-points/console/consoleAirplaneSnapshotApi.ts +482 -0
- package/src/adapter/entry-points/console/ui/jest-globals.cjs +26 -0
- package/src/adapter/entry-points/console/ui/src/features/console/components/detail/ConsoleFileDiff.test.tsx +10 -0
- package/src/adapter/entry-points/console/ui/src/features/console/components/detail/ConsoleFileDiff.tsx +23 -16
- package/src/adapter/entry-points/console/ui/src/features/console/components/layout/ConsoleAirplaneModeButton.stories.tsx +56 -0
- package/src/adapter/entry-points/console/ui/src/features/console/components/layout/ConsoleAirplaneModeButton.test.tsx +111 -0
- package/src/adapter/entry-points/console/ui/src/features/console/components/layout/ConsoleAirplaneModeButton.tsx +92 -0
- package/src/adapter/entry-points/console/ui/src/features/console/components/layout/ConsoleTabList.stories.tsx +15 -0
- package/src/adapter/entry-points/console/ui/src/features/console/components/layout/ConsoleTabList.test.tsx +19 -0
- package/src/adapter/entry-points/console/ui/src/features/console/components/layout/ConsoleTabList.tsx +30 -1
- package/src/adapter/entry-points/console/ui/src/features/console/components/operations/ConsoleErrorToast.stories.tsx +10 -0
- package/src/adapter/entry-points/console/ui/src/features/console/components/operations/ConsoleUndoToast.test.tsx +1 -3
- package/src/adapter/entry-points/console/ui/src/features/console/components/operations/ConsoleUndoToast.tsx +8 -7
- package/src/adapter/entry-points/console/ui/src/features/console/hooks/useAirplaneMode.test.ts +304 -0
- package/src/adapter/entry-points/console/ui/src/features/console/hooks/useAirplaneMode.ts +167 -0
- package/src/adapter/entry-points/console/ui/src/features/console/hooks/useConsoleActionQueue.test.ts +15 -0
- package/src/adapter/entry-points/console/ui/src/features/console/hooks/useConsoleActionQueue.ts +6 -1
- package/src/adapter/entry-points/console/ui/src/features/console/hooks/useConsoleCaches.test.ts +77 -0
- package/src/adapter/entry-points/console/ui/src/features/console/hooks/useConsoleCaches.ts +48 -3
- package/src/adapter/entry-points/console/ui/src/features/console/hooks/useConsoleFeaturesConfig.test.ts +51 -0
- package/src/adapter/entry-points/console/ui/src/features/console/hooks/useConsoleFeaturesConfig.ts +39 -0
- package/src/adapter/entry-points/console/ui/src/features/console/hooks/useConsoleTabData.test.ts +215 -0
- package/src/adapter/entry-points/console/ui/src/features/console/hooks/useConsoleTabData.ts +20 -1
- package/src/adapter/entry-points/console/ui/src/features/console/lib/airplaneSnapshot.test.ts +361 -0
- package/src/adapter/entry-points/console/ui/src/features/console/lib/airplaneSnapshot.ts +401 -0
- package/src/adapter/entry-points/console/ui/src/features/console/lib/resourceCache.ts +4 -0
- package/src/adapter/entry-points/console/ui/src/features/console/pages/ConsolePage.test.tsx +209 -0
- package/src/adapter/entry-points/console/ui/src/features/console/pages/ConsolePage.tsx +27 -2
- package/src/adapter/entry-points/console/ui-dist/assets/index-DkMqSpkk.js +88 -0
- package/src/adapter/entry-points/console/ui-dist/index.html +1 -1
- package/src/adapter/entry-points/console/webServer.test.ts +189 -0
- package/src/adapter/entry-points/console/webServer.ts +38 -0
- package/types/adapter/entry-points/cli/index.d.ts.map +1 -1
- package/types/adapter/entry-points/console/consoleAirplaneSnapshotApi.d.ts +90 -0
- package/types/adapter/entry-points/console/consoleAirplaneSnapshotApi.d.ts.map +1 -0
- package/types/adapter/entry-points/console/webServer.d.ts +1 -0
- package/types/adapter/entry-points/console/webServer.d.ts.map +1 -1
- package/bin/adapter/entry-points/console/ui-dist/assets/index-CaxYBHiT.js +0 -86
- package/src/adapter/entry-points/console/ui-dist/assets/index-CaxYBHiT.js +0 -86
|
@@ -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-DkMqSpkk.js"></script>
|
|
8
8
|
<link rel="stylesheet" crossorigin href="/assets/index-CLHvrafO.css">
|
|
9
9
|
</head>
|
|
10
10
|
<body>
|
|
@@ -1187,6 +1187,91 @@ describe('webServer new routes integration', () => {
|
|
|
1187
1187
|
fs.rmSync(tmpDir, { recursive: true, force: true });
|
|
1188
1188
|
}
|
|
1189
1189
|
});
|
|
1190
|
+
|
|
1191
|
+
it('routes POST /api/reorderstory to handleReorderStory and calls resolveProjectRepository.updateStoryList', async () => {
|
|
1192
|
+
const tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'console-server-'));
|
|
1193
|
+
const updateStoryList = jest.fn().mockResolvedValue([]);
|
|
1194
|
+
const projectWithTwoStories: Project = {
|
|
1195
|
+
...mock<Project>(),
|
|
1196
|
+
id: 'PVT_1',
|
|
1197
|
+
url: 'https://github.com/orgs/acme-labs/projects/1',
|
|
1198
|
+
status: {
|
|
1199
|
+
name: 'Status',
|
|
1200
|
+
fieldId: 'statusField',
|
|
1201
|
+
statuses: [
|
|
1202
|
+
{
|
|
1203
|
+
id: 'status_aw',
|
|
1204
|
+
name: 'Awaiting workspace',
|
|
1205
|
+
color: 'GRAY',
|
|
1206
|
+
description: '',
|
|
1207
|
+
},
|
|
1208
|
+
],
|
|
1209
|
+
},
|
|
1210
|
+
story: {
|
|
1211
|
+
name: 'Story',
|
|
1212
|
+
fieldId: 'storyField',
|
|
1213
|
+
databaseId: 1,
|
|
1214
|
+
stories: [
|
|
1215
|
+
{
|
|
1216
|
+
id: 'opt_first',
|
|
1217
|
+
name: 'First story',
|
|
1218
|
+
color: 'BLUE',
|
|
1219
|
+
description: '',
|
|
1220
|
+
},
|
|
1221
|
+
{
|
|
1222
|
+
id: 'opt_second',
|
|
1223
|
+
name: 'Second story',
|
|
1224
|
+
color: 'GREEN',
|
|
1225
|
+
description: '',
|
|
1226
|
+
},
|
|
1227
|
+
],
|
|
1228
|
+
workflowManagementStory: { id: 'wms', name: 'workflow' },
|
|
1229
|
+
},
|
|
1230
|
+
};
|
|
1231
|
+
const issueRepository = mock<IssueRepository>();
|
|
1232
|
+
const server = await startWebServer({
|
|
1233
|
+
accessToken: testToken,
|
|
1234
|
+
uiDistDir: path.join(tmpDir, 'ui-dist'),
|
|
1235
|
+
consoleDataOutputDir: null,
|
|
1236
|
+
inTmuxDataDir: null,
|
|
1237
|
+
dashboardDir: null,
|
|
1238
|
+
dashboardDataDir: null,
|
|
1239
|
+
dashboardProjectNames: [],
|
|
1240
|
+
issueRepository,
|
|
1241
|
+
resolveProject: async (pjcode) =>
|
|
1242
|
+
pjcode === 'acme' ? { pjcode, project: projectWithTwoStories } : null,
|
|
1243
|
+
isPjcodeConfigured: (pjcode) => pjcode === 'acme',
|
|
1244
|
+
resolveProjectRepository: () => ({ updateStoryList }),
|
|
1245
|
+
port: 0,
|
|
1246
|
+
});
|
|
1247
|
+
try {
|
|
1248
|
+
const response = await request(
|
|
1249
|
+
server,
|
|
1250
|
+
'POST',
|
|
1251
|
+
`/api/reorderstory?k=${testToken}`,
|
|
1252
|
+
{ pjcode: 'acme', storyOptionId: 'opt_first', direction: 'down' },
|
|
1253
|
+
);
|
|
1254
|
+
expect(response.statusCode).toBe(200);
|
|
1255
|
+
expect(JSON.parse(response.body)).toEqual({ ok: true });
|
|
1256
|
+
expect(updateStoryList).toHaveBeenCalledWith(projectWithTwoStories, [
|
|
1257
|
+
{
|
|
1258
|
+
id: 'opt_second',
|
|
1259
|
+
name: 'Second story',
|
|
1260
|
+
color: 'GREEN',
|
|
1261
|
+
description: '',
|
|
1262
|
+
},
|
|
1263
|
+
{
|
|
1264
|
+
id: 'opt_first',
|
|
1265
|
+
name: 'First story',
|
|
1266
|
+
color: 'BLUE',
|
|
1267
|
+
description: '',
|
|
1268
|
+
},
|
|
1269
|
+
]);
|
|
1270
|
+
} finally {
|
|
1271
|
+
await closeServer(server);
|
|
1272
|
+
fs.rmSync(tmpDir, { recursive: true, force: true });
|
|
1273
|
+
}
|
|
1274
|
+
});
|
|
1190
1275
|
});
|
|
1191
1276
|
|
|
1192
1277
|
describe('resolveFlatInTmuxFilePath', () => {
|
|
@@ -2720,4 +2805,108 @@ describe('webServer GET /api/projects', () => {
|
|
|
2720
2805
|
fs.rmSync(tmpDir, { recursive: true, force: true });
|
|
2721
2806
|
}
|
|
2722
2807
|
});
|
|
2808
|
+
|
|
2809
|
+
it('GET /api/features returns { airplaneMode: false } when enableAirplaneMode is absent', async () => {
|
|
2810
|
+
const tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'console-server-'));
|
|
2811
|
+
const server = await startWebServer({
|
|
2812
|
+
accessToken: testToken,
|
|
2813
|
+
uiDistDir: path.join(tmpDir, 'ui-dist'),
|
|
2814
|
+
consoleDataOutputDir: null,
|
|
2815
|
+
inTmuxDataDir: null,
|
|
2816
|
+
dashboardDir: null,
|
|
2817
|
+
dashboardDataDir: null,
|
|
2818
|
+
dashboardProjectNames: [],
|
|
2819
|
+
port: 0,
|
|
2820
|
+
});
|
|
2821
|
+
try {
|
|
2822
|
+
const response = await request(
|
|
2823
|
+
server,
|
|
2824
|
+
'GET',
|
|
2825
|
+
`/api/features?k=${testToken}`,
|
|
2826
|
+
);
|
|
2827
|
+
expect(response.statusCode).toBe(200);
|
|
2828
|
+
expect(JSON.parse(response.body)).toEqual({ airplaneMode: false });
|
|
2829
|
+
} finally {
|
|
2830
|
+
await closeServer(server);
|
|
2831
|
+
fs.rmSync(tmpDir, { recursive: true, force: true });
|
|
2832
|
+
}
|
|
2833
|
+
});
|
|
2834
|
+
|
|
2835
|
+
it('GET /api/features returns { airplaneMode: true } when enableAirplaneMode is true', async () => {
|
|
2836
|
+
const tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'console-server-'));
|
|
2837
|
+
const server = await startWebServer({
|
|
2838
|
+
accessToken: testToken,
|
|
2839
|
+
uiDistDir: path.join(tmpDir, 'ui-dist'),
|
|
2840
|
+
consoleDataOutputDir: null,
|
|
2841
|
+
inTmuxDataDir: null,
|
|
2842
|
+
dashboardDir: null,
|
|
2843
|
+
dashboardDataDir: null,
|
|
2844
|
+
dashboardProjectNames: [],
|
|
2845
|
+
enableAirplaneMode: true,
|
|
2846
|
+
port: 0,
|
|
2847
|
+
});
|
|
2848
|
+
try {
|
|
2849
|
+
const response = await request(
|
|
2850
|
+
server,
|
|
2851
|
+
'GET',
|
|
2852
|
+
`/api/features?k=${testToken}`,
|
|
2853
|
+
);
|
|
2854
|
+
expect(response.statusCode).toBe(200);
|
|
2855
|
+
expect(JSON.parse(response.body)).toEqual({ airplaneMode: true });
|
|
2856
|
+
} finally {
|
|
2857
|
+
await closeServer(server);
|
|
2858
|
+
fs.rmSync(tmpDir, { recursive: true, force: true });
|
|
2859
|
+
}
|
|
2860
|
+
});
|
|
2861
|
+
|
|
2862
|
+
it('GET /api/airplanesync returns 404 when enableAirplaneMode is absent', async () => {
|
|
2863
|
+
const tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'console-server-'));
|
|
2864
|
+
const server = await startWebServer({
|
|
2865
|
+
accessToken: testToken,
|
|
2866
|
+
uiDistDir: path.join(tmpDir, 'ui-dist'),
|
|
2867
|
+
consoleDataOutputDir: null,
|
|
2868
|
+
inTmuxDataDir: null,
|
|
2869
|
+
dashboardDir: null,
|
|
2870
|
+
dashboardDataDir: null,
|
|
2871
|
+
dashboardProjectNames: [],
|
|
2872
|
+
port: 0,
|
|
2873
|
+
});
|
|
2874
|
+
try {
|
|
2875
|
+
const response = await request(
|
|
2876
|
+
server,
|
|
2877
|
+
'GET',
|
|
2878
|
+
`/api/airplanesync?k=${testToken}`,
|
|
2879
|
+
);
|
|
2880
|
+
expect(response.statusCode).toBe(404);
|
|
2881
|
+
} finally {
|
|
2882
|
+
await closeServer(server);
|
|
2883
|
+
fs.rmSync(tmpDir, { recursive: true, force: true });
|
|
2884
|
+
}
|
|
2885
|
+
});
|
|
2886
|
+
|
|
2887
|
+
it('GET /api/airplanesync returns 404 when enableAirplaneMode is false', async () => {
|
|
2888
|
+
const tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'console-server-'));
|
|
2889
|
+
const server = await startWebServer({
|
|
2890
|
+
accessToken: testToken,
|
|
2891
|
+
uiDistDir: path.join(tmpDir, 'ui-dist'),
|
|
2892
|
+
consoleDataOutputDir: null,
|
|
2893
|
+
inTmuxDataDir: null,
|
|
2894
|
+
dashboardDir: null,
|
|
2895
|
+
dashboardDataDir: null,
|
|
2896
|
+
dashboardProjectNames: [],
|
|
2897
|
+
enableAirplaneMode: false,
|
|
2898
|
+
port: 0,
|
|
2899
|
+
});
|
|
2900
|
+
try {
|
|
2901
|
+
const response = await request(
|
|
2902
|
+
server,
|
|
2903
|
+
'GET',
|
|
2904
|
+
`/api/airplanesync?k=${testToken}`,
|
|
2905
|
+
);
|
|
2906
|
+
expect(response.statusCode).toBe(404);
|
|
2907
|
+
} finally {
|
|
2908
|
+
await closeServer(server);
|
|
2909
|
+
fs.rmSync(tmpDir, { recursive: true, force: true });
|
|
2910
|
+
}
|
|
2911
|
+
});
|
|
2723
2912
|
});
|
|
@@ -20,6 +20,7 @@ import {
|
|
|
20
20
|
handlePullRequestStatus,
|
|
21
21
|
handleRelatedPrs,
|
|
22
22
|
} from './consoleReadApi';
|
|
23
|
+
import { handleAirplaneSync } from './consoleAirplaneSnapshotApi';
|
|
23
24
|
import {
|
|
24
25
|
ConsoleIssueRepositoryResolver,
|
|
25
26
|
ConsoleOperationContext,
|
|
@@ -243,6 +244,7 @@ export type WebServerOptions = {
|
|
|
243
244
|
((pjcode: string, updatedProject: Project) => void) | null;
|
|
244
245
|
issueTitleStateCache?: IssueTitleStateCache | null;
|
|
245
246
|
pullRequestStatusCache?: PullRequestStatusCache | null;
|
|
247
|
+
enableAirplaneMode?: boolean;
|
|
246
248
|
};
|
|
247
249
|
|
|
248
250
|
const FLAT_IN_TMUX_PREFIX = '/in-tmux-by-human/';
|
|
@@ -662,6 +664,42 @@ const handleTokenedRequest = async (
|
|
|
662
664
|
await handleImageProxy(options, response, searchParams);
|
|
663
665
|
return;
|
|
664
666
|
}
|
|
667
|
+
if (requestPath === '/api/features') {
|
|
668
|
+
sendJson(response, 200, {
|
|
669
|
+
airplaneMode: options.enableAirplaneMode === true,
|
|
670
|
+
});
|
|
671
|
+
return;
|
|
672
|
+
}
|
|
673
|
+
if (requestPath === '/api/airplanesync') {
|
|
674
|
+
if (options.enableAirplaneMode !== true) {
|
|
675
|
+
sendNotFound(response);
|
|
676
|
+
return;
|
|
677
|
+
}
|
|
678
|
+
const issueRepository = options.issueRepository ?? null;
|
|
679
|
+
const consoleDataOutputDir = options.consoleDataOutputDir ?? null;
|
|
680
|
+
const issueTitleStateCache = options.issueTitleStateCache ?? null;
|
|
681
|
+
const pullRequestStatusCache = options.pullRequestStatusCache ?? null;
|
|
682
|
+
if (
|
|
683
|
+
issueRepository === null ||
|
|
684
|
+
consoleDataOutputDir === null ||
|
|
685
|
+
issueTitleStateCache === null ||
|
|
686
|
+
pullRequestStatusCache === null
|
|
687
|
+
) {
|
|
688
|
+
sendNotFound(response);
|
|
689
|
+
return;
|
|
690
|
+
}
|
|
691
|
+
await handleAirplaneSync(
|
|
692
|
+
response,
|
|
693
|
+
consoleDataOutputDir,
|
|
694
|
+
issueRepository,
|
|
695
|
+
issueTitleStateCache,
|
|
696
|
+
pullRequestStatusCache,
|
|
697
|
+
options.resolveGithubToken != null
|
|
698
|
+
? options.resolveGithubToken('')
|
|
699
|
+
: null,
|
|
700
|
+
);
|
|
701
|
+
return;
|
|
702
|
+
}
|
|
665
703
|
const readResult = await handleReadApi(
|
|
666
704
|
options,
|
|
667
705
|
requestPath,
|
|
@@ -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;AAiPzB,eAAO,MAAM,OAAO,SAAgB,CAAC;AAkmCrC,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"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import type { IssueRepository } from '../../../domain/usecases/adapter-interfaces/IssueRepository';
|
|
2
|
+
import { IssueTitleStateCache, PullRequestStatusCache } from './consoleReadApi';
|
|
3
|
+
export type AirplaneFilesItem = {
|
|
4
|
+
path: string;
|
|
5
|
+
additions: number;
|
|
6
|
+
deletions: number;
|
|
7
|
+
status: string;
|
|
8
|
+
patch: string | null;
|
|
9
|
+
rawUrl: string | null;
|
|
10
|
+
};
|
|
11
|
+
export type AirplaneCommitItem = {
|
|
12
|
+
sha: string;
|
|
13
|
+
message: string;
|
|
14
|
+
author: string;
|
|
15
|
+
authoredAt: string;
|
|
16
|
+
};
|
|
17
|
+
export type AirplaneCommentItem = {
|
|
18
|
+
author: string;
|
|
19
|
+
body: string;
|
|
20
|
+
createdAt: string;
|
|
21
|
+
};
|
|
22
|
+
export type AirplanePrStatusItem = {
|
|
23
|
+
found: boolean;
|
|
24
|
+
isConflicted: boolean;
|
|
25
|
+
mergeableStatus: string;
|
|
26
|
+
isPassedAllCiJob: boolean;
|
|
27
|
+
isCiStateSuccess: boolean;
|
|
28
|
+
isBranchOutOfDate: boolean;
|
|
29
|
+
missingRequiredCheckNames: string[];
|
|
30
|
+
};
|
|
31
|
+
export type AirplaneStateItem = {
|
|
32
|
+
state: string;
|
|
33
|
+
merged: boolean;
|
|
34
|
+
isPullRequest: boolean;
|
|
35
|
+
title: string;
|
|
36
|
+
};
|
|
37
|
+
export type AirplaneRelatedPrItem = {
|
|
38
|
+
url: string;
|
|
39
|
+
branchName: string | null;
|
|
40
|
+
createdAt: string;
|
|
41
|
+
isDraft: boolean;
|
|
42
|
+
isConflicted: boolean;
|
|
43
|
+
mergeableStatus: string;
|
|
44
|
+
isPassedAllCiJob: boolean;
|
|
45
|
+
isCiStateSuccess: boolean;
|
|
46
|
+
isResolvedAllReviewComments: boolean;
|
|
47
|
+
isBranchOutOfDate: boolean;
|
|
48
|
+
missingRequiredCheckNames: string[];
|
|
49
|
+
summary: {
|
|
50
|
+
title: string;
|
|
51
|
+
body: string;
|
|
52
|
+
additions: number;
|
|
53
|
+
deletions: number;
|
|
54
|
+
changedFiles: number;
|
|
55
|
+
} | null;
|
|
56
|
+
};
|
|
57
|
+
export type AirplaneItemData = {
|
|
58
|
+
body: string;
|
|
59
|
+
comments: AirplaneCommentItem[];
|
|
60
|
+
state: AirplaneStateItem;
|
|
61
|
+
files: AirplaneFilesItem[] | null;
|
|
62
|
+
commits: AirplaneCommitItem[] | null;
|
|
63
|
+
prStatus: AirplanePrStatusItem | null;
|
|
64
|
+
relatedPrs: AirplaneRelatedPrItem[] | null;
|
|
65
|
+
};
|
|
66
|
+
export type AirplaneTabData = Record<string, unknown>;
|
|
67
|
+
export type AirplaneSnapshotPayload = {
|
|
68
|
+
capturedAt: string;
|
|
69
|
+
tabs: Record<string, AirplaneTabData>;
|
|
70
|
+
items: Record<string, AirplaneItemData>;
|
|
71
|
+
failures: string[];
|
|
72
|
+
};
|
|
73
|
+
export type AirplaneSyncEvent = {
|
|
74
|
+
type: 'progress';
|
|
75
|
+
fetched: number;
|
|
76
|
+
total: number;
|
|
77
|
+
} | {
|
|
78
|
+
type: 'done';
|
|
79
|
+
snapshot: AirplaneSnapshotPayload;
|
|
80
|
+
} | {
|
|
81
|
+
type: 'error';
|
|
82
|
+
message: string;
|
|
83
|
+
};
|
|
84
|
+
export type AirplaneSyncResponseWriter = {
|
|
85
|
+
writeHead(statusCode: number, headers: Record<string, string>): void;
|
|
86
|
+
write(data: string): void;
|
|
87
|
+
end(): void;
|
|
88
|
+
};
|
|
89
|
+
export declare const handleAirplaneSync: (response: AirplaneSyncResponseWriter, consoleDataOutputDir: string, issueRepository: IssueRepository, issueTitleStateCache: IssueTitleStateCache, pullRequestStatusCache: PullRequestStatusCache, ghToken?: string | null) => Promise<void>;
|
|
90
|
+
//# sourceMappingURL=consoleAirplaneSnapshotApi.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"consoleAirplaneSnapshotApi.d.ts","sourceRoot":"","sources":["../../../../src/adapter/entry-points/console/consoleAirplaneSnapshotApi.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6DAA6D,CAAC;AAEnG,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EASvB,MAAM,kBAAkB,CAAC;AAE1B,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,KAAK,EAAE,OAAO,CAAC;IACf,YAAY,EAAE,OAAO,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,yBAAyB,EAAE,MAAM,EAAE,CAAC;CACrC,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,OAAO,CAAC;IAChB,aAAa,EAAE,OAAO,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,OAAO,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,2BAA2B,EAAE,OAAO,CAAC;IACrC,iBAAiB,EAAE,OAAO,CAAC;IAC3B,yBAAyB,EAAE,MAAM,EAAE,CAAC;IACpC,OAAO,EAAE;QACP,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;QAClB,YAAY,EAAE,MAAM,CAAC;KACtB,GAAG,IAAI,CAAC;CACV,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,mBAAmB,EAAE,CAAC;IAChC,KAAK,EAAE,iBAAiB,CAAC;IACzB,KAAK,EAAE,iBAAiB,EAAE,GAAG,IAAI,CAAC;IAClC,OAAO,EAAE,kBAAkB,EAAE,GAAG,IAAI,CAAC;IACrC,QAAQ,EAAE,oBAAoB,GAAG,IAAI,CAAC;IACtC,UAAU,EAAE,qBAAqB,EAAE,GAAG,IAAI,CAAC;CAC5C,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEtD,MAAM,MAAM,uBAAuB,GAAG;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IACtC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IACxC,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GACzB;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACpD;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,uBAAuB,CAAA;CAAE,GACnD;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AA8DvC,MAAM,MAAM,0BAA0B,GAAG;IACvC,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;IACrE,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,GAAG,IAAI,IAAI,CAAC;CACb,CAAC;AA4NF,eAAO,MAAM,kBAAkB,GAC7B,UAAU,0BAA0B,EACpC,sBAAsB,MAAM,EAC5B,iBAAiB,eAAe,EAChC,sBAAsB,oBAAoB,EAC1C,wBAAwB,sBAAsB,EAC9C,UAAS,MAAM,GAAG,IAAW,KAC5B,OAAO,CAAC,IAAI,CAyFd,CAAC"}
|
|
@@ -38,6 +38,7 @@ export type WebServerOptions = {
|
|
|
38
38
|
updateProjectCacheEntry?: ((pjcode: string, updatedProject: Project) => void) | null;
|
|
39
39
|
issueTitleStateCache?: IssueTitleStateCache | null;
|
|
40
40
|
pullRequestStatusCache?: PullRequestStatusCache | null;
|
|
41
|
+
enableAirplaneMode?: boolean;
|
|
41
42
|
};
|
|
42
43
|
export declare const DASHBOARD_REQUEST_PATH = "/tdpm.txt";
|
|
43
44
|
export declare const IMAGE_PROXY_REQUEST_PATH = "/api/img";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webServer.d.ts","sourceRoot":"","sources":["../../../../src/adapter/entry-points/console/webServer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAG7B,OAAO,EAAE,yBAAyB,EAAE,MAAM,uEAAuE,CAAC;AAClH,OAAO,EAAE,eAAe,EAAE,MAAM,6DAA6D,CAAC;AAC9F,OAAO,EAAE,OAAO,EAAE,MAAM,kCAAkC,CAAC;AAM3D,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EAQvB,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"webServer.d.ts","sourceRoot":"","sources":["../../../../src/adapter/entry-points/console/webServer.ts"],"names":[],"mappings":"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"}
|