2026-03-16 16:55:14 +00:00
|
|
|
import { Effect, Layer, ManagedRuntime } from "effect"
|
2026-03-18 17:34:36 +00:00
|
|
|
import { AccountEffect } from "@/account/effect"
|
|
|
|
|
import { AuthEffect } from "@/auth/effect"
|
2026-03-16 16:55:14 +00:00
|
|
|
import { Instances } from "@/effect/instances"
|
|
|
|
|
import type { InstanceServices } from "@/effect/instances"
|
2026-03-18 01:59:54 +00:00
|
|
|
import { TruncateEffect } from "@/tool/truncate-effect"
|
2026-03-16 16:55:14 +00:00
|
|
|
import { Instance } from "@/project/instance"
|
2026-03-10 16:53:47 +00:00
|
|
|
|
2026-03-14 15:58:00 +00:00
|
|
|
export const runtime = ManagedRuntime.make(
|
2026-03-18 01:59:54 +00:00
|
|
|
Layer.mergeAll(
|
2026-03-18 17:34:36 +00:00
|
|
|
AccountEffect.defaultLayer, //
|
2026-03-18 01:59:54 +00:00
|
|
|
TruncateEffect.defaultLayer,
|
|
|
|
|
Instances.layer,
|
2026-03-18 17:34:36 +00:00
|
|
|
).pipe(Layer.provideMerge(AuthEffect.layer)),
|
2026-03-14 15:58:00 +00:00
|
|
|
)
|
2026-03-16 16:55:14 +00:00
|
|
|
|
|
|
|
|
export function runPromiseInstance<A, E>(effect: Effect.Effect<A, E, InstanceServices>) {
|
|
|
|
|
return runtime.runPromise(effect.pipe(Effect.provide(Instances.get(Instance.directory))))
|
|
|
|
|
}
|
2026-03-18 01:04:16 +00:00
|
|
|
|
|
|
|
|
export function disposeRuntime() {
|
|
|
|
|
return runtime.dispose()
|
|
|
|
|
}
|