23 lines
472 B
JavaScript
23 lines
472 B
JavaScript
/*
|
|
MIT License http://www.opensource.org/licenses/mit-license.php
|
|
Author Tobias Koppers @sokra
|
|
*/
|
|
|
|
"use strict";
|
|
|
|
/**
|
|
* @template K
|
|
* @template V
|
|
* @param {Map<K, V>} map a map
|
|
* @param {K} key the key
|
|
* @param {function(): V} computer compute value
|
|
* @returns {V} value
|
|
*/
|
|
exports.provide = (map, key, computer) => {
|
|
const value = map.get(key);
|
|
if (value !== undefined) return value;
|
|
const newValue = computer();
|
|
map.set(key, newValue);
|
|
return newValue;
|
|
};
|