authorgravatar for julius0216@outlook.comJulius Marminge <julius0216@outlook.com> 2026-06-19 20:07:29-07:00
committergravatar for noreply@github.comGitHub <noreply@github.com> 2026-06-19 20:07:29-07:00
log3b56dc17a5550de0f3ffd376ed2785cc12fbb96b
tree09885e2d135a5b7d8cc231d9efb23cdc9e8c5c89
parentd2c0a6a48f50f319815a8cf5501f9e2e9b8ca617
signature Signed by PGP key B5690EEEBB952194

[codex] Refactor primary HTTP Effect service (#3205)

Co-authored-by: codex <codex@users.noreply.github.com>

2 files changed, 11 insertions(+), 16 deletions(-)

apps/web/src/environments/primary/httpClient.ts+5-8
...@@ -5,16 +5,13 @@ import * as Layer from "effect/Layer";...@@ -5,16 +5,13 @@ import * as Layer from "effect/Layer";
55
6import { resolvePrimaryEnvironmentHttpUrl } from "./target";6import { resolvePrimaryEnvironmentHttpUrl } from "./target";
77
8export type PrimaryEnvironmentHttpClientShape = Effect.Success<
9 ReturnType<typeof makeEnvironmentHttpApiClient>
10>;
11
12export class PrimaryEnvironmentHttpClient extends Context.Service<8export class PrimaryEnvironmentHttpClient extends Context.Service<
13 PrimaryEnvironmentHttpClient,9 PrimaryEnvironmentHttpClient,
14 PrimaryEnvironmentHttpClientShape10 Effect.Success<ReturnType<typeof makeEnvironmentHttpApiClient>>
15>()("@t3tools/web/environments/primary/httpClient/PrimaryEnvironmentHttpClient") {}11>()("@t3tools/web/environments/primary/httpClient/PrimaryEnvironmentHttpClient") {}
1612
17export const primaryEnvironmentHttpClientLive = Layer.effect(13const make = Effect.suspend(() =>
18 PrimaryEnvironmentHttpClient,14 makeEnvironmentHttpApiClient(resolvePrimaryEnvironmentHttpUrl("/")),
19 Effect.suspend(() => makeEnvironmentHttpApiClient(resolvePrimaryEnvironmentHttpUrl("/"))),
20);15);
16
17export const layer = Layer.effect(PrimaryEnvironmentHttpClient, make);
apps/web/src/lib/runtime.ts+6-8
...@@ -5,10 +5,7 @@ import * as Socket from "effect/unstable/socket/Socket";...@@ -5,10 +5,7 @@ import * as Socket from "effect/unstable/socket/Socket";
55
6import { remoteHttpClientLayer } from "@t3tools/client-runtime/rpc";6import { remoteHttpClientLayer } from "@t3tools/client-runtime/rpc";
7import { makeRelayClientTracingLayer } from "@t3tools/shared/relayTracing";7import { makeRelayClientTracingLayer } from "@t3tools/shared/relayTracing";
8import {8import * as PrimaryEnvironmentHttpClient from "../environments/primary/httpClient";
9 PrimaryEnvironmentHttpClient,
10 primaryEnvironmentHttpClientLive,
11} from "../environments/primary/httpClient";
12import { primaryEnvironmentHttpLayer } from "../environments/primary/httpLayer";9import { primaryEnvironmentHttpLayer } from "../environments/primary/httpLayer";
1310
14import { browserCryptoLayer } from "../cloud/dpop";11import { browserCryptoLayer } from "../cloud/dpop";
...@@ -30,11 +27,11 @@ const relayTracingLayer = makeRelayClientTracingLayer(resolveRelayTracingConfig(...@@ -30,11 +27,11 @@ const relayTracingLayer = makeRelayClientTracingLayer(resolveRelayTracingConfig(
30export const remoteHttpRuntime = ManagedRuntime.make(httpClientLayer);27export const remoteHttpRuntime = ManagedRuntime.make(httpClientLayer);
3128
32const primaryHttpRuntime = ManagedRuntime.make(29const primaryHttpRuntime = ManagedRuntime.make(
33 primaryEnvironmentHttpClientLive.pipe(Layer.provide(primaryEnvironmentHttpLayer)),30 PrimaryEnvironmentHttpClient.layer.pipe(Layer.provide(primaryEnvironmentHttpLayer)),
34);31);
3532
36export type PrimaryHttpEffectRunner = <A, E>(33export type PrimaryHttpEffectRunner = <A, E>(
37 effect: Effect.Effect<A, E, PrimaryEnvironmentHttpClient>,34 effect: Effect.Effect<A, E, PrimaryEnvironmentHttpClient.PrimaryEnvironmentHttpClient>,
38) => Promise<A>;35) => Promise<A>;
3936
40const livePrimaryHttpRunner: PrimaryHttpEffectRunner = (effect) =>37const livePrimaryHttpRunner: PrimaryHttpEffectRunner = (effect) =>
...@@ -42,8 +39,9 @@ const livePrimaryHttpRunner: PrimaryHttpEffectRunner = (effect) =>...@@ -42,8 +39,9 @@ const livePrimaryHttpRunner: PrimaryHttpEffectRunner = (effect) =>
4239
43let primaryHttpRunner = livePrimaryHttpRunner;40let primaryHttpRunner = livePrimaryHttpRunner;
4441
45export const runPrimaryHttp = <A, E>(effect: Effect.Effect<A, E, PrimaryEnvironmentHttpClient>) =>42export const runPrimaryHttp = <A, E>(
46 primaryHttpRunner(effect);43 effect: Effect.Effect<A, E, PrimaryEnvironmentHttpClient.PrimaryEnvironmentHttpClient>,
44) => primaryHttpRunner(effect);
4745
48export function __setPrimaryHttpRunnerForTests(runner?: PrimaryHttpEffectRunner): void {46export function __setPrimaryHttpRunnerForTests(runner?: PrimaryHttpEffectRunner): void {
49 primaryHttpRunner = runner ?? livePrimaryHttpRunner;47 primaryHttpRunner = runner ?? livePrimaryHttpRunner;