From d0d67029f4baad7389b5ba072379c2ff44a22dc4 Mon Sep 17 00:00:00 2001 From: Dax Raad Date: Sun, 18 May 2025 02:43:01 -0400 Subject: process --- js/src/app/index.ts | 34 +++++++++++++++++++++++----------- 1 file changed, 23 insertions(+), 11 deletions(-) (limited to 'js/src/app/index.ts') diff --git a/js/src/app/index.ts b/js/src/app/index.ts index 1c063ebd3..7f5a44f30 100644 --- a/js/src/app/index.ts +++ b/js/src/app/index.ts @@ -2,6 +2,7 @@ import fs from "fs/promises"; import { AppPath } from "./path"; import { Log } from "../util/log"; import { Context } from "../util/context"; +import { Config } from "./config"; export namespace App { const log = Log.create({ service: "app" }); @@ -13,29 +14,40 @@ export namespace App { export async function create(input: { directory: string }) { log.info("creating"); + const config = await Config.load(input.directory); + const dataDir = AppPath.data(input.directory); await fs.mkdir(dataDir, { recursive: true }); log.info("created", { path: dataDir }); const services = new Map(); - return { + const result = { + get services() { + return services; + }, + get config() { + return config; + }, get root() { return input.directory; }, - service any>(service: any, init: T) { - if (!services.has(service)) { - log.info("registering service", { name: service }); - services.set(service, init()); - } - return services.get(service) as ReturnType; - }, + service any>(service: any, init: T) {}, }; + + return result; } - export function service any>(key: any, init: T) { - const app = ctx.use(); - return app.service(key, init); + export function state any>(key: any, init: T) { + return () => { + const app = ctx.use(); + const services = app.services; + if (!services.has(key)) { + log.info("registering service", { name: key }); + services.set(key, init(app)); + } + return services.get(key) as ReturnType; + }; } export async function use() { -- cgit v1.2.3