VirtualFileSystem
type VirtualFileSystem =
{
DirectoryExists: (string -> bool voption) voption
FileExists: (string -> bool voption) voption
GetAccessibleEntries: (string -> FileSystemEntries voption) voption
ReadFile: (string -> FileRead) voption
Realpath: (string -> string voption) voption
WriteFile: (string -> string -> unit) voption
}| Assembly | Xantham.TypeScript.Wire |
The virtual filesystem the server delegates to when the process is started with --callbacks=, mirroring dist/api/fs.d.ts. Every member is optional, and one left unset is not registered at all, so the server never asks about it.
This exists because the raw TsGoCallback surface is unforgiving: each callback has its own reply shape, the shapes appear nowhere in the schema, and a wrong one is not an error but a Go panic that kills the process mid-request. The encoding is applied here once, transcribed from dist/api/sync/client.js:35-56.
ValueNone from a member means "not answered" - the empty reply the server reads as "fall back to the real filesystem" - which is why ReadFile has its own three-way type rather than returning an option.
Fields
GetAccessibleEntries: (string -> FileSystemEntries voption) voptionFunctions and values
callbacks (fs: VirtualFileSystem) : IDictionary<string,TsGoCallback>
callbacks (fs: VirtualFileSystem) : IDictionary<string,TsGoCallback>The callback table to hand to TscChannel or TscMailbox. Only the members that are set appear in it, and only those names reach --callbacks=.
Properties
static member Default: VirtualFileSystem
static member Default: VirtualFileSystemA filesystem that answers nothing, so every path falls back to the real one. Copy-update it with the members you mean to serve.