@knpkv/codecommit-core 0.5.1 → 0.7.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.
Files changed (129) hide show
  1. package/dist/AwsClient/AwsClientGated.d.ts +30 -0
  2. package/dist/AwsClient/AwsClientGated.d.ts.map +1 -0
  3. package/dist/AwsClient/AwsClientGated.js +111 -0
  4. package/dist/AwsClient/AwsClientGated.js.map +1 -0
  5. package/dist/AwsClient/createApprovalRule.d.ts +4 -0
  6. package/dist/AwsClient/createApprovalRule.d.ts.map +1 -0
  7. package/dist/AwsClient/createApprovalRule.js +17 -0
  8. package/dist/AwsClient/createApprovalRule.js.map +1 -0
  9. package/dist/AwsClient/deleteApprovalRule.d.ts +4 -0
  10. package/dist/AwsClient/deleteApprovalRule.d.ts.map +1 -0
  11. package/dist/AwsClient/deleteApprovalRule.js +16 -0
  12. package/dist/AwsClient/deleteApprovalRule.js.map +1 -0
  13. package/dist/AwsClient/getPullRequest.d.ts.map +1 -1
  14. package/dist/AwsClient/getPullRequest.js +34 -7
  15. package/dist/AwsClient/getPullRequest.js.map +1 -1
  16. package/dist/AwsClient/getPullRequests.d.ts +81 -1
  17. package/dist/AwsClient/getPullRequests.d.ts.map +1 -1
  18. package/dist/AwsClient/getPullRequests.js +123 -17
  19. package/dist/AwsClient/getPullRequests.js.map +1 -1
  20. package/dist/AwsClient/index.d.ts +13 -1
  21. package/dist/AwsClient/index.d.ts.map +1 -1
  22. package/dist/AwsClient/index.js +16 -1
  23. package/dist/AwsClient/index.js.map +1 -1
  24. package/dist/AwsClient/internal.d.ts +63 -1
  25. package/dist/AwsClient/internal.d.ts.map +1 -1
  26. package/dist/AwsClient/internal.js +37 -3
  27. package/dist/AwsClient/internal.js.map +1 -1
  28. package/dist/AwsClient/updateApprovalRule.d.ts +4 -0
  29. package/dist/AwsClient/updateApprovalRule.d.ts.map +1 -0
  30. package/dist/AwsClient/updateApprovalRule.js +17 -0
  31. package/dist/AwsClient/updateApprovalRule.js.map +1 -0
  32. package/dist/CacheService/Database.d.ts +4 -0
  33. package/dist/CacheService/Database.d.ts.map +1 -1
  34. package/dist/CacheService/Database.js +15 -1
  35. package/dist/CacheService/Database.js.map +1 -1
  36. package/dist/CacheService/EventsHub.d.ts +44 -4
  37. package/dist/CacheService/EventsHub.d.ts.map +1 -1
  38. package/dist/CacheService/EventsHub.js.map +1 -1
  39. package/dist/CacheService/diff.d.ts +17 -1
  40. package/dist/CacheService/diff.d.ts.map +1 -1
  41. package/dist/CacheService/diff.js +34 -0
  42. package/dist/CacheService/diff.js.map +1 -1
  43. package/dist/CacheService/index.d.ts +5 -1
  44. package/dist/CacheService/index.d.ts.map +1 -1
  45. package/dist/CacheService/index.js +5 -1
  46. package/dist/CacheService/index.js.map +1 -1
  47. package/dist/CacheService/migrations/0011_audit_log.d.ts +5 -0
  48. package/dist/CacheService/migrations/0011_audit_log.d.ts.map +1 -0
  49. package/dist/CacheService/migrations/0011_audit_log.js +19 -0
  50. package/dist/CacheService/migrations/0011_audit_log.js.map +1 -0
  51. package/dist/CacheService/migrations/0012_audit_log_indexes.d.ts +5 -0
  52. package/dist/CacheService/migrations/0012_audit_log_indexes.d.ts.map +1 -0
  53. package/dist/CacheService/migrations/0012_audit_log_indexes.js +7 -0
  54. package/dist/CacheService/migrations/0012_audit_log_indexes.js.map +1 -0
  55. package/dist/CacheService/migrations/0013_approval_rules.d.ts +5 -0
  56. package/dist/CacheService/migrations/0013_approval_rules.d.ts.map +1 -0
  57. package/dist/CacheService/migrations/0013_approval_rules.js +4 -0
  58. package/dist/CacheService/migrations/0013_approval_rules.js.map +1 -0
  59. package/dist/CacheService/migrations/0014_approved_by_arns.d.ts +5 -0
  60. package/dist/CacheService/migrations/0014_approved_by_arns.d.ts.map +1 -0
  61. package/dist/CacheService/migrations/0014_approved_by_arns.js +4 -0
  62. package/dist/CacheService/migrations/0014_approved_by_arns.js.map +1 -0
  63. package/dist/CacheService/migrations/0015_repo_account_id.d.ts +5 -0
  64. package/dist/CacheService/migrations/0015_repo_account_id.d.ts.map +1 -0
  65. package/dist/CacheService/migrations/0015_repo_account_id.js +4 -0
  66. package/dist/CacheService/migrations/0015_repo_account_id.js.map +1 -0
  67. package/dist/CacheService/repos/NotificationRepo.d.ts.map +1 -1
  68. package/dist/CacheService/repos/NotificationRepo.js +2 -2
  69. package/dist/CacheService/repos/NotificationRepo.js.map +1 -1
  70. package/dist/CacheService/repos/PullRequestRepo/index.d.ts +10 -0
  71. package/dist/CacheService/repos/PullRequestRepo/index.d.ts.map +1 -1
  72. package/dist/CacheService/repos/PullRequestRepo/internal.d.ts +15 -0
  73. package/dist/CacheService/repos/PullRequestRepo/internal.d.ts.map +1 -1
  74. package/dist/CacheService/repos/PullRequestRepo/internal.js +30 -4
  75. package/dist/CacheService/repos/PullRequestRepo/internal.js.map +1 -1
  76. package/dist/CacheService/repos/PullRequestRepo/mutations.d.ts +12 -2
  77. package/dist/CacheService/repos/PullRequestRepo/mutations.d.ts.map +1 -1
  78. package/dist/CacheService/repos/PullRequestRepo/mutations.js +21 -5
  79. package/dist/CacheService/repos/PullRequestRepo/mutations.js.map +1 -1
  80. package/dist/CacheService/repos/PullRequestRepo/queries.d.ts +9 -0
  81. package/dist/CacheService/repos/PullRequestRepo/queries.d.ts.map +1 -1
  82. package/dist/CacheService/repos/StatsRepo/internal.d.ts.map +1 -1
  83. package/dist/CacheService/repos/StatsRepo/internal.js +5 -4
  84. package/dist/CacheService/repos/StatsRepo/internal.js.map +1 -1
  85. package/dist/Domain.d.ts +106 -7
  86. package/dist/Domain.d.ts.map +1 -1
  87. package/dist/Domain.js +66 -6
  88. package/dist/Domain.js.map +1 -1
  89. package/dist/Errors.d.ts +14 -1
  90. package/dist/Errors.d.ts.map +1 -1
  91. package/dist/Errors.js +10 -0
  92. package/dist/Errors.js.map +1 -1
  93. package/dist/PRService/internal.d.ts +23 -0
  94. package/dist/PRService/internal.d.ts.map +1 -1
  95. package/dist/PRService/internal.js +20 -5
  96. package/dist/PRService/internal.js.map +1 -1
  97. package/dist/PRService/refreshFetch.d.ts +5 -1
  98. package/dist/PRService/refreshFetch.d.ts.map +1 -1
  99. package/dist/PRService/refreshFetch.js +15 -4
  100. package/dist/PRService/refreshFetch.js.map +1 -1
  101. package/dist/PRService/refreshSinglePR.d.ts +7 -0
  102. package/dist/PRService/refreshSinglePR.d.ts.map +1 -1
  103. package/dist/PRService/refreshSinglePR.js +16 -3
  104. package/dist/PRService/refreshSinglePR.js.map +1 -1
  105. package/dist/PermissionService/AuditLog.d.ts +63 -0
  106. package/dist/PermissionService/AuditLog.d.ts.map +1 -0
  107. package/dist/PermissionService/AuditLog.js +127 -0
  108. package/dist/PermissionService/AuditLog.js.map +1 -0
  109. package/dist/PermissionService/PermissionGate.d.ts +47 -0
  110. package/dist/PermissionService/PermissionGate.d.ts.map +1 -0
  111. package/dist/PermissionService/PermissionGate.js +14 -0
  112. package/dist/PermissionService/PermissionGate.js.map +1 -0
  113. package/dist/PermissionService/PermissionGateLive.d.ts +41 -0
  114. package/dist/PermissionService/PermissionGateLive.d.ts.map +1 -0
  115. package/dist/PermissionService/PermissionGateLive.js +83 -0
  116. package/dist/PermissionService/PermissionGateLive.js.map +1 -0
  117. package/dist/PermissionService/index.d.ts +39 -0
  118. package/dist/PermissionService/index.d.ts.map +1 -0
  119. package/dist/PermissionService/index.js +87 -0
  120. package/dist/PermissionService/index.js.map +1 -0
  121. package/dist/PermissionService/operations.d.ts +53 -0
  122. package/dist/PermissionService/operations.d.ts.map +1 -0
  123. package/dist/PermissionService/operations.js +51 -0
  124. package/dist/PermissionService/operations.js.map +1 -0
  125. package/dist/index.d.ts +1 -0
  126. package/dist/index.d.ts.map +1 -1
  127. package/dist/index.js +1 -0
  128. package/dist/index.js.map +1 -1
  129. package/package.json +1 -1
