# umap **Repository Path**: mirrors_WebReflection/umap ## Basic Information - **Project Name**: umap - **Description**: The smallest, yet handy, Map and WeakMap utility ever. - **Primary Language**: Unknown - **License**: ISC - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-08-19 - **Last Updated**: 2026-01-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # ยตmap ๐Ÿ—บ [![Build Status](https://travis-ci.com/WebReflection/umap.svg?branch=master)](https://travis-ci.com/WebReflection/umap) [![Coverage Status](https://coveralls.io/repos/github/WebReflection/umap/badge.svg?branch=master)](https://coveralls.io/github/WebReflection/umap?branch=master) The smallest, yet handy, `Map` and `WeakMap` utility ever. ```js import umap from 'umap'; // const umap = require('umap'); const map = umap(new Map); console.assert( (map.get(1) || map.set(1, Math.random())) === (map.get(1) || map.set(1, Math.random())), 'a very common pattern I have with Map instances' ); const weakMap = umap(new WeakMap); console.assert( (weakMap.get(map) || weakMap.set(map, Math.random())) === (weakMap.get(map) || weakMap.set(map, Math.random())), 'which I use even more with WeakMap instances' ); ``` ### ๐Ÿค” Reason I am super tired of creating workarounds for the fact `map.set(key, value)` doesn't return value but the `map` itself, and so does the _WeakMap_. This module will help, at least me, dropping all one-off helpers, here and there, to always do the same thing: ```js // before ๐Ÿ˜ข const cache = new WeakMap; const setThing = (key, value) => { cache.set(key, value); return value; }; const thing = cache.get(key) || setThing(key, value); // with umap ๐ŸŽ‰ const cache = umap(new WeakMap); const thing = cache.get(key) || cache.set(key, value); ``` ### ๐ŸŒˆ It's Done! This module is meant to solve one pattern only, and it does exactly that, so that if you store _falsy_ values in _Maps_ or _WeakMaps_, it is not a concern of this module.