UNPKG

typescript-immutable-utils

Version:

Type-safe immutability helpers for simple objects and arrays

57 lines (56 loc) 1.6 kB
import { update } from "./objects"; export function createDict() { return Object.create(null); } export function copyDict(dict) { return Object.assign(createDict(), dict); } export function hasKey(dict, key) { return Object.prototype.hasOwnProperty.call(dict, key.toString()); } export function mapValues(dict, map) { var ret = createDict(); var changed = false; for (var _i = 0, _a = Object.keys(dict); _i < _a.length; _i++) { var key = _a[_i]; ret[key] = map(dict[key], key); if (ret[key] !== dict[key]) changed = true; } return changed ? ret : dict; } export function union(target, source) { return update(target, source); } export function setKey(dict, key, value) { if (dict[key] === value) return dict; var ret = copyDict(dict); ret[key] = value; return ret; } export function removeKey(dict) { var keys = []; for (var _i = 1; _i < arguments.length; _i++) { keys[_i - 1] = arguments[_i]; } var ret = copyDict(dict); var changed = false; for (var _a = 0, keys_1 = keys; _a < keys_1.length; _a++) { var key = keys_1[_a]; if (hasKey(ret, key.toString())) { changed = true; delete ret[key]; } } return changed ? ret : dict; } export function fromKeys(keys, values) { var ret = createDict(); var isFunction = typeof values === 'function'; for (var _i = 0, keys_2 = keys; _i < keys_2.length; _i++) { var key = keys_2[_i]; ret[key] = isFunction ? values(key) : values; } return ret; }