@mdfriday/foundry
Version:
The core engine of MDFriday. Convert Markdown and shortcodes into fully themed static sites – Hugo-style, powered by TypeScript.
124 lines (123 loc) • 3.97 kB
TypeScript
export interface FileInfo {
name(): string;
size(): number;
mode(): number;
modTime(): Date;
isDir(): boolean;
sys(): any;
}
export interface File {
close(): Promise<void>;
read(buffer: Uint8Array): Promise<{
bytesRead: number;
buffer: Uint8Array;
}>;
readAt(buffer: Uint8Array, offset: number): Promise<{
bytesRead: number;
buffer: Uint8Array;
}>;
seek(offset: number, whence: number): Promise<number>;
write(buffer: Uint8Array): Promise<{
bytesWritten: number;
buffer: Uint8Array;
}>;
writeAt(buffer: Uint8Array, offset: number): Promise<{
bytesWritten: number;
buffer: Uint8Array;
}>;
name(): string;
readdir(count: number): Promise<FileInfo[]>;
readdirnames(n: number): Promise<string[]>;
stat(): Promise<FileInfo>;
sync(): Promise<void>;
truncate(size: number): Promise<void>;
writeString(s: string): Promise<{
bytesWritten: number;
}>;
}
export interface Fs {
create(name: string): Promise<File>;
mkdir(name: string, perm: number): Promise<void>;
mkdirAll(path: string, perm: number): Promise<void>;
open(name: string): Promise<File>;
openFile(name: string, flag: number, perm: number): Promise<File>;
remove(name: string): Promise<void>;
removeAll(path: string): Promise<void>;
rename(oldname: string, newname: string): Promise<void>;
stat(name: string): Promise<FileInfo>;
name(): string;
chmod(name: string, mode: number): Promise<void>;
chown(name: string, uid: number, gid: number): Promise<void>;
chtimes(name: string, atime: Date, mtime: Date): Promise<void>;
}
export declare class FsError extends Error {
code?: string | undefined;
constructor(message: string, code?: string | undefined);
}
export declare const ErrFileClosed: FsError;
export declare const ErrOutOfRange: FsError;
export declare const ErrTooLarge: FsError;
export declare const ErrFileNotFound: FsError;
export declare const ErrFileExists: FsError;
export declare const ErrDestinationExists: FsError;
export declare enum OpenFlags {
O_RDONLY = 0,
O_WRONLY = 1,
O_RDWR = 2,
O_APPEND = 8,
O_CREATE = 64,
O_EXCL = 128,
O_SYNC = 256,
O_TRUNC = 512
}
export interface FileMetaInfo extends FileInfo {
fileName(): string;
relativeFilename(): string;
component(): string;
root(): string;
open(): Promise<File>;
}
export type WalkFunc = (path: string, info: FileMetaInfo) => Promise<void | Error>;
export type WalkHook = (dir: FileMetaInfo, path: string, readdir: FileMetaInfo[]) => Promise<FileMetaInfo[]>;
export interface WalkCallback {
hookPre?: WalkHook;
walkFn: WalkFunc;
hookPost?: WalkHook;
}
export interface WalkwayConfig {
info?: FileMetaInfo;
dirEntries?: FileMetaInfo[];
ignoreFile?: (filename: string) => boolean;
failOnNotExist?: boolean;
sortDirEntries?: boolean;
}
export declare const ErrSkipDir: Error;
export declare const ErrWalkAlreadyWalked: FsError;
export interface FilesystemIterator {
filesystem(i: number): Fs | null;
numFilesystems(): number;
}
export type DirsMerger = (lofi: FileInfo[], bofi: FileInfo[]) => FileInfo[];
export interface OverlayFsOptions {
fss: Fs[];
firstWritable?: boolean;
dirsMerger?: DirsMerger;
}
export interface OverlayFs extends Fs, FilesystemIterator {
append(...fss: Fs[]): OverlayFs;
withDirsMerger(merger: DirsMerger): OverlayFs;
}
export type DirOpener = () => Promise<File>;
export type InfoFunc = () => Promise<FileInfo>;
export interface OverlayDirOptions {
name?: string;
fss?: Fs[];
dirOpeners?: DirOpener[];
info?: InfoFunc;
merge?: DirsMerger;
}
export declare class OverlayFsError extends FsError {
constructor(message: string, code?: string);
}
export declare const ErrNoFilesystems: OverlayFsError;
export declare const ErrOperationNotSupported: OverlayFsError;