2022-10-10 12:50:21 +00:00
|
|
|
import { Plug } from "../../plugos/plug.ts";
|
|
|
|
import { FileMeta } from "../types.ts";
|
2022-04-07 13:21:30 +00:00
|
|
|
|
2023-01-13 14:41:29 +00:00
|
|
|
export type FileEncoding = "utf8" | "arraybuffer" | "dataurl";
|
2022-09-12 12:50:37 +00:00
|
|
|
export type FileData = ArrayBuffer | string;
|
2022-04-07 13:21:30 +00:00
|
|
|
export interface SpacePrimitives {
|
2023-01-13 14:41:29 +00:00
|
|
|
// Returns a list of file meta data as well as the timestamp of this snapshot
|
2022-09-12 12:50:37 +00:00
|
|
|
fetchFileList(): Promise<FileMeta[]>;
|
|
|
|
readFile(
|
2022-04-07 13:21:30 +00:00
|
|
|
name: string,
|
2022-10-12 09:47:13 +00:00
|
|
|
encoding: FileEncoding,
|
2022-09-12 12:50:37 +00:00
|
|
|
): Promise<{ data: FileData; meta: FileMeta }>;
|
|
|
|
getFileMeta(name: string): Promise<FileMeta>;
|
|
|
|
writeFile(
|
2022-09-05 09:47:30 +00:00
|
|
|
name: string,
|
2022-09-12 12:50:37 +00:00
|
|
|
encoding: FileEncoding,
|
|
|
|
data: FileData,
|
2023-01-13 14:41:29 +00:00
|
|
|
// Used to decide whether or not to emit change events
|
2022-10-12 09:47:13 +00:00
|
|
|
selfUpdate?: boolean,
|
2022-09-12 12:50:37 +00:00
|
|
|
): Promise<FileMeta>;
|
|
|
|
deleteFile(name: string): Promise<void>;
|
2022-09-05 09:47:30 +00:00
|
|
|
|
2022-04-07 13:21:30 +00:00
|
|
|
// Plugs
|
|
|
|
proxySyscall(plug: Plug<any>, name: string, args: any[]): Promise<any>;
|
|
|
|
invokeFunction(
|
|
|
|
plug: Plug<any>,
|
|
|
|
env: string,
|
|
|
|
name: string,
|
2022-10-12 09:47:13 +00:00
|
|
|
args: any[],
|
2022-04-07 13:21:30 +00:00
|
|
|
): Promise<any>;
|
|
|
|
}
|