@knpkv/codecommit-web 0.17.0 → 0.19.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/README.md +7 -4
- package/dist/server/Api.d.ts +421 -421
- package/dist/server/Server.d.ts +11 -7
- package/dist/server/Server.d.ts.map +1 -1
- package/dist/server/Server.js +27 -77
- package/dist/server/Server.js.map +1 -1
- package/dist/server/internal/OwnerSession.d.ts +18 -0
- package/dist/server/internal/OwnerSession.d.ts.map +1 -0
- package/dist/server/internal/OwnerSession.js +27 -0
- package/dist/server/internal/OwnerSession.js.map +1 -0
- package/dist/server/internal/PublicOrigin.d.ts +2 -5
- package/dist/server/internal/PublicOrigin.d.ts.map +1 -1
- package/dist/server/internal/PublicOrigin.js +4 -9
- package/dist/server/internal/PublicOrigin.js.map +1 -1
- package/dist/server/internal/StaticClient.d.ts +7 -0
- package/dist/server/internal/StaticClient.d.ts.map +1 -0
- package/dist/server/internal/StaticClient.js +8 -0
- package/dist/server/internal/StaticClient.js.map +1 -0
- package/dist/tooling/authenticated-dev-proxy.test.js +18 -24
- package/dist/tooling/authenticated-dev-proxy.test.js.map +1 -1
- package/package.json +6 -6
- package/dist/server/internal/OwnerSessionSecurity.d.ts +0 -57
- package/dist/server/internal/OwnerSessionSecurity.d.ts.map +0 -1
- package/dist/server/internal/OwnerSessionSecurity.js +0 -220
- package/dist/server/internal/OwnerSessionSecurity.js.map +0 -1
package/dist/server/Server.d.ts
CHANGED
|
@@ -1,15 +1,19 @@
|
|
|
1
|
+
import * as OwnerSession from "@knpkv/browser-pairing/owner-session";
|
|
1
2
|
import { Config, Deferred, Effect, Layer } from "effect";
|
|
2
3
|
import * as Stdio from "effect/Stdio";
|
|
3
|
-
|
|
4
|
-
export {
|
|
4
|
+
export { loopbackOrigin, requireLoopbackHostname } from "@knpkv/browser-pairing/owner-session";
|
|
5
|
+
export { makeOwnerSession } from "./internal/OwnerSession.js";
|
|
5
6
|
export interface CodeCommitServerOptions {
|
|
6
7
|
readonly hostname?: string;
|
|
7
8
|
readonly port: number;
|
|
8
|
-
|
|
9
|
-
readonly
|
|
9
|
+
/** The origin the printed URL uses; the bound server's own when omitted. */
|
|
10
|
+
readonly publicOrigin?: string;
|
|
11
|
+
/** Completed with the bootstrap URL once the server is listening. */
|
|
12
|
+
readonly ready?: Deferred.Deferred<string>;
|
|
13
|
+
readonly security: OwnerSession.OwnerSessionService;
|
|
10
14
|
}
|
|
11
|
-
export declare const makeServer: (options: CodeCommitServerOptions) => Layer.Layer<never, import("@knpkv/browser-pairing").BrowserPairingError | import("effect/http/HttpServerError").ServeError |
|
|
12
|
-
export declare const makeCodeCommitServer: (port: number, security:
|
|
15
|
+
export declare const makeServer: (options: CodeCommitServerOptions) => Layer.Layer<never, import("@knpkv/browser-pairing").BrowserPairingError | import("effect/http/HttpServerError").ServeError | OwnerSession.UnsafeLoopbackAddressError, import("@knpkv/codecommit-core/ChildEnv.js").HostEnvironment>;
|
|
16
|
+
export declare const makeCodeCommitServer: (port: number, security: OwnerSession.OwnerSessionService) => Layer.Layer<never, import("@knpkv/browser-pairing").BrowserPairingError | import("effect/http/HttpServerError").ServeError | OwnerSession.UnsafeLoopbackAddressError, import("@knpkv/codecommit-core/ChildEnv.js").HostEnvironment>;
|
|
13
17
|
export declare const Port: Config.Config<number>;
|
|
14
|
-
export declare const CodeCommitServerLive: Effect.Effect<never, import("@knpkv/browser-pairing").BrowserPairingError | import("effect/PlatformError").PlatformError | import("effect/http/HttpServerError").ServeError |
|
|
18
|
+
export declare const CodeCommitServerLive: Effect.Effect<never, import("@knpkv/browser-pairing").BrowserPairingError | import("@knpkv/browser-pairing").CredentialCookieError | import("effect/PlatformError").PlatformError | import("effect/http/HttpServerError").ServeError | OwnerSession.UnsafeLoopbackAddressError, import("effect/Crypto").Crypto | import("@knpkv/codecommit-core/ChildEnv.js").HostEnvironment | Stdio.Stdio>;
|
|
15
19
|
//# sourceMappingURL=Server.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Server.d.ts","sourceRoot":"","sources":["../../src/server/Server.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Server.d.ts","sourceRoot":"","sources":["../../src/server/Server.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,YAAY,MAAM,sCAAsC,CAAA;AAmBpE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAS,KAAK,EAAkC,MAAM,QAAQ,CAAA;AAI/F,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAuBrC,OAAO,EAAE,cAAc,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAA;AAC9F,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AAkN7D,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,4EAA4E;IAC5E,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAA;IAC9B,qEAAqE;IACrE,QAAQ,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;IAC1C,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC,mBAAmB,CAAA;CACpD;AAED,eAAO,MAAM,UAAU,YAAa,uBAAuB,wOA8B1D,CAAA;AAED,eAAO,MAAM,oBAAoB,SAAU,MAAM,YAAY,YAAY,CAAC,mBAAmB,wOAC7D,CAAA;AAEhC,eAAO,MAAM,IAAI,uBAAoD,CAAA;AAqBrE,eAAO,MAAM,oBAAoB,8XAmC/B,CAAA"}
|
package/dist/server/Server.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { BunFileSystem, BunHttpServer, BunServices } from "@effect/platform-bun";
|
|
2
|
+
import * as OwnerSession from "@knpkv/browser-pairing/owner-session";
|
|
2
3
|
import { AwsClient, AwsClientConfig, CacheService, ConfigService, PermissionService, PRService, ReadClient, ReviewClient, SandboxService, StatsService } from "@knpkv/codecommit-core";
|
|
3
4
|
import { AwsClientGatedLive, InnerAwsClient } from "@knpkv/codecommit-core/AwsClient/AwsClientGated.js";
|
|
4
5
|
import { AuditLogRepo } from "@knpkv/codecommit-core/PermissionService/AuditLog.js";
|
|
5
6
|
import { PermissionGateLiveLayer, PermissionGateLiveTag } from "@knpkv/codecommit-core/PermissionService/PermissionGateLive.js";
|
|
6
7
|
import { Config, Deferred, Effect, Fiber, Layer, Option, Predicate, Ref, Stream } from "effect";
|
|
7
|
-
import
|
|
8
|
-
import { Etag, FetchHttpClient, HttpPlatform, HttpRouter, HttpServerRequest, HttpServerResponse } from "effect/http";
|
|
8
|
+
import { Etag, FetchHttpClient, HttpPlatform, HttpRouter } from "effect/http";
|
|
9
9
|
import { HttpApiBuilder } from "effect/http-api";
|
|
10
10
|
import * as Path from "effect/Path";
|
|
11
11
|
import * as Stdio from "effect/Stdio";
|
|
@@ -14,69 +14,13 @@ import { CodeCommitApi } from "./Api.js";
|
|
|
14
14
|
import { AccountsLive, AuditLive, ConfigLive, EventsLive, NotificationsLive, PermissionsLive, PrsLive, SandboxLive, StatsLive, SubscriptionsLive } from "./handlers/index.js";
|
|
15
15
|
import { BackgroundScopeLive } from "./internal/BackgroundScope.js";
|
|
16
16
|
import { autoRefreshLayer, sandboxStartupLayer } from "./internal/BackgroundWorkers.js";
|
|
17
|
-
import {
|
|
17
|
+
import { makeOwnerSession, ownerSessionAuthLayer } from "./internal/OwnerSession.js";
|
|
18
18
|
import { InnerCodeCommitReadClient, makePermissionedReadClient } from "./internal/PermissionedReadClient.js";
|
|
19
|
-
import {
|
|
19
|
+
import { resolveCodeCommitPublicOriginForBind } from "./internal/PublicOrigin.js";
|
|
20
|
+
import { staticClient } from "./internal/StaticClient.js";
|
|
20
21
|
import { makeRelayFindingPublisher, RelayFindingPublisher } from "./review/RelayFindingPublisher.js";
|
|
21
|
-
export {
|
|
22
|
-
|
|
23
|
-
".html": "text/html",
|
|
24
|
-
".js": "application/javascript",
|
|
25
|
-
".css": "text/css",
|
|
26
|
-
".json": "application/json",
|
|
27
|
-
".png": "image/png",
|
|
28
|
-
".jpg": "image/jpeg",
|
|
29
|
-
".svg": "image/svg+xml",
|
|
30
|
-
".ico": "image/x-icon",
|
|
31
|
-
".wasm": "application/wasm",
|
|
32
|
-
".map": "application/json",
|
|
33
|
-
".woff2": "font/woff2",
|
|
34
|
-
".ttf": "font/ttf"
|
|
35
|
-
};
|
|
36
|
-
// Static file serving — async Effect FileSystem, no sync node:fs
|
|
37
|
-
const serveStatic = Effect.gen(function* () {
|
|
38
|
-
const req = yield* HttpServerRequest.HttpServerRequest;
|
|
39
|
-
const fileSystem = yield* FileSystem.FileSystem;
|
|
40
|
-
const path = yield* Path.Path;
|
|
41
|
-
const url = new URL(req.url, "http://localhost");
|
|
42
|
-
let filePath = decodeURIComponent(url.pathname);
|
|
43
|
-
// Remove leading slash
|
|
44
|
-
if (filePath.startsWith("/")) {
|
|
45
|
-
filePath = filePath.slice(1);
|
|
46
|
-
}
|
|
47
|
-
if (filePath === "") {
|
|
48
|
-
filePath = "index.html";
|
|
49
|
-
}
|
|
50
|
-
const __dirname = yield* path.fromFileUrl(new URL(".", import.meta.url));
|
|
51
|
-
const staticDir = path.resolve(__dirname, "../../dist/client");
|
|
52
|
-
const fullPath = path.resolve(staticDir, filePath);
|
|
53
|
-
// Path traversal guard — resolved path must stay within staticDir
|
|
54
|
-
if (!fullPath.startsWith(staticDir)) {
|
|
55
|
-
return HttpServerResponse.text("Forbidden", { status: 403 });
|
|
56
|
-
}
|
|
57
|
-
if (yield* fileSystem.exists(fullPath)) {
|
|
58
|
-
const stat = yield* fileSystem.stat(fullPath);
|
|
59
|
-
if (stat.type === "File") {
|
|
60
|
-
const content = yield* fileSystem.readFile(fullPath);
|
|
61
|
-
const ext = path.extname(fullPath);
|
|
62
|
-
const contentType = mimeTypes[ext] || "application/octet-stream";
|
|
63
|
-
return HttpServerResponse.uint8Array(content, {
|
|
64
|
-
status: 200,
|
|
65
|
-
headers: { "content-type": contentType }
|
|
66
|
-
});
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
// SPA Fallback
|
|
70
|
-
const index = path.join(staticDir, "index.html");
|
|
71
|
-
if (yield* fileSystem.exists(index)) {
|
|
72
|
-
const content = yield* fileSystem.readFile(index);
|
|
73
|
-
return HttpServerResponse.uint8Array(content, {
|
|
74
|
-
status: 200,
|
|
75
|
-
headers: { "content-type": "text/html" }
|
|
76
|
-
});
|
|
77
|
-
}
|
|
78
|
-
return HttpServerResponse.text("Not Found", { status: 404 });
|
|
79
|
-
});
|
|
22
|
+
export { loopbackOrigin, requireLoopbackHostname } from "@knpkv/browser-pairing/owner-session";
|
|
23
|
+
export { makeOwnerSession } from "./internal/OwnerSession.js";
|
|
80
24
|
// API handlers layer
|
|
81
25
|
const HandlersLive = Layer.mergeAll(PrsLive, ConfigLive, AccountsLive, EventsLive, NotificationsLive, SubscriptionsLive, SandboxLive, StatsLive, PermissionsLive, AuditLive).pipe(Layer.provideMerge(BackgroundScopeLive));
|
|
82
26
|
// Platform dependencies
|
|
@@ -127,8 +71,11 @@ const AuditPrune = Layer.effectDiscard(Effect.gen(function* () {
|
|
|
127
71
|
}));
|
|
128
72
|
// API router with handlers — AutoRefresh shares AllServicesLive with handlers
|
|
129
73
|
const ApiLive = Layer.mergeAll(HttpApiBuilder.layer(CodeCommitApi).pipe(Layer.provide(HandlersLive.pipe(Layer.provide(RelayFindingPublisherLive)))), autoRefreshLayer, AuditPrune, sandboxStartupLayer).pipe(Layer.provide(ownerSessionAuthLayer), Layer.provide(AllServicesLive), Layer.provide(FetchHttpClient.layer));
|
|
130
|
-
|
|
131
|
-
const StaticRouter =
|
|
74
|
+
/** The client `vite build` writes next to the compiled server. */
|
|
75
|
+
const StaticRouter = Layer.unwrap(Effect.gen(function* () {
|
|
76
|
+
const path = yield* Path.Path;
|
|
77
|
+
return staticClient(yield* path.fromFileUrl(new URL("../../dist/client", import.meta.url)));
|
|
78
|
+
}));
|
|
132
79
|
const AllowedOrigins = Config.String("ALLOWED_ORIGINS").pipe(Config.map((s) => s.split(",")), Config.withDefault(["http://localhost:3000", "http://127.0.0.1:3000"]));
|
|
133
80
|
// CORS layer via Effect Config — consistent with Port config
|
|
134
81
|
const CorsLive = Layer.unwrap(Effect.map(AllowedOrigins, (allowedOrigins) => HttpRouter.cors({
|
|
@@ -137,22 +84,24 @@ const CorsLive = Layer.unwrap(Effect.map(AllowedOrigins, (allowedOrigins) => Htt
|
|
|
137
84
|
allowedHeaders: ["Content-Type", "Authorization", "X-CSRF-Token"]
|
|
138
85
|
})));
|
|
139
86
|
// Combined routes with CORS — orDie for remaining service construction errors
|
|
140
|
-
const AllRoutes = Layer.mergeAll(ApiLive,
|
|
87
|
+
const AllRoutes = Layer.mergeAll(ApiLive, OwnerSession.BootstrapRouter, StaticRouter).pipe(Layer.provide(CorsLive), Layer.orDie);
|
|
141
88
|
// HttpPlatform + Etag — required by addHttpApi for OpenAPI/multipart support
|
|
142
89
|
const HttpPlatformLive = HttpPlatform.layer.pipe(Layer.provide(BunFileSystem.layer));
|
|
143
90
|
export const makeServer = (options) => {
|
|
144
91
|
const hostname = options.hostname ?? "127.0.0.1";
|
|
145
|
-
return Layer.unwrap(requireLoopbackHostname(hostname).pipe(
|
|
92
|
+
return Layer.unwrap(OwnerSession.requireLoopbackHostname(hostname).pipe(
|
|
93
|
+
// The printed URL carries the bootstrap code, so its origin must be the server or its dev proxy.
|
|
94
|
+
Effect.andThen(OwnerSession.resolvePublicOrigin(options.publicOrigin, options.security.authorityOrigin)), Effect.map((publicOrigin) => {
|
|
146
95
|
const server = HttpRouter.serve(AllRoutes, {
|
|
147
96
|
// Coordinate tokens include provider-valid repository names up to 100
|
|
148
97
|
// characters; keep one bounded segment for the review route.
|
|
149
98
|
routerConfig: { maxParamLength: coordinateRouterMaxParamLength }
|
|
150
99
|
}).pipe(
|
|
151
100
|
// idleTimeout: 0 disables idle detection — required for long-lived SSE connections
|
|
152
|
-
Layer.provide(BunHttpServer.layer({ hostname, port: options.port, idleTimeout: 0 })), Layer.provide(Etag.layer), Layer.provide(HttpPlatformLive), Layer.provide(Layer.succeed(
|
|
153
|
-
return server.pipe(Layer.tap(() =>
|
|
154
|
-
|
|
155
|
-
|
|
101
|
+
Layer.provide(BunHttpServer.layer({ hostname, port: options.port, idleTimeout: 0 })), Layer.provide(Etag.layer), Layer.provide(HttpPlatformLive), Layer.provide(Layer.succeed(OwnerSession.OwnerSession, options.security)));
|
|
102
|
+
return server.pipe(Layer.tap(() =>
|
|
103
|
+
// Minted only once the server is listening, so the printed code is one that can be spent.
|
|
104
|
+
options.security.mintBootstrapCode.pipe(Effect.map((code) => OwnerSession.bootstrapUrl(publicOrigin, code)), Effect.flatMap((url) => options.ready === undefined ? Effect.void : Deferred.succeed(options.ready, url)))));
|
|
156
105
|
})));
|
|
157
106
|
};
|
|
158
107
|
export const makeCodeCommitServer = (port, security) => makeServer({ port, security });
|
|
@@ -175,15 +124,16 @@ export const CodeCommitServerLive = Effect.gen(function* () {
|
|
|
175
124
|
const publicOriginOverride = yield* PublicOrigin.pipe(Effect.orDie);
|
|
176
125
|
return yield* Effect.forever(Effect.gen(function* () {
|
|
177
126
|
const p = yield* Ref.get(portRef);
|
|
178
|
-
const directOrigin =
|
|
127
|
+
const directOrigin = OwnerSession.loopbackOrigin("127.0.0.1", p);
|
|
179
128
|
// Rotate every authority-bearing secret on each bind attempt so a URL
|
|
180
129
|
// emitted for an occupied port cannot authenticate to a later retry.
|
|
181
|
-
const security = yield*
|
|
182
|
-
const
|
|
130
|
+
const security = yield* makeOwnerSession(directOrigin);
|
|
131
|
+
const publicOrigin = yield* resolveCodeCommitPublicOriginForBind(Option.getOrUndefined(publicOriginOverride), requestedPort, p);
|
|
183
132
|
const ready = yield* Deferred.make();
|
|
184
|
-
const serverFiber = yield* Layer.launch(makeServer({ port: p, ready, security })).pipe(Effect.forkChild({ startImmediately: true }));
|
|
185
|
-
|
|
186
|
-
yield* Effect.
|
|
133
|
+
const serverFiber = yield* Layer.launch(makeServer({ port: p, publicOrigin, ready, security })).pipe(Effect.forkChild({ startImmediately: true }));
|
|
134
|
+
// The server only ends this race by failing; until it is listening there is no link to print.
|
|
135
|
+
const bootstrapUrl = yield* Effect.raceFirst(Deferred.await(ready), Fiber.join(serverFiber).pipe(Effect.andThen(Effect.never)));
|
|
136
|
+
yield* Effect.logInfo(`Authenticated server ready at ${directOrigin}`);
|
|
187
137
|
yield* Stream.make(`Authenticated bootstrap URL: ${bootstrapUrl}\n`).pipe(Stream.run(stdio.stdout()));
|
|
188
138
|
return yield* Fiber.join(serverFiber);
|
|
189
139
|
}).pipe(updatePortOnConflict(portRef, retriesRef)));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Server.js","sourceRoot":"","sources":["../../src/server/Server.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Server.js","sourceRoot":"","sources":["../../src/server/Server.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CodeCommit web's Owner Session: the shared `@knpkv/browser-pairing/owner-session` policy, with
|
|
3
|
+
* writes.
|
|
4
|
+
*
|
|
5
|
+
* Requests are checked against the bound server's own origin. In development the Vite proxy rewrites
|
|
6
|
+
* Origin to the backend before forwarding (see `tooling/authenticated-dev-proxy.ts`), so the dev
|
|
7
|
+
* origin is only ever advertised, never accepted.
|
|
8
|
+
*
|
|
9
|
+
* @module
|
|
10
|
+
*/
|
|
11
|
+
import type { BrowserPairingError, CredentialCookieError } from "@knpkv/browser-pairing";
|
|
12
|
+
import * as OwnerSession from "@knpkv/browser-pairing/owner-session";
|
|
13
|
+
import { type Crypto, Effect, Layer } from "effect";
|
|
14
|
+
import { OwnerSessionAuth } from "../Api.js";
|
|
15
|
+
/** Build the session for a server bound at `authorityOrigin`. Rotate it on every bind attempt. */
|
|
16
|
+
export declare const makeOwnerSession: (authorityOrigin: string) => Effect.Effect<OwnerSession.OwnerSessionService, BrowserPairingError | CredentialCookieError | OwnerSession.UnsafeLoopbackAddressError, Crypto.Crypto>;
|
|
17
|
+
export declare const ownerSessionAuthLayer: Layer.Layer<OwnerSessionAuth, never, OwnerSession.OwnerSession>;
|
|
18
|
+
//# sourceMappingURL=OwnerSession.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OwnerSession.d.ts","sourceRoot":"","sources":["../../../src/server/internal/OwnerSession.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAA;AACxF,OAAO,KAAK,YAAY,MAAM,sCAAsC,CAAA;AACpE,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,EAAE,KAAK,EAAY,MAAM,QAAQ,CAAA;AAC7D,OAAO,EAAqB,gBAAgB,EAAwB,MAAM,WAAW,CAAA;AAErF,kGAAkG;AAClG,eAAO,MAAM,gBAAgB,oLAe5B,CAAA;AAED,eAAO,MAAM,qBAAqB,iEAgBjC,CAAA"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import * as OwnerSession from "@knpkv/browser-pairing/owner-session";
|
|
2
|
+
import { Effect, Layer, Redacted } from "effect";
|
|
3
|
+
import { ForbiddenApiError, OwnerSessionAuth, UnauthorizedApiError } from "../Api.js";
|
|
4
|
+
/** Build the session for a server bound at `authorityOrigin`. Rotate it on every bind attempt. */
|
|
5
|
+
export const makeOwnerSession = Effect.fn("CodeCommitWeb.makeOwnerSession")(function* (authorityOrigin) {
|
|
6
|
+
return yield* OwnerSession.make({
|
|
7
|
+
authorityOrigin,
|
|
8
|
+
browserOrigin: authorityOrigin,
|
|
9
|
+
cookieName: "cc_owner",
|
|
10
|
+
freshUrlHint: "restart codecommit web for a fresh URL",
|
|
11
|
+
product: "CodeCommit web",
|
|
12
|
+
writes: "csrf"
|
|
13
|
+
});
|
|
14
|
+
});
|
|
15
|
+
export const ownerSessionAuthLayer = Layer.effect(OwnerSessionAuth, Effect.gen(function* () {
|
|
16
|
+
const session = yield* OwnerSession.OwnerSession;
|
|
17
|
+
return OwnerSessionAuth.of({
|
|
18
|
+
ownerCookie: Effect.fn("CodeCommitWeb.ownerCookie")(function* (httpEffect, { credential }) {
|
|
19
|
+
yield* session.authorizeHttp(Redacted.value(credential)).pipe(Effect.catchTags({
|
|
20
|
+
OwnerSessionForbiddenError: ({ message }) => Effect.fail(new ForbiddenApiError({ message })),
|
|
21
|
+
OwnerSessionUnauthorizedError: ({ message }) => Effect.fail(new UnauthorizedApiError({ message }))
|
|
22
|
+
}));
|
|
23
|
+
return yield* httpEffect;
|
|
24
|
+
})
|
|
25
|
+
});
|
|
26
|
+
}));
|
|
27
|
+
//# sourceMappingURL=OwnerSession.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OwnerSession.js","sourceRoot":"","sources":["../../../src/server/internal/OwnerSession.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,YAAY,MAAM,sCAAsC,CAAA;AACpE,OAAO,EAAe,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAA;AAC7D,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAA;AAErF,kGAAkG;AAClG,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC,EAAE,CAAC,gCAAgC,CAAC,CACzE,QAAQ,CAAC,EAAC,eAAuB;IAK/B,OAAO,KAAK,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC;QAC9B,eAAe;QACf,aAAa,EAAE,eAAe;QAC9B,UAAU,EAAE,UAAU;QACtB,YAAY,EAAE,wCAAwC;QACtD,OAAO,EAAE,gBAAgB;QACzB,MAAM,EAAE,MAAM;KACf,CAAC,CAAA;AACJ,CAAC,CACF,CAAA;AAED,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,CAAC,MAAM,CAC/C,gBAAgB,EAChB,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,YAAY,CAAC,YAAY,CAAA;IAChD,OAAO,gBAAgB,CAAC,EAAE,CAAC;QACzB,WAAW,EAAE,MAAM,CAAC,EAAE,CAAC,2BAA2B,CAAC,CAAC,QAAQ,CAAC,EAAC,UAAU,EAAE,EAAE,UAAU,EAAE;YACtF,KAAK,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAC3D,MAAM,CAAC,SAAS,CAAC;gBACf,0BAA0B,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,iBAAiB,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;gBAC5F,6BAA6B,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,oBAAoB,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;aACnG,CAAC,CACH,CAAA;YACD,OAAO,KAAK,CAAC,CAAC,UAAU,CAAA;QAC1B,CAAC,CAAC;KACH,CAAC,CAAA;AACJ,CAAC,CAAC,CACH,CAAA"}
|
|
@@ -1,9 +1,6 @@
|
|
|
1
1
|
import { Effect } from "effect";
|
|
2
|
-
import { type OwnerSessionSecretsContract } from "./OwnerSessionSecurity.js";
|
|
3
2
|
/** Resolve the advertised origin for one concrete server bind attempt. */
|
|
4
|
-
export declare const resolveCodeCommitPublicOrigin: (configuredOrigin: string | undefined, port: number) => Effect.Effect<string, import("
|
|
5
|
-
/** Resolve the startup origin before constructing the token-bearing bootstrap URL. */
|
|
6
|
-
export declare const resolveCodeCommitBootstrapUrl: (configuredOrigin: string | undefined, port: number, secrets: OwnerSessionSecretsContract) => Effect.Effect<string, import("./OwnerSessionSecurity.js").UnsafeServerHostnameError, never>;
|
|
3
|
+
export declare const resolveCodeCommitPublicOrigin: (configuredOrigin: string | undefined, port: number) => Effect.Effect<string, import("@knpkv/browser-pairing/owner-session").UnsafeLoopbackAddressError, never>;
|
|
7
4
|
/** Keep a retrying backend off the stale Vite proxy port; advertise it directly. */
|
|
8
|
-
export declare const
|
|
5
|
+
export declare const resolveCodeCommitPublicOriginForBind: (configuredOrigin: string | undefined, requestedPort: number, actualPort: number) => Effect.Effect<string, import("@knpkv/browser-pairing/owner-session").UnsafeLoopbackAddressError, never>;
|
|
9
6
|
//# sourceMappingURL=PublicOrigin.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PublicOrigin.d.ts","sourceRoot":"","sources":["../../../src/server/internal/PublicOrigin.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"PublicOrigin.d.ts","sourceRoot":"","sources":["../../../src/server/internal/PublicOrigin.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAE/B,0EAA0E;AAC1E,eAAO,MAAM,6BAA6B,iKAIzC,CAAA;AAED,oFAAoF;AACpF,eAAO,MAAM,oCAAoC,8LAKhD,CAAA"}
|
|
@@ -1,17 +1,12 @@
|
|
|
1
|
+
import { loopbackOrigin, resolvePublicOrigin } from "@knpkv/browser-pairing/owner-session";
|
|
1
2
|
import { Effect } from "effect";
|
|
2
|
-
import { ownerSessionOrigin, ownerSessionUrlForOrigin, resolvePublicOrigin } from "./OwnerSessionSecurity.js";
|
|
3
3
|
/** Resolve the advertised origin for one concrete server bind attempt. */
|
|
4
4
|
export const resolveCodeCommitPublicOrigin = Effect.fn("CodeCommitServer.resolvePublicOrigin")(function* (configuredOrigin, port) {
|
|
5
|
-
return yield* resolvePublicOrigin(configuredOrigin,
|
|
6
|
-
});
|
|
7
|
-
/** Resolve the startup origin before constructing the token-bearing bootstrap URL. */
|
|
8
|
-
export const resolveCodeCommitBootstrapUrl = Effect.fn("CodeCommitServer.resolveBootstrapUrl")(function* (configuredOrigin, port, secrets) {
|
|
9
|
-
const publicOrigin = yield* resolveCodeCommitPublicOrigin(configuredOrigin, port);
|
|
10
|
-
return ownerSessionUrlForOrigin(publicOrigin, secrets);
|
|
5
|
+
return yield* resolvePublicOrigin(configuredOrigin, loopbackOrigin("127.0.0.1", port));
|
|
11
6
|
});
|
|
12
7
|
/** Keep a retrying backend off the stale Vite proxy port; advertise it directly. */
|
|
13
|
-
export const
|
|
8
|
+
export const resolveCodeCommitPublicOriginForBind = Effect.fn("CodeCommitServer.resolvePublicOriginForBind")(function* (configuredOrigin, requestedPort, actualPort) {
|
|
14
9
|
const originOverride = requestedPort === actualPort ? configuredOrigin : undefined;
|
|
15
|
-
return yield*
|
|
10
|
+
return yield* resolveCodeCommitPublicOrigin(originOverride, actualPort);
|
|
16
11
|
});
|
|
17
12
|
//# sourceMappingURL=PublicOrigin.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PublicOrigin.js","sourceRoot":"","sources":["../../../src/server/internal/PublicOrigin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"PublicOrigin.js","sourceRoot":"","sources":["../../../src/server/internal/PublicOrigin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAA;AAC1F,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAE/B,0EAA0E;AAC1E,MAAM,CAAC,MAAM,6BAA6B,GAAG,MAAM,CAAC,EAAE,CAAC,sCAAsC,CAAC,CAC5F,QAAQ,CAAC,EAAC,gBAAoC,EAAE,IAAY;IAC1D,OAAO,KAAK,CAAC,CAAC,mBAAmB,CAAC,gBAAgB,EAAE,cAAc,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,CAAA;AACxF,CAAC,CACF,CAAA;AAED,oFAAoF;AACpF,MAAM,CAAC,MAAM,oCAAoC,GAAG,MAAM,CAAC,EAAE,CAAC,6CAA6C,CAAC,CAC1G,QAAQ,CAAC,EAAC,gBAAoC,EAAE,aAAqB,EAAE,UAAkB;IACvF,MAAM,cAAc,GAAG,aAAa,KAAK,UAAU,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAA;IAClF,OAAO,KAAK,CAAC,CAAC,6BAA6B,CAAC,cAAc,EAAE,UAAU,CAAC,CAAA;AACzE,CAAC,CACF,CAAA"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Serves the built client at `root` for every non-API route. Extensionless HTML navigations fall back
|
|
3
|
+
* to `index.html`; `no-cache` makes the browser revalidate, so a rebuilt `index.html` never points at
|
|
4
|
+
* hashed assets that no longer exist.
|
|
5
|
+
*/
|
|
6
|
+
export declare const staticClient: (root: string) => import("effect/Layer").Layer<never, import("effect/PlatformError").PlatformError, import("effect/FileSystem").FileSystem | import("effect/http/HttpPlatform").HttpPlatform | import("effect/http/HttpRouter").HttpRouter | import("effect/Path").Path>;
|
|
7
|
+
//# sourceMappingURL=StaticClient.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StaticClient.d.ts","sourceRoot":"","sources":["../../../src/server/internal/StaticClient.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,eAAO,MAAM,YAAY,SAAU,MAAM,2PAA0E,CAAA"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { HttpStaticServer } from "effect/http";
|
|
2
|
+
/**
|
|
3
|
+
* Serves the built client at `root` for every non-API route. Extensionless HTML navigations fall back
|
|
4
|
+
* to `index.html`; `no-cache` makes the browser revalidate, so a rebuilt `index.html` never points at
|
|
5
|
+
* hashed assets that no longer exist.
|
|
6
|
+
*/
|
|
7
|
+
export const staticClient = (root) => HttpStaticServer.layer({ cacheControl: "no-cache", root, spa: true });
|
|
8
|
+
//# sourceMappingURL=StaticClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StaticClient.js","sourceRoot":"","sources":["../../../src/server/internal/StaticClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAE9C;;;;GAIG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,YAAY,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAA"}
|
|
@@ -1,10 +1,12 @@
|
|
|
1
|
+
import { NodeCrypto } from "@effect/platform-node";
|
|
1
2
|
import { describe, expect, it, vi } from "@effect/vitest";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
3
|
+
import { bootstrapUrl, loopbackOrigin } from "@knpkv/browser-pairing/owner-session";
|
|
4
|
+
import { PairingCode } from "@knpkv/browser-pairing/schema";
|
|
5
|
+
import { Effect, Redacted, Result, Schema } from "effect";
|
|
4
6
|
import { IncomingMessage, ServerResponse } from "node:http";
|
|
5
7
|
import { Socket } from "node:net";
|
|
6
8
|
import packageJson from "../../package.json" with { type: "json" };
|
|
7
|
-
import {
|
|
9
|
+
import { makeOwnerSession } from "../server/internal/OwnerSession.js";
|
|
8
10
|
import { authenticatedDevBackendOrigin, authenticatedDevProxyConfig, authenticatedDevProxyOriginDecision, authenticatedDevPublicOrigin, authenticatedDevPublicOriginEnvironment, authenticatedDevServerOptions, makeAuthenticatedDevProxyConfig, setAuthenticatedDevProxyOrigin } from "./authenticated-dev-proxy.js";
|
|
9
11
|
describe("authenticated development proxy", () => {
|
|
10
12
|
it("pins Vite to the advertised development port", () => {
|
|
@@ -76,23 +78,17 @@ describe("authenticated development proxy", () => {
|
|
|
76
78
|
expect(setHeader).toHaveBeenCalledTimes(2);
|
|
77
79
|
expect(setHeader).toHaveBeenCalledWith("origin", retryOrigin);
|
|
78
80
|
});
|
|
79
|
-
it.
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
};
|
|
89
|
-
|
|
90
|
-
authorization: `Bearer ${Redacted.value(secrets.bootstrapToken)}`,
|
|
91
|
-
host: "127.0.0.1:3000",
|
|
92
|
-
origin: authenticatedDevBackendOrigin
|
|
93
|
-
}, secrets));
|
|
94
|
-
expect(Result.isSuccess(result)).toBe(true);
|
|
95
|
-
}));
|
|
81
|
+
it.layer(NodeCrypto.layer)("owner session", (it) => {
|
|
82
|
+
it.effect("accepts a bootstrap request after the proxy origin rewrite", () => Effect.gen(function* () {
|
|
83
|
+
const session = yield* makeOwnerSession(loopbackOrigin("127.0.0.1", 3000));
|
|
84
|
+
const code = yield* session.mintBootstrapCode;
|
|
85
|
+
const result = yield* Effect.result(session.authorizeBootstrap({
|
|
86
|
+
authorization: `Bearer ${Redacted.value(code)}`,
|
|
87
|
+
origin: authenticatedDevBackendOrigin
|
|
88
|
+
}));
|
|
89
|
+
expect(Result.isSuccess(result)).toBe(true);
|
|
90
|
+
}));
|
|
91
|
+
});
|
|
96
92
|
it("advertises the token-bearing bootstrap URL on the Vite origin", () => {
|
|
97
93
|
expect(packageJson.scripts.dev).toContain(authenticatedDevPublicOriginEnvironment);
|
|
98
94
|
const predev = packageJson.scripts.predev;
|
|
@@ -102,14 +98,12 @@ describe("authenticated development proxy", () => {
|
|
|
102
98
|
expect(predev.endsWith("pnpm build")).toBe(true);
|
|
103
99
|
expect(predev.indexOf("@knpkv/browser-pairing")).toBeLessThan(predev.indexOf("@knpkv/relay-product..."));
|
|
104
100
|
expect(predev.indexOf("@knpkv/relay-product...")).toBeLessThan(predev.indexOf("@knpkv/review..."));
|
|
105
|
-
const url =
|
|
106
|
-
bootstrapToken: Redacted.make(Schema.decodeSync(PairingCode)("ab".repeat(32)))
|
|
107
|
-
});
|
|
101
|
+
const url = bootstrapUrl(authenticatedDevPublicOrigin, Redacted.make(Schema.decodeSync(PairingCode)("ab".repeat(32))));
|
|
108
102
|
expect(url).toBe(`http://localhost:5173/#bootstrap_token=${"ab".repeat(32)}`);
|
|
109
103
|
expect(url).not.toContain(authenticatedDevBackendOrigin);
|
|
110
104
|
});
|
|
111
105
|
it("keeps the configured backend authority separate from the advertised Vite origin", () => {
|
|
112
|
-
expect(
|
|
106
|
+
expect(loopbackOrigin("127.0.0.1", 3000)).toBe(authenticatedDevBackendOrigin);
|
|
113
107
|
expect(authenticatedDevPublicOrigin).not.toBe(authenticatedDevBackendOrigin);
|
|
114
108
|
expect(setAuthenticatedDevProxyOrigin).toBeTypeOf("function");
|
|
115
109
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authenticated-dev-proxy.test.js","sourceRoot":"","sources":["../../src/tooling/authenticated-dev-proxy.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAA;AACzD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"authenticated-dev-proxy.test.js","sourceRoot":"","sources":["../../src/tooling/authenticated-dev-proxy.test.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@knpkv/codecommit-web",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.19.0",
|
|
4
4
|
"description": "Web server and frontend for CodeCommit PR browser",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -37,13 +37,13 @@
|
|
|
37
37
|
"tailwind-merge": "^3.7.0",
|
|
38
38
|
"tailwindcss": "^4.3.3",
|
|
39
39
|
"tw-animate-css": "^1.4.0",
|
|
40
|
-
"@knpkv/ai-claude": "^0.4.
|
|
41
|
-
"@knpkv/ai-codex": "^0.5.
|
|
42
|
-
"@knpkv/
|
|
40
|
+
"@knpkv/ai-claude": "^0.4.1",
|
|
41
|
+
"@knpkv/ai-codex": "^0.5.1",
|
|
42
|
+
"@knpkv/browser-pairing": "^0.3.0",
|
|
43
43
|
"@knpkv/codecommit-core": "^0.17.0",
|
|
44
|
+
"@knpkv/relay-product": "^0.2.0",
|
|
44
45
|
"@knpkv/review": "^0.3.0",
|
|
45
|
-
"@knpkv/
|
|
46
|
-
"@knpkv/rly": "^0.6.0"
|
|
46
|
+
"@knpkv/rly": "^0.6.1"
|
|
47
47
|
},
|
|
48
48
|
"devDependencies": {
|
|
49
49
|
"@effect/vitest": "4.0.0",
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
import type { CsrfToken, PairingCode, SessionToken } from "@knpkv/browser-pairing/schema";
|
|
2
|
-
import { Context, Effect, Layer, Redacted, Ref, Schema } from "effect";
|
|
3
|
-
import { HttpRouter } from "effect/http";
|
|
4
|
-
import { ForbiddenApiError, OwnerSessionAuth, UnauthorizedApiError } from "../Api.js";
|
|
5
|
-
export interface OwnerSessionSecretsContract {
|
|
6
|
-
/** Validated server authority used for origin checks; request Host is never authoritative. */
|
|
7
|
-
readonly authorityOrigin: string;
|
|
8
|
-
readonly bootstrapAvailable: Ref.Ref<boolean>;
|
|
9
|
-
readonly bootstrapAttemptState: Ref.Ref<BootstrapAttemptState>;
|
|
10
|
-
readonly bootstrapExpiresAtMillis: Ref.Ref<number | undefined>;
|
|
11
|
-
readonly bootstrapToken: Redacted.Redacted<PairingCode>;
|
|
12
|
-
readonly csrfToken: Redacted.Redacted<CsrfToken>;
|
|
13
|
-
readonly ownerToken: Redacted.Redacted<SessionToken>;
|
|
14
|
-
}
|
|
15
|
-
export interface BootstrapAttemptState {
|
|
16
|
-
readonly failedAttempts: number;
|
|
17
|
-
readonly inFlight: number;
|
|
18
|
-
}
|
|
19
|
-
declare const OwnerSessionSecrets_base: Context.ServiceClass<OwnerSessionSecrets, "@knpkv/codecommit-web/OwnerSessionSecrets", OwnerSessionSecretsContract>;
|
|
20
|
-
export declare class OwnerSessionSecrets extends OwnerSessionSecrets_base {
|
|
21
|
-
}
|
|
22
|
-
declare const UnsafeServerHostnameError_base: Schema.Class<UnsafeServerHostnameError, Schema.TaggedStruct<"UnsafeServerHostnameError", {
|
|
23
|
-
readonly hostname: Schema.String;
|
|
24
|
-
readonly message: Schema.String;
|
|
25
|
-
}>, import("effect/Cause").YieldableError>;
|
|
26
|
-
export declare class UnsafeServerHostnameError extends UnsafeServerHostnameError_base {
|
|
27
|
-
}
|
|
28
|
-
export declare const isLoopbackHostname: (hostname: string) => boolean;
|
|
29
|
-
export declare const requireLoopbackHostname: (hostname: string) => Effect.Effect<string, UnsafeServerHostnameError, never>;
|
|
30
|
-
export declare const makeOwnerSessionSecrets: (authorityOrigin: string) => Effect.Effect<OwnerSessionSecretsContract, import("@knpkv/browser-pairing").BrowserPairingError | UnsafeServerHostnameError, import("effect/Crypto").Crypto>;
|
|
31
|
-
export declare const activateOwnerSessionBootstrap: (secrets: OwnerSessionSecretsContract) => Effect.Effect<void, import("@knpkv/browser-pairing").BrowserPairingError, never>;
|
|
32
|
-
export declare const ownerSessionOrigin: (hostname: string, port: number) => string;
|
|
33
|
-
export declare const ownerSessionUrl: (hostname: string, port: number, secrets: OwnerSessionSecretsContract) => string;
|
|
34
|
-
export declare const ownerSessionUrlForOrigin: (origin: string, secrets: Pick<OwnerSessionSecretsContract, "bootstrapToken">) => string;
|
|
35
|
-
export declare const requireLoopbackOrigin: (origin: string) => Effect.Effect<string, UnsafeServerHostnameError, never>;
|
|
36
|
-
/** Validate the advertised origin against either the bound server or the supported Vite proxy. */
|
|
37
|
-
export declare const requireSupportedPublicOrigin: (origin: string, authorityOrigin: string) => Effect.Effect<string, UnsafeServerHostnameError, never>;
|
|
38
|
-
export declare const resolvePublicOrigin: (configuredOrigin: string | undefined, authorityOrigin: string) => Effect.Effect<string, UnsafeServerHostnameError, never>;
|
|
39
|
-
export declare const ownerSessionCookie: (secrets: Pick<OwnerSessionSecretsContract, "ownerToken">) => string;
|
|
40
|
-
interface OwnerRequestAuthorization {
|
|
41
|
-
readonly credential: string;
|
|
42
|
-
readonly csrfToken: string | undefined;
|
|
43
|
-
readonly host: string | undefined;
|
|
44
|
-
readonly method: string;
|
|
45
|
-
readonly origin: string | undefined;
|
|
46
|
-
}
|
|
47
|
-
export declare const authorizeOwnerRequest: (request: OwnerRequestAuthorization, secrets: OwnerSessionSecretsContract) => Effect.Effect<undefined, ForbiddenApiError | UnauthorizedApiError, never>;
|
|
48
|
-
interface BootstrapAuthorization {
|
|
49
|
-
readonly authorization: string | undefined;
|
|
50
|
-
readonly host: string | undefined;
|
|
51
|
-
readonly origin: string | undefined;
|
|
52
|
-
}
|
|
53
|
-
export declare const authorizeBootstrapRequest: (request: BootstrapAuthorization, secrets: OwnerSessionSecretsContract) => Effect.Effect<undefined, ForbiddenApiError | UnauthorizedApiError, never>;
|
|
54
|
-
export declare const ownerSessionAuthLayer: Layer.Layer<OwnerSessionAuth, never, OwnerSessionSecrets>;
|
|
55
|
-
export declare const OwnerSessionBootstrapRouter: Layer.Layer<never, never, HttpRouter.HttpRouter | HttpRouter.Request<"Error", import("effect/http/HttpBody").HttpBodyError> | HttpRouter.Request<"Requires", OwnerSessionSecrets>>;
|
|
56
|
-
export {};
|
|
57
|
-
//# sourceMappingURL=OwnerSessionSecurity.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"OwnerSessionSecurity.d.ts","sourceRoot":"","sources":["../../../src/server/internal/OwnerSessionSecurity.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAA;AACzF,OAAO,EAAS,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC7E,OAAO,EAAE,UAAU,EAAyC,MAAM,aAAa,CAAA;AAC/E,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAA;AAErF,MAAM,WAAW,2BAA2B;IAC1C,8FAA8F;IAC9F,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAA;IAChC,QAAQ,CAAC,kBAAkB,EAAE,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;IAC7C,QAAQ,CAAC,qBAAqB,EAAE,GAAG,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAA;IAC9D,QAAQ,CAAC,wBAAwB,EAAE,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,SAAS,CAAC,CAAA;IAC9D,QAAQ,CAAC,cAAc,EAAE,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAA;IACvD,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAA;IAChD,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAA;CACrD;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CAC1B;;AAED,qBAAa,mBAAoB,SAAQ,wBAGO;CAAG;;;;;AAEnD,qBAAa,yBAA0B,SAAQ,8BAG9C;CAAG;AAOJ,eAAO,MAAM,kBAAkB,aAAc,MAAM,KAAG,OAC8C,CAAA;AAEpG,eAAO,MAAM,uBAAuB,+EAUnC,CAAA;AAED,eAAO,MAAM,uBAAuB,2LAoBnC,CAAA;AAED,eAAO,MAAM,6BAA6B,4HAMzC,CAAA;AAED,eAAO,MAAM,kBAAkB,aAAc,MAAM,QAAQ,MAAM,KAAG,MAGnE,CAAA;AAED,eAAO,MAAM,eAAe,aAChB,MAAM,QACV,MAAM,WACH,2BAA2B,KACnC,MAA+E,CAAA;AAElF,eAAO,MAAM,wBAAwB,WAC3B,MAAM,WACL,IAAI,CAAC,2BAA2B,EAAE,gBAAgB,CAAC,KAC3D,MAGF,CAAA;AAED,eAAO,MAAM,qBAAqB,6EAwBjC,CAAA;AAED,kGAAkG;AAClG,eAAO,MAAM,4BAA4B,sGAexC,CAAA;AAED,eAAO,MAAM,mBAAmB,4HAM/B,CAAA;AAED,eAAO,MAAM,kBAAkB,YACpB,IAAI,CAAC,2BAA2B,EAAE,YAAY,CAAC,KACvD,MAOC,CAAA;AAEJ,UAAU,yBAAyB;IACjC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAA;IACtC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAA;IACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAA;CACpC;AAED,eAAO,MAAM,qBAAqB,yJAuBjC,CAAA;AAED,UAAU,sBAAsB;IAC9B,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,SAAS,CAAA;IAC1C,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAA;IACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAA;CACpC;AAED,eAAO,MAAM,yBAAyB,sJAoErC,CAAA;AAED,eAAO,MAAM,qBAAqB,2DAuBjC,CAAA;AAED,eAAO,MAAM,2BAA2B,oLA+BvC,CAAA"}
|