silverbullet/plug-api/syscalls/system.ts

124 lines
3.3 KiB
TypeScript
Raw Normal View History

import type { CommandDef } from "../../lib/command.ts";
2024-02-29 22:23:05 +08:00
import type { SyscallMeta } from "../types.ts";
import type { ParseTree } from "../lib/tree.ts";
import { syscall } from "../syscall.ts";
import type { Config } from "../../type/config.ts";
2022-04-01 23:07:08 +08:00
2024-08-09 15:27:58 +08:00
/**
* System level syscalls
* @module
*/
2024-08-07 19:27:25 +08:00
/**
* Invoke a plug function
* @param name a string representing the name of the function to invoke ("plug.functionName")
* @param args arguments to pass to the function
* @returns
*/
export function invokeFunction(
2022-04-01 23:07:08 +08:00
name: string,
...args: any[]
): Promise<any> {
2023-08-28 23:12:15 +08:00
return syscall("system.invokeFunction", name, ...args);
2022-04-01 23:07:08 +08:00
}
2022-04-27 01:04:36 +08:00
2024-08-07 19:27:25 +08:00
/**
* Invoke a client command by name
* Note: only available on the client
* @param name name of the command
* @param args arguments to pass to the command
*/
export function invokeCommand(name: string, args?: string[]): Promise<any> {
return syscall("system.invokeCommand", name, args);
2022-07-11 15:08:22 +08:00
}
2024-08-07 19:27:25 +08:00
/**
* Lists all commands available
* @returns a map of all available commands
*/
export function listCommands(): Promise<Record<string, CommandDef>> {
2022-09-06 20:36:06 +08:00
return syscall("system.listCommands");
}
2024-08-07 19:27:25 +08:00
/**
* Lists all syscalls available
* @returns a list of all available syscalls
*/
export function listSyscalls(): Promise<SyscallMeta[]> {
return syscall("system.listSyscalls");
}
2024-08-07 19:27:25 +08:00
/**
* Invoke a space function by name
* @param name a string representing the name of the function to invoke
* @param args arguments to pass to the function
* @returns the value returned by the function
*/
export function invokeSpaceFunction(
name: string,
...args: any[]
): Promise<any> {
return syscall("system.invokeSpaceFunction", name, ...args);
}
2024-08-07 19:27:25 +08:00
/**
* Applies attribute extractors to a ParseTree
*/
export function applyAttributeExtractors(
tags: string[],
text: string,
tree: ParseTree,
): Promise<Record<string, any>[]> {
return syscall("system.applyAttributeExtractors", tags, text, tree);
}
/**
* Loads a particular space configuration key (or all of them when no key is spacified)
* @param key the key to load, when not specified, all keys are loaded
2024-08-07 19:27:25 +08:00
* @param defaultValue the default value to return when the key is not found
* @returns either the value of the key or all keys as a Record<string, any>
*/
export async function getSpaceConfig(
key?: string,
defaultValue?: any,
): Promise<any> {
return (await syscall("system.getSpaceConfig", key)) ?? defaultValue;
}
2024-08-07 19:27:25 +08:00
/**
* Trigger a reload of all plugs
* @returns
*/
2024-07-30 23:24:17 +08:00
export function reloadPlugs(): Promise<void> {
return syscall("system.reloadPlugs");
2022-04-27 01:04:36 +08:00
}
2023-01-15 01:51:00 +08:00
2024-08-07 19:27:25 +08:00
/**
* Trigger an explicit reload of the configuration
* @returns the new configuration
*/
export function reloadConfig(): Promise<Config> {
return syscall("system.reloadConfig");
}
2024-08-07 19:27:25 +08:00
/**
* Returns what runtime environment this plug is run in, e.g. "server" or "client" can be undefined, which would mean a hybrid environment (such as mobile)
*/
2023-01-15 01:51:00 +08:00
export function getEnv(): Promise<string | undefined> {
return syscall("system.getEnv");
}
2024-08-07 19:27:25 +08:00
/**
* Returns the current mode of the system, either "ro" (read-only) or "rw" (read-write)
*/
export function getMode(): Promise<"ro" | "rw"> {
return syscall("system.getMode");
}
2024-08-07 19:27:25 +08:00
/**
* Returns the SilverBullet version
*/
export function getVersion(): Promise<string> {
return syscall("system.getVersion");
}