@knpkv/codecommit-core 0.9.1 → 0.10.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/README.md +23 -1
- package/dist/AwsClient/AwsClientGated.js +1 -1
- package/dist/AwsClient/AwsClientGated.js.map +1 -1
- package/dist/AwsClient/getPullRequests.js +3 -3
- package/dist/AwsClient/getPullRequests.js.map +1 -1
- package/dist/ChildEnv.d.ts +36 -0
- package/dist/ChildEnv.d.ts.map +1 -0
- package/dist/ChildEnv.js +91 -0
- package/dist/ChildEnv.js.map +1 -0
- package/dist/ConfigService/detectProfiles.js +1 -1
- package/dist/ConfigService/detectProfiles.js.map +1 -1
- package/dist/ConfigService/load.d.ts +1 -1
- package/dist/ConfigService/load.d.ts.map +1 -1
- package/dist/ConfigService/load.js +4 -4
- package/dist/ConfigService/load.js.map +1 -1
- package/dist/ConfigService/reset.d.ts +1 -1
- package/dist/ConfigService/reset.d.ts.map +1 -1
- package/dist/ConfigService/reset.js +4 -4
- package/dist/ConfigService/reset.js.map +1 -1
- package/dist/ConfigService/save.d.ts +23 -2
- package/dist/ConfigService/save.d.ts.map +1 -1
- package/dist/ConfigService/save.js +2 -2
- package/dist/ConfigService/save.js.map +1 -1
- package/dist/PRService/index.d.ts.map +1 -1
- package/dist/PRService/index.js +11 -11
- package/dist/PRService/index.js.map +1 -1
- package/dist/PRService/refresh.d.ts.map +1 -1
- package/dist/PRService/refresh.js +8 -6
- package/dist/PRService/refresh.js.map +1 -1
- package/dist/PRService/refreshEnrich.d.ts.map +1 -1
- package/dist/PRService/refreshEnrich.js +10 -10
- package/dist/PRService/refreshEnrich.js.map +1 -1
- package/dist/PRService/refreshFetch.d.ts.map +1 -1
- package/dist/PRService/refreshFetch.js +12 -13
- package/dist/PRService/refreshFetch.js.map +1 -1
- package/dist/PRService/refreshScore.d.ts.map +1 -1
- package/dist/PRService/refreshScore.js +4 -4
- package/dist/PRService/refreshScore.js.map +1 -1
- package/dist/PRService/refreshSinglePR.d.ts.map +1 -1
- package/dist/PRService/refreshSinglePR.js +13 -15
- package/dist/PRService/refreshSinglePR.js.map +1 -1
- package/dist/PermissionService/index.d.ts.map +1 -1
- package/dist/PermissionService/index.js +7 -6
- package/dist/PermissionService/index.js.map +1 -1
- package/dist/ReadClient/ReadClient.d.ts.map +1 -1
- package/dist/ReadClient/ReadClient.js +24 -6
- package/dist/ReadClient/ReadClient.js.map +1 -1
- package/dist/ReadClient/models.d.ts +1 -1
- package/dist/ReadClient/models.js +1 -1
- package/dist/ReadClient/models.js.map +1 -1
- package/dist/ReviewClient/ReviewClient.d.ts +28 -0
- package/dist/ReviewClient/ReviewClient.d.ts.map +1 -0
- package/dist/ReviewClient/ReviewClient.js +268 -0
- package/dist/ReviewClient/ReviewClient.js.map +1 -0
- package/dist/ReviewClient/ReviewProvider.d.ts +62 -0
- package/dist/ReviewClient/ReviewProvider.d.ts.map +1 -0
- package/dist/ReviewClient/ReviewProvider.js +67 -0
- package/dist/ReviewClient/ReviewProvider.js.map +1 -0
- package/dist/ReviewClient/errors.d.ts +15 -0
- package/dist/ReviewClient/errors.d.ts.map +1 -0
- package/dist/ReviewClient/errors.js +20 -0
- package/dist/ReviewClient/errors.js.map +1 -0
- package/dist/ReviewClient/index.d.ts +6 -0
- package/dist/ReviewClient/index.d.ts.map +1 -0
- package/dist/ReviewClient/index.js +6 -0
- package/dist/ReviewClient/index.js.map +1 -0
- package/dist/ReviewClient/models.d.ts +155 -0
- package/dist/ReviewClient/models.d.ts.map +1 -0
- package/dist/ReviewClient/models.js +72 -0
- package/dist/ReviewClient/models.js.map +1 -0
- package/dist/SandboxService/PluginService.d.ts.map +1 -1
- package/dist/SandboxService/PluginService.js +2 -2
- package/dist/SandboxService/PluginService.js.map +1 -1
- package/dist/SandboxService/SandboxService.d.ts +4 -1
- package/dist/SandboxService/SandboxService.d.ts.map +1 -1
- package/dist/SandboxService/SandboxService.js +29 -13
- package/dist/SandboxService/SandboxService.js.map +1 -1
- package/dist/SandboxService/SandboxWorkerScope.d.ts +17 -0
- package/dist/SandboxService/SandboxWorkerScope.d.ts.map +1 -0
- package/dist/SandboxService/SandboxWorkerScope.js +13 -0
- package/dist/SandboxService/SandboxWorkerScope.js.map +1 -0
- package/dist/StatsService/index.d.ts.map +1 -1
- package/dist/StatsService/index.js +2 -2
- package/dist/StatsService/index.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/package.json +2 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @internal
|
|
3
3
|
*/
|
|
4
|
-
import {
|
|
4
|
+
import { Clock, DateTime, Effect, Predicate, Result, SubscriptionRef } from "effect";
|
|
5
5
|
import { EventsHub } from "../CacheService/EventsHub.js";
|
|
6
6
|
import { SyncMetadataRepo } from "../CacheService/repos/SyncMetadataRepo.js";
|
|
7
7
|
import { enrichDiffs } from "./refreshDiffs.js";
|
|
@@ -11,6 +11,12 @@ import { resolveAccounts } from "./refreshResolve.js";
|
|
|
11
11
|
import { calculateHealthScores } from "./refreshScore.js";
|
|
12
12
|
const idleStatus = "idle";
|
|
13
13
|
const errorStatus = "error";
|
|
14
|
+
const refreshErrorMessage = (error) => Result.try(() => String(Predicate.isError(error) ? error.message : error) || "Unknown error").pipe(Result.getOrElse(() => "Unknown error"));
|
|
15
|
+
const transitionToRefreshError = (state, error) => SubscriptionRef.update(state, (current) => ({
|
|
16
|
+
...current,
|
|
17
|
+
status: errorStatus,
|
|
18
|
+
error: refreshErrorMessage(error)
|
|
19
|
+
}));
|
|
14
20
|
export const makeRefresh = Effect.fn("PRService.refresh")(function* (state) {
|
|
15
21
|
const hub = yield* EventsHub;
|
|
16
22
|
const syncMetadataRepo = yield* SyncMetadataRepo;
|
|
@@ -38,9 +44,5 @@ export const makeRefresh = Effect.fn("PRService.refresh")(function* (state) {
|
|
|
38
44
|
const awsAccountId = accountIdMap.get(account.profile) ?? account.profile;
|
|
39
45
|
return Effect.forEach(account.regions ?? [], (region) => syncMetadataRepo.update(awsAccountId, region), { discard: true });
|
|
40
46
|
}, { discard: true }).pipe(Effect.catchIf(() => true, () => Effect.void));
|
|
41
|
-
}, (effect, state) => effect.pipe(Effect.timeout("120 seconds"), Effect.
|
|
42
|
-
const squashed = Cause.squash(cause);
|
|
43
|
-
const errorStr = (Predicate.isError(squashed) ? squashed.message : String(squashed)) || "Unknown error";
|
|
44
|
-
return SubscriptionRef.update(state, (s) => ({ ...s, status: errorStatus, error: errorStr }));
|
|
45
|
-
})));
|
|
47
|
+
}, (effect, state) => effect.pipe(Effect.timeout("120 seconds"), Effect.catch((error) => transitionToRefreshError(state, error)), Effect.tapDefect((defect) => Effect.logError("PRService.refresh defect", defect).pipe(Effect.andThen(transitionToRefreshError(state, defect))))));
|
|
46
48
|
//# sourceMappingURL=refresh.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"refresh.js","sourceRoot":"","sources":["../../src/PRService/refresh.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"refresh.js","sourceRoot":"","sources":["../../src/PRService/refresh.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"refreshEnrich.d.ts","sourceRoot":"","sources":["../../src/PRService/refreshEnrich.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"refreshEnrich.d.ts","sourceRoot":"","sources":["../../src/PRService/refreshEnrich.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAS,MAAM,EAAU,GAAG,EAA2B,MAAM,QAAQ,CAAA;AAC5E,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AAEjD,OAAO,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAA;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,2CAA2C,CAAA;AAE5E,OAAO,EAAE,eAAe,EAAE,MAAM,gDAAgD,CAAA;AAEhF,OAAO,EAAoB,KAAK,OAAO,EAAE,MAAM,eAAe,CAAA;AAwD9D,eAAO,MAAM,cAAc,WAAY;IACrC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;IACvB,QAAQ,CAAC,aAAa,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAA;CAC7C,KAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,GAAG,WAAW,GAAG,gBAAgB,GAAG,eAAe,CAiDxF,CAAA"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* @internal
|
|
3
3
|
* Phase 4: Fetch comments for each PR, diff, cache, and count.
|
|
4
4
|
*/
|
|
5
|
-
import { Effect, Option, Ref, Schema, SubscriptionRef } from "effect";
|
|
5
|
+
import { Cause, Effect, Option, Ref, Schema, SubscriptionRef } from "effect";
|
|
6
6
|
import { AwsClient } from "../AwsClient/index.js";
|
|
7
7
|
import { diffComments } from "../CacheService/diff.js";
|
|
8
8
|
import { CommentRepo } from "../CacheService/repos/CommentRepo.js";
|
|
@@ -25,23 +25,23 @@ const enrichSinglePR = (row, subscribedSnapshot) => Effect.gen(function* () {
|
|
|
25
25
|
},
|
|
26
26
|
pullRequestId: prId,
|
|
27
27
|
repositoryName: row.repositoryName
|
|
28
|
-
}).pipe(Effect.
|
|
28
|
+
}).pipe(Effect.catch(() => Effect.succeed(undefined)));
|
|
29
29
|
if (locs && awsAccountId) {
|
|
30
30
|
// Diff comments for subscribed PRs
|
|
31
31
|
if (subscribedSnapshot.has(`${awsAccountId}:${prId}`)) {
|
|
32
|
-
const cachedComments = yield* commentRepo.find(awsAccountId, prId).pipe(Effect.
|
|
32
|
+
const cachedComments = yield* commentRepo.find(awsAccountId, prId).pipe(Effect.catch(() => Effect.succeed(Option.none())));
|
|
33
33
|
if (Option.isSome(cachedComments)) {
|
|
34
34
|
const notifications = diffComments(cachedComments.value, locs, prId, awsAccountId);
|
|
35
|
-
yield* Effect.forEach(notifications, (n) => notificationRepo.add(n), { discard: true }).pipe(Effect.
|
|
35
|
+
yield* Effect.forEach(notifications, (n) => notificationRepo.add(n), { discard: true }).pipe(Effect.catch(() => Effect.void));
|
|
36
36
|
}
|
|
37
37
|
}
|
|
38
38
|
// Cache comments
|
|
39
|
-
yield* commentRepo.upsert(awsAccountId, prId, JSON.stringify(locs)).pipe(Effect.
|
|
39
|
+
yield* commentRepo.upsert(awsAccountId, prId, JSON.stringify(locs)).pipe(Effect.catch(() => Effect.void));
|
|
40
40
|
}
|
|
41
41
|
// Fallback: use cached comment count from DB
|
|
42
42
|
let commentCount = locs ? countAllComments(locs) : 0;
|
|
43
43
|
if (!locs && awsAccountId) {
|
|
44
|
-
const cached = yield* commentRepo.find(awsAccountId, prId).pipe(Effect.
|
|
44
|
+
const cached = yield* commentRepo.find(awsAccountId, prId).pipe(Effect.catch(() => Effect.succeed(Option.none())));
|
|
45
45
|
if (Option.isSome(cached)) {
|
|
46
46
|
commentCount = countAllComments(cached.value);
|
|
47
47
|
}
|
|
@@ -51,7 +51,7 @@ const enrichSinglePR = (row, subscribedSnapshot) => Effect.gen(function* () {
|
|
|
51
51
|
export const enrichComments = (params) => Effect.gen(function* () {
|
|
52
52
|
const prRepo = yield* PullRequestRepo;
|
|
53
53
|
const { state, subscribedRef } = params;
|
|
54
|
-
const freshPRs = yield* prRepo.findAll().pipe(Effect.
|
|
54
|
+
const freshPRs = yield* prRepo.findAll().pipe(Effect.catch(() => Effect.succeed([])));
|
|
55
55
|
const subscribedSnapshot = yield* Ref.get(subscribedRef);
|
|
56
56
|
const enrichedRef = yield* Ref.make(0);
|
|
57
57
|
yield* SubscriptionRef.update(state, (s) => ({
|
|
@@ -69,9 +69,9 @@ export const enrichComments = (params) => Effect.gen(function* () {
|
|
|
69
69
|
}), { concurrency: 2 });
|
|
70
70
|
yield* Effect.forEach(enrichments, (r) => Option.match(r, {
|
|
71
71
|
onNone: () => Effect.void,
|
|
72
|
-
onSome: ({ awsAccountId, commentCount, id }) => prRepo.updateCommentCount(awsAccountId, id, commentCount).pipe(Effect.
|
|
72
|
+
onSome: ({ awsAccountId, commentCount, id }) => prRepo.updateCommentCount(awsAccountId, id, commentCount).pipe(Effect.catch(() => Effect.void))
|
|
73
73
|
}), { discard: true });
|
|
74
74
|
// Derive commented_by from cached pr_comments
|
|
75
|
-
yield* prRepo.refreshCommentedBy().pipe(Effect.
|
|
76
|
-
}).pipe(Effect.
|
|
75
|
+
yield* prRepo.refreshCommentedBy().pipe(Effect.catch(() => Effect.void));
|
|
76
|
+
}).pipe(Effect.tapCauseIf(Cause.hasDies, (cause) => Effect.logWarning("enrichComments failed", cause)));
|
|
77
77
|
//# sourceMappingURL=refreshEnrich.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"refreshEnrich.js","sourceRoot":"","sources":["../../src/PRService/refreshEnrich.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAA;
|
|
1
|
+
{"version":3,"file":"refreshEnrich.js","sourceRoot":"","sources":["../../src/PRService/refreshEnrich.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAA;AAC5E,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAA;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,2CAA2C,CAAA;AAE5E,OAAO,EAAE,eAAe,EAAE,MAAM,gDAAgD,CAAA;AAChF,OAAO,EAAE,cAAc,EAAE,SAAS,EAA0B,MAAM,cAAc,CAAA;AAChF,OAAO,EAAE,gBAAgB,EAAgB,MAAM,eAAe,CAAA;AAE9D,MAAM,oBAAoB,GAAG,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC,CAAA;AAC9D,MAAM,eAAe,GAAG,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAA;AAEpD,MAAM,cAAc,GAAG,CAAC,GAAsB,EAAE,kBAA+B,EAAE,EAAE,CACjF,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,SAAS,CAAA;IAClC,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,WAAW,CAAA;IACtC,MAAM,gBAAgB,GAAG,KAAK,CAAC,CAAC,gBAAgB,CAAA;IAEhD,MAAM,YAAY,GAAG,GAAG,CAAC,YAAY,CAAA;IACrC,MAAM,IAAI,GAAG,GAAG,CAAC,EAAE,CAAA;IAEnB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,SAAS,CAAC,yBAAyB,CAAC;QACtD,OAAO,EAAE;YACP,OAAO,EAAE,oBAAoB,CAAC,GAAG,CAAC,cAAc,CAAC;YACjD,MAAM,EAAE,eAAe,CAAC,GAAG,CAAC,aAAa,CAAC;SAC3C;QACD,aAAa,EAAE,IAAI;QACnB,cAAc,EAAE,GAAG,CAAC,cAAc;KACnC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAuC,SAAS,CAAC,CAAC,CAAC,CAAA;IAE5F,IAAI,IAAI,IAAI,YAAY,EAAE,CAAC;QACzB,mCAAmC;QACnC,IAAI,kBAAkB,CAAC,GAAG,CAAC,GAAG,YAAY,IAAI,IAAI,EAAE,CAAC,EAAE,CAAC;YACtD,MAAM,cAAc,GAAG,KAAK,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC,IAAI,CACrE,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAoC,CAAC,CAAC,CACpF,CAAA;YACD,IAAI,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE,CAAC;gBAClC,MAAM,aAAa,GAAG,YAAY,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,CAAC,CAAA;gBAClF,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAC1F,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAChC,CAAA;YACH,CAAC;QACH,CAAC;QACD,iBAAiB;QACjB,KAAK,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,YAAY,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CACtE,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAChC,CAAA;IACH,CAAC;IAED,6CAA6C;IAC7C,IAAI,YAAY,GAAG,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IACpD,IAAI,CAAC,IAAI,IAAI,YAAY,EAAE,CAAC;QAC1B,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC,IAAI,CAC7D,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAoC,CAAC,CAAC,CACpF,CAAA;QACD,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1B,YAAY,GAAG,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAC/C,CAAC;IACH,CAAC;IAED,OAAO,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,YAAY,EAAE,YAAY,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAA;AAC7F,CAAC,CAAC,CAAA;AAEJ,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,MAG9B,EAA4F,EAAE,CAC7F,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,eAAe,CAAA;IAErC,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,MAAM,CAAA;IAEvC,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAA2B,EAAE,CAAC,CAAC,CAAC,CAAA;IAC/G,MAAM,kBAAkB,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC,CAAA;IACxD,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAEtC,KAAK,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC3C,GAAG,CAAC;QACJ,YAAY,EAAE,wBAAwB,QAAQ,CAAC,MAAM,GAAG;KACzD,CAAC,CAAC,CAAA;IAEH,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CACvC,QAAQ,EACR,CAAC,GAAG,EAAE,EAAE,CACN,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,cAAc,CAAC,GAAG,EAAE,kBAAkB,CAAC,CAAA;QAC7D,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;QAC5D,KAAK,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC3C,GAAG,CAAC;YACJ,YAAY,EAAE,sBAAsB,CAAC,IAAI,QAAQ,CAAC,MAAM,GAAG;SAC5D,CAAC,CAAC,CAAA;QACH,OAAO,MAAM,CAAA;IACf,CAAC,CAAC,EACJ,EAAE,WAAW,EAAE,CAAC,EAAE,CACnB,CAAA;IAED,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CACnB,WAAW,EACX,CAAC,CAAC,EAAE,EAAE,CACJ,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE;QACd,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI;QACzB,MAAM,EAAE,CAAC,EAAE,YAAY,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE,EAAE,CAC7C,MAAM,CAAC,kBAAkB,CAAC,YAAY,EAAE,EAAE,EAAE,YAAY,CAAC,CAAC,IAAI,CAC5D,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAChC;KACJ,CAAC,EACJ,EAAE,OAAO,EAAE,IAAI,EAAE,CAClB,CAAA;IAED,8CAA8C;IAC9C,KAAK,CAAC,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC,IAAI,CACrC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAChC,CAAA;AACH,CAAC,CAAC,CAAC,IAAI,CACL,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAC,CAC/F,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"refreshFetch.d.ts","sourceRoot":"","sources":["../../src/PRService/refreshFetch.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAS,MAAM,EAAqB,GAAG,EAA2B,MAAM,QAAQ,CAAA;AACvF,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AAGjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,2CAA2C,CAAA;AAC5E,OAAO,EAEL,eAAe,EAEhB,MAAM,gDAAgD,CAAA;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,2CAA2C,CAAA;AAC5E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAA;AACjE,OAAO,EAAE,KAAK,OAAO,EAAmB,MAAM,eAAe,CAAA;AAoB7D,eAAO,MAAM,iBAAiB,WAAY;IACxC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;IACvB,QAAQ,CAAC,eAAe,EAAE,aAAa,CAAC,aAAa,CAAC,CAAA;IACtD,QAAQ,CAAC,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC1C,QAAQ,CAAC,aAAa,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAA;IAC5C,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,CAAA;IACxC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;CAChC,KAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,GAAG,eAAe,GAAG,gBAAgB,GAAG,gBAAgB,
|
|
1
|
+
{"version":3,"file":"refreshFetch.d.ts","sourceRoot":"","sources":["../../src/PRService/refreshFetch.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAS,MAAM,EAAqB,GAAG,EAA2B,MAAM,QAAQ,CAAA;AACvF,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AAGjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,2CAA2C,CAAA;AAC5E,OAAO,EAEL,eAAe,EAEhB,MAAM,gDAAgD,CAAA;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,2CAA2C,CAAA;AAC5E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAA;AACjE,OAAO,EAAE,KAAK,OAAO,EAAmB,MAAM,eAAe,CAAA;AAoB7D,eAAO,MAAM,iBAAiB,WAAY;IACxC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;IACvB,QAAQ,CAAC,eAAe,EAAE,aAAa,CAAC,aAAa,CAAC,CAAA;IACtD,QAAQ,CAAC,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC1C,QAAQ,CAAC,aAAa,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAA;IAC5C,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,CAAA;IACxC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;CAChC,KAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,GAAG,eAAe,GAAG,gBAAgB,GAAG,gBAAgB,CA+H7F,CAAA"}
|
|
@@ -31,11 +31,10 @@ export const fetchAndUpsertPRs = (params) => Effect.gen(function* () {
|
|
|
31
31
|
const streams = enabledAccounts.flatMap((account) => (account.regions ?? []).map((region) => {
|
|
32
32
|
const label = `${account.profile} (${region})`;
|
|
33
33
|
const awsAccountId = accountIdMap.get(account.profile) ?? "";
|
|
34
|
-
return awsClient.getPullRequests({ profile: account.profile, region }).pipe(Stream.map((pr) => ({ awsAccountId, label, pr })), Stream.
|
|
35
|
-
const
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
: String(squashed)) || "Unknown error";
|
|
34
|
+
return awsClient.getPullRequests({ profile: account.profile, region }).pipe(Stream.map((pr) => ({ awsAccountId, label, pr })), Stream.catch((error) => {
|
|
35
|
+
const causeStr = (Predicate.isError(error)
|
|
36
|
+
? error.name !== "Error" ? error.name : error.message
|
|
37
|
+
: String(error)) || "Unknown error";
|
|
39
38
|
const message = JSON.stringify({
|
|
40
39
|
operation: "getPullRequests",
|
|
41
40
|
profile: account.profile,
|
|
@@ -50,7 +49,7 @@ export const fetchAndUpsertPRs = (params) => Effect.gen(function* () {
|
|
|
50
49
|
message,
|
|
51
50
|
profile: account.profile,
|
|
52
51
|
deduplicate: true
|
|
53
|
-
}).pipe(Effect.
|
|
52
|
+
}).pipe(Effect.catch(() => Effect.void));
|
|
54
53
|
if (isAuthError) {
|
|
55
54
|
yield* SubscriptionRef.update(state, ({ currentUser: _, ...rest }) => rest);
|
|
56
55
|
}
|
|
@@ -61,22 +60,22 @@ export const fetchAndUpsertPRs = (params) => Effect.gen(function* () {
|
|
|
61
60
|
// Diff subscribed PRs against cache
|
|
62
61
|
const subscribed = yield* Ref.get(subscribedRef);
|
|
63
62
|
if (awsAccountId && subscribed.has(`${awsAccountId}:${pr.id}`)) {
|
|
64
|
-
const cached = yield* prRepo.findByAccountAndId(awsAccountId, pr.id).pipe(Effect.map((row) => Option.some(row)), Effect.
|
|
63
|
+
const cached = yield* prRepo.findByAccountAndId(awsAccountId, pr.id).pipe(Effect.map((row) => Option.some(row)), Effect.catch(() => Effect.succeed(Option.none())));
|
|
65
64
|
if (Option.isSome(cached)) {
|
|
66
65
|
const notifications = diffPR(cached.value, prToUpsertInput(pr, awsAccountId), awsAccountId);
|
|
67
66
|
const poolNotifications = diffApprovalPools(cached.value.approvalRules ?? [], pr.approvalRules, currentUser, pr.id, awsAccountId, pr.title, pr.account.profile);
|
|
68
67
|
yield* Effect.forEach([...notifications, ...poolNotifications], (n) => notificationRepo.add(n), {
|
|
69
68
|
discard: true
|
|
70
|
-
}).pipe(Effect.
|
|
69
|
+
}).pipe(Effect.catch(() => Effect.void));
|
|
71
70
|
}
|
|
72
71
|
}
|
|
73
72
|
// Upsert to cache + auto-subscribe current user's PRs
|
|
74
73
|
if (awsAccountId) {
|
|
75
|
-
yield* prRepo.upsert(prToUpsertInput(pr, awsAccountId)).pipe(Effect.tapError((e) => Effect.logWarning("cache upsert error", e)), Effect.
|
|
74
|
+
yield* prRepo.upsert(prToUpsertInput(pr, awsAccountId)).pipe(Effect.tapError((e) => Effect.logWarning("cache upsert error", e)), Effect.catch(() => Effect.void));
|
|
76
75
|
const isAuthor = currentUser && pr.author === currentUser;
|
|
77
76
|
const isApprover = currentUser && pr.approvalRules.some((r) => r.poolMembers.includes(currentUser));
|
|
78
77
|
if (isAuthor || isApprover) {
|
|
79
|
-
yield* subscriptionRepo.subscribe(awsAccountId, pr.id).pipe(Effect.
|
|
78
|
+
yield* subscriptionRepo.subscribe(awsAccountId, pr.id).pipe(Effect.catch(() => Effect.void));
|
|
80
79
|
yield* Ref.update(subscribedRef, (s) => new Set(s).add(`${awsAccountId}:${pr.id}`));
|
|
81
80
|
}
|
|
82
81
|
}
|
|
@@ -91,8 +90,8 @@ export const fetchAndUpsertPRs = (params) => Effect.gen(function* () {
|
|
|
91
90
|
account: { profile: pr.accountProfile, region: pr.accountRegion },
|
|
92
91
|
pullRequestId: pr.id
|
|
93
92
|
})
|
|
94
|
-
.pipe(Effect.flatMap((detail) => resolveStaleStatus(prRepo, detail, pr.awsAccountId, pr.id)), Effect.
|
|
93
|
+
.pipe(Effect.flatMap((detail) => resolveStaleStatus(prRepo, detail, pr.awsAccountId, pr.id)), Effect.catch(() => prRepo.deleteOne(pr.awsAccountId, pr.id).pipe(Effect.catch(() => Effect.void)))), { concurrency: 5, discard: true })), Effect.catch(() => Effect.void));
|
|
95
94
|
// Propagate repoAccountId from any PR that has it to all PRs that don't
|
|
96
|
-
yield* prRepo.propagateRepoAccountId().pipe(Effect.
|
|
97
|
-
}).pipe(Effect.
|
|
95
|
+
yield* prRepo.propagateRepoAccountId().pipe(Effect.catch(() => Effect.void));
|
|
96
|
+
}).pipe(Effect.tapCauseIf(Cause.hasDies, (cause) => Effect.logWarning("fetchAndUpsertPRs failed", cause)));
|
|
98
97
|
//# sourceMappingURL=refreshFetch.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"refreshFetch.js","sourceRoot":"","sources":["../../src/PRService/refreshFetch.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAA;AACvF,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AAEjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,2CAA2C,CAAA;AAC5E,OAAO,EAEL,eAAe,EAEhB,MAAM,gDAAgD,CAAA;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,2CAA2C,CAAA;AAE5E,OAAO,EAAgB,eAAe,EAAE,MAAM,eAAe,CAAA;AAE7D,qFAAqF;AACrF,MAAM,kBAAkB,GAAG,CACzB,MAA4B,EAC5B,MAAyB,EACzB,YAAoB,EACpB,EAAU,EACV,EAAE,CACF,MAAM,CAAC,MAAM,KAAK,MAAM;IACtB,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,YAAY,EAAE,EAAE,CAAC;IACpC,CAAC,CAAC,MAAM,CAAC,uBAAuB,CAC9B,YAAY,EACZ,EAAE,EACF,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE,EACrC,MAAM,CAAC,QAAQ,EACf,MAAM,CAAC,UAAU,CAClB,CAAA;AAEL,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,MAOjC,EAAiG,EAAE,CAClG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,SAAS,CAAA;IAClC,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,eAAe,CAAA;IACrC,MAAM,gBAAgB,GAAG,KAAK,CAAC,CAAC,gBAAgB,CAAA;IAChD,MAAM,gBAAgB,GAAG,KAAK,CAAC,CAAC,gBAAgB,CAAA;IAEhD,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,cAAc,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,MAAM,CAAA;IAEnG,MAAM,aAAa,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;IACxG,KAAK,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC3C,GAAG,CAAC;QACJ,YAAY,EAAE,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;KACvC,CAAC,CAAC,CAAA;IAEH,MAAM,OAAO,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAClD,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;QACrC,MAAM,KAAK,GAAG,GAAG,OAAO,CAAC,OAAO,KAAK,MAAM,GAAG,CAAA;QAC9C,MAAM,YAAY,GAAG,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,CAAA;QAC5D,OAAO,SAAS,CAAC,eAAe,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,CACzE,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,EACjD,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"refreshFetch.js","sourceRoot":"","sources":["../../src/PRService/refreshFetch.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"refreshScore.d.ts","sourceRoot":"","sources":["../../src/PRService/refreshScore.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"refreshScore.d.ts","sourceRoot":"","sources":["../../src/PRService/refreshScore.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAA0B,MAAM,EAAmB,MAAM,QAAQ,CAAA;AACxE,OAAO,EAA0B,eAAe,EAAE,MAAM,gDAAgD,CAAA;AAExG,OAAO,EAAkB,KAAK,OAAO,EAAE,MAAM,eAAe,CAAA;AAE5D,eAAO,MAAM,qBAAqB,UACzB,OAAO,KACb,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,eAAe,CAwB3C,CAAA"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* @internal
|
|
3
3
|
* Phase 5: Calculate and store health scores.
|
|
4
4
|
*/
|
|
5
|
-
import { Clock, DateTime, Effect, SubscriptionRef } from "effect";
|
|
5
|
+
import { Cause, Clock, DateTime, Effect, SubscriptionRef } from "effect";
|
|
6
6
|
import { PullRequestRepo } from "../CacheService/repos/PullRequestRepo/index.js";
|
|
7
7
|
import { scoreTotalOr } from "../HealthScore.js";
|
|
8
8
|
import { decodeCachedPR } from "./internal.js";
|
|
@@ -12,13 +12,13 @@ export const calculateHealthScores = (state) => (Effect.gen(function* () {
|
|
|
12
12
|
...s,
|
|
13
13
|
statusDetail: "calculating health scores"
|
|
14
14
|
}));
|
|
15
|
-
const scoredPRs = yield* prRepo.findAll().pipe(Effect.
|
|
15
|
+
const scoredPRs = yield* prRepo.findAll().pipe(Effect.catch(() => Effect.succeed([])));
|
|
16
16
|
const scoreNowMs = yield* Clock.currentTimeMillis;
|
|
17
17
|
const scoreNow = DateTime.toDate(DateTime.makeUnsafe(scoreNowMs));
|
|
18
18
|
yield* Effect.forEach(scoredPRs, (row) => {
|
|
19
19
|
const pr = decodeCachedPR(row);
|
|
20
20
|
const score = scoreTotalOr(pr, scoreNow, 0);
|
|
21
|
-
return prRepo.updateHealthScore(row.awsAccountId, row.id, score).pipe(Effect.
|
|
21
|
+
return prRepo.updateHealthScore(row.awsAccountId, row.id, score).pipe(Effect.catch(() => Effect.void));
|
|
22
22
|
}, { discard: true });
|
|
23
|
-
}).pipe(Effect.
|
|
23
|
+
}).pipe(Effect.tapCauseIf(Cause.hasDies, (cause) => Effect.logWarning("calculateHealthScores failed", cause))));
|
|
24
24
|
//# sourceMappingURL=refreshScore.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"refreshScore.js","sourceRoot":"","sources":["../../src/PRService/refreshScore.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAA;
|
|
1
|
+
{"version":3,"file":"refreshScore.js","sourceRoot":"","sources":["../../src/PRService/refreshScore.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAA;AACxE,OAAO,EAA0B,eAAe,EAAE,MAAM,gDAAgD,CAAA;AACxG,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,cAAc,EAAgB,MAAM,eAAe,CAAA;AAE5D,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACnC,KAAc,EAC+B,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IACrE,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,eAAe,CAAA;IAErC,KAAK,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC3C,GAAG,CAAC;QACJ,YAAY,EAAE,2BAA2B;KAC1C,CAAC,CAAC,CAAA;IAEH,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAA2B,EAAE,CAAC,CAAC,CAAC,CAAA;IAChH,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAA;IACjD,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAA;IACjE,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CACnB,SAAS,EACT,CAAC,GAAG,EAAE,EAAE;QACN,MAAM,EAAE,GAAG,cAAc,CAAC,GAAG,CAAC,CAAA;QAC9B,MAAM,KAAK,GAAG,YAAY,CAAC,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAA;QAC3C,OAAO,MAAM,CAAC,iBAAiB,CAAC,GAAG,CAAC,YAAY,EAAE,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,IAAI,CACnE,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAChC,CAAA;IACH,CAAC,EACD,EAAE,OAAO,EAAE,IAAI,EAAE,CAClB,CAAA;AACH,CAAC,CAAC,CAAC,IAAI,CACL,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,8BAA8B,EAAE,KAAK,CAAC,CAAC,CACtG,CAAC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"refreshSinglePR.d.ts","sourceRoot":"","sources":["../../src/PRService/refreshSinglePR.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"refreshSinglePR.d.ts","sourceRoot":"","sources":["../../src/PRService/refreshSinglePR.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,MAAM,EAAmC,MAAM,QAAQ,CAAA;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AAEjD,OAAO,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAA;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,2CAA2C,CAAA;AAM5E,OAAO,EAAE,eAAe,EAAE,MAAM,gDAAgD,CAAA;AAChF,OAAO,EAAE,gBAAgB,EAAE,MAAM,2CAA2C,CAAA;AAC5E,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AACzD,OAAO,EAKL,KAAK,aAAa,EAEnB,MAAM,cAAc,CAAA;AACrB,OAAO,EAAoB,KAAK,OAAO,EAAE,MAAM,eAAe,CAAA;AAgB9D,KAAK,kBAAkB,GACnB,SAAS,GACT,eAAe,GACf,WAAW,GACX,gBAAgB,GAChB,gBAAgB,GAChB,aAAa,CAAA;AAyBjB,eAAO,MAAM,mBAAmB,UACvB,OAAO,oBAgHQ,MAAM,QAAQ,aAAa,KAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,kBAAkB,CAElG,CAAA"}
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
*
|
|
9
9
|
* @internal
|
|
10
10
|
*/
|
|
11
|
-
import {
|
|
11
|
+
import { Effect, Option, Schema, SubscriptionRef } from "effect";
|
|
12
12
|
import { AwsClient } from "../AwsClient/index.js";
|
|
13
13
|
import { diffApprovalPools, diffComments, diffPR } from "../CacheService/diff.js";
|
|
14
14
|
import { CommentRepo } from "../CacheService/repos/CommentRepo.js";
|
|
@@ -28,14 +28,14 @@ const resolvedAccount = (profile, region) => ({
|
|
|
28
28
|
/** Resolve profile/region from any cached PR with matching awsAccountId, or from config */
|
|
29
29
|
const resolveAccountFromCache = (prRepo, awsAccountId) => Effect.gen(function* () {
|
|
30
30
|
// Check other cached PRs from the same AWS account
|
|
31
|
-
const allCached = yield* prRepo.findAll().pipe(Effect.
|
|
31
|
+
const allCached = yield* prRepo.findAll().pipe(Effect.catch(() => Effect.succeed([])));
|
|
32
32
|
const sibling = allCached.find((p) => p.awsAccountId === awsAccountId);
|
|
33
33
|
if (sibling) {
|
|
34
34
|
return resolvedAccount(sibling.accountProfile, sibling.accountRegion);
|
|
35
35
|
}
|
|
36
36
|
// Fall back to config — match by profile name (awsAccountId might be the profile name from URL)
|
|
37
37
|
const configService = yield* ConfigService;
|
|
38
|
-
const config = yield* configService.load.pipe(Effect.
|
|
38
|
+
const config = yield* configService.load.pipe(Effect.catch(() => Effect.succeed({ accounts: [] })));
|
|
39
39
|
const configAccount = config.accounts.find((a) => a.profile === awsAccountId && a.enabled);
|
|
40
40
|
if (configAccount && configAccount.regions?.[0]) {
|
|
41
41
|
return resolvedAccount(configAccount.profile, configAccount.regions[0]);
|
|
@@ -53,7 +53,7 @@ export const makeRefreshSinglePR = (state) => {
|
|
|
53
53
|
const currentState = yield* SubscriptionRef.get(state);
|
|
54
54
|
const pr = currentState.pullRequests.find((p) => p.id === prId && p.account.awsAccountId === awsAccountId);
|
|
55
55
|
// Also check cache
|
|
56
|
-
const cachedPR = yield* prRepo.findByAccountAndId(awsAccountId, prId).pipe(Effect.map((row) => Option.some(row)), Effect.
|
|
56
|
+
const cachedPR = yield* prRepo.findByAccountAndId(awsAccountId, prId).pipe(Effect.map((row) => Option.some(row)), Effect.catch(() => Effect.succeed(Option.none())));
|
|
57
57
|
// Resolve account: from state PR → cached PR → any cached PR with same awsAccountId → config
|
|
58
58
|
const account = pr
|
|
59
59
|
? resolvedAccount(pr.account.profile, pr.account.region)
|
|
@@ -66,7 +66,7 @@ export const makeRefreshSinglePR = (state) => {
|
|
|
66
66
|
const detail = yield* awsClient.getPullRequest({
|
|
67
67
|
account,
|
|
68
68
|
pullRequestId: prId
|
|
69
|
-
}).pipe(Effect.
|
|
69
|
+
}).pipe(Effect.catch(() => Effect.succeed(undefined)));
|
|
70
70
|
if (!detail)
|
|
71
71
|
return;
|
|
72
72
|
// Fetch fresh comments
|
|
@@ -74,7 +74,7 @@ export const makeRefreshSinglePR = (state) => {
|
|
|
74
74
|
account,
|
|
75
75
|
pullRequestId: prId,
|
|
76
76
|
repositoryName: detail.repositoryName
|
|
77
|
-
}).pipe(Effect.
|
|
77
|
+
}).pipe(Effect.catch(() => Effect.succeed([])));
|
|
78
78
|
// Build fresh upsert — PullRequestDetail lacks some fields, fall back to cache
|
|
79
79
|
const cached = Option.isSome(cachedPR) ? cachedPR.value : undefined;
|
|
80
80
|
const freshUpsert = {
|
|
@@ -101,27 +101,25 @@ export const makeRefreshSinglePR = (state) => {
|
|
|
101
101
|
approvalRules: detail.approvalRules
|
|
102
102
|
};
|
|
103
103
|
// Diff for subscribed PRs
|
|
104
|
-
const isSubscribed = yield* subscriptionRepo.isSubscribed(awsAccountId, prId).pipe(Effect.
|
|
104
|
+
const isSubscribed = yield* subscriptionRepo.isSubscribed(awsAccountId, prId).pipe(Effect.catch(() => Effect.succeed(false)));
|
|
105
105
|
if (isSubscribed && Option.isSome(cachedPR)) {
|
|
106
106
|
const prNotifications = diffPR(cachedPR.value, freshUpsert, awsAccountId);
|
|
107
107
|
const poolNotifications = diffApprovalPools(cachedPR.value.approvalRules ?? [], freshUpsert.approvalRules, currentState.currentUser, prId, awsAccountId, detail.title, account.profile);
|
|
108
108
|
yield* Effect.forEach([...prNotifications, ...poolNotifications], (n) => notificationRepo.add(n), {
|
|
109
109
|
discard: true
|
|
110
|
-
}).pipe(Effect.
|
|
110
|
+
}).pipe(Effect.catch(() => Effect.void));
|
|
111
111
|
// Diff comments
|
|
112
|
-
const cachedComments = yield* commentRepo.find(awsAccountId, prId).pipe(Effect.
|
|
112
|
+
const cachedComments = yield* commentRepo.find(awsAccountId, prId).pipe(Effect.catch(() => Effect.succeed(Option.none())));
|
|
113
113
|
if (Option.isSome(cachedComments)) {
|
|
114
114
|
const commentNotifications = diffComments(cachedComments.value, locs, prId, awsAccountId);
|
|
115
|
-
yield* Effect.forEach(commentNotifications, (n) => notificationRepo.add(n), { discard: true }).pipe(Effect.
|
|
115
|
+
yield* Effect.forEach(commentNotifications, (n) => notificationRepo.add(n), { discard: true }).pipe(Effect.catch(() => Effect.void));
|
|
116
116
|
}
|
|
117
117
|
}
|
|
118
118
|
// Cache comments
|
|
119
|
-
yield* commentRepo.upsert(awsAccountId, prId, JSON.stringify(locs)).pipe(Effect.
|
|
119
|
+
yield* commentRepo.upsert(awsAccountId, prId, JSON.stringify(locs)).pipe(Effect.catch(() => Effect.void));
|
|
120
120
|
// Always upsert fresh data to cache
|
|
121
|
-
yield* prRepo.upsert(freshUpsert).pipe(Effect.
|
|
122
|
-
}
|
|
123
|
-
? Effect.interrupt
|
|
124
|
-
: Effect.logWarning("refreshSinglePR failed", cause))));
|
|
121
|
+
yield* prRepo.upsert(freshUpsert).pipe(Effect.catch(() => Effect.void));
|
|
122
|
+
});
|
|
125
123
|
return (awsAccountId, prId) => refreshSinglePR(awsAccountId, prId);
|
|
126
124
|
};
|
|
127
125
|
//# sourceMappingURL=refreshSinglePR.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"refreshSinglePR.js","sourceRoot":"","sources":["../../src/PRService/refreshSinglePR.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"refreshSinglePR.js","sourceRoot":"","sources":["../../src/PRService/refreshSinglePR.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/PermissionService/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAAU,OAAO,EAAE,MAAM,EAAE,KAAK,EAAO,MAAM,EAAE,MAAM,QAAQ,CAAA;AACpE,OAAO,KAAK,UAAU,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,KAAK,aAAa,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAExG,YAAY,EAAE,gBAAgB,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AACrF,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,CAAA;AAK7D,eAAO,MAAM,eAAe,6DAAqD,CAAA;AACjF,MAAM,MAAM,eAAe,GAAG,OAAO,eAAe,CAAC,IAAI,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/PermissionService/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAAU,OAAO,EAAE,MAAM,EAAE,KAAK,EAAO,MAAM,EAAE,MAAM,QAAQ,CAAA;AACpE,OAAO,KAAK,UAAU,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,KAAK,aAAa,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAExG,YAAY,EAAE,gBAAgB,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AACrF,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,CAAA;AAK7D,eAAO,MAAM,eAAe,6DAAqD,CAAA;AACjF,MAAM,MAAM,eAAe,GAAG,OAAO,eAAe,CAAC,IAAI,CAAA;AA+CzD,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,KAAK,EAAE,CAAC,SAAS,EAAE,aAAa,KAAK,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAA;IAC5E,QAAQ,CAAC,GAAG,EAAE,CAAC,SAAS,EAAE,aAAa,EAAE,KAAK,EAAE,eAAe,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IACvF,QAAQ,CAAC,MAAM,EAAE,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC,CAAA;IACrE,QAAQ,CAAC,QAAQ,EAAE,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IAC5C,QAAQ,CAAC,cAAc,EAAE,MAAM,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IACrD,QAAQ,CAAC,iBAAiB,EAAE,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;IACvD,QAAQ,CAAC,QAAQ,EAAE,CACjB,IAAI,EAAE;QAAE,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;KAAE,KACxE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;CACzB;;AA4DD,qBAAa,iBAAkB,SAAQ,sBAGf;IACtB,MAAM,CAAC,QAAQ,CAAC,OAAO,+DAAyD;CACjF"}
|
|
@@ -17,7 +17,7 @@ import { Config, Context, Effect, Layer, Ref, Schema } from "effect";
|
|
|
17
17
|
import * as FileSystem from "effect/FileSystem";
|
|
18
18
|
import { allOperations, getOperationMeta, registerOperation } from "./operations.js";
|
|
19
19
|
export { allOperations, getOperationMeta, registerOperation };
|
|
20
|
-
// On-disk format. Schema
|
|
20
|
+
// On-disk format. Schema decoding with defaults means
|
|
21
21
|
// corrupt or missing files gracefully degrade to empty state (everything prompts).
|
|
22
22
|
export const PermissionState = Schema.Literals(["always_allow", "allow", "deny"]);
|
|
23
23
|
const emptyPermissions = {};
|
|
@@ -31,22 +31,23 @@ const PermissionsConfig = Schema.Struct({
|
|
|
31
31
|
audit: AuditConfig.pipe(Schema.withDecodingDefaultTypeKey(Effect.succeed(Schema.decodeSync(AuditConfig)({}))))
|
|
32
32
|
});
|
|
33
33
|
const decodeConfig = Schema.decodeUnknownSync(PermissionsConfig);
|
|
34
|
+
const decodeConfigText = Schema.decodeUnknownEffect(Schema.fromJsonString(PermissionsConfig));
|
|
34
35
|
// Uses Effect FileSystem — works in Bun, Node, tests.
|
|
35
36
|
// Atomic write: write to .tmp, then rename. Prevents corruption on crash.
|
|
36
37
|
const resolvePermissionsPath = Config.string("HOME").pipe(Config.orElse(() => Config.string("USERPROFILE")), Config.map((h) => `${h}/.codecommit/permissions.json`));
|
|
37
|
-
const loadFromDisk = (fs, path) => fs.readFileString(path).pipe(Effect.
|
|
38
|
+
const loadFromDisk = (fs, path) => fs.readFileString(path).pipe(Effect.flatMap(decodeConfigText),
|
|
38
39
|
// Any failure → empty config → everything prompts
|
|
39
|
-
Effect.
|
|
40
|
+
Effect.catch(() => Effect.succeed(decodeConfig({}))));
|
|
40
41
|
const saveToDisk = (fs, path, config) => Effect.gen(function* () {
|
|
41
42
|
const dir = path.replace(/\/[^/]+$/, "");
|
|
42
|
-
yield* fs.makeDirectory(dir, { recursive: true }).pipe(Effect.
|
|
43
|
+
yield* fs.makeDirectory(dir, { recursive: true }).pipe(Effect.catch(() => Effect.void));
|
|
43
44
|
const tmpPath = `${path}.tmp`;
|
|
44
45
|
yield* fs.writeFileString(tmpPath, JSON.stringify(config, null, 2));
|
|
45
46
|
yield* fs.rename(tmpPath, path);
|
|
46
|
-
}).pipe(Effect.
|
|
47
|
+
}).pipe(Effect.catch(() => Effect.void));
|
|
47
48
|
const makePermissionService = Effect.gen(function* () {
|
|
48
49
|
const fs = yield* FileSystem.FileSystem;
|
|
49
|
-
const permPath = yield* resolvePermissionsPath.pipe(Effect.
|
|
50
|
+
const permPath = yield* resolvePermissionsPath.pipe(Effect.catch(() => Effect.succeed("/tmp/.codecommit/permissions.json")));
|
|
50
51
|
// In-memory state. All check() calls read from here.
|
|
51
52
|
// Only set() mutates it AND writes to disk.
|
|
52
53
|
const initial = yield* loadFromDisk(fs, permPath);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/PermissionService/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AACpE,OAAO,KAAK,UAAU,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAsB,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAGxG,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,CAAA;AAE7D
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/PermissionService/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReadClient.d.ts","sourceRoot":"","sources":["../../src/ReadClient/ReadClient.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAA6B,MAAM,EAAE,MAAM,QAAQ,CAAA;AAGlF,OAAO,EAGL,KAAK,mBAAmB,EAEzB,MAAM,aAAa,CAAA;AACpB,OAAO,EAEL,yBAAyB,EACzB,qBAAqB,EAGrB,qBAAqB,EACrB,0BAA0B,EAE1B,yBAAyB,EACzB,6BAA6B,EAC7B,KAAK,qBAAqB,EAC1B,wBAAwB,EACzB,MAAM,aAAa,CAAA;AACpB,OAAO,EACL,sBAAsB,EAEtB,KAAK,sBAAsB,EAC3B,KAAK,iCAAiC,EACtC,KAAK,6BAA6B,EAClC,KAAK,mCAAmC,EACxC,KAAK,mCAAmC,EACzC,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"ReadClient.d.ts","sourceRoot":"","sources":["../../src/ReadClient/ReadClient.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAA6B,MAAM,EAAE,MAAM,QAAQ,CAAA;AAGlF,OAAO,EAGL,KAAK,mBAAmB,EAEzB,MAAM,aAAa,CAAA;AACpB,OAAO,EAEL,yBAAyB,EACzB,qBAAqB,EAGrB,qBAAqB,EACrB,0BAA0B,EAE1B,yBAAyB,EACzB,6BAA6B,EAC7B,KAAK,qBAAqB,EAC1B,wBAAwB,EACzB,MAAM,aAAa,CAAA;AACpB,OAAO,EACL,sBAAsB,EAEtB,KAAK,sBAAsB,EAC3B,KAAK,iCAAiC,EACtC,KAAK,6BAA6B,EAClC,KAAK,mCAAmC,EACxC,KAAK,mCAAmC,EACzC,MAAM,mBAAmB,CAAA;AA+K1B,0EAA0E;AAC1E,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,eAAe,EAAE,CACxB,OAAO,EAAE,qBAAqB,KAC3B,MAAM,CAAC,MAAM,CAAC,yBAAyB,EAAE,mBAAmB,CAAC,CAAA;IAClE,QAAQ,CAAC,oBAAoB,EAAE,CAC7B,OAAO,EAAE,mCAAmC,KACzC,MAAM,CAAC,MAAM,CAAC,wBAAwB,EAAE,mBAAmB,CAAC,CAAA;IACjE,QAAQ,CAAC,OAAO,EAAE,CAChB,OAAO,EAAE,sBAAsB,KAC5B,MAAM,CAAC,MAAM,CAAC,qBAAqB,EAAE,mBAAmB,CAAC,CAAA;IAC9D,QAAQ,CAAC,oBAAoB,EAAE,CAC7B,OAAO,EAAE,IAAI,CAAC,mCAAmC,EAAE,gBAAgB,CAAC,KACjE,MAAM,CAAC,MAAM,CAAC,yBAAyB,EAAE,mBAAmB,CAAC,CAAA;IAClE,QAAQ,CAAC,kBAAkB,EAAE,CAC3B,OAAO,EAAE,IAAI,CAAC,mCAAmC,EAAE,gBAAgB,GAAG,WAAW,CAAC,KAC/E,MAAM,CAAC,MAAM,CAAC,6BAA6B,EAAE,mBAAmB,CAAC,CAAA;IACtE,QAAQ,CAAC,cAAc,EAAE,CACvB,OAAO,EAAE,6BAA6B,KACnC,MAAM,CAAC,MAAM,CAAC,6BAA6B,EAAE,mBAAmB,CAAC,CAAA;IACtE,QAAQ,CAAC,mBAAmB,EAAE,CAC5B,OAAO,EAAE,IAAI,CAAC,iCAAiC,EAAE,gBAAgB,CAAC,KAC/D,MAAM,CAAC,MAAM,CAAC,0BAA0B,EAAE,mBAAmB,CAAC,CAAA;IACnE,QAAQ,CAAC,kBAAkB,EAAE,CAC3B,OAAO,EAAE,IAAI,CAAC,iCAAiC,EAAE,gBAAgB,GAAG,WAAW,CAAC,KAC7E,MAAM,CAAC,MAAM,CAAC,qBAAqB,EAAE,mBAAmB,CAAC,CAAA;CAC/D;;AAED,8CAA8C;AAC9C,qBAAa,oBAAqB,SAAQ,yBAEzC;IACC,oEAAoE;IACpE,MAAM,CAAC,QAAQ,CAAC,KAAK,mEA2HpB;IAED,8DAA8D;IAC9D,MAAM,CAAC,QAAQ,CAAC,IAAI,mJAA6E;CAClG"}
|
|
@@ -9,6 +9,14 @@ import { CodeCommitBlobTooLargeError, CodeCommitMalformedResponseError, CodeComm
|
|
|
9
9
|
import { CODECOMMIT_BLOB_MAXIMUM_BYTES, CodeCommitAccountIdentity, CodeCommitBlobContent, CodeCommitBlobId, CodeCommitBlobMetadata, CodeCommitChangedFile, CodeCommitChangedFilesPage, CodeCommitPageToken, CodeCommitPullRequestPage, CodeCommitPullRequestRevision, CodeCommitRepositoryPage } from "./models.js";
|
|
10
10
|
import { CodeCommitReadProvider, CodeCommitReadProviderLive } from "./ReadProvider.js";
|
|
11
11
|
const PROVIDER_PAGE_LIMIT = 100;
|
|
12
|
+
/**
|
|
13
|
+
* Concurrency for hydrating a listed page's pull requests via GetPullRequest.
|
|
14
|
+
*
|
|
15
|
+
* CodeCommit's GetPullRequest throttle ceiling is low; a wide fan-out bursts it
|
|
16
|
+
* and surfaces ThrottlingException even for small repositories. Kept low so a
|
|
17
|
+
* single sync stays under the limit, trading a little latency for reliability.
|
|
18
|
+
*/
|
|
19
|
+
const PULL_REQUEST_HYDRATION_CONCURRENCY = 2;
|
|
12
20
|
const RawCallerIdentity = Schema.Struct({
|
|
13
21
|
Account: Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty()),
|
|
14
22
|
Arn: Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty())
|
|
@@ -29,9 +37,13 @@ const RawPullRequestResponse = Schema.Struct({
|
|
|
29
37
|
pullRequest: Schema.Struct({
|
|
30
38
|
pullRequestId: Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty()),
|
|
31
39
|
revisionId: Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty()),
|
|
32
|
-
|
|
40
|
+
// Provider-supplied free text: CodeCommit does not guarantee a trimmed
|
|
41
|
+
// title (observed trailing "\n"), so normalize on decode instead of rejecting.
|
|
42
|
+
title: Schema.String.check(Schema.isNonEmpty()),
|
|
33
43
|
description: Schema.optional(Schema.String),
|
|
34
|
-
authorArn
|
|
44
|
+
// CodeCommit omits authorArn for deleted/system identities (observed "Missing
|
|
45
|
+
// key"); the sibling AwsClient read paths already model it as optional.
|
|
46
|
+
authorArn: Schema.optional(Schema.NullOr(Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty()))),
|
|
35
47
|
pullRequestStatus: Schema.Literals(["OPEN", "CLOSED"]),
|
|
36
48
|
pullRequestTargets: Schema.Array(RawPullRequestTarget).check(Schema.isLengthBetween(1, 1)),
|
|
37
49
|
creationDate: Schema.Date,
|
|
@@ -85,7 +97,13 @@ const mapProviderError = (operation) => (error) => {
|
|
|
85
97
|
})
|
|
86
98
|
: error;
|
|
87
99
|
};
|
|
88
|
-
|
|
100
|
+
// Effect Schema error messages embed the rejected value. That is a useful
|
|
101
|
+
// field-level diagnostic for metadata operations, but get-blob carries raw
|
|
102
|
+
// repository file bytes, so its message must never reach the logs.
|
|
103
|
+
const operationLogsRejectedValue = (operation) => operation !== "get-blob";
|
|
104
|
+
const decodeProvider = (operation, schema, value) => Schema.decodeUnknownEffect(Schema.toType(schema))(value).pipe(Effect.tapError((error) => Effect.logError(operationLogsRejectedValue(operation)
|
|
105
|
+
? `CodeCommit provider response failed schema decode (${operation}): ${error.message}`
|
|
106
|
+
: `CodeCommit provider response failed schema decode (${operation})`)), Effect.mapError(() => malformed(operation)));
|
|
89
107
|
const decodePullRequest = Effect.fn("CodeCommitReadClient.decodePullRequest")(function* (value) {
|
|
90
108
|
const raw = yield* decodeProvider("get-pull-request", RawPullRequestResponse, value);
|
|
91
109
|
const pullRequest = raw.pullRequest;
|
|
@@ -96,9 +114,9 @@ const decodePullRequest = Effect.fn("CodeCommitReadClient.decodePullRequest")(fu
|
|
|
96
114
|
pullRequestId: pullRequest.pullRequestId,
|
|
97
115
|
revisionId: pullRequest.revisionId,
|
|
98
116
|
repositoryName: target.repositoryName,
|
|
99
|
-
title: pullRequest.title,
|
|
117
|
+
title: pullRequest.title.trim(),
|
|
100
118
|
description: pullRequest.description,
|
|
101
|
-
authorArn: pullRequest.authorArn,
|
|
119
|
+
authorArn: pullRequest.authorArn ?? null,
|
|
102
120
|
status: target.mergeMetadata?.isMerged === true ? "MERGED" : pullRequest.pullRequestStatus,
|
|
103
121
|
sourceReference: target.sourceReference,
|
|
104
122
|
destinationReference: target.destinationReference,
|
|
@@ -169,7 +187,7 @@ export class CodeCommitReadClient extends Context.Service()("@knpkv/codecommit-c
|
|
|
169
187
|
const listPullRequestsPage = Effect.fn("CodeCommitReadClient.listPullRequestsPage")(function* (request) {
|
|
170
188
|
const raw = yield* provider.listPullRequestsPage({ ...request, maximumResults: PROVIDER_PAGE_LIMIT }).pipe(Effect.mapError(mapProviderError("list-pull-requests")));
|
|
171
189
|
const page = yield* decodeProvider("list-pull-requests", RawPullRequestPage, raw);
|
|
172
|
-
const pullRequests = yield* Effect.forEach(page.pullRequestIds, (pullRequestId) => getPullRequest({ account: request.account, pullRequestId }), { concurrency:
|
|
190
|
+
const pullRequests = yield* Effect.forEach(page.pullRequestIds, (pullRequestId) => getPullRequest({ account: request.account, pullRequestId }), { concurrency: PULL_REQUEST_HYDRATION_CONCURRENCY });
|
|
173
191
|
return new CodeCommitPullRequestPage({
|
|
174
192
|
pullRequests,
|
|
175
193
|
nextToken: page.nextToken === undefined ? null : CodeCommitPageToken.make(page.nextToken)
|