diff --git a/lib/fs.ts b/lib/fs.ts index e0ac6b82ab..3a252021cc 100644 --- a/lib/fs.ts +++ b/lib/fs.ts @@ -36,7 +36,9 @@ interface PendingUpdate { } declare const __fsState: {pendingUpdates: Map}; -declare const global: {__fsState: typeof __fsState}; +// config needs to be declared here since we access it as global.Config?.nofswriting +// (so we can use it without the global) +declare const global: {__fsState: typeof __fsState, Config: any}; if (!global.__fsState) { global.__fsState = { pendingUpdates: new Map(), @@ -115,7 +117,7 @@ export class FSPath { } write(data: string | Buffer, options: AnyObject = {}) { - if (Config.nofswriting) return Promise.resolve(); + if (global.Config?.nofswriting) return Promise.resolve(); return new Promise((resolve, reject) => { fs.writeFile(this.path, data, options, err => { err ? reject(err) : resolve(); @@ -124,7 +126,7 @@ export class FSPath { } writeSync(data: string | Buffer, options: AnyObject = {}) { - if (Config.nofswriting) return; + if (global.Config?.nofswriting) return; return fs.writeFileSync(this.path, data, options); } @@ -157,7 +159,7 @@ export class FSPath { * with synchronous code; just use `safeWriteSync`. */ writeUpdate(dataFetcher: () => string | Buffer, options: AnyObject = {}) { - if (Config.nofswriting) return; + if (global.Config?.nofswriting) return; const pendingUpdate: PendingUpdate | undefined = __fsState.pendingUpdates.get(this.path); const throttleTime = options.throttle ? Date.now() + options.throttle : 0; @@ -230,7 +232,7 @@ export class FSPath { } append(data: string | Buffer, options: AnyObject = {}) { - if (Config.nofswriting) return Promise.resolve(); + if (global.Config?.nofswriting) return Promise.resolve(); return new Promise((resolve, reject) => { fs.appendFile(this.path, data, options, err => { err ? reject(err) : resolve(); @@ -239,12 +241,12 @@ export class FSPath { } appendSync(data: string | Buffer, options: AnyObject = {}) { - if (Config.nofswriting) return; + if (global.Config?.nofswriting) return; return fs.appendFileSync(this.path, data, options); } symlinkTo(target: string) { - if (Config.nofswriting) return Promise.resolve(); + if (global.Config?.nofswriting) return Promise.resolve(); return new Promise((resolve, reject) => { fs.symlink(target, this.path, err => { err ? reject(err) : resolve(); @@ -253,12 +255,12 @@ export class FSPath { } symlinkToSync(target: string) { - if (Config.nofswriting) return; + if (global.Config?.nofswriting) return; return fs.symlinkSync(target, this.path); } copyFile(dest: string) { - if (Config.nofswriting) return Promise.resolve(); + if (global.Config?.nofswriting) return Promise.resolve(); return new Promise((resolve, reject) => { fs.copyFile(this.path, dest, err => { err ? reject(err) : resolve(); @@ -267,7 +269,7 @@ export class FSPath { } rename(target: string) { - if (Config.nofswriting) return Promise.resolve(); + if (global.Config?.nofswriting) return Promise.resolve(); return new Promise((resolve, reject) => { fs.rename(this.path, target, err => { err ? reject(err) : resolve(); @@ -276,7 +278,7 @@ export class FSPath { } renameSync(target: string) { - if (Config.nofswriting) return; + if (global.Config?.nofswriting) return; return fs.renameSync(this.path, target); } @@ -297,7 +299,7 @@ export class FSPath { } createWriteStream(options = {}): WriteStream { - if (Config.nofswriting) { + if (global.Config?.nofswriting) { // @ts-ignore return new WriteStream({write() {}}); } @@ -306,7 +308,7 @@ export class FSPath { } createAppendStream(options = {}): WriteStream { - if (Config.nofswriting) { + if (global.Config?.nofswriting) { // @ts-ignore return new WriteStream({write() {}}); } @@ -317,7 +319,7 @@ export class FSPath { } unlinkIfExists() { - if (Config.nofswriting) return Promise.resolve(); + if (global.Config?.nofswriting) return Promise.resolve(); return new Promise((resolve, reject) => { fs.unlink(this.path, err => { if (err && err.code === 'ENOENT') return resolve(); @@ -327,7 +329,7 @@ export class FSPath { } unlinkIfExistsSync() { - if (Config.nofswriting) return; + if (global.Config?.nofswriting) return; try { fs.unlinkSync(this.path); } catch (err) { @@ -336,7 +338,7 @@ export class FSPath { } async rmdir(recursive?: boolean) { - if (Config.nofswriting) return Promise.resolve(); + if (global.Config?.nofswriting) return Promise.resolve(); return new Promise((resolve, reject) => { fs.rmdir(this.path, {recursive}, err => { err ? reject(err) : resolve(); @@ -345,12 +347,12 @@ export class FSPath { } rmdirSync(recursive?: boolean) { - if (Config.nofswriting) return; + if (global.Config?.nofswriting) return; return fs.rmdirSync(this.path, {recursive}); } mkdir(mode: string | number = 0o755) { - if (Config.nofswriting) return Promise.resolve(); + if (global.Config?.nofswriting) return Promise.resolve(); return new Promise((resolve, reject) => { fs.mkdir(this.path, mode, err => { err ? reject(err) : resolve(); @@ -359,12 +361,12 @@ export class FSPath { } mkdirSync(mode: string | number = 0o755) { - if (Config.nofswriting) return; + if (global.Config?.nofswriting) return; return fs.mkdirSync(this.path, mode); } mkdirIfNonexistent(mode: string | number = 0o755) { - if (Config.nofswriting) return Promise.resolve(); + if (global.Config?.nofswriting) return Promise.resolve(); return new Promise((resolve, reject) => { fs.mkdir(this.path, mode, err => { if (err && err.code === 'EEXIST') return resolve(); @@ -374,7 +376,7 @@ export class FSPath { } mkdirIfNonexistentSync(mode: string | number = 0o755) { - if (Config.nofswriting) return; + if (global.Config?.nofswriting) return; try { fs.mkdirSync(this.path, mode); } catch (err) {