mirror of
https://github.com/smogon/pokemon-showdown.git
synced 2026-03-21 17:25:10 -05:00
FS: Don't crash if config doesn't exist
QOL. Also, if we _do_ want to export this as a module, we need this to not crash if Config doesn't exist.
This commit is contained in:
parent
652bbb1064
commit
48ce5d720f
44
lib/fs.ts
44
lib/fs.ts
|
|
@ -36,7 +36,9 @@ interface PendingUpdate {
|
|||
}
|
||||
|
||||
declare const __fsState: {pendingUpdates: Map<string, PendingUpdate>};
|
||||
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<void>((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<void>((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<void>((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<void>((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<void>((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<void>((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<void>((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<void>((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<void>((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) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user