in packages/redux-dynamic-modules-core/src/Utils/RefCounter.ts [98:146]
export function getStringRefCounter(): IRefCounter<string> {
const values: { [key: string]: number } = {};
return {
/**
* Returns current ref count for the key
*/
getCount: (key: string): number => {
if (key === undefined || key === null) {
return 0;
}
return values[key] || 0;
},
/**
* Adds given key for ref counting or increments ref count
*/
add: (key: string): void => {
if (key === undefined || key === null) {
return;
}
if (!values[key]) {
values[key] = 1;
} else {
values[key]++;
}
},
/**
* Decreases ref count for the given key, if the ref count reaches 0 removes the key and returns true
*/
remove: (key: string): boolean => {
if (key === undefined || key === null) {
return false;
}
if (!values[key]) {
return false;
}
if (values[key] === 1) {
delete values[key];
return true;
}
values[key]--;
return false;
},
};
}