UNPKG

factory-map

Version:

Extension of ECMAScript 6 Map to provide default values where no key exists.

35 lines (34 loc) 1.2 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); class FactoryMap extends Map { constructor(iterableOrDefaultValueFactory, defaultValueFactory) { const isFunctionOrUndefined = (f) => iterableOrDefaultValueFactory === undefined || typeof iterableOrDefaultValueFactory === 'function'; if (isFunctionOrUndefined(iterableOrDefaultValueFactory)) { if (iterableOrDefaultValueFactory && defaultValueFactory) { throw new Error('Unexpected constructor params'); } super(); this.factory = iterableOrDefaultValueFactory; } else { super(iterableOrDefaultValueFactory); this.factory = defaultValueFactory; } } get(key, defaultValueFactory) { let r = super.get(key); if (r === undefined) { if (defaultValueFactory) { r = defaultValueFactory(key); } else if (this.factory) { r = this.factory(key); } if (r !== undefined) { super.set(key, r); } } return r; } } exports.FactoryMap = FactoryMap;