/** * Patch process to add process.cwd(), always giving the root dir. * NOTE: this line needs to happen *before* we require in `path`. */ process.cwd = () => '/'; /** * https://github.com/browserify/path-browserify via Parcel. * We use is as a base for our own Filer.Path, and patch/add * a few things we need for the browser environment. */ const nodePath = require('path'); const filerPath = Object.assign({}, nodePath); /** * Patch path.basename() to return / vs. '' */ filerPath.basename = (path, ext) => { const basename = nodePath.basename(path, ext); return basename === '' ? '/' : basename; }; /** * Patch path.normalize() to not add a trailing / */ filerPath.normalize = (path) => { path = nodePath.normalize(path); return path === '/' ? path : filerPath.removeTrailing(path); }; /** * Add new utility method isNull() to path: check for null paths. */ filerPath.isNull = path => ('' + path).indexOf('\u0000') !== -1; /** * Add new utility method addTrailing() to add trailing / without doubling to //. */ filerPath.addTrailing = path => path.replace(/\/*$/, '/'); /** * Add new utility method removeTrailing() to remove trailing /, dealing with multiple */ filerPath.removeTrailing = path => { path = path.replace(/\/*$/, ''); return path === '' ? '/' : path; }; module.exports = filerPath;