runtime.ts 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. export type Runtime = {
  2. PublicApi: (typeof import("../../../src/server/routes/instance/httpapi/public"))["PublicApi"]
  3. HttpApiApp: (typeof import("../../../src/server/routes/instance/httpapi/server"))["HttpApiApp"]
  4. AppLayer: (typeof import("../../../src/effect/app-runtime"))["AppLayer"]
  5. memoMap: import("effect").Layer.MemoMap
  6. InstanceRef: (typeof import("../../../src/effect/instance-ref"))["InstanceRef"]
  7. InstanceStore: (typeof import("../../../src/project/instance-store"))["InstanceStore"]
  8. Session: (typeof import("../../../src/session/session"))["Session"]
  9. Todo: (typeof import("../../../src/session/todo"))["Todo"]
  10. Worktree: (typeof import("../../../src/worktree"))["Worktree"]
  11. Project: (typeof import("../../../src/project/project"))["Project"]
  12. Tui: typeof import("../../../src/server/shared/tui-control")
  13. disposeAllInstances: (typeof import("../../fixture/fixture"))["disposeAllInstances"]
  14. tmpdir: (typeof import("../../fixture/fixture"))["tmpdir"]
  15. resetDatabase: (typeof import("../../fixture/db"))["resetDatabase"]
  16. }
  17. let runtimePromise: Promise<Runtime> | undefined
  18. export function runtime() {
  19. return (runtimePromise ??= (async () => {
  20. const publicApi = await import("../../../src/server/routes/instance/httpapi/public")
  21. const httpApiServer = await import("../../../src/server/routes/instance/httpapi/server")
  22. const appRuntime = await import("../../../src/effect/app-runtime")
  23. const { Layer } = await import("effect")
  24. const instanceRef = await import("../../../src/effect/instance-ref")
  25. const instanceStore = await import("../../../src/project/instance-store")
  26. const session = await import("../../../src/session/session")
  27. const todo = await import("../../../src/session/todo")
  28. const worktree = await import("../../../src/worktree")
  29. const project = await import("../../../src/project/project")
  30. const tui = await import("../../../src/server/shared/tui-control")
  31. const fixture = await import("../../fixture/fixture")
  32. const db = await import("../../fixture/db")
  33. return {
  34. PublicApi: publicApi.PublicApi,
  35. HttpApiApp: httpApiServer.HttpApiApp,
  36. AppLayer: appRuntime.AppLayer,
  37. memoMap: Layer.makeMemoMapUnsafe(),
  38. InstanceRef: instanceRef.InstanceRef,
  39. InstanceStore: instanceStore.InstanceStore,
  40. Session: session.Session,
  41. Todo: todo.Todo,
  42. Worktree: worktree.Worktree,
  43. Project: project.Project,
  44. Tui: tui,
  45. disposeAllInstances: fixture.disposeAllInstances,
  46. tmpdir: fixture.tmpdir,
  47. resetDatabase: db.resetDatabase,
  48. }
  49. })())
  50. }