+import fs from 'fs';
+
import { FileType } from '../types/FileType';
import FileUtils from '../utils/FileUtils';
-import Utils from '../utils/Utils';
-import fs from 'fs';
import logger from '../utils/Logger';
+import Utils from '../utils/Utils';
export default class AuthorizedTagsCache {
private static instance: AuthorizedTagsCache | null = null;
private readonly tagsCaches: Map<string, string[]>;
- private readonly FSWatchers: Map<string, fs.FSWatcher>;
+ private readonly FSWatchers: Map<string, fs.FSWatcher | undefined>;
private constructor() {
this.tagsCaches = new Map<string, string[]>();
- this.FSWatchers = new Map<string, fs.FSWatcher>();
+ this.FSWatchers = new Map<string, fs.FSWatcher | undefined>();
}
public static getInstance(): AuthorizedTagsCache {
- if (!AuthorizedTagsCache.instance) {
+ if (AuthorizedTagsCache.instance === null) {
AuthorizedTagsCache.instance = new AuthorizedTagsCache();
}
return AuthorizedTagsCache.instance;
}
- public getAuthorizedTags(file: string): string[] {
- if (!this.hasTags(file)) {
+ public getAuthorizedTags(file: string): string[] | undefined {
+ if (this.hasTags(file) === false) {
this.setTags(file, this.getAuthorizedTagsFromFile(file));
// Monitor authorization file
- !this.FSWatchers.has(file) &&
+ this.FSWatchers.has(file) === false &&
this.FSWatchers.set(
file,
FileUtils.watchJsonFile(
file,
null,
(event, filename) => {
- if (filename && event === 'change') {
+ if (!Utils.isEmptyString(filename) && event === 'change') {
try {
logger.debug(
- this.logPrefix(file) +
- ' ' +
- FileType.Authorization +
- ' file have changed, reload'
+ `${this.logPrefix(file)} ${FileType.Authorization} file have changed, reload`
);
this.deleteTags(file);
this.deleteFSWatcher(file);
return this.getTags(file);
}
+ public deleteAuthorizedTags(file: string): boolean {
+ return this.deleteTags(file);
+ }
+
private hasTags(file: string): boolean {
return this.tagsCaches.has(file);
}
return this.tagsCaches.set(file, tags);
}
- private getTags(file: string): string[] {
+ private getTags(file: string): string[] | undefined {
return this.tagsCaches.get(file);
}
}
private deleteFSWatcher(file: string): boolean {
- this.FSWatchers.get(file).close();
+ this.FSWatchers.get(file)?.close();
return this.FSWatchers.delete(file);
}
);
}
} else {
- logger.info(this.logPrefix(file) + ' No authorization file given)');
+ logger.info(`${this.logPrefix(file)} No authorization file given`);
}
return authorizedTags;
}