@@ -0,0 +1,30 @@
1
+ /**
2
+ * @title AwsClientGated — transparent permission proxy
3
+ *
4
+ * Wraps every AwsClient method with permission check + audit logging.
5
+ * Returns the same `AwsClient.Service` type — callers don't know it exists.
6
+ *
7
+ * Two patterns:
8
+ * 1. InnerAwsClient tag — holds the real implementation, avoids circular dep
9
+ * 2. Service capture at Layer construction — all services yielded once,
10
+ * closed over in gate/wrapEffect/wrapStream, no R leakage
11
+ *
12
+ * PermissionDeniedError → AwsApiError at the boundary for type transparency.
13
+ * The actual PermissionDeniedError is preserved as the AwsApiError's `cause`.
14
+ *
15
+ * All operations — reads, writes, and approval rule CRUD — are gated with
16
+ * the appropriate category for UI badge color and prompt behavior.
17
+ *
18
+ * @module
19
+ */
20
+ import { Context, Layer } from "effect";
21
+ import { AuditLogRepo } from "../PermissionService/AuditLog.js";
22
+ import { PermissionService } from "../PermissionService/index.js";
23
+ import { PermissionGate } from "../PermissionService/PermissionGate.js";
24
+ import { AwsClient } from "./index.js";
25
+ declare const InnerAwsClient_base: Context.TagClass<InnerAwsClient, "@knpkv/codecommit-core/InnerAwsClient", AwsClient.Service>;
26
+ export declare class InnerAwsClient extends InnerAwsClient_base {
27
+ }
28
+ export declare const AwsClientGatedLive: Layer.Layer<AwsClient, never, InnerAwsClient | PermissionService | PermissionGate | AuditLogRepo>;
29
+ export {};
30
+ //# sourceMappingURL=AwsClientGated.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AwsClientGated.d.ts","sourceRoot":"","sources":["../../src/AwsClient/AwsClientGated.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,EAAE,OAAO,EAAU,KAAK,EAAiB,MAAM,QAAQ,CAAA;AAG9D,OAAO,EAAE,YAAY,EAAyB,MAAM,kCAAkC,CAAA;AACtF,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAA;AAEjE,OAAO,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAA;AACvE,OAAO,EAAE,SAAS,EAAuB,MAAM,YAAY,CAAA;;AAG3D,qBAAa,cAAe,SAAQ,mBAGjC;CAAG;AAiBN,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,KAAK,CAC1C,SAAS,EACT,KAAK,EACL,cAAc,GAAG,iBAAiB,GAAG,cAAc,GAAG,YAAY,CAqLnE,CAAA"}
@@ -0,0 +1,111 @@
1
+ /**
2
+ * @title AwsClientGated — transparent permission proxy
3
+ *
4
+ * Wraps every AwsClient method with permission check + audit logging.
5
+ * Returns the same `AwsClient.Service` type — callers don't know it exists.
6
+ *
7
+ * Two patterns:
8
+ * 1. InnerAwsClient tag — holds the real implementation, avoids circular dep
9
+ * 2. Service capture at Layer construction — all services yielded once,
10
+ * closed over in gate/wrapEffect/wrapStream, no R leakage
11
+ *
12
+ * PermissionDeniedError → AwsApiError at the boundary for type transparency.
13
+ * The actual PermissionDeniedError is preserved as the AwsApiError's `cause`.
14
+ *
15
+ * All operations — reads, writes, and approval rule CRUD — are gated with
16
+ * the appropriate category for UI badge color and prompt behavior.
17
+ *
18
+ * @module
19
+ */
20
+ import { Context, Effect, Layer, Match, Stream } from "effect";
21
+ import { AwsApiError, PermissionDeniedError } from "../Errors.js";
22
+ import { AuditLogRepo } from "../PermissionService/AuditLog.js";
23
+ import { PermissionService } from "../PermissionService/index.js";
24
+ import { getOperationMeta } from "../PermissionService/operations.js";
25
+ import { PermissionGate } from "../PermissionService/PermissionGate.js";
26
+ import { AwsClient } from "./index.js";
27
+ // Layer composition: AwsClientLive → InnerAwsClient (rename) → AwsClientGated → AwsClient
28
+ export class InnerAwsClient extends Context.Tag("@knpkv/codecommit-core/InnerAwsClient")() {
29
+ }
30
+ const toDeniedError = (p, reason) => new AwsApiError({
31
+ operation: p.operation,
32
+ profile: p.accountProfile,
33
+ region: p.region,
34
+ cause: new PermissionDeniedError({ operation: p.operation, reason })
35
+ });
36
+ export const AwsClientGatedLive = Layer.effect(AwsClient, Effect.gen(function* () {
37
+ const inner = yield* InnerAwsClient;
38
+ const permService = yield* PermissionService;
39
+ const gateService = yield* PermissionGate;
40
+ const auditLog = yield* AuditLogRepo;
41
+ // --- Core gate logic (captured services, no R leakage) ---
42
+ // Reads auditEnabled dynamically from Ref on each call —
43
+ // toggling audit in settings takes effect without restart
44
+ const logAudit = (params, permissionState, durationMs) => permService.isAuditEnabled().pipe(Effect.flatMap((enabled) => enabled
45
+ ? auditLog.log({
46
+ timestamp: new Date().toISOString(),
47
+ operation: params.operation,
48
+ accountProfile: params.accountProfile,
49
+ region: params.region,
50
+ permissionState,
51
+ context: params.context,
52
+ durationMs
53
+ })
54
+ : Effect.void), Effect.catchAll(() => Effect.void));
55
+ const promptUser = (params) => Effect.gen(function* () {
56
+ const meta = getOperationMeta(params.operation);
57
+ const response = yield* gateService.request({
58
+ id: globalThis.crypto.randomUUID(),
59
+ operation: params.operation,
60
+ category: meta.category,
61
+ context: params.context
62
+ }).pipe(Effect.mapError(() => toDeniedError(params, "timeout")));
63
+ return yield* Match.value(response).pipe(Match.when("always_allow", () => permService.set(params.operation, "always_allow").pipe(Effect.as("always_allowed"))), Match.when("deny", () => Effect.gen(function* () {
64
+ yield* permService.set(params.operation, "deny");
65
+ yield* logAudit(params, "denied", null);
66
+ return yield* toDeniedError(params, "denied");
67
+ })), Match.when("allow_once", () => Effect.succeed("allowed")), Match.exhaustive);
68
+ });
69
+ const checkPermission = (params) => Effect.gen(function* () {
70
+ const state = yield* permService.check(params.operation);
71
+ return yield* Match.value(state).pipe(Match.when("always_allow", () => Effect.succeed("always_allowed")), Match.when("deny", () => logAudit(params, "denied", null).pipe(Effect.zipRight(toDeniedError(params, "denied")))), Match.when("allow", () => promptUser(params)), Match.exhaustive);
72
+ });
73
+ // --- Declarative wrapping: gated(op, ctx, acct, method) → wrapped method ---
74
+ // P inferred from `method` (last arg) — `acct` and `ctx` just extract strings
75
+ const gated = (op, ctx, acct, method) => (params) => {
76
+ const a = acct(params);
77
+ const g = { operation: op, context: ctx(params), accountProfile: a.profile, region: a.region };
78
+ return Effect.gen(function* () {
79
+ const ps = yield* checkPermission(g);
80
+ const start = Date.now();
81
+ const result = yield* method(params);
82
+ yield* logAudit(g, ps, Date.now() - start);
83
+ return result;
84
+ });
85
+ };
86
+ const gatedStream = (op, ctx, acct, method) => (params) => {
87
+ const a = acct(params);
88
+ const g = { operation: op, context: ctx(params), accountProfile: a.profile, region: a.region };
89
+ return Stream.unwrap(checkPermission(g).pipe(Effect.map((ps) => {
90
+ const start = Date.now();
91
+ return method(params).pipe(Stream.onDone(() => logAudit(g, ps, Date.now() - start)));
92
+ })));
93
+ };
94
+ const self = (a) => a;
95
+ const nested = (p) => p.account;
96
+ return {
97
+ getPullRequests: gatedStream("getPullRequests", (a) => `List PRs for ${a.profile}`, self, (a) => inner.getPullRequests(a)),
98
+ getCallerIdentity: gated("getCallerIdentity", (a) => `Get identity for ${a.profile}`, self, inner.getCallerIdentity),
99
+ createPullRequest: gated("createPullRequest", (p) => `Create PR on ${p.repositoryName}`, nested, inner.createPullRequest),
100
+ listBranches: gated("listBranches", (p) => `List branches in ${p.repositoryName}`, nested, inner.listBranches),
101
+ getCommentsForPullRequest: gated("getCommentsForPullRequest", (p) => `Comments for PR #${p.pullRequestId}`, nested, inner.getCommentsForPullRequest),
102
+ updatePullRequestTitle: gated("updatePullRequestTitle", (p) => `Edit title of PR #${p.pullRequestId}`, nested, inner.updatePullRequestTitle),
103
+ updatePullRequestDescription: gated("updatePullRequestDescription", (p) => `Edit desc of PR #${p.pullRequestId}`, nested, inner.updatePullRequestDescription),
104
+ getPullRequest: gated("getPullRequest", (p) => `Fetch PR #${p.pullRequestId}`, nested, inner.getPullRequest),
105
+ getDifferences: gated("getDifferences", (p) => `Diff for ${p.repositoryName}`, nested, inner.getDifferences),
106
+ createApprovalRule: gated("createApprovalRule", (p) => `Create rule "${p.approvalRuleName}" on PR #${p.pullRequestId}`, nested, inner.createApprovalRule),
107
+ updateApprovalRule: gated("updateApprovalRule", (p) => `Update rule "${p.approvalRuleName}" on PR #${p.pullRequestId}`, nested, inner.updateApprovalRule),
108
+ deleteApprovalRule: gated("deleteApprovalRule", (p) => `Delete rule "${p.approvalRuleName}" on PR #${p.pullRequestId}`, nested, inner.deleteApprovalRule)
109
+ };
110
+ }));
111
+ //# sourceMappingURL=AwsClientGated.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AwsClientGated.js","sourceRoot":"","sources":["../../src/AwsClient/AwsClientGated.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { Effect } from "effect";
2
+ import { type CreateApprovalRuleParams } from "./internal.js";
3
+ export declare const createApprovalRule: (params: CreateApprovalRuleParams) => Effect.Effect<void, import("./internal.js").AwsCredentialError | import("./internal.js").AwsApiError, import("../AwsClientConfig.ts").AwsClientConfig | import("@effect/platform/HttpClient").HttpClient>;
4
+ //# sourceMappingURL=createApprovalRule.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createApprovalRule.d.ts","sourceRoot":"","sources":["../../src/AwsClient/createApprovalRule.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC/B,OAAO,EAAE,KAAK,wBAAwB,EAAgC,MAAM,eAAe,CAAA;AAY3F,eAAO,MAAM,kBAAkB,GAAI,QAAQ,wBAAwB,8MACmB,CAAA"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Creates an approval rule on a pull request via
3
+ * `distilled-aws/codecommit.createPullRequestApprovalRule`, wrapped with
4
+ * {@link withAwsContext} for credential acquisition and retry.
5
+ *
6
+ * @internal
7
+ */
8
+ import * as codecommit from "distilled-aws/codecommit";
9
+ import { Effect } from "effect";
10
+ import { makeApiError, withAwsContext } from "./internal.js";
11
+ const callCreateApprovalRule = (params) => codecommit.createPullRequestApprovalRule({
12
+ pullRequestId: params.pullRequestId,
13
+ approvalRuleName: params.approvalRuleName,
14
+ approvalRuleContent: params.approvalRuleContent
15
+ }).pipe(Effect.asVoid, Effect.mapError((cause) => makeApiError("createApprovalRule", params.account.profile, params.account.region, cause)));
16
+ export const createApprovalRule = (params) => withAwsContext("createApprovalRule", params.account, callCreateApprovalRule(params));
17
+ //# sourceMappingURL=createApprovalRule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createApprovalRule.js","sourceRoot":"","sources":["../../src/AwsClient/createApprovalRule.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,UAAU,MAAM,0BAA0B,CAAA;AACtD,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC/B,OAAO,EAAiC,YAAY,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAE3F,MAAM,sBAAsB,GAAG,CAAC,MAAgC,EAAE,EAAE,CAClE,UAAU,CAAC,6BAA6B,CAAC;IACvC,aAAa,EAAE,MAAM,CAAC,aAAa;IACnC,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;IACzC,mBAAmB,EAAE,MAAM,CAAC,mBAAmB;CAChD,CAAC,CAAC,IAAI,CACL,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,YAAY,CAAC,oBAAoB,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CACrH,CAAA;AAEH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,MAAgC,EAAE,EAAE,CACrE,cAAc,CAAC,oBAAoB,EAAE,MAAM,CAAC,OAAO,EAAE,sBAAsB,CAAC,MAAM,CAAC,CAAC,CAAA"}
@@ -0,0 +1,4 @@
1
+ import { Effect } from "effect";
2
+ import { type DeleteApprovalRuleParams } from "./internal.js";
3
+ export declare const deleteApprovalRule: (params: DeleteApprovalRuleParams) => Effect.Effect<void, import("./internal.js").AwsCredentialError | import("./internal.js").AwsApiError, import("../AwsClientConfig.ts").AwsClientConfig | import("@effect/platform/HttpClient").HttpClient>;
4
+ //# sourceMappingURL=deleteApprovalRule.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deleteApprovalRule.d.ts","sourceRoot":"","sources":["../../src/AwsClient/deleteApprovalRule.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC/B,OAAO,EAAE,KAAK,wBAAwB,EAAgC,MAAM,eAAe,CAAA;AAW3F,eAAO,MAAM,kBAAkB,GAAI,QAAQ,wBAAwB,8MACmB,CAAA"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Deletes an approval rule from a pull request via
3
+ * `distilled-aws/codecommit.deletePullRequestApprovalRule`, wrapped with
4
+ * {@link withAwsContext} for credential acquisition and retry.
5
+ *
6
+ * @internal
7
+ */
8
+ import * as codecommit from "distilled-aws/codecommit";
9
+ import { Effect } from "effect";
10
+ import { makeApiError, withAwsContext } from "./internal.js";
11
+ const callDeleteApprovalRule = (params) => codecommit.deletePullRequestApprovalRule({
12
+ pullRequestId: params.pullRequestId,
13
+ approvalRuleName: params.approvalRuleName
14
+ }).pipe(Effect.asVoid, Effect.mapError((cause) => makeApiError("deleteApprovalRule", params.account.profile, params.account.region, cause)));
15
+ export const deleteApprovalRule = (params) => withAwsContext("deleteApprovalRule", params.account, callDeleteApprovalRule(params));
16
+ //# sourceMappingURL=deleteApprovalRule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deleteApprovalRule.js","sourceRoot":"","sources":["../../src/AwsClient/deleteApprovalRule.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,UAAU,MAAM,0BAA0B,CAAA;AACtD,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC/B,OAAO,EAAiC,YAAY,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAE3F,MAAM,sBAAsB,GAAG,CAAC,MAAgC,EAAE,EAAE,CAClE,UAAU,CAAC,6BAA6B,CAAC;IACvC,aAAa,EAAE,MAAM,CAAC,aAAa;IACnC,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;CAC1C,CAAC,CAAC,IAAI,CACL,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,YAAY,CAAC,oBAAoB,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CACrH,CAAA;AAEH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,MAAgC,EAAE,EAAE,CACrE,cAAc,CAAC,oBAAoB,EAAE,MAAM,CAAC,OAAO,EAAE,sBAAsB,CAAC,MAAM,CAAC,CAAC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"getPullRequest.d.ts","sourceRoot":"","sources":["../../src/AwsClient/getPullRequest.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAU,MAAM,QAAQ,CAAA;AACvC,OAAO,EACL,KAAK,oBAAoB,EAGzB,iBAAiB,EAElB,MAAM,eAAe,CAAA;AA+FtB,eAAO,MAAM,cAAc,GAAI,QAAQ,oBAAoB,2NACmB,CAAA"}
1
+ {"version":3,"file":"getPullRequest.d.ts","sourceRoot":"","sources":["../../src/AwsClient/getPullRequest.ts"],"names":[],"mappings":"AA0BA,OAAO,EAAE,MAAM,EAAU,MAAM,QAAQ,CAAA;AAEvC,OAAO,EACL,KAAK,oBAAoB,EAGzB,iBAAiB,EAElB,MAAM,eAAe,CAAA;AA4FtB,eAAO,MAAM,cAAc,GAAI,QAAQ,oBAAoB,2NACmB,CAAA"}
@@ -1,8 +1,31 @@
1
1
  /**
2
+ * Fetches a single PR's full detail — metadata, approvers, approval rules,
3
+ * and repo account ID in parallel. Returns a {@link PullRequestDetail}
4
+ * transport object.
5
+ *
6
+ * **Mental model**
7
+ *
8
+ * ```
9
+ * codecommit.getPullRequest ─┬─► decodePullRequestDetail
10
+ * ├─► fetchApprovers → { names, arns }
11
+ * ├─► fetchApprovalEvaluation → satisfiedNames
12
+ * └─► fetchRepoAccountId → repo account ID
13
+ * ```
14
+ *
15
+ * - Shared: {@link buildApprovalRules}, {@link fetchApprovalEvaluation},
16
+ * {@link fetchRepoAccountId} from getPullRequests.ts
17
+ * - Runs inside {@link withAwsContext} (Credentials + Region + AwsClientConfig)
18
+ *
19
+ * **Gotchas**
20
+ *
21
+ * - `PullRequestDetail.approvalRules` uses inline struct, not Schema.Class —
22
+ * class constructors reject plain objects from `buildApprovalRules`
23
+ *
2
24
  * @internal
3
25
  */
