mirror of
https://github.com/VibedByKaKi/t3-code-android-nightly.git
synced 2026-10-09 03:41:17 +02:00
65 lines
2.6 KiB
TypeScript
65 lines
2.6 KiB
TypeScript
// @effect-diagnostics anyUnknownInErrorContext:off layerMergeAllWithDependencies:off - Alchemy provider helpers expose framework-owned any requirements.
|
|
import * as Alchemy from "alchemy";
|
|
import * as Output from "alchemy/Output";
|
|
import * as Axiom from "alchemy/Axiom";
|
|
import * as Cloudflare from "alchemy/Cloudflare";
|
|
import * as Drizzle from "alchemy/Drizzle";
|
|
import * as Effect from "effect/Effect";
|
|
import * as Layer from "effect/Layer";
|
|
import * as Planetscale from "alchemy/Planetscale";
|
|
|
|
import { PublishClientConfig, tokenDigest } from "./src/clientConfig.ts";
|
|
import * as RelayDb from "./src/db.ts";
|
|
import { RelayObservability } from "./src/observability.ts";
|
|
import { ManagedEndpointZone, RelayApiZone } from "./src/zone.ts";
|
|
import * as RelayWorker from "./src/worker.ts";
|
|
|
|
export default Alchemy.Stack(
|
|
"T3CodeRelay",
|
|
{
|
|
providers: Layer.mergeAll(
|
|
Axiom.providers(),
|
|
Cloudflare.providers(),
|
|
Drizzle.providers(),
|
|
Planetscale.providers(),
|
|
),
|
|
state: Cloudflare.state(),
|
|
},
|
|
Effect.gen(function* () {
|
|
const db = yield* RelayDb.PlanetscaleDatabase;
|
|
const hyperdrive = yield* RelayDb.RelayHyperdrive;
|
|
const managedEndpointZone = yield* ManagedEndpointZone.pipe(Effect.orDie);
|
|
const relayApiZone = yield* RelayApiZone.pipe(Effect.orDie);
|
|
const observability = yield* RelayObservability;
|
|
const api = yield* RelayWorker.Api;
|
|
yield* PublishClientConfig({
|
|
url: api.url,
|
|
mobileTracingUrl: observability.traces.otelTracesEndpoint,
|
|
mobileTracingDataset: observability.traces.name,
|
|
mobileTracingToken: observability.mobileIngestToken.token,
|
|
clientTracingUrl: observability.traces.otelTracesEndpoint,
|
|
clientTracingDataset: observability.traces.name,
|
|
clientTracingToken: observability.clientIngestToken.token,
|
|
tokenDigest: Output.map(
|
|
Output.all(observability.mobileIngestToken.token, observability.clientIngestToken.token),
|
|
tokenDigest,
|
|
),
|
|
});
|
|
|
|
return {
|
|
databaseName: db.database.name,
|
|
databaseBranchName: db.branch?.name ?? "main",
|
|
hyperdriveName: hyperdrive.name,
|
|
workerName: api.workerName,
|
|
url: api.url,
|
|
relayApiZoneId: relayApiZone.zoneId,
|
|
managedEndpointZoneId: managedEndpointZone.zoneId,
|
|
mobileTracingUrl: observability.traces.otelTracesEndpoint,
|
|
mobileTracingDataset: observability.traces.name,
|
|
mobileTracingToken: observability.mobileIngestToken.token,
|
|
clientTracingUrl: observability.traces.otelTracesEndpoint,
|
|
clientTracingDataset: observability.traces.name,
|
|
clientTracingToken: observability.clientIngestToken.token,
|
|
};
|
|
}).pipe(Effect.provide(RelayWorker.layer)),
|
|
);
|