mirror of
https://gitea.toothfairyai.com/ToothFairyAI/tf_code.git
synced 2026-03-31 06:12:26 +00:00
sync
This commit is contained in:
25
packages/opencode/src/util/context.ts
Normal file
25
packages/opencode/src/util/context.ts
Normal file
@@ -0,0 +1,25 @@
|
||||
import { AsyncLocalStorage } from "async_hooks";
|
||||
|
||||
export namespace Context {
|
||||
export class NotFound extends Error {
|
||||
constructor(public readonly name: string) {
|
||||
super(`No context found for ${name}`);
|
||||
}
|
||||
}
|
||||
|
||||
export function create<T>(name: string) {
|
||||
const storage = new AsyncLocalStorage<T>();
|
||||
return {
|
||||
use() {
|
||||
const result = storage.getStore();
|
||||
if (!result) {
|
||||
throw new NotFound(name);
|
||||
}
|
||||
return result;
|
||||
},
|
||||
provide<R>(value: T, fn: () => R) {
|
||||
return storage.run<R>(value, fn);
|
||||
},
|
||||
};
|
||||
}
|
||||
}
|
||||
0
packages/opencode/src/util/event.ts
Normal file
0
packages/opencode/src/util/event.ts
Normal file
64
packages/opencode/src/util/log.ts
Normal file
64
packages/opencode/src/util/log.ts
Normal file
@@ -0,0 +1,64 @@
|
||||
import path from "path";
|
||||
import { AppPath } from "../app/path";
|
||||
import fs from "fs/promises";
|
||||
export namespace Log {
|
||||
const write = {
|
||||
out: (msg: string) => {
|
||||
process.stdout.write(msg);
|
||||
},
|
||||
err: (msg: string) => {
|
||||
process.stderr.write(msg);
|
||||
},
|
||||
};
|
||||
|
||||
export async function file(directory: string) {
|
||||
const outPath = path.join(AppPath.data(directory), "opencode.out.log");
|
||||
const errPath = path.join(AppPath.data(directory), "opencode.err.log");
|
||||
await fs.truncate(outPath).catch(() => {});
|
||||
await fs.truncate(errPath).catch(() => {});
|
||||
const out = Bun.file(outPath);
|
||||
const err = Bun.file(errPath);
|
||||
const outWriter = out.writer();
|
||||
const errWriter = err.writer();
|
||||
write["out"] = (msg) => {
|
||||
outWriter.write(msg);
|
||||
outWriter.flush();
|
||||
};
|
||||
write["err"] = (msg) => {
|
||||
errWriter.write(msg);
|
||||
errWriter.flush();
|
||||
};
|
||||
}
|
||||
|
||||
export function create(tags?: Record<string, any>) {
|
||||
tags = tags || {};
|
||||
|
||||
function build(message: any, extra?: Record<string, any>) {
|
||||
const prefix = Object.entries({
|
||||
...tags,
|
||||
...extra,
|
||||
})
|
||||
.filter(([_, value]) => value !== undefined && value !== null)
|
||||
.map(([key, value]) => `${key}=${value}`)
|
||||
.join(" ");
|
||||
return [new Date().toISOString(), prefix, message].filter(Boolean).join(" ") + "\n";
|
||||
}
|
||||
const result = {
|
||||
info(message?: any, extra?: Record<string, any>) {
|
||||
write.out(build(message, extra));
|
||||
},
|
||||
error(message?: any, extra?: Record<string, any>) {
|
||||
write.err(build(message, extra));
|
||||
},
|
||||
tag(key: string, value: string) {
|
||||
if (tags) tags[key] = value;
|
||||
return result;
|
||||
},
|
||||
clone() {
|
||||
return Log.create({ ...tags });
|
||||
},
|
||||
};
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
5
packages/opencode/src/util/scrap.ts
Normal file
5
packages/opencode/src/util/scrap.ts
Normal file
@@ -0,0 +1,5 @@
|
||||
export const foo: string = "42";
|
||||
|
||||
export function dummyFunction(): void {
|
||||
console.log("This is a dummy function");
|
||||
}
|
||||
Reference in New Issue
Block a user