4
26
  import * as codecommit from "distilled-aws/codecommit";
5
27
  import { Effect, Schema } from "effect";
28
+ import { buildApprovalRules, fetchApprovalEvaluation, fetchApprovers, fetchRepoAccountId } from "./getPullRequests.js";
6
29
  import { makeApiError, normalizeAuthor, PullRequestDetail, withAwsContext } from "./internal.js";
7
30
  const EpochFallback = new Date(0);
8
31
  // Bidirectional Schema: raw AWS GetPullRequest response ↔ PullRequestDetail
@@ -63,19 +86,23 @@ const RawToPullRequestDetail = Schema.transform(RawGetPullRequestResponse, PullR
63
86
  });
64
87
  // Effectful decode — ParseError in error channel instead of thrown defect
65
88
  const decodePullRequestDetail = (raw) => Schema.decodeUnknown(RawToPullRequestDetail)(raw);
66
- const fetchApprovers = (pullRequestId, revisionId) => codecommit.getPullRequestApprovalStates({ pullRequestId, revisionId }).pipe(Effect.map((r) => (r.approvals ?? [])
67
- .filter((a) => a.approvalState === "APPROVE" && a.userArn)
68
- .map((a) => normalizeAuthor(a.userArn))), Effect.catchAll(() => Effect.succeed([])));
69
89
  const callGetPullRequest = (params) => Effect.gen(function* () {
70
90
  const resp = yield* codecommit.getPullRequest({ pullRequestId: params.pullRequestId });
71
91
  const revisionId = resp.pullRequest?.revisionId ?? "";
72
- const [detail, approvers] = yield* Effect.all([
92
+ const repoName = resp.pullRequest?.pullRequestTargets?.[0]?.repositoryName ?? "";
93
+ const [detail, approvers, evaluation, repoAccountId] = yield* Effect.all([
73
94
  decodePullRequestDetail(resp),
74
- fetchApprovers(params.pullRequestId, revisionId)
75
- ], { concurrency: 2 });
95
+ fetchApprovers(params.pullRequestId, revisionId),
96
+ fetchApprovalEvaluation(params.pullRequestId, revisionId),
97
+ fetchRepoAccountId(repoName)
98
+ ], { concurrency: 4 });
99
+ const approvalRules = buildApprovalRules(resp.pullRequest?.approvalRules ?? [], evaluation.satisfiedNames);
76
100
  return new PullRequestDetail({
77
101
  ...detail,
78
- approvedBy: approvers
102
+ approvedBy: approvers.names,
103
+ approvedByArns: approvers.arns,
104
+ approvalRules,
105
+ repoAccountId: repoAccountId || undefined
79
106
  });
80
107
  }).pipe(Effect.mapError((cause) => makeApiError("getPullRequest", params.account.profile, params.account.region, cause)));
