authorgravatar for julius0216@outlook.comJulius Marminge <julius0216@outlook.com> 2026-09-08 01:11:10-07:00
committergravatar for noreply@github.comGitHub <noreply@github.com> 2026-09-08 01:11:10-07:00
log3b6ce931cc225b4b743daaa063e0bc9875555582
tree19c728a40a85c84e40314650bf99d29ddfd87c72
parent060c576f8922703725f0dbdd01443ed88ecc9baa
signature Signed by PGP key B5690EEEBB952194

refactor(server): classify source control exports (#10279)


22 files changed, 21 insertions(+), 28 deletions(-)

apps/server/src/pullRequest/AzureDevOpsPullRequestCli.ts+1
......@@ -261,6 +261,7 @@ function isReviewerName(value: string): boolean {
261261 return name.length > 0 && !name.startsWith("-");
262262}
263263
264/** @public Service construction is part of the canonical Effect module API. */
264265export const make = Effect.gen(function* () {
265266 const azure = yield* AzureDevOpsCli.AzureDevOpsCli;
266267
apps/server/src/pullRequest/BitbucketPullRequestApi.ts+1
......@@ -378,6 +378,7 @@ function bitbucketReviewPosition(
378378 }
379379}
380380
381/** @public Service construction is part of the canonical Effect module API. */
381382export const make = Effect.gen(function* () {
382383 const bitbucket = yield* BitbucketApi.BitbucketApi;
383384
apps/server/src/pullRequest/GitHubPullRequestCli.ts+2-1
......@@ -714,7 +714,7 @@ export class GitHubPullRequestCli extends Context.Service<
714714 * The host is not read off the identity: it travels alongside it, because the identity a
715715 * project records is the path below its host and never names the host itself.
716716 */
717export function parseRepositorySelector(value: string): {
717function parseRepositorySelector(value: string): {
718718 readonly owner: string;
719719 readonly name: string;
720720} {
......@@ -980,6 +980,7 @@ function actionArgs(
980980 }
981981}
982982
983/** @public Service construction is part of the canonical Effect module API. */
983984export const make = Effect.gen(function* () {
984985 const github = yield* GitHubCli.GitHubCli;
985986 const graphQlBudget = yield* GitHubGraphQlBudget.GitHubGraphQlBudget;
apps/server/src/pullRequest/GitLabPullRequestCli.ts+1
......@@ -511,6 +511,7 @@ function actionArgs(
511511 }
512512}
513513
514/** @public Service construction is part of the canonical Effect module API. */
514515export const make = Effect.gen(function* () {
515516 const gitlab = yield* GitLabCli.GitLabCli;
516517
apps/server/src/pullRequest/PullRequestProviderRegistry.ts+2
......@@ -41,6 +41,8 @@ export function fromProviders(
4141/**
4242 * The hosts this build can read change requests from. A host with no entry here still shows up
4343 * in the provider list as unimplemented, so its projects are explained rather than missing.
44 *
45 * @public Service construction is part of the canonical Effect module API.
4446 */
4547export const make = Effect.map(
4648 Effect.all([
apps/server/src/sourceControl/AzureDevOpsCli.ts+1-2
......@@ -203,8 +203,6 @@ export const AzureDevOpsCliError = Schema.Union([
203203]);
204204export type AzureDevOpsCliError = typeof AzureDevOpsCliError.Type;
205205
206export const isAzureDevOpsCliError = Schema.is(AzureDevOpsCliError);
207
208206export interface AzureDevOpsRepositoryCloneUrls {
209207 readonly nameWithOwner: string;
210208 readonly url: string;
......@@ -352,6 +350,7 @@ function decodeAzureDevOpsJson<S extends Schema.Top>(
352350 );
353351}
354352
353/** @public Service construction is part of the canonical Effect module API. */
355354export const make = Effect.gen(function* () {
356355 const process = yield* VcsProcess.VcsProcess;
357356
apps/server/src/sourceControl/AzureDevOpsSourceControlProvider.ts-3
......@@ -1,5 +1,4 @@
11import * as Effect from "effect/Effect";
2import * as Layer from "effect/Layer";
32import { SourceControlProviderError, type ChangeRequest } from "@t3tools/contracts";
43
54import * as AzureDevOpsCli from "./AzureDevOpsCli.ts";
......@@ -235,5 +234,3 @@ export const make = Effect.gen(function* () {
235234 ),
236235 });
237236});
238
239export const layer = Layer.effect(SourceControlProvider.SourceControlProvider, make);
apps/server/src/sourceControl/BitbucketApi.ts+2-1
......@@ -262,7 +262,7 @@ export const BitbucketApiError = Schema.Union([
262262 BitbucketCheckoutError,
263263]);
264264export type BitbucketApiError = typeof BitbucketApiError.Type;
265export const isBitbucketApiError = Schema.is(BitbucketApiError);
265const isBitbucketApiError = Schema.is(BitbucketApiError);
266266
267267const RawBitbucketRepositorySchema = Schema.Struct({
268268 full_name: TrimmedNonEmptyString,
......@@ -606,6 +606,7 @@ function responseError(
606606 });
607607}
608608
609/** @public Service construction is part of the canonical Effect module API. */
609610export const make = Effect.gen(function* () {
610611 const config = yield* BitbucketApiEnvConfig;
611612 const httpClient = yield* HttpClient.HttpClient;
apps/server/src/sourceControl/BitbucketSourceControlProvider.ts-3
......@@ -1,5 +1,4 @@
11import * as Effect from "effect/Effect";
2import * as Layer from "effect/Layer";
32import * as Option from "effect/Option";
43import { SourceControlProviderError, type ChangeRequest } from "@t3tools/contracts";
54
......@@ -186,8 +185,6 @@ export const make = Effect.gen(function* () {
186185 });
187186});
188187
189export const layer = Layer.effect(SourceControlProvider.SourceControlProvider, make);
190
191188export const makeDiscovery = Effect.gen(function* () {
192189 const bitbucket = yield* BitbucketApi.BitbucketApi;
193190
apps/server/src/sourceControl/GitHubCli.ts+1
......@@ -338,6 +338,7 @@ function deriveRepositoryCloneUrlsFromCreateOutput(
338338 };
339339}
340340
341/** @public Service construction is part of the canonical Effect module API. */
341342export const make = Effect.gen(function* () {
342343 const process = yield* VcsProcess.VcsProcess;
343344
apps/server/src/sourceControl/GitHubSourceControlProvider.ts-3
......@@ -1,6 +1,5 @@
11import * as DateTime from "effect/DateTime";
22import * as Effect from "effect/Effect";
3import * as Layer from "effect/Layer";
43import * as Option from "effect/Option";
54import * as Result from "effect/Result";
65import {
......@@ -322,5 +321,3 @@ export const make = Effect.gen(function* () {
322321 ),
323322 });
324323});
325
326export const layer = Layer.effect(SourceControlProvider.SourceControlProvider, make);
apps/server/src/sourceControl/GitLabCli.ts+1-1
......@@ -237,7 +237,6 @@ export const GitLabCliError = Schema.Union([
237237 GitLabNamespaceDecodeError,
238238]);
239239export type GitLabCliError = typeof GitLabCliError.Type;
240export const isGitLabCliError = Schema.is(GitLabCliError);
241240
242241export interface GitLabMergeRequestSummary {
243242 readonly number: number;
......@@ -409,6 +408,7 @@ function parseRepositoryPath(repository: string): {
409408 return { namespacePath, projectPath };
410409}
411410
411/** @public Service construction is part of the canonical Effect module API. */
412412export const make = Effect.gen(function* () {
413413 const process = yield* VcsProcess.VcsProcess;
414414
apps/server/src/sourceControl/GitLabSourceControlProvider.ts-3
......@@ -1,5 +1,4 @@
11import * as Effect from "effect/Effect";
2import * as Layer from "effect/Layer";
32import * as Option from "effect/Option";
43import { SourceControlProviderError, type ChangeRequest } from "@t3tools/contracts";
54
......@@ -250,5 +249,3 @@ export const make = Effect.gen(function* () {
250249 ),
251250 });
252251});
253
254export const layer = Layer.effect(SourceControlProvider.SourceControlProvider, make);
apps/server/src/sourceControl/SourceControlDiscovery.ts+1
......@@ -64,6 +64,7 @@ export class SourceControlDiscovery extends Context.Service<
6464 }
6565>()("t3/sourceControl/SourceControlDiscovery") {}
6666
67/** @public Service construction is part of the canonical Effect module API. */
6768export const make = Effect.gen(function* () {
6869 const config = yield* ServerConfig;
6970 const process = yield* VcsProcess.VcsProcess;
apps/server/src/sourceControl/SourceControlProvider.ts+1-1
......@@ -61,7 +61,7 @@ export function parseSourceControlOwnerRef(
6161 return owner && refName ? { owner, refName } : undefined;
6262}
6363
64export function normalizeSourceBranch(headSelector: string): string {
64function normalizeSourceBranch(headSelector: string): string {
6565 return parseSourceControlOwnerRef(headSelector)?.refName ?? headSelector.trim();
6666}
6767
apps/server/src/sourceControl/SourceControlProviderDiscovery.ts+1-1
......@@ -115,7 +115,7 @@ export function providerAuth(input: {
115115 };
116116}
117117
118export function unknownAuth(detail?: string): SourceControlProviderAuth {
118function unknownAuth(detail?: string): SourceControlProviderAuth {
119119 return providerAuth({ status: "unknown", detail });
120120}
121121
apps/server/src/sourceControl/SourceControlRateLimit.ts+1
......@@ -82,6 +82,7 @@ export function retryAtFromHeader(value: string | undefined, now: number): numbe
8282 return Number.isFinite(retryAt) && retryAt > now ? retryAt : undefined;
8383}
8484
85/** @public Service construction is part of the canonical Effect module API. */
8586export const make = Effect.gen(function* () {
8687 const entries = yield* Ref.make<ReadonlyMap<string, RateLimitEntry>>(new Map());
8788
apps/server/src/sourceControl/SourceControlRepositoryService.ts+1
......@@ -77,6 +77,7 @@ function selectRemoteUrl(
7777 }
7878}
7979
80/** @public Service construction is part of the canonical Effect module API. */
8081export const make = Effect.gen(function* () {
8182 const config = yield* ServerConfig;
8283 const fileSystem = yield* FileSystem.FileSystem;
apps/server/src/sourceControl/azureDevOpsPullRequests.ts+1-3
......@@ -5,7 +5,7 @@ import * as Option from "effect/Option";
55import * as Result from "effect/Result";
66import * as Schema from "effect/Schema";
77import { PositiveInt, TrimmedNonEmptyString } from "@t3tools/contracts";
8import { decodeJsonResult, formatSchemaError } from "@t3tools/shared/schemaJson";
8import { decodeJsonResult } from "@t3tools/shared/schemaJson";
99
1010export interface NormalizedAzureDevOpsPullRequestRecord {
1111 readonly number: number;
......@@ -190,8 +190,6 @@ const decodeAzureDevOpsPullRequestList = decodeJsonResult(Schema.Array(Schema.Un
190190const decodeAzureDevOpsPullRequest = decodeJsonResult(AzureDevOpsPullRequestSchema);
191191const decodeAzureDevOpsPullRequestEntry = Schema.decodeUnknownExit(AzureDevOpsPullRequestSchema);
192192
193export const formatAzureDevOpsJsonDecodeError = formatSchemaError;
194
195193export function decodeAzureDevOpsPullRequestListJson(
196194 raw: string,
197195): Result.Result<
apps/server/src/sourceControl/gitHubPullRequests.ts+1-3
......@@ -5,7 +5,7 @@ import * as Option from "effect/Option";
55import * as Result from "effect/Result";
66import * as Schema from "effect/Schema";
77import { PositiveInt, TrimmedNonEmptyString } from "@t3tools/contracts";
8import { decodeJsonResult, formatSchemaError } from "@t3tools/shared/schemaJson";
8import { decodeJsonResult } from "@t3tools/shared/schemaJson";
99
1010export interface NormalizedGitHubPullRequestRecord {
1111 readonly number: number;
......@@ -114,8 +114,6 @@ const decodeGitHubPullRequestList = decodeJsonResult(Schema.Array(Schema.Unknown
114114const decodeGitHubPullRequest = decodeJsonResult(GitHubPullRequestSchema);
115115const decodeGitHubPullRequestEntry = Schema.decodeUnknownExit(GitHubPullRequestSchema);
116116
117export const formatGitHubJsonDecodeError = formatSchemaError;
118
119117export function decodeGitHubPullRequestListJson(
120118 raw: string,
121119): Result.Result<
apps/server/src/sourceControl/gitLabMergeRequests.ts+1-3
......@@ -5,7 +5,7 @@ import * as Option from "effect/Option";
55import * as Result from "effect/Result";
66import * as Schema from "effect/Schema";
77import { PositiveInt, TrimmedNonEmptyString } from "@t3tools/contracts";
8import { decodeJsonResult, formatSchemaError } from "@t3tools/shared/schemaJson";
8import { decodeJsonResult } from "@t3tools/shared/schemaJson";
99
1010export interface NormalizedGitLabMergeRequestRecord {
1111 readonly number: number;
......@@ -129,8 +129,6 @@ const decodeGitLabMergeRequestList = decodeJsonResult(Schema.Array(Schema.Unknow
129129const decodeGitLabMergeRequest = decodeJsonResult(GitLabMergeRequestSchema);
130130const decodeGitLabMergeRequestEntry = Schema.decodeUnknownExit(GitLabMergeRequestSchema);
131131
132export const formatGitLabJsonDecodeError = formatSchemaError;
133
134132export function decodeGitLabMergeRequestListJson(
135133 raw: string,
136134): Result.Result<
apps/server/src/sourceControl/githubGraphQlBudget.ts+1
......@@ -77,6 +77,7 @@ function withRateLimit(document: string): string {
7777 return `${document.slice(0, end)}\n ${RATE_LIMIT_SELECTION}\n${document.slice(end)}`;
7878}
7979
80/** @public Service construction is part of the canonical Effect module API. */
8081export const make = Effect.gen(function* () {
8182 const snapshots = yield* Ref.make<ReadonlyMap<string, GraphQlBudgetSnapshot>>(new Map());
8283