UNPKG

browserfs

Version:

A filesystem in your browser!

49 lines (44 loc) 2.07 kB
import {FileSystemConstructor, BFSCallback, FileSystem} from './file_system'; import {ApiError} from './api_error'; import {checkOptions} from './util'; import AsyncMirror from '../backend/AsyncMirror'; import Dropbox from '../backend/Dropbox'; import Emscripten from '../backend/Emscripten'; import FolderAdapter from '../backend/FolderAdapter'; import HTML5FS from '../backend/HTML5FS'; import InMemory from '../backend/InMemory'; import IndexedDB from '../backend/IndexedDB'; import LocalStorage from '../backend/LocalStorage'; import MountableFileSystem from '../backend/MountableFileSystem'; import OverlayFS from '../backend/OverlayFS'; import WorkerFS from '../backend/WorkerFS'; import XmlHttpRequest from '../backend/XmlHttpRequest'; import ZipFS from '../backend/ZipFS'; import IsoFS from '../backend/IsoFS'; // Monkey-patch `Create` functions to check options before file system initialization. [AsyncMirror, Dropbox, Emscripten, FolderAdapter, HTML5FS, InMemory, IndexedDB, IsoFS, LocalStorage, MountableFileSystem, OverlayFS, WorkerFS, XmlHttpRequest, ZipFS].forEach((fsType: FileSystemConstructor) => { const create = fsType.Create; fsType.Create = function(opts?: any, cb?: BFSCallback<FileSystem>): void { const oneArg = typeof(opts) === "function"; const normalizedCb = oneArg ? opts : cb; const normalizedOpts = oneArg ? {} : opts; function wrappedCb(e?: ApiError): void { if (e) { normalizedCb(e); } else { create.call(fsType, normalizedOpts, normalizedCb); } } checkOptions(fsType, normalizedOpts, wrappedCb); }; }); /** * @hidden */ const Backends = { AsyncMirror, Dropbox, Emscripten, FolderAdapter, HTML5FS, InMemory, IndexedDB, IsoFS, LocalStorage, MountableFileSystem, OverlayFS, WorkerFS, XmlHttpRequest, ZipFS }; // Make sure all backends cast to FileSystemConstructor (for type checking) const _: {[name: string]: FileSystemConstructor} = Backends; // tslint:disable-next-line:no-unused-expression _; // tslint:enable-next-line:no-unused-expression export default Backends;