- // eslint-disable-next-line @typescript-eslint/no-misused-promises
- return fs.watch(Configuration.configurationFilePath).on('change', async (e): Promise<void> => {
- // Nullify to force configuration file reading
- Configuration.configuration = null;
- if (!Configuration.isUndefined(Configuration.configurationChangeCallback)) {
- await Configuration.configurationChangeCallback();
- }
- });
+ try {
+ return fs.watch(Configuration.configurationFile, (event, filename): void => {
+ if (filename && event === 'change') {
+ // Nullify to force configuration file reading
+ Configuration.configuration = null;
+ if (!Configuration.isUndefined(Configuration.configurationChangeCallback)) {
+ Configuration.configurationChangeCallback().catch((error) => {
+ throw typeof error === 'string' ? new Error(error) : error;
+ });
+ }
+ }
+ });
+ } catch (error) {
+ Configuration.handleFileException(
+ Configuration.logPrefix(),
+ FileType.Configuration,
+ Configuration.configurationFile,
+ error as NodeJS.ErrnoException
+ );
+ }
+ }
+
+ private static getDefaultPerformanceStorageUri(storageType: StorageType) {
+ const SQLiteFileName = `${Constants.DEFAULT_PERFORMANCE_RECORDS_DB_NAME}.db`;
+ switch (storageType) {
+ case StorageType.JSON_FILE:
+ return `file://${path.join(
+ path.resolve(__dirname, '../../'),
+ Constants.DEFAULT_PERFORMANCE_RECORDS_FILENAME
+ )}`;
+ case StorageType.SQLITE:
+ return `file://${path.join(path.resolve(__dirname, '../../'), SQLiteFileName)}`;
+ default:
+ throw new Error(`Performance storage URI is mandatory with storage type '${storageType}'`);
+ }