emscripten-wasm-loader
Version:
Common interface to load wasm module into isomorphic environment
32 lines (28 loc) • 1.24 kB
text/typescript
import { FS } from '../BaseAsmModule';
import { log } from '../util/logger';
import { isMounted } from './isMounted';
/**
* Creates a function to unmount file or directory in wasm internal memory filesystem
* If given mounted path prefix is pointing internal buffer file mounted via `mountBuffer`,
* it'll be removed. Otherwise it'll be unmounted and remove internal directory.
*
* @param {FS} FS wasm module filesystem
* @param {string} memPathId root path in memory filesystem to determine given unmount path is physical directory or buffer.
* This prefix path is generated automatically each time wasm module is loaded.
*
* @return {(mountedPath: string) => void} function to unmount given path under memory filesystem.
*/
const unmount = (FS: FS, memPathId: string): ((mountedPath: string) => void) => (mountedPath: string) => {
if (isMounted(FS, mountedPath, 'file') && mountedPath.indexOf(memPathId) > -1) {
log(`unmount: ${mountedPath} is typedArrayFile, unlink from memory`);
FS.unlink(mountedPath);
return;
}
if (isMounted(FS, mountedPath, 'dir')) {
log(`unmount: ${mountedPath} is directory, unmount`);
FS.unmount(mountedPath);
FS.rmdir(mountedPath);
return;
}
};
export { unmount };