| 'use strict'; |
| |
| const pa = require('path'); |
| const fs = require('fs'); |
| |
| class DefaultFileSystem { |
| |
| resolve(path) { |
| return pa.resolve(path); |
| } |
| |
| isSeparator(char) { |
| return char === '/' || char === pa.sep; |
| } |
| |
| isAbsolute(path) { |
| return pa.isAbsolute(path); |
| } |
| |
| join(...paths) { |
| return pa.join(...paths); |
| } |
| |
| basename(path) { |
| return pa.basename(path); |
| } |
| |
| dirname(path) { |
| return pa.dirname(path); |
| } |
| |
| statSync(path, options) { |
| return fs.statSync(path, options); |
| } |
| |
| readFileSync(path, options) { |
| return fs.readFileSync(path, options); |
| } |
| |
| } |
| |
| class VMFileSystem { |
| |
| constructor({fs: fsModule = fs, path: pathModule = pa} = {}) { |
| this.fs = fsModule; |
| this.path = pathModule; |
| } |
| |
| resolve(path) { |
| return this.path.resolve(path); |
| } |
| |
| isSeparator(char) { |
| return char === '/' || char === this.path.sep; |
| } |
| |
| isAbsolute(path) { |
| return this.path.isAbsolute(path); |
| } |
| |
| join(...paths) { |
| return this.path.join(...paths); |
| } |
| |
| basename(path) { |
| return this.path.basename(path); |
| } |
| |
| dirname(path) { |
| return this.path.dirname(path); |
| } |
| |
| statSync(path, options) { |
| return this.fs.statSync(path, options); |
| } |
| |
| readFileSync(path, options) { |
| return this.fs.readFileSync(path, options); |
| } |
| |
| } |
| |
| exports.DefaultFileSystem = DefaultFileSystem; |
| exports.VMFileSystem = VMFileSystem; |