@knpkv/codecommit-web 0.9.1 → 0.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client/assets/geist-cyrillic-ext-wght-normal-DjL33-gN.woff2 +0 -0
- package/dist/client/assets/geist-cyrillic-wght-normal-BEAKL7Jp.woff2 +0 -0
- package/dist/client/assets/geist-latin-ext-wght-normal-DC-KSUi6.woff2 +0 -0
- package/dist/client/assets/geist-latin-wght-normal-BgDaEnEv.woff2 +0 -0
- package/dist/client/assets/geist-mono-cyrillic-ext-wght-normal-I4S5GZfc.woff2 +0 -0
- package/dist/client/assets/geist-mono-cyrillic-wght-normal-BmXc_FBt.woff2 +0 -0
- package/dist/client/assets/geist-mono-latin-ext-wght-normal-DrnZ1wKl.woff2 +0 -0
- package/dist/client/assets/geist-mono-latin-wght-normal-B_7UjwxQ.woff2 +0 -0
- package/dist/client/assets/geist-mono-symbols2-wght-normal-GZpp1pK2.woff2 +0 -0
- package/dist/client/assets/geist-mono-vietnamese-wght-normal-D8KDMBhC.woff2 +0 -0
- package/dist/client/assets/geist-vietnamese-wght-normal-6IgcOCM7.woff2 +0 -0
- package/dist/client/assets/index-Dv7jNWIj.js +90 -0
- package/dist/client/assets/index-olbvD6Ke.css +1 -0
- package/dist/client/index.html +2 -2
- package/dist/main.js +1 -1
- package/dist/main.js.map +1 -1
- package/dist/server/Api.d.ts +457 -468
- package/dist/server/Api.d.ts.map +1 -1
- package/dist/server/Api.js +218 -200
- package/dist/server/Api.js.map +1 -1
- package/dist/server/Server.d.ts +3 -3
- package/dist/server/Server.d.ts.map +1 -1
- package/dist/server/Server.js +25 -23
- package/dist/server/Server.js.map +1 -1
- package/dist/server/handlers/accounts-live.d.ts +1 -1
- package/dist/server/handlers/accounts-live.d.ts.map +1 -1
- package/dist/server/handlers/accounts-live.js +1 -1
- package/dist/server/handlers/accounts-live.js.map +1 -1
- package/dist/server/handlers/audit-live.d.ts +6 -1
- package/dist/server/handlers/audit-live.d.ts.map +1 -1
- package/dist/server/handlers/audit-live.js +13 -13
- package/dist/server/handlers/audit-live.js.map +1 -1
- package/dist/server/handlers/config-live.d.ts +2 -1
- package/dist/server/handlers/config-live.d.ts.map +1 -1
- package/dist/server/handlers/config-live.js +15 -14
- package/dist/server/handlers/config-live.js.map +1 -1
- package/dist/server/handlers/events-live.d.ts +17 -1
- package/dist/server/handlers/events-live.d.ts.map +1 -1
- package/dist/server/handlers/events-live.js +14 -13
- package/dist/server/handlers/events-live.js.map +1 -1
- package/dist/server/handlers/notifications-live.d.ts +12 -1
- package/dist/server/handlers/notifications-live.d.ts.map +1 -1
- package/dist/server/handlers/notifications-live.js +22 -14
- package/dist/server/handlers/notifications-live.js.map +1 -1
- package/dist/server/handlers/permissions-live.d.ts +7 -1
- package/dist/server/handlers/permissions-live.d.ts.map +1 -1
- package/dist/server/handlers/permissions-live.js +1 -1
- package/dist/server/handlers/permissions-live.js.map +1 -1
- package/dist/server/handlers/prs-live.d.ts +14 -1
- package/dist/server/handlers/prs-live.d.ts.map +1 -1
- package/dist/server/handlers/prs-live.js +23 -20
- package/dist/server/handlers/prs-live.js.map +1 -1
- package/dist/server/handlers/sandbox-live.d.ts +1 -1
- package/dist/server/handlers/sandbox-live.d.ts.map +1 -1
- package/dist/server/handlers/sandbox-live.js +5 -5
- package/dist/server/handlers/sandbox-live.js.map +1 -1
- package/dist/server/handlers/stats-live.d.ts +11 -1
- package/dist/server/handlers/stats-live.d.ts.map +1 -1
- package/dist/server/handlers/stats-live.js +7 -7
- package/dist/server/handlers/stats-live.js.map +1 -1
- package/dist/server/handlers/subscriptions-live.d.ts +1 -1
- package/dist/server/handlers/subscriptions-live.d.ts.map +1 -1
- package/dist/server/handlers/subscriptions-live.js +1 -1
- package/dist/server/handlers/subscriptions-live.js.map +1 -1
- package/package.json +26 -29
- package/dist/client/assets/geist-cyrillic-wght-normal-CHSlOQsW.woff2 +0 -0
- package/dist/client/assets/geist-latin-ext-wght-normal-DMtmJ5ZE.woff2 +0 -0
- package/dist/client/assets/geist-latin-wght-normal-Dm3htQBi.woff2 +0 -0
- package/dist/client/assets/geist-mono-cyrillic-wght-normal-BZdD_g9V.woff2 +0 -0
- package/dist/client/assets/geist-mono-latin-ext-wght-normal-b6lpi8_2.woff2 +0 -0
- package/dist/client/assets/geist-mono-latin-wght-normal-Cjtb1TV-.woff2 +0 -0
- package/dist/client/assets/index-DN8dAucd.js +0 -456
- package/dist/client/assets/index-DTVrh9Vx.css +0 -1
|
@@ -8,37 +8,42 @@
|
|
|
8
8
|
*
|
|
9
9
|
* @module
|
|
10
10
|
*/
|
|
11
|
-
import { Command, HttpApiBuilder } from "@effect/platform";
|
|
12
11
|
import { AwsClient, CacheService, PRService } from "@knpkv/codecommit-core";
|
|
13
|
-
import { Duration, Effect, SubscriptionRef } from "effect";
|
|
12
|
+
import { Duration, Effect, Semaphore, SubscriptionRef } from "effect";
|
|
13
|
+
import { HttpApiBuilder } from "effect/unstable/httpapi";
|
|
14
|
+
import { ChildProcess, ChildProcessSpawner } from "effect/unstable/process";
|
|
14
15
|
import { ApiError, CodeCommitApi } from "../Api.js";
|
|
15
16
|
const SSO_TIMEOUT = Duration.minutes(3);
|
|
17
|
+
const exitCode = (cmd) => Effect.flatMap(ChildProcessSpawner.ChildProcessSpawner, (spawner) => spawner.exitCode(cmd));
|
|
16
18
|
export const NotificationsLive = HttpApiBuilder.group(CodeCommitApi, "notifications", (handlers) => Effect.gen(function* () {
|
|
17
19
|
const prService = yield* PRService.PRService;
|
|
18
20
|
const awsClient = yield* AwsClient.AwsClient;
|
|
19
21
|
const notificationRepo = yield* CacheService.NotificationRepo;
|
|
20
|
-
const ssoSemaphore = yield*
|
|
22
|
+
const ssoSemaphore = yield* Semaphore.make(1);
|
|
21
23
|
return handlers
|
|
22
|
-
.handle("list", ({
|
|
23
|
-
limit:
|
|
24
|
-
...(
|
|
25
|
-
...(
|
|
26
|
-
...(
|
|
24
|
+
.handle("list", ({ query }) => notificationRepo.findAll({
|
|
25
|
+
limit: query.limit ?? 20,
|
|
26
|
+
...(query.cursor !== undefined ? { cursor: query.cursor } : {}),
|
|
27
|
+
...(query.filter !== undefined ? { filter: query.filter } : {}),
|
|
28
|
+
...(query.unreadOnly ? { unreadOnly: true } : {})
|
|
27
29
|
}).pipe(Effect.orDie))
|
|
28
30
|
.handle("count", () => notificationRepo.unreadCount().pipe(Effect.map((unread) => ({ unread })), Effect.orDie))
|
|
29
31
|
.handle("markRead", ({ payload }) => notificationRepo.markRead(payload.id).pipe(Effect.map(() => "ok"), Effect.orDie))
|
|
30
32
|
.handle("markUnread", ({ payload }) => notificationRepo.markUnread(payload.id).pipe(Effect.map(() => "ok"), Effect.orDie))
|
|
31
33
|
.handle("markAllRead", () => notificationRepo.markAllRead().pipe(Effect.map(() => "ok"), Effect.orDie))
|
|
32
34
|
.handle("ssoLogin", ({ payload }) => Effect.gen(function* () {
|
|
33
|
-
const cmd =
|
|
34
|
-
|
|
35
|
+
const cmd = ChildProcess.make("aws", ["sso", "login", "--profile", payload.profile], {
|
|
36
|
+
stdout: "inherit",
|
|
37
|
+
stderr: "inherit"
|
|
38
|
+
});
|
|
39
|
+
yield* Effect.forkDetach(ssoSemaphore.withPermits(1)(exitCode(cmd).pipe(Effect.timeout(SSO_TIMEOUT), Effect.tap(() => Effect.gen(function* () {
|
|
35
40
|
const state = yield* SubscriptionRef.get(prService.state);
|
|
36
41
|
const account = state.accounts.find((a) => a.profile === payload.profile);
|
|
37
42
|
const region = account?.region ?? "us-east-1";
|
|
38
43
|
const identity = yield* awsClient.getCallerIdentity({
|
|
39
44
|
profile: payload.profile,
|
|
40
45
|
region
|
|
41
|
-
}).pipe(Effect.
|
|
46
|
+
}).pipe(Effect.catchIf(() => true, () => Effect.succeed(undefined)));
|
|
42
47
|
if (identity) {
|
|
43
48
|
yield* SubscriptionRef.update(prService.state, (s) => ({
|
|
44
49
|
...s,
|
|
@@ -50,7 +55,7 @@ export const NotificationsLive = HttpApiBuilder.group(CodeCommitApi, "notificati
|
|
|
50
55
|
title: payload.profile,
|
|
51
56
|
message: `SSO login successful for ${payload.profile}`,
|
|
52
57
|
profile: payload.profile
|
|
53
|
-
})), Effect.tap(() => prService.refresh), Effect.
|
|
58
|
+
})), Effect.tap(() => prService.refresh), Effect.catchIf(() => true, (e) => Effect.logWarning("SSO login failed", e).pipe(Effect.andThen(notificationRepo.addSystem({
|
|
54
59
|
type: "error",
|
|
55
60
|
title: "SSO Login Failed",
|
|
56
61
|
message: "SSO login failed — check credentials",
|
|
@@ -59,8 +64,11 @@ export const NotificationsLive = HttpApiBuilder.group(CodeCommitApi, "notificati
|
|
|
59
64
|
return "ok";
|
|
60
65
|
}).pipe(Effect.mapError((e) => new ApiError({ message: String(e) || "Failed to start SSO login" }))))
|
|
61
66
|
.handle("ssoLogout", () => Effect.gen(function* () {
|
|
62
|
-
const cmd =
|
|
63
|
-
|
|
67
|
+
const cmd = ChildProcess.make("aws", ["sso", "logout"], {
|
|
68
|
+
stdout: "inherit",
|
|
69
|
+
stderr: "inherit"
|
|
70
|
+
});
|
|
71
|
+
yield* Effect.forkDetach(ssoSemaphore.withPermits(1)(exitCode(cmd).pipe(Effect.timeout(SSO_TIMEOUT), Effect.tap(() => SubscriptionRef.update(prService.state, ({ currentUser: _, ...rest }) => rest)), Effect.catchIf(() => true, (e) => Effect.logWarning("SSO logout failed", e).pipe(Effect.andThen(notificationRepo.addSystem({
|
|
64
72
|
type: "error",
|
|
65
73
|
title: "SSO Logout Failed",
|
|
66
74
|
message: "SSO logout failed"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notifications-live.js","sourceRoot":"","sources":["../../../src/server/handlers/notifications-live.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"notifications-live.js","sourceRoot":"","sources":["../../../src/server/handlers/notifications-live.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @title Permissions handler — respond to prompts, manage permission state
|
|
3
|
+
*
|
|
4
|
+
* @module
|
|
5
|
+
*/
|
|
1
6
|
import { PermissionService } from "@knpkv/codecommit-core";
|
|
2
|
-
|
|
7
|
+
import { PermissionGateLiveTag } from "@knpkv/codecommit-core/PermissionService/PermissionGateLive.js";
|
|
8
|
+
export declare const PermissionsLive: import("effect/Layer").Layer<import("effect/unstable/httpapi/HttpApiGroup").ApiGroup<"CodeCommitApi", "permissions">, never, PermissionService.PermissionService | PermissionGateLiveTag>;
|
|
3
9
|
//# sourceMappingURL=permissions-live.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"permissions-live.d.ts","sourceRoot":"","sources":["../../../src/server/handlers/permissions-live.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"permissions-live.d.ts","sourceRoot":"","sources":["../../../src/server/handlers/permissions-live.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,gEAAgE,CAAA;AAKtG,eAAO,MAAM,eAAe,2LA0C3B,CAAA"}
|
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
*
|
|
4
4
|
* @module
|
|
5
5
|
*/
|
|
6
|
-
import { HttpApiBuilder } from "@effect/platform";
|
|
7
6
|
import { PermissionService } from "@knpkv/codecommit-core";
|
|
8
7
|
import { PermissionGateLiveTag } from "@knpkv/codecommit-core/PermissionService/PermissionGateLive.js";
|
|
9
8
|
import { Effect } from "effect";
|
|
9
|
+
import { HttpApiBuilder } from "effect/unstable/httpapi";
|
|
10
10
|
import { ApiError, CodeCommitApi } from "../Api.js";
|
|
11
11
|
export const PermissionsLive = HttpApiBuilder.group(CodeCommitApi, "permissions", (handlers) => Effect.gen(function* () {
|
|
12
12
|
const permService = yield* PermissionService.PermissionService;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"permissions-live.js","sourceRoot":"","sources":["../../../src/server/handlers/permissions-live.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"permissions-live.js","sourceRoot":"","sources":["../../../src/server/handlers/permissions-live.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PR endpoint handlers — list, refresh, create, open, comments, approval rules.
|
|
3
|
+
*
|
|
4
|
+
* Handles PR CRUD (list, search, refresh, create, open in console via Granted),
|
|
5
|
+
* comments fetch, and approval rule management (create/update/delete).
|
|
6
|
+
* {@link buildApprovalRuleContent} constructs the AWS JSON format
|
|
7
|
+
* `{Version, Statements, ApprovalPoolMembers}`. {@link extractAwsMessage}
|
|
8
|
+
* drills into AwsApiError.cause.message for human-readable error text.
|
|
9
|
+
* Approval rule errors produce system notifications via tapError.
|
|
10
|
+
*
|
|
11
|
+
* @module
|
|
12
|
+
*/
|
|
1
13
|
import { AwsClient, CacheService, PRService } from "@knpkv/codecommit-core";
|
|
2
|
-
|
|
14
|
+
import { ChildProcessSpawner } from "effect/unstable/process";
|
|
15
|
+
export declare const PrsLive: import("effect/Layer").Layer<import("effect/unstable/httpapi/HttpApiGroup").ApiGroup<"CodeCommitApi", "prs">, never, AwsClient.AwsClient | CacheService.NotificationRepo | PRService.PRService | import("effect/unstable/http/HttpRouter").Request<"Requires", ChildProcessSpawner.ChildProcessSpawner> | import("effect/unstable/http/HttpRouter").Request<"Requires", unknown>>;
|
|
3
16
|
//# sourceMappingURL=prs-live.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prs-live.d.ts","sourceRoot":"","sources":["../../../src/server/handlers/prs-live.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"prs-live.d.ts","sourceRoot":"","sources":["../../../src/server/handlers/prs-live.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAI3E,OAAO,EAAgB,mBAAmB,EAAE,MAAM,yBAAyB,CAAA;AAyC3E,eAAO,MAAM,OAAO,mXAiIf,CAAA"}
|
|
@@ -10,17 +10,16 @@
|
|
|
10
10
|
*
|
|
11
11
|
* @module
|
|
12
12
|
*/
|
|
13
|
-
import { Command, HttpApiBuilder } from "@effect/platform";
|
|
14
13
|
import { AwsClient, CacheService, PRService } from "@knpkv/codecommit-core";
|
|
15
14
|
import { encodeCommentLocations } from "@knpkv/codecommit-core/Domain.js";
|
|
16
15
|
import { Chunk, Effect, Schema, Stream, SubscriptionRef } from "effect";
|
|
17
|
-
import {
|
|
16
|
+
import { HttpApiBuilder } from "effect/unstable/httpapi";
|
|
17
|
+
import { ChildProcess, ChildProcessSpawner } from "effect/unstable/process";
|
|
18
18
|
import { ApiError, CodeCommitApi } from "../Api.js";
|
|
19
19
|
const copyToClipboard = (text) => {
|
|
20
|
-
const
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
return Command.exitCode(Command.stdin(cmd, Stream.make(text).pipe(Stream.encodeText)));
|
|
20
|
+
const stdin = Stream.make(text).pipe(Stream.encodeText);
|
|
21
|
+
const copyWith = (cmd) => Effect.flatMap(ChildProcessSpawner.ChildProcessSpawner, (spawner) => spawner.exitCode(cmd));
|
|
22
|
+
return copyWith(ChildProcess.make("pbcopy", { stdin })).pipe(Effect.catchIf(() => true, () => copyWith(ChildProcess.make("xclip", ["-selection", "clipboard"], { stdin }))));
|
|
24
23
|
};
|
|
25
24
|
const extractAwsMessage = (e) => {
|
|
26
25
|
if (!e || typeof e !== "object")
|
|
@@ -57,16 +56,16 @@ export const PrsLive = HttpApiBuilder.group(CodeCommitApi, "prs", (handlers) =>
|
|
|
57
56
|
const notificationRepo = yield* CacheService.NotificationRepo;
|
|
58
57
|
return handlers
|
|
59
58
|
.handle("list", () => SubscriptionRef.get(prService.state).pipe(Effect.map((state) => Chunk.fromIterable(state.pullRequests))))
|
|
60
|
-
.handle("refresh", () => prService.refresh.pipe(Effect.
|
|
61
|
-
.handle("search", ({
|
|
62
|
-
const result = yield* prService.searchPullRequests(
|
|
63
|
-
limit:
|
|
64
|
-
offset:
|
|
59
|
+
.handle("refresh", () => prService.refresh.pipe(Effect.forkDetach, Effect.map(() => "ok")))
|
|
60
|
+
.handle("search", ({ query }) => Effect.gen(function* () {
|
|
61
|
+
const result = yield* prService.searchPullRequests(query.q, {
|
|
62
|
+
limit: query.limit ?? 20,
|
|
63
|
+
offset: query.offset ?? 0
|
|
65
64
|
});
|
|
66
|
-
const items = yield* Effect.forEach(result.items, (row) => Schema.
|
|
65
|
+
const items = yield* Effect.forEach(result.items, (row) => Schema.encodeEffect(CacheService.CachedPullRequest)(row));
|
|
67
66
|
return { items, total: result.total, hasMore: result.hasMore };
|
|
68
67
|
}).pipe(Effect.mapError((e) => new ApiError({ message: String(e) }))))
|
|
69
|
-
.handle("refreshSingle", ({
|
|
68
|
+
.handle("refreshSingle", ({ params }) => prService.refreshSinglePR(params.awsAccountId, params.prId).pipe(Effect.forkDetach, Effect.map(() => "ok")))
|
|
70
69
|
.handle("create", ({ payload }) => awsClient.createPullRequest({
|
|
71
70
|
account: { profile: payload.account.profile, region: payload.account.region },
|
|
72
71
|
repositoryName: payload.repositoryName,
|
|
@@ -75,16 +74,20 @@ export const PrsLive = HttpApiBuilder.group(CodeCommitApi, "prs", (handlers) =>
|
|
|
75
74
|
sourceReference: payload.sourceBranch,
|
|
76
75
|
destinationReference: payload.destinationBranch
|
|
77
76
|
}).pipe(Effect.mapError((e) => new ApiError({ message: e.message }))))
|
|
78
|
-
.handle("comments", ({
|
|
79
|
-
account: { profile:
|
|
80
|
-
pullRequestId:
|
|
81
|
-
repositoryName:
|
|
77
|
+
.handle("comments", ({ query }) => awsClient.getCommentsForPullRequest({
|
|
78
|
+
account: { profile: query.profile, region: query.region },
|
|
79
|
+
pullRequestId: query.pullRequestId,
|
|
80
|
+
repositoryName: query.repositoryName
|
|
82
81
|
}).pipe(Effect.map(encodeCommentLocations), Effect.mapError((e) => new ApiError({ message: e.message }))))
|
|
83
82
|
.handle("open", ({ payload }) => Effect.gen(function* () {
|
|
84
|
-
yield* copyToClipboard(payload.link).pipe(Effect.
|
|
83
|
+
yield* copyToClipboard(payload.link).pipe(Effect.catchIf(() => true, () => Effect.void));
|
|
85
84
|
// -c: console login, -d: open URL in default browser
|
|
86
|
-
const cmd =
|
|
87
|
-
|
|
85
|
+
const cmd = ChildProcess.make("assume", ["-cd", payload.link, payload.profile], {
|
|
86
|
+
stdout: "inherit",
|
|
87
|
+
stderr: "inherit",
|
|
88
|
+
env: { GRANTED_ALIAS_CONFIGURED: "true" }
|
|
89
|
+
});
|
|
90
|
+
yield* Effect.forkDetach(Effect.flatMap(ChildProcessSpawner.ChildProcessSpawner, (spawner) => spawner.exitCode(cmd)).pipe(Effect.catchIf(() => true, (e) => notificationRepo.addSystem({
|
|
88
91
|
type: "error",
|
|
89
92
|
title: "Assume Failed",
|
|
90
93
|
message: e instanceof Error ? e.message : String(e)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prs-live.js","sourceRoot":"","sources":["../../../src/server/handlers/prs-live.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"prs-live.js","sourceRoot":"","sources":["../../../src/server/handlers/prs-live.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,5 +2,5 @@ import { SandboxService } from "@knpkv/codecommit-core";
|
|
|
2
2
|
import type { SandboxRow } from "@knpkv/codecommit-core/CacheService.js";
|
|
3
3
|
import { type SandboxResponse } from "../Api.js";
|
|
4
4
|
export declare const encodeSandbox: (row: SandboxRow) => typeof SandboxResponse.Type;
|
|
5
|
-
export declare const SandboxLive: import("effect/Layer").Layer<import("
|
|
5
|
+
export declare const SandboxLive: import("effect/Layer").Layer<import("effect/unstable/httpapi/HttpApiGroup").ApiGroup<"CodeCommitApi", "sandbox">, never, SandboxService.SandboxService | import("effect/unstable/http/HttpRouter").Request<"Requires", import("effect/FileSystem").FileSystem> | import("effect/unstable/http/HttpRouter").Request<"Requires", import("effect/unstable/process/ChildProcessSpawner").ChildProcessSpawner>>;
|
|
6
6
|
//# sourceMappingURL=sandbox-live.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sandbox-live.d.ts","sourceRoot":"","sources":["../../../src/server/handlers/sandbox-live.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sandbox-live.d.ts","sourceRoot":"","sources":["../../../src/server/handlers/sandbox-live.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AACvD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wCAAwC,CAAA;AAIxE,OAAO,EAA2B,KAAK,eAAe,EAAE,MAAM,WAAW,CAAA;AAIzE,eAAO,MAAM,aAAa,GAAI,KAAK,UAAU,KAAG,OAAO,eAAe,CAAC,IAcrE,CAAA;AAEF,eAAO,MAAM,WAAW,4YAmCnB,CAAA"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { HttpApiBuilder } from "@effect/platform";
|
|
2
1
|
import { SandboxService } from "@knpkv/codecommit-core";
|
|
3
2
|
import { Effect } from "effect";
|
|
3
|
+
import { HttpApiBuilder } from "effect/unstable/httpapi";
|
|
4
4
|
import { ApiError, CodeCommitApi } from "../Api.js";
|
|
5
5
|
// Explicit field mapping — prevents leaking server-internal fields (e.g. workspacePath)
|
|
6
6
|
// if SandboxRow gains new fields. Do not replace with object spread.
|
|
@@ -24,9 +24,9 @@ export const SandboxLive = HttpApiBuilder.group(CodeCommitApi, "sandbox", (handl
|
|
|
24
24
|
return handlers
|
|
25
25
|
.handle("create", ({ payload }) => sandboxService.create(payload).pipe(Effect.map(encodeSandbox), Effect.mapError((e) => new ApiError({ message: e.message }))))
|
|
26
26
|
.handle("list", () => sandboxService.list().pipe(Effect.map((rows) => rows.map(encodeSandbox)), Effect.mapError((e) => new ApiError({ message: e.message }))))
|
|
27
|
-
.handle("get", ({
|
|
28
|
-
.handle("stop", ({
|
|
29
|
-
.handle("restart", ({
|
|
30
|
-
.handle("delete", ({
|
|
27
|
+
.handle("get", ({ params }) => sandboxService.get(params.sandboxId).pipe(Effect.map(encodeSandbox), Effect.mapError((e) => new ApiError({ message: e.message }))))
|
|
28
|
+
.handle("stop", ({ params }) => sandboxService.stop(params.sandboxId).pipe(Effect.map(() => "ok"), Effect.mapError((e) => new ApiError({ message: e.message }))))
|
|
29
|
+
.handle("restart", ({ params }) => sandboxService.restart(params.sandboxId).pipe(Effect.map(() => "ok"), Effect.mapError((e) => new ApiError({ message: e.message }))))
|
|
30
|
+
.handle("delete", ({ params }) => sandboxService.cleanup(params.sandboxId).pipe(Effect.map(() => "ok"), Effect.mapError((e) => new ApiError({ message: e.message }))));
|
|
31
31
|
}));
|
|
32
32
|
//# sourceMappingURL=sandbox-live.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sandbox-live.js","sourceRoot":"","sources":["../../../src/server/handlers/sandbox-live.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"sandbox-live.js","sourceRoot":"","sources":["../../../src/server/handlers/sandbox-live.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module StatsLive
|
|
3
|
+
*
|
|
4
|
+
* Mental model: HTTP handler group for the /stats API surface.
|
|
5
|
+
* Maps HttpApi endpoints to StatsService calls. The "get" handler is
|
|
6
|
+
* a synchronous query; the "sync" handler fires-and-forgets a background
|
|
7
|
+
* fiber via Effect.forkDetach for long-running historical re-sync.
|
|
8
|
+
*
|
|
9
|
+
* @category Server
|
|
10
|
+
*/
|
|
1
11
|
import { PRService } from "@knpkv/codecommit-core/PRService/index.js";
|
|
2
12
|
import { StatsService } from "@knpkv/codecommit-core/StatsService/index.js";
|
|
3
|
-
export declare const StatsLive: import("effect/Layer").Layer<import("
|
|
13
|
+
export declare const StatsLive: import("effect/Layer").Layer<import("effect/unstable/httpapi/HttpApiGroup").ApiGroup<"CodeCommitApi", "stats">, never, PRService | StatsService>;
|
|
4
14
|
//# sourceMappingURL=stats-live.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stats-live.d.ts","sourceRoot":"","sources":["../../../src/server/handlers/stats-live.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"stats-live.d.ts","sourceRoot":"","sources":["../../../src/server/handlers/stats-live.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,2CAA2C,CAAA;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,8CAA8C,CAAA;AAK3E,eAAO,MAAM,SAAS,kJAkCjB,CAAA"}
|
|
@@ -4,27 +4,27 @@
|
|
|
4
4
|
* Mental model: HTTP handler group for the /stats API surface.
|
|
5
5
|
* Maps HttpApi endpoints to StatsService calls. The "get" handler is
|
|
6
6
|
* a synchronous query; the "sync" handler fires-and-forgets a background
|
|
7
|
-
* fiber via Effect.
|
|
7
|
+
* fiber via Effect.forkDetach for long-running historical re-sync.
|
|
8
8
|
*
|
|
9
9
|
* @category Server
|
|
10
10
|
*/
|
|
11
|
-
import { HttpApiBuilder } from "@effect/platform";
|
|
12
11
|
import { PRService } from "@knpkv/codecommit-core/PRService/index.js";
|
|
13
12
|
import { StatsService } from "@knpkv/codecommit-core/StatsService/index.js";
|
|
14
13
|
import { Effect, Ref } from "effect";
|
|
14
|
+
import { HttpApiBuilder } from "effect/unstable/httpapi";
|
|
15
15
|
import { ApiError, CodeCommitApi } from "../Api.js";
|
|
16
16
|
export const StatsLive = HttpApiBuilder.group(CodeCommitApi, "stats", (handlers) => Effect.gen(function* () {
|
|
17
17
|
const statsService = yield* StatsService;
|
|
18
18
|
const prService = yield* PRService;
|
|
19
19
|
const syncing = yield* Ref.make(false);
|
|
20
20
|
return handlers
|
|
21
|
-
.handle("get", ({
|
|
22
|
-
repo:
|
|
23
|
-
author:
|
|
24
|
-
account:
|
|
21
|
+
.handle("get", ({ query }) => statsService.getWeeklyStats(query.week, {
|
|
22
|
+
repo: query.repo,
|
|
23
|
+
author: query.author,
|
|
24
|
+
account: query.account
|
|
25
25
|
}).pipe(Effect.mapError((e) => new ApiError({ message: String(e) }))))
|
|
26
26
|
.handle("sync", ({ payload }) => Ref.get(syncing).pipe(Effect.flatMap((inProgress) => inProgress
|
|
27
27
|
? Effect.succeed("sync already in progress")
|
|
28
|
-
: Ref.set(syncing, true).pipe(Effect.flatMap(() => Effect.
|
|
28
|
+
: Ref.set(syncing, true).pipe(Effect.flatMap(() => Effect.forkDetach(statsService.syncWeek(payload.week, prService.state).pipe(Effect.tap(() => Effect.logInfo(`Sync ${payload.week} complete`)), Effect.tapCause((cause) => Effect.logWarning(`Sync ${payload.week} failed`, cause)), Effect.ensuring(Ref.set(syncing, false)))).pipe(Effect.as("sync started"))))), Effect.mapError((e) => new ApiError({ message: String(e) }))));
|
|
29
29
|
}));
|
|
30
30
|
//# sourceMappingURL=stats-live.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stats-live.js","sourceRoot":"","sources":["../../../src/server/handlers/stats-live.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"stats-live.js","sourceRoot":"","sources":["../../../src/server/handlers/stats-live.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,2CAA2C,CAAA;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,8CAA8C,CAAA;AAC3E,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAA;AACpC,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AACxD,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AAEnD,MAAM,CAAC,MAAM,SAAS,GAAG,cAAc,CAAC,KAAK,CAAC,aAAa,EAAE,OAAO,EAAE,CAAC,QAAQ,EAAE,EAAE,CACjF,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,YAAY,CAAA;IACxC,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,SAAS,CAAA;IAClC,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAEtC,OAAO,QAAQ;SACZ,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAC3B,YAAY,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE;QACtC,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,OAAO,EAAE,KAAK,CAAC,OAAO;KACvB,CAAC,CAAC,IAAI,CACL,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,QAAQ,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAC7D,CAAC;SACH,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAC9B,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CACnB,MAAM,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE,CAC5B,UAAU;QACR,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,0BAA0B,CAAC;QAC5C,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,IAAI,CAC3B,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAClB,MAAM,CAAC,UAAU,CACf,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,IAAI,CACvD,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,OAAO,CAAC,IAAI,WAAW,CAAC,CAAC,EACjE,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,OAAO,CAAC,IAAI,SAAS,EAAE,KAAK,CAAC,CAAC,EACnF,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CACzC,CACF,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC,CAClC,CACF,CACJ,EACD,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,QAAQ,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAC7D,CAAC,CAAA;AACR,CAAC,CAAC,CAAC,CAAA"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { PRService } from "@knpkv/codecommit-core";
|
|
2
|
-
export declare const SubscriptionsLive: import("effect/Layer").Layer<import("
|
|
2
|
+
export declare const SubscriptionsLive: import("effect/Layer").Layer<import("effect/unstable/httpapi/HttpApiGroup").ApiGroup<"CodeCommitApi", "subscriptions">, never, PRService.PRService>;
|
|
3
3
|
//# sourceMappingURL=subscriptions-live.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subscriptions-live.d.ts","sourceRoot":"","sources":["../../../src/server/handlers/subscriptions-live.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"subscriptions-live.d.ts","sourceRoot":"","sources":["../../../src/server/handlers/subscriptions-live.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAKlD,eAAO,MAAM,iBAAiB,qJAoB7B,CAAA"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { HttpApiBuilder } from "@effect/platform";
|
|
2
1
|
import { PRService } from "@knpkv/codecommit-core";
|
|
3
2
|
import { Effect } from "effect";
|
|
3
|
+
import { HttpApiBuilder } from "effect/unstable/httpapi";
|
|
4
4
|
import { ApiError, CodeCommitApi } from "../Api.js";
|
|
5
5
|
export const SubscriptionsLive = HttpApiBuilder.group(CodeCommitApi, "subscriptions", (handlers) => Effect.gen(function* () {
|
|
6
6
|
const prService = yield* PRService.PRService;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subscriptions-live.js","sourceRoot":"","sources":["../../../src/server/handlers/subscriptions-live.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"subscriptions-live.js","sourceRoot":"","sources":["../../../src/server/handlers/subscriptions-live.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC/B,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AACxD,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AAEnD,MAAM,CAAC,MAAM,iBAAiB,GAAG,cAAc,CAAC,KAAK,CACnD,aAAa,EACb,eAAe,EACf,CAAC,QAAQ,EAAE,EAAE,CACX,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,SAAS,CAAC,SAAS,CAAA;IAE5C,OAAO,QAAQ;SACZ,MAAM,CAAC,WAAW,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CACnC,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC,IAAI,CACnE,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,EACtB,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,QAAQ,CAAC,EAAE,OAAO,EAAE,wBAAwB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CACvF,CAAC;SACH,MAAM,CAAC,aAAa,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CACrC,SAAS,CAAC,WAAW,CAAC,OAAO,CAAC,YAAY,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC,IAAI,CACrE,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,EACtB,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,QAAQ,CAAC,EAAE,OAAO,EAAE,wBAAwB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CACvF,CAAC;SACH,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,gBAAgB,EAAE,CAAC,CAAA;AACvD,CAAC,CAAC,CACL,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@knpkv/codecommit-web",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.11.0",
|
|
4
4
|
"description": "Web server and frontend for CodeCommit PR browser",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -11,44 +11,41 @@
|
|
|
11
11
|
"dist"
|
|
12
12
|
],
|
|
13
13
|
"dependencies": {
|
|
14
|
-
"@effect
|
|
15
|
-
"@effect
|
|
16
|
-
"@effect/
|
|
17
|
-
"@
|
|
18
|
-
"@
|
|
19
|
-
"@
|
|
20
|
-
"@
|
|
21
|
-
"@
|
|
22
|
-
"@formkit/auto-animate": "^0.8.2",
|
|
23
|
-
"@tailwindcss/typography": "^0.5.19",
|
|
24
|
-
"@tailwindcss/vite": "^4.1.18",
|
|
14
|
+
"@effect/atom-react": "4.0.0-beta.87",
|
|
15
|
+
"@effect/platform-bun": "4.0.0-beta.87",
|
|
16
|
+
"@effect/platform-node": "4.0.0-beta.87",
|
|
17
|
+
"@fontsource-variable/geist": "^5.2.9",
|
|
18
|
+
"@fontsource-variable/geist-mono": "^5.2.8",
|
|
19
|
+
"@formkit/auto-animate": "^0.9.0",
|
|
20
|
+
"@tailwindcss/typography": "^0.5.20",
|
|
21
|
+
"@tailwindcss/vite": "^4.3.1",
|
|
25
22
|
"class-variance-authority": "^0.7.1",
|
|
26
23
|
"clsx": "^2.1.1",
|
|
27
24
|
"cmdk": "^1.1.1",
|
|
28
|
-
"effect": "
|
|
29
|
-
"lucide-react": "^
|
|
30
|
-
"radix-ui": "^1.
|
|
31
|
-
"react": "^19.
|
|
32
|
-
"react-day-picker": "^
|
|
33
|
-
"react-dom": "^19.
|
|
25
|
+
"effect": "4.0.0-beta.87",
|
|
26
|
+
"lucide-react": "^1.21.0",
|
|
27
|
+
"radix-ui": "^1.6.0",
|
|
28
|
+
"react": "^19.2.7",
|
|
29
|
+
"react-day-picker": "^10.0.1",
|
|
30
|
+
"react-dom": "^19.2.7",
|
|
34
31
|
"react-markdown": "^10.1.0",
|
|
35
|
-
"react-router": "^
|
|
32
|
+
"react-router": "^8.0.1",
|
|
36
33
|
"rehype-sanitize": "^6.0.0",
|
|
37
34
|
"remark-gfm": "^4.0.1",
|
|
38
35
|
"sonner": "^2.0.7",
|
|
39
|
-
"tailwind-merge": "^3.
|
|
40
|
-
"tailwindcss": "^4.1
|
|
36
|
+
"tailwind-merge": "^3.6.0",
|
|
37
|
+
"tailwindcss": "^4.3.1",
|
|
41
38
|
"tw-animate-css": "^1.4.0",
|
|
42
|
-
"@knpkv/codecommit-core": "^0.
|
|
39
|
+
"@knpkv/codecommit-core": "^0.8.0"
|
|
43
40
|
},
|
|
44
41
|
"devDependencies": {
|
|
45
|
-
"@effect/vitest": "
|
|
46
|
-
"@types/react": "^19.
|
|
47
|
-
"@types/react-dom": "^19.
|
|
48
|
-
"@vitejs/plugin-react": "^
|
|
49
|
-
"typescript": "^
|
|
50
|
-
"vite": "^
|
|
51
|
-
"vitest": "
|
|
42
|
+
"@effect/vitest": "4.0.0-beta.87",
|
|
43
|
+
"@types/react": "^19.2.17",
|
|
44
|
+
"@types/react-dom": "^19.2.3",
|
|
45
|
+
"@vitejs/plugin-react": "^6.0.3",
|
|
46
|
+
"typescript": "^6.0.3",
|
|
47
|
+
"vite": "^8.1.0",
|
|
48
|
+
"vitest": "^4.1.9"
|
|
52
49
|
},
|
|
53
50
|
"scripts": {
|
|
54
51
|
"start": "bun run src/main.ts",
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|