refactor(instance): simplify runtime layer wiring

This commit is contained in:
Kit Langton
2026-03-14 22:48:09 -04:00
parent 2d088ab108
commit 219c7f728a
4 changed files with 12 additions and 20 deletions

View File

@@ -3,7 +3,6 @@ import { registerDisposer } from "./instance-registry"
import { ProviderAuthService } from "@/provider/auth-service"
import { QuestionService } from "@/question/service"
import { PermissionService } from "@/permission/service"
import { AuthService } from "@/auth/service"
import { Instance } from "@/project/instance"
import type { Project } from "@/project/project"
@@ -26,7 +25,7 @@ function lookup(directory: string) {
return Layer.mergeAll(
Layer.fresh(QuestionService.layer),
Layer.fresh(PermissionService.layer),
Layer.fresh(ProviderAuthService.layer).pipe(Layer.provide(AuthService.defaultLayer)),
Layer.fresh(ProviderAuthService.layer),
).pipe(Layer.provide(ctx))
}

View File

@@ -6,7 +6,7 @@ import type { InstanceServices } from "@/effect/instances"
import { Instance } from "@/project/instance"
export const runtime = ManagedRuntime.make(
Layer.mergeAll(AccountService.defaultLayer, AuthService.defaultLayer, Instances.layer),
Layer.mergeAll(AccountService.defaultLayer, Instances.layer).pipe(Layer.provideMerge(AuthService.defaultLayer)),
)
export function runPromiseInstance<A, E>(effect: Effect.Effect<A, E, InstanceServices>) {

View File

@@ -4,14 +4,6 @@ import { fn } from "@/util/fn"
import { Wildcard } from "@/util/wildcard"
import os from "os"
import * as S from "./service"
import type {
Action as ActionType,
PermissionError,
Reply as ReplyType,
Request as RequestType,
Rule as RuleType,
Ruleset as RulesetType,
} from "./service"
export namespace PermissionNext {
function expand(pattern: string): string {
@@ -23,15 +15,15 @@ export namespace PermissionNext {
}
export const Action = S.Action
export type Action = ActionType
export type Action = S.Action
export const Rule = S.Rule
export type Rule = RuleType
export type Rule = S.Rule
export const Ruleset = S.Ruleset
export type Ruleset = RulesetType
export type Ruleset = S.Ruleset
export const Request = S.Request
export type Request = RequestType
export type Request = S.Request
export const Reply = S.Reply
export type Reply = ReplyType
export type Reply = S.Reply
export const Approval = S.Approval
export const Event = S.Event
export const Service = S.PermissionService

View File

@@ -114,10 +114,11 @@ export const Instance = {
return await next
},
async dispose() {
Log.Default.info("disposing instance", { directory: Instance.directory })
await Promise.all([State.dispose(Instance.directory), disposeInstance(Instance.directory)])
cache.delete(Instance.directory)
emit(Instance.directory)
const directory = Instance.directory
Log.Default.info("disposing instance", { directory })
await Promise.all([State.dispose(directory), disposeInstance(directory)])
cache.delete(directory)
emit(directory)
},
async disposeAll() {
if (disposal.all) return disposal.all