81
108
  export const getPullRequest = (params) => withAwsContext("getPullRequest", params.account, callGetPullRequest(params));
@@ -1 +1 @@
1
- {"version":3,"file":"getPullRequest.js","sourceRoot":"","sources":["../../src/AwsClient/getPullRequest.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"getPullRequest.js","sourceRoot":"","sources":["../../src/AwsClient/getPullRequest.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,92 @@
1
1
  /**
2
+ * Bulk PR fetch — streams all open PRs across repos for one account.
3
+ *
4
+ * Lists all repositories, discovers PR IDs per repo, then fetches full
5
+ * details (approval rules, evaluation state, merge conflicts, approvers,
6
+ * repo account ID) per PR and decodes into {@link PullRequest} domain objects.
7
+ *
8
+ * **Mental model**
9
+ *
10
+ * ```
11
+ * listRepos → listPRIds → fetchPRDetails → getRepoAccount → decodePullRequest
12
+ * │ │
13
+ * evaluateApprovalRules getRepository
14
+ * getPullRequest (cached per repo)
15
+ * getApprovalStates
16
+ * ```
17
+ *
18
+ * - Two API responses merged per PR: `getPullRequest.approvalRules` (rule defs)
19
+ * + `evaluateApprovalRules` (satisfied names). Cross-ref via {@link buildApprovalRules}.
20
+ * - {@link parseRuleContent}: AWS JSON `{Version, Statements[{ApprovalPoolMembers}]}`
21
+ * → `poolMembers` (normalized) + `poolMemberArns` (raw ARNs).
22
+ * - {@link fetchRepoAccountId}: `getRepository` once per repo (cached). Needed for
23
+ * cross-account SSO where `getCallerIdentity` ≠ CodeCommit account.
24
+ *
25
+ * **Gotchas**
26
+ *
27
+ * - `evaluateApprovalRules.approvalRulesSatisfied` is `string[]` of rule NAMES, not full objects
28
+ * - `parseRuleContent` falls back silently on malformed JSON (warns if content truthy)
29
+ * - `fetchApprovalEvaluation` uses `throttleRetry` — needs `AwsClientConfig` in context
30
+ *
2
31
  * @internal
3
32
  */
4
33
  import { HttpClient } from "@effect/platform";
5
- import { Stream } from "effect";
34
+ import { Credentials, Region } from "distilled-aws";
35
+ import { Effect, Stream } from "effect";
6
36
  import { AwsClientConfig } from "../AwsClientConfig.js";
7
37
  import { PullRequest } from "../Domain.js";
8
38
  import type { AwsClientError } from "../Errors.js";
9
39
  import { type AccountParams } from "./internal.js";
40
+ /**
41
+ * Parse AWS approval rule content JSON into pool members + required count.
42
+ * Format: {"Version":"2018-11-08","Statements":[{"Type":"Approvers","NumberOfApprovalsNeeded":N,"ApprovalPoolMembers":["arn:..."]}]}
43
+ */
44
+ export declare const parseRuleContent: (content?: string) => {
45
+ requiredApprovals: number;
46
+ poolMembers: Array<string>;
47
+ poolMemberArns: Array<string>;
48
+ };
49
+ /**
50
+ * Evaluate which approval rules are satisfied/not, returning just the boolean + satisfied rule names.
51
+ */
52
+ export declare const fetchApprovalEvaluation: (pullRequestId: string, revisionId: string) => Effect.Effect<{
53
+ isApproved: boolean;
54
+ satisfiedNames: Set<string>;
55
+ } | {
56
+ isApproved: boolean;
57
+ satisfiedNames: Set<string>;
58
+ }, never, AwsClientConfig | HttpClient.HttpClient | Region.Region | Credentials.Credentials>;
59
+ /** Plain data shape matching ApprovalRule — avoids Schema.Class branding. */
60
+ export interface ApprovalRuleData {
61
+ readonly ruleName: string;
62
+ readonly satisfied: boolean;
63
+ readonly requiredApprovals: number;
64
+ readonly poolMembers: Array<string>;
65
+ readonly poolMemberArns: Array<string>;
66
+ readonly fromTemplate?: string;
67
+ }
68
+ /**
69
+ * Build ApprovalRule data from getPullRequest's raw rules + evaluation satisfaction state.
70
+ * Filters out rules with empty names (phantom rules from missing AWS data).
71
+ */
72
+ export declare const buildApprovalRules: (rawRules: ReadonlyArray<{
73
+ approvalRuleName?: string;
74
+ approvalRuleContent?: string;
75
+ originApprovalRuleTemplate?: {
76
+ approvalRuleTemplateName?: string;
77
+ };
78
+ }>, satisfiedNames: Set<string>) => Array<ApprovalRuleData>;
79
+ /**
80
+ * Fetch who approved a PR (ARN list of approvers with APPROVE state).
81
+ */
82
+ export declare const fetchApprovers: (pullRequestId: string, revisionId: string) => Effect.Effect<{
83
+ names: string[];
84
+ arns: string[];
85
+ } | {
86
+ names: Array<string>;
87
+ arns: Array<string>;
88
+ }, never, AwsClientConfig | HttpClient.HttpClient | Region.Region | Credentials.Credentials>;
89
+ export declare const fetchRepoAccountId: (repoName: string) => Effect.Effect<string, never, HttpClient.HttpClient | Region.Region | Credentials.Credentials>;
10
90
  export declare const getPullRequests: (account: AccountParams, options?: {
11
91
  status?: "OPEN" | "CLOSED";
12
92
  }) => Stream.Stream<PullRequest, AwsClientError, AwsClientConfig | HttpClient.HttpClient>;
@@ -1 +1 @@
1
- {"version":3,"file":"getPullRequests.d.ts","sourceRoot":"","sources":["../../src/AwsClient/getPullRequests.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAG7C,OAAO,EAAwB,MAAM,EAAE,MAAM,QAAQ,CAAA;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AACvD,OAAO,EAA4D,WAAW,EAAE,MAAM,cAAc,CAAA;AACpG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAClD,OAAO,EAAE,KAAK,aAAa,EAAoE,MAAM,eAAe,CAAA;AAqLpH,eAAO,MAAM,eAAe,GAC1B,SAAS,aAAa,EACtB,UAAU;IAAE,MAAM,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAA;CAAE,KACvC,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,cAAc,EAAE,eAAe,GAAG,UAAU,CAAC,UAAU,CA2BlF,CAAA"}
1
+ {"version":3,"file":"getPullRequests.d.ts","sourceRoot":"","sources":["../../src/AwsClient/getPullRequests.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AAEnD,OAAO,EAAQ,MAAM,EAAU,MAAM,EAAE,MAAM,QAAQ,CAAA;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AACvD,OAAO,EAA0E,WAAW,EAAE,MAAM,cAAc,CAAA;AAClH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAClD,OAAO,EAAE,KAAK,aAAa,EAAoE,MAAM,eAAe,CAAA;AAcpH;;;GAGG;AACH,eAAO,MAAM,gBAAgB,GAC3B,UAAU,MAAM,KACf;IAAE,iBAAiB,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAAC,cAAc,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;CAgBxF,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,uBAAuB,GAAI,eAAe,MAAM,EAAE,YAAY,MAAM;;;;;;4FAU9E,CAAA;AAEH,6EAA6E;AAC7E,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAA;IAC3B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAA;IAClC,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;IACnC,QAAQ,CAAC,cAAc,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;IACtC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAC/B;AAED;;;GAGG;AACH,eAAO,MAAM,kBAAkB,GAC7B,UAAU,aAAa,CACrB;IACE,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,0BAA0B,CAAC,EAAE;QAAE,wBAAwB,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CACnE,CACF,EACD,gBAAgB,GAAG,CAAC,MAAM,CAAC,KAC1B,KAAK,CAAC,gBAAgB,CAUlB,CAAA;AA8BP;;GAEG;AACH,eAAO,MAAM,cAAc,GAAI,eAAe,MAAM,EAAE,YAAY,MAAM;;;;WAYhB,KAAK,CAAC,MAAM,CAAC;UAAc,KAAK,CAAC,MAAM,CAAC;4FAC7F,CAAA;AA2HH,eAAO,MAAM,kBAAkB,GAAI,UAAU,MAAM,kGAKhD,CAAA;AAYH,eAAO,MAAM,eAAe,GAC1B,SAAS,aAAa,EACtB,UAAU;IAAE,MAAM,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAA;CAAE,KACvC,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,cAAc,EAAE,eAAe,GAAG,UAAU,CAAC,UAAU,CA6ClF,CAAA"}