export class JSONFileStorage extends Storage {
private fd: number | null = null;
- constructor(storageURI: string, logPrefix: string) {
- super(storageURI, logPrefix);
- this.dbName = this.storageURI.pathname;
+ constructor(storageUri: string, logPrefix: string) {
+ super(storageUri, logPrefix);
+ this.dbName = this.storageUri.pathname;
}
public storePerformanceStatistics(performanceStatistics: Statistics): void {
const fileData = fs.readFileSync(this.dbName, 'utf8');
const performanceRecords: Statistics[] = fileData ? JSON.parse(fileData) as Statistics[] : [];
performanceRecords.push(performanceStatistics);
- fs.writeFileSync(this.dbName, JSON.stringify(performanceRecords, null, 2), 'utf8');
+ fs.writeFileSync(
+ this.dbName,
+ JSON.stringify(performanceRecords,
+ (key, value) => {
+ if (value instanceof Map) {
+ return {
+ dataType: 'Map',
+ value: [...value]
+ };
+ }
+ return value as Statistics;
+ },
+ 2),
+ 'utf8'
+ );
} catch (error) {
- FileUtils.handleFileException(this.logPrefix, Constants.PERFORMANCE_RECORDS_FILETYPE, this.dbName, error);
+ FileUtils.handleFileException(this.logPrefix, Constants.PERFORMANCE_RECORDS_FILETYPE, this.dbName, error as NodeJS.ErrnoException);
}
await release();
})
- .catch(() => { });
+ .catch(() => { /* This is intentional */ });
}
public open(): void {
this.fd = fs.openSync(this.dbName, 'a+');
}
} catch (error) {
- FileUtils.handleFileException(this.logPrefix, Constants.PERFORMANCE_RECORDS_FILETYPE, this.dbName, error);
+ FileUtils.handleFileException(this.logPrefix, Constants.PERFORMANCE_RECORDS_FILETYPE, this.dbName, error as NodeJS.ErrnoException);
}
}
this.fd = null;
}
} catch (error) {
- FileUtils.handleFileException(this.logPrefix, Constants.PERFORMANCE_RECORDS_FILETYPE, this.dbName, error);
+ FileUtils.handleFileException(this.logPrefix, Constants.PERFORMANCE_RECORDS_FILETYPE, this.dbName, error as NodeJS.ErrnoException);
}
}