1
0
silverbullet/packages/web/syscalls/system.ts
2022-09-06 14:36:06 +02:00

48 lines
1.3 KiB
TypeScript

import { SysCallMapping } from "@plugos/plugos/system";
import type { Editor } from "../editor";
import { AppCommand, CommandDef } from "../hooks/command";
import { version } from "../package.json";
export function systemSyscalls(editor: Editor): SysCallMapping {
return {
"system.invokeFunction": async (
ctx,
env: string,
name: string,
...args: any[]
) => {
if (!ctx.plug) {
throw Error("No plug associated with context");
}
if (env === "client") {
return ctx.plug.invoke(name, args);
}
return editor.space.invokeFunction(ctx.plug, env, name, args);
},
"system.invokeCommand": async (ctx, name: string) => {
return editor.runCommandByName(name);
},
"system.listCommands": async (
ctx
): Promise<{ [key: string]: CommandDef }> => {
let allCommands: { [key: string]: CommandDef } = {};
for (let [cmd, def] of editor.commandHook.editorCommands) {
allCommands[cmd] = def.command;
}
return allCommands;
},
"system.getVersion": async () => {
return version;
},
"system.reloadPlugs": async () => {
return editor.reloadPlugs();
},
"sandbox.getServerLogs": async (ctx) => {
return editor.space.proxySyscall(ctx.plug, "sandbox.getLogs", []);
},
};
}