import { AttachmentMeta, FileMeta, PageMeta } from "$sb/types.ts"; import { SysCallMapping } from "../../plugos/system.ts"; import type { Space } from "../../web/space.ts"; /** * Almost the same as web/syscalls/space.ts except leaving out client-specific stuff */ export function spaceSyscalls(space: Space): SysCallMapping { return { "space.listPages": (): Promise => { return space.fetchPageList(); }, "space.readPage": async ( _ctx, name: string, ): Promise => { return (await space.readPage(name)).text; }, "space.getPageMeta": (_ctx, name: string): Promise => { return space.getPageMeta(name); }, "space.writePage": ( _ctx, name: string, text: string, ): Promise => { return space.writePage(name, text); }, "space.deletePage": async (_ctx, name: string) => { await space.deletePage(name); }, "space.listPlugs": (): Promise => { return space.listPlugs(); }, "space.listAttachments": async (): Promise => { return await space.fetchAttachmentList(); }, "space.readAttachment": async ( _ctx, name: string, ): Promise => { return (await space.readAttachment(name)).data; }, "space.getAttachmentMeta": async ( _ctx, name: string, ): Promise => { return await space.getAttachmentMeta(name); }, "space.writeAttachment": ( _ctx, name: string, data: Uint8Array, ): Promise => { return space.writeAttachment(name, data); }, "space.deleteAttachment": async (_ctx, name: string) => { await space.deleteAttachment(name); }, // FS "space.listFiles": (): Promise => { return space.spacePrimitives.fetchFileList(); }, "space.getFileMeta": (_ctx, name: string): Promise => { return space.spacePrimitives.getFileMeta(name); }, "space.readFile": async (_ctx, name: string): Promise => { return (await space.spacePrimitives.readFile(name)).data; }, "space.writeFile": ( _ctx, name: string, data: Uint8Array, ): Promise => { return space.spacePrimitives.writeFile(name, data); }, "space.deleteFile": (_ctx, name: string) => { return space.spacePrimitives.deleteFile(name); }, }; }