diff options
| author | Dax Raad <[email protected]> | 2025-05-30 20:47:56 -0400 |
|---|---|---|
| committer | Dax Raad <[email protected]> | 2025-05-30 20:48:36 -0400 |
| commit | f3da73553c45f17e04b1e77cb13eb0fca714d1bd (patch) | |
| tree | a24317a19e1ab2a89da50db669dc6894f15d00d1 /js/src/app | |
| parent | 9a26b3058ffc1023e5c7e54b6d571c903d15888e (diff) | |
| download | opencode-f3da73553c45f17e04b1e77cb13eb0fca714d1bd.tar.gz opencode-f3da73553c45f17e04b1e77cb13eb0fca714d1bd.zip | |
sync
Diffstat (limited to 'js/src/app')
| -rw-r--r-- | js/src/app/app.ts | 78 | ||||
| -rw-r--r-- | js/src/app/path.ts | 11 |
2 files changed, 0 insertions, 89 deletions
diff --git a/js/src/app/app.ts b/js/src/app/app.ts deleted file mode 100644 index 0c6260bc7..000000000 --- a/js/src/app/app.ts +++ /dev/null @@ -1,78 +0,0 @@ -import fs from "fs/promises"; -import { AppPath } from "./path"; -import { Log } from "../util/log"; -import { Context } from "../util/context"; - -export namespace App { - const log = Log.create({ service: "app" }); - - export type Info = Awaited<ReturnType<typeof create>>; - - const ctx = Context.create<Info>("app"); - - async function create(input: { directory: string }) { - const dataDir = AppPath.data(input.directory); - await fs.mkdir(dataDir, { recursive: true }); - await Log.file(input.directory); - - log.info("created", { path: dataDir }); - - const services = new Map< - any, - { - state: any; - shutdown?: (input: any) => Promise<void>; - } - >(); - - const result = { - get services() { - return services; - }, - get root() { - return input.directory; - }, - }; - - return result; - } - - export function state<State>( - key: any, - init: (app: Info) => State, - shutdown?: (state: Awaited<State>) => Promise<void>, - ) { - return () => { - const app = ctx.use(); - const services = app.services; - if (!services.has(key)) { - log.info("registering service", { name: key }); - services.set(key, { - state: init(app), - shutdown: shutdown, - }); - } - return services.get(key)?.state as State; - }; - } - - export async function use() { - return ctx.use(); - } - - export async function provide<T extends (app: Info) => any>( - input: { directory: string }, - cb: T, - ) { - const app = await create(input); - - return ctx.provide(app, async () => { - const result = await cb(app); - for (const [key, entry] of app.services.entries()) { - log.info("shutdown", { name: key }); - await entry.shutdown?.(await entry.state); - } - return result; - }); - } -} diff --git a/js/src/app/path.ts b/js/src/app/path.ts deleted file mode 100644 index 972d18c41..000000000 --- a/js/src/app/path.ts +++ /dev/null @@ -1,11 +0,0 @@ -import path from "path"; - -export namespace AppPath { - export function data(input: string) { - return path.join(input, ".opencode"); - } - - export function storage(input: string) { - return path.join(data(input), "storage"); - } -} |
