UNPKG

@neo-one/smart-contract-compiler

Version:

NEO•ONE TypeScript smart contract compiler.

25 lines (23 loc) 3.05 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const UNDEFINED_VALUE = Object.create(null); exports.createMemoized = () => { const caches = {}; return (cacheName, name, getValue) => { let cache = caches[cacheName]; if (cache === undefined) { cache = new Map(); caches[cacheName] = cache; } let value = cache.get(name); if (value === undefined) { value = getValue(); cache.set(name, value === undefined ? UNDEFINED_VALUE : value); } if (value === UNDEFINED_VALUE) { return undefined; } return value; }; }; //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNyZWF0ZU1lbW9pemVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQ0EsTUFBTSxlQUFlLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUUvQixRQUFBLGNBQWMsR0FBRyxHQUFHLEVBQUU7SUFFakMsTUFBTSxNQUFNLEdBQXFDLEVBQUUsQ0FBQztJQUVwRCxPQUFPLENBQU8sU0FBaUIsRUFBRSxJQUFPLEVBQUUsUUFBaUIsRUFBSyxFQUFFO1FBRWhFLElBQUksS0FBSyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQThCLENBQUM7UUFDM0QsSUFBSSxLQUFLLEtBQUssU0FBUyxFQUFFO1lBQ3ZCLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO1lBRWxCLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRyxLQUFLLENBQUM7U0FDM0I7UUFFRCxJQUFJLEtBQUssR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVCLElBQUksS0FBSyxLQUFLLFNBQVMsRUFBRTtZQUN2QixLQUFLLEdBQUcsUUFBUSxFQUFFLENBQUM7WUFDbkIsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsS0FBSyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNoRTtRQUVELElBQUksS0FBSyxLQUFLLGVBQWUsRUFBRTtZQUU3QixPQUFPLFNBQWdCLENBQUM7U0FDekI7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUMsQ0FBQztBQUNKLENBQUMsQ0FBQyIsImZpbGUiOiJuZW8tb25lLXNtYXJ0LWNvbnRyYWN0LWNvbXBpbGVyL3NyYy91dGlscy9jcmVhdGVNZW1vaXplZC5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZSBuby1udWxsLWtleXdvcmRcbmNvbnN0IFVOREVGSU5FRF9WQUxVRSA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVNZW1vaXplZCA9ICgpID0+IHtcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lIG5vLWFueSByZWFkb25seS1rZXl3b3JkXG4gIGNvbnN0IGNhY2hlczogeyBba2V5OiBzdHJpbmddOiBNYXA8YW55LCBhbnk+IH0gPSB7fTtcblxuICByZXR1cm4gPEssIFY+KGNhY2hlTmFtZTogc3RyaW5nLCBuYW1lOiBLLCBnZXRWYWx1ZTogKCkgPT4gVik6IFYgPT4ge1xuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZSBuby1hbnlcbiAgICBsZXQgY2FjaGUgPSBjYWNoZXNbY2FjaGVOYW1lXSBhcyBNYXA8YW55LCBhbnk+IHwgdW5kZWZpbmVkO1xuICAgIGlmIChjYWNoZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBjYWNoZSA9IG5ldyBNYXAoKTtcbiAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZSBuby1vYmplY3QtbXV0YXRpb25cbiAgICAgIGNhY2hlc1tjYWNoZU5hbWVdID0gY2FjaGU7XG4gICAgfVxuXG4gICAgbGV0IHZhbHVlID0gY2FjaGUuZ2V0KG5hbWUpO1xuICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB2YWx1ZSA9IGdldFZhbHVlKCk7XG4gICAgICBjYWNoZS5zZXQobmFtZSwgdmFsdWUgPT09IHVuZGVmaW5lZCA/IFVOREVGSU5FRF9WQUxVRSA6IHZhbHVlKTtcbiAgICB9XG5cbiAgICBpZiAodmFsdWUgPT09IFVOREVGSU5FRF9WQUxVRSkge1xuICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lIG5vLWFueVxuICAgICAgcmV0dXJuIHVuZGVmaW5lZCBhcyBhbnk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlO1xuICB9O1xufTtcbiJdfQ==