kura
Version:
The FileSystem API abstraction library.
70 lines (63 loc) • 1.91 kB
text/typescript
import { DirectoryReaderAsync } from "./DirectoryReaderAsync";
import { EntryAsync } from "./EntryAsync";
import { FileEntryAsync } from "./FileEntryAsync";
import { DirectoryEntry, Entry, Flags } from "./filesystem";
import { FileSystemAsync } from "./FileSystemAsync";
import { createEntry } from "./FileSystemUtil";
export class DirectoryEntryAsync extends EntryAsync<DirectoryEntry> {
constructor(
fileSystemAsync: FileSystemAsync,
directoryEntry: DirectoryEntry
) {
super(fileSystemAsync, directoryEntry);
}
public createReader(): DirectoryReaderAsync {
return new DirectoryReaderAsync(
this.fileSystemAsync,
this.entry.createReader()
);
}
public getDirectory(
path: string,
options?: Flags
): Promise<DirectoryEntryAsync> {
return new Promise<DirectoryEntryAsync>((resolve, reject) => {
this.entry.getDirectory(
path,
options,
(entry) =>
resolve(new DirectoryEntryAsync(this.fileSystemAsync, entry)),
(err) => reject(err)
);
});
}
public getFile(path: string, options?: Flags): Promise<FileEntryAsync> {
return new Promise<FileEntryAsync>((resolve, reject) => {
this.entry.getFile(
path,
options,
(entry) => resolve(new FileEntryAsync(this.fileSystemAsync, entry)),
(err) => reject(err)
);
});
}
public list(): Promise<EntryAsync<Entry>[]> {
return new Promise<EntryAsync<Entry>[]>((resolve, reject) => {
this.entry.list(
(entries) =>
resolve(
entries.map((entry) => createEntry(this.fileSystemAsync, entry))
),
(err) => reject(err)
);
});
}
public removeRecursively(): Promise<void> {
return new Promise<void>((resolve, reject) => {
this.entry.removeRecursively(
() => resolve(),
(err) => reject(err)
);
});
}
}