| 12345678910111213141516171819202122232425262728 |
- import { GlobalBus } from "@/bus/global"
- import { InstanceStore } from "@/project/instance-store"
- import { Effect } from "effect"
- import { Event } from "./event"
- export const emitGlobalDisposed = Effect.sync(() =>
- GlobalBus.emit("event", {
- directory: "global",
- payload: {
- type: Event.Disposed.type,
- properties: {},
- },
- }),
- )
- export const disposeAllInstancesAndEmitGlobalDisposed = Effect.fn("Server.disposeAllInstancesAndEmitGlobalDisposed")(
- function* (options?: { swallowErrors?: boolean }) {
- const store = yield* InstanceStore.Service
- yield* Effect.gen(function* () {
- yield* options?.swallowErrors
- ? store.disposeAll().pipe(Effect.catchCause((cause) => Effect.logWarning("global disposal failed", { cause })))
- : store.disposeAll()
- yield* emitGlobalDisposed
- }).pipe(Effect.uninterruptible)
- },
- )
- export * as GlobalLifecycle from "./global-lifecycle"
|