INNER CODE UNIT · TypeScript
compute
babyfish-ct/graphql-ts-client · api/src/DependencyManager.ts:276
function compute<K, V>(map: Map<K, V>, key: K, valueSupplier: (key: K) => V): V {
let value = map.get(key);
if (value === undefined) {
map.set(key, value = valueSupplier(key));
}
return value;
}
type RecursiveResourceMap = Map<string, Resources | RecursiveResourceMap>;
function removeResource(recursiveResourceMap: RecursiveResourceMap, resource: string) {
const deletedKeys = new Set<string>();
for (const [key, deeperValue] of recursiveResourceMap) {
if (deeperValue instanceof Resources) {
if (deeperValue.release(resource) === 0) {
deletedKeys.add(key);
}
} else {
removeResource(deeperValue, resource);