github-issue-tower-defence-management 2.165.2 → 2.165.4
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/bin/adapter/entry-points/console/consoleOperationApi.js +33 -8
- package/bin/adapter/entry-points/console/consoleOperationApi.js.map +1 -1
- package/bin/adapter/entry-points/console/readOnlyTokenRotator.js +1 -1
- package/bin/adapter/entry-points/console/readOnlyTokenRotator.js.map +1 -1
- package/bin/adapter/entry-points/console/ui-dist/assets/index-CMt0eJEr.js +97 -0
- package/bin/adapter/entry-points/console/ui-dist/index.html +1 -1
- package/bin/adapter/repositories/ProjectIssuesCacheRepository.js +7 -1
- package/bin/adapter/repositories/ProjectIssuesCacheRepository.js.map +1 -1
- package/bin/adapter/repositories/issue/ApiV3CheerioRestIssueRepository.js +34 -9
- package/bin/adapter/repositories/issue/ApiV3CheerioRestIssueRepository.js.map +1 -1
- package/package.json +1 -1
- package/types/adapter/entry-points/console/consoleOperationApi.d.ts.map +1 -1
- package/types/adapter/entry-points/console/readOnlyTokenRotator.d.ts.map +1 -1
- package/types/adapter/repositories/ProjectIssuesCacheRepository.d.ts +2 -0
- package/types/adapter/repositories/ProjectIssuesCacheRepository.d.ts.map +1 -1
- package/types/adapter/repositories/issue/ApiV3CheerioRestIssueRepository.d.ts +4 -1
- package/types/adapter/repositories/issue/ApiV3CheerioRestIssueRepository.d.ts.map +1 -1
- package/types/domain/usecases/adapter-interfaces/IssueRepository.d.ts +3 -1
- package/types/domain/usecases/adapter-interfaces/IssueRepository.d.ts.map +1 -1
- package/bin/adapter/entry-points/console/ui-dist/assets/index-d0TD80kH.js +0 -97
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
|
|
7
7
|
<link rel="manifest" href="/manifest.webmanifest" />
|
|
8
8
|
<title>TDPM Console</title>
|
|
9
|
-
<script type="module" crossorigin src="/assets/index-
|
|
9
|
+
<script type="module" crossorigin src="/assets/index-CMt0eJEr.js"></script>
|
|
10
10
|
<link rel="stylesheet" crossorigin href="/assets/index-DXlMKEr5.css">
|
|
11
11
|
</head>
|
|
12
12
|
<body>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ProjectIssuesCacheRepository = exports.isIssueArray = exports.deserializeStoryOptions = exports.deserializeStoryIssueUrlByOptionName = exports.isStringRecord = exports.isProject = void 0;
|
|
3
|
+
exports.ProjectIssuesCacheRepository = exports.isIssueArray = exports.deserializeStoryOptions = exports.deserializeItemUpdatedAtByItemId = exports.deserializeStoryIssueUrlByOptionName = exports.isStringRecord = exports.isProject = void 0;
|
|
4
4
|
const isProject = (value) => {
|
|
5
5
|
if (typeof value !== 'object' || value === null)
|
|
6
6
|
return false;
|
|
@@ -29,6 +29,11 @@ const deserializeStoryIssueUrlByOptionName = (raw) => {
|
|
|
29
29
|
return (0, exports.isStringRecord)(rawMap) ? rawMap : {};
|
|
30
30
|
};
|
|
31
31
|
exports.deserializeStoryIssueUrlByOptionName = deserializeStoryIssueUrlByOptionName;
|
|
32
|
+
const deserializeItemUpdatedAtByItemId = (raw) => {
|
|
33
|
+
const rawMap = 'itemUpdatedAtByItemId' in raw ? raw.itemUpdatedAtByItemId : null;
|
|
34
|
+
return (0, exports.isStringRecord)(rawMap) ? rawMap : {};
|
|
35
|
+
};
|
|
36
|
+
exports.deserializeItemUpdatedAtByItemId = deserializeItemUpdatedAtByItemId;
|
|
32
37
|
const isStoryOptionsArray = (value) => Array.isArray(value) &&
|
|
33
38
|
value.every((item) => typeof item === 'object' &&
|
|
34
39
|
item !== null &&
|
|
@@ -82,6 +87,7 @@ class ProjectIssuesCacheRepository {
|
|
|
82
87
|
issues: raw.issues,
|
|
83
88
|
storyIssueUrlByOptionName: (0, exports.deserializeStoryIssueUrlByOptionName)(raw),
|
|
84
89
|
storyOptions: (0, exports.deserializeStoryOptions)(raw),
|
|
90
|
+
itemUpdatedAtByItemId: (0, exports.deserializeItemUpdatedAtByItemId)(raw),
|
|
85
91
|
};
|
|
86
92
|
};
|
|
87
93
|
this.readProject = async (projectId) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProjectIssuesCacheRepository.js","sourceRoot":"","sources":["../../../src/adapter/repositories/ProjectIssuesCacheRepository.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"ProjectIssuesCacheRepository.js","sourceRoot":"","sources":["../../../src/adapter/repositories/ProjectIssuesCacheRepository.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ApiV3CheerioRestIssueRepository = exports.graphqlMergeableFromRestMergeable = exports.RELATED_OPEN_PRS_CACHE_TTL_MS = exports.REQUIRED_CHECKS_CACHE_TTL_MS = exports.INCREMENTAL_FETCH_SKEW_BUFFER_MS = exports.FULL_ISSUE_FETCH_INTERVAL_MS = void 0;
|
|
3
|
+
exports.ApiV3CheerioRestIssueRepository = exports.graphqlMergeableFromRestMergeable = exports.RELATED_OPEN_PRS_CACHE_TTL_MS = exports.REQUIRED_CHECKS_CACHE_TTL_MS = exports.ONE_DAY_MS = exports.INCREMENTAL_FETCH_SKEW_BUFFER_MS = exports.FULL_ISSUE_FETCH_INTERVAL_MS = void 0;
|
|
4
4
|
const SetupTowerDefenceProjectUseCase_1 = require("../../../domain/usecases/SetupTowerDefenceProjectUseCase");
|
|
5
5
|
const ClearDependedIssueURLUseCase_1 = require("../../../domain/usecases/ClearDependedIssueURLUseCase");
|
|
6
6
|
const storyValueClassify_1 = require("../../../domain/usecases/storyGate/storyValueClassify");
|
|
@@ -17,6 +17,7 @@ const githubRestClient_1 = require("../githubRestClient");
|
|
|
17
17
|
const githubSecondaryRateLimitBreaker_1 = require("./githubSecondaryRateLimitBreaker");
|
|
18
18
|
exports.FULL_ISSUE_FETCH_INTERVAL_MS = 60 * 60 * 1000;
|
|
19
19
|
exports.INCREMENTAL_FETCH_SKEW_BUFFER_MS = 5 * 60 * 1000;
|
|
20
|
+
exports.ONE_DAY_MS = 24 * 60 * 60 * 1000;
|
|
20
21
|
exports.REQUIRED_CHECKS_CACHE_TTL_MS = 10 * 60 * 1000;
|
|
21
22
|
exports.RELATED_OPEN_PRS_CACHE_TTL_MS = 10 * 60 * 1000;
|
|
22
23
|
const buildStoryIssueUrlByOptionName = (issues, storyOptions) => {
|
|
@@ -41,6 +42,15 @@ const buildStoryOptions = (project) => project.story?.stories.map((s) => ({
|
|
|
41
42
|
name: s.name,
|
|
42
43
|
description: s.description ?? '',
|
|
43
44
|
})) ?? [];
|
|
45
|
+
const buildItemUpdatedAtByItemIdOfResultingIssues = (resultingIssues, projectItemsObservedByFullFetch) => {
|
|
46
|
+
const resultingItemIds = new Set(resultingIssues.map((issue) => issue.itemId));
|
|
47
|
+
return Object.fromEntries(projectItemsObservedByFullFetch
|
|
48
|
+
.filter((item) => resultingItemIds.has(item.id))
|
|
49
|
+
.map((item) => [item.id, item.updatedAt]));
|
|
50
|
+
};
|
|
51
|
+
const isLightItemNeverSyncedOrUpdatedAfterItsWatermark = (lightItem, itemUpdatedAtByItemId) => !Object.hasOwn(itemUpdatedAtByItemId, lightItem.id) ||
|
|
52
|
+
new Date(lightItem.updatedAt).getTime() >
|
|
53
|
+
new Date(itemUpdatedAtByItemId[lightItem.id]).getTime();
|
|
44
54
|
const parseDependedIssueUrls = (dependedIssueUrlFieldText) => dependedIssueUrlFieldText
|
|
45
55
|
?.split(',')
|
|
46
56
|
.map((url) => url.trim())
|
|
@@ -484,6 +494,7 @@ class ApiV3CheerioRestIssueRepository extends BaseGitHubRepository_1.BaseGitHubR
|
|
|
484
494
|
issues,
|
|
485
495
|
storyIssueUrlByOptionName: (0, ProjectIssuesCacheRepository_1.deserializeStoryIssueUrlByOptionName)(raw),
|
|
486
496
|
storyOptions: (0, ProjectIssuesCacheRepository_1.deserializeStoryOptions)(raw),
|
|
497
|
+
itemUpdatedAtByItemId: (0, ProjectIssuesCacheRepository_1.deserializeItemUpdatedAtByItemId)(raw),
|
|
487
498
|
};
|
|
488
499
|
};
|
|
489
500
|
// Reads the Project (status/story option ids and field ids) that the TDPM
|
|
@@ -601,6 +612,12 @@ class ApiV3CheerioRestIssueRepository extends BaseGitHubRepository_1.BaseGitHubR
|
|
|
601
612
|
issues: reconciledIssues,
|
|
602
613
|
storyIssueUrlByOptionName: buildStoryIssueUrlByOptionName(reconciledIssues, project.story?.stories ?? []),
|
|
603
614
|
storyOptions: buildStoryOptions(project),
|
|
615
|
+
itemUpdatedAtByItemId: buildItemUpdatedAtByItemIdOfResultingIssues(reconciledIssues, [
|
|
616
|
+
...items,
|
|
617
|
+
...[
|
|
618
|
+
...liveProjectItemsByItemIdAbsentFromFetchResult.values(),
|
|
619
|
+
].flatMap((liveProjectItem) => liveProjectItem ?? []),
|
|
620
|
+
]),
|
|
604
621
|
});
|
|
605
622
|
return { mergedIssues: reconciledIssues, mergedProject };
|
|
606
623
|
});
|
|
@@ -614,13 +631,15 @@ class ApiV3CheerioRestIssueRepository extends BaseGitHubRepository_1.BaseGitHubR
|
|
|
614
631
|
const itemIdsKnownBeforeFetch = new Set(cache.issues.map((issue) => issue.itemId));
|
|
615
632
|
const lastFetchedAt = new Date(cache.lastFetchedAt);
|
|
616
633
|
const cutoff = new Date(lastFetchedAt.getTime() - exports.INCREMENTAL_FETCH_SKEW_BUFFER_MS);
|
|
617
|
-
const { lightItems, inconsistencyMessage: lightFetchInconsistencyMessage } = await this.graphqlProjectItemRepository.fetchProjectItemsLight(projectId, `updated:>=${this.toDateString(cutoff)}`);
|
|
618
|
-
const
|
|
619
|
-
|
|
620
|
-
.map((item) => item.id)
|
|
621
|
-
const changedItems = changedItemIds.length > 0
|
|
622
|
-
? await this.graphqlProjectItemRepository.fetchProjectItemsByIds(changedItemIds)
|
|
634
|
+
const { lightItems, inconsistencyMessage: lightFetchInconsistencyMessage } = await this.graphqlProjectItemRepository.fetchProjectItemsLight(projectId, `updated:>=${this.toDateString(new Date(cutoff.getTime() - exports.ONE_DAY_MS))}`);
|
|
635
|
+
const changedLightItems = lightItems.filter((item) => isLightItemNeverSyncedOrUpdatedAfterItsWatermark(item, cache.itemUpdatedAtByItemId));
|
|
636
|
+
const changedItems = changedLightItems.length > 0
|
|
637
|
+
? await this.graphqlProjectItemRepository.fetchProjectItemsByIds(changedLightItems.map((item) => item.id))
|
|
623
638
|
: [];
|
|
639
|
+
const detailFetchedItemIds = new Set(changedItems.map((item) => item.id));
|
|
640
|
+
const observedUpdatedAtByDetailFetchedItemId = Object.fromEntries(changedLightItems
|
|
641
|
+
.filter((item) => detailFetchedItemIds.has(item.id))
|
|
642
|
+
.map((item) => [item.id, item.updatedAt]));
|
|
624
643
|
const nowIso = now.toISOString();
|
|
625
644
|
const { mergedIssues: issues, mergedProject } = await this.projectIssuesCacheRepository.withLock(projectId, async () => {
|
|
626
645
|
const freshCache = await this.readCachedProjectIssues(projectId);
|
|
@@ -635,6 +654,10 @@ class ApiV3CheerioRestIssueRepository extends BaseGitHubRepository_1.BaseGitHubR
|
|
|
635
654
|
issues: mergedIssues,
|
|
636
655
|
storyIssueUrlByOptionName: buildStoryIssueUrlByOptionName(mergedIssues, project.story?.stories ?? []),
|
|
637
656
|
storyOptions: buildStoryOptions(project),
|
|
657
|
+
itemUpdatedAtByItemId: {
|
|
658
|
+
...(freshCache ?? cache).itemUpdatedAtByItemId,
|
|
659
|
+
...observedUpdatedAtByDetailFetchedItemId,
|
|
660
|
+
},
|
|
638
661
|
});
|
|
639
662
|
return { mergedIssues, mergedProject };
|
|
640
663
|
});
|
|
@@ -741,9 +764,11 @@ class ApiV3CheerioRestIssueRepository extends BaseGitHubRepository_1.BaseGitHubR
|
|
|
741
764
|
}
|
|
742
765
|
return null;
|
|
743
766
|
};
|
|
744
|
-
this.getIssueByUrl = async (url) => {
|
|
767
|
+
this.getIssueByUrl = async (url, options) => {
|
|
745
768
|
const pendingProjectId = this.pendingCacheUpdateByIssueUrl.get(url);
|
|
746
|
-
const cached =
|
|
769
|
+
const cached = options?.bypassCache
|
|
770
|
+
? null
|
|
771
|
+
: await this.findIssueInAllIssuesCache(url);
|
|
747
772
|
if (cached) {
|
|
748
773
|
if (pendingProjectId !== undefined) {
|
|
749
774
|
this.pendingCacheUpdateByIssueUrl.delete(url);
|