UNPKG

@dolittle/sdk.artifacts

Version:

Dolittle is a decentralized, distributed, event-driven microservice platform built to harness the power of events.

160 lines 10.4 kB
"use strict"; // Copyright (c) Dolittle. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. var _a; Object.defineProperty(exports, "__esModule", { value: true }); exports.NestedMap = void 0; const CannotAccessMapsOfNestedMapWithNoMoreLevels_1 = require("./CannotAccessMapsOfNestedMapWithNoMoreLevels"); const CannotAccessValuesOfNestedMapWithMoreLevels_1 = require("./CannotAccessValuesOfNestedMapWithMoreLevels"); const IncorrectNumberOfPrimitiveKeysProvided_1 = require("./IncorrectNumberOfPrimitiveKeysProvided"); /** * Represents a {@link Map} that handles a set of primitive keys in a recursive structure. */ class NestedMap { /** * Initialises a new instance of the {@link NestedMap} class. * @param {number} depth - The number of keys from this map and down. */ constructor(depth) { this.depth = depth; this._map = new Map(); /** @inheritdoc */ this[_a] = 'NestedMap'; } /** @inheritdoc */ get size() { if (this.depth === 1) { return this._map.size; } let size = 0; for (const subMap of this._maps.values()) { size += subMap.size; } return size; } /** @inheritdoc */ has(key) { this.throwIfIncorrectNumberOfPrimitiveKeysProvided(key); const [first, ...rest] = key; if (!this._map.has(first)) return false; if (this.depth === 1) { return true; } else { return this._maps.get(first).has(rest); } } /** @inheritdoc */ get(key) { var _b; this.throwIfIncorrectNumberOfPrimitiveKeysProvided(key); const [first, ...rest] = key; if (this.depth === 1) { return this._values.get(first); } else { return (_b = this._maps.get(first)) === null || _b === void 0 ? void 0 : _b.get(rest); } } /** @inheritdoc */ set(key, value) { this.throwIfIncorrectNumberOfPrimitiveKeysProvided(key); const [first, ...rest] = key; if (this.depth === 1) { this._values.set(first, value); } else { let map = this._maps.get(first); if (map === undefined) { map = new NestedMap(this.depth - 1); this._maps.set(first, map); } map.set(rest, value); } return this; } /** @inheritdoc */ delete(key) { this.throwIfIncorrectNumberOfPrimitiveKeysProvided(key); const [first, ...rest] = key; if (this.depth === 1) { return this._values.delete(first); } else { if (!this._maps.has(first)) { return false; } const map = this._maps.get(first); const deleted = map.delete(rest); if (deleted && map.internalMapSize === 0) { this._map.delete(first); } return deleted; } } /** @inheritdoc */ clear() { this._map.clear(); } /** @inheritdoc */ *entries() { for (const [first, entry] of this._map.entries()) { if (this.depth === 1) { yield [[first], entry]; } else { for (const [rest, value] of entry) { yield [[first, ...rest], value]; } } } } /** @inheritdoc */ [(_a = Symbol.toStringTag, Symbol.iterator)]() { return this.entries(); } /** @inheritdoc */ *keys() { for (const [key, _] of this.entries()) { yield key; } } /** @inheritdoc */ *values() { for (const [_, value] of this.entries()) { yield value; } } /** @inheritdoc */ forEach(callbackfn, thisArg) { for (const [key, value] of this.entries()) { callbackfn.call(thisArg, value, key, this); } } /** * Gets the actual size of the internal map without recursing down into nested maps. */ get internalMapSize() { return this._map.size; } throwIfIncorrectNumberOfPrimitiveKeysProvided(keys) { if (keys.length !== this.depth) { throw new IncorrectNumberOfPrimitiveKeysProvided_1.IncorrectNumberOfPrimitiveKeysProvided(keys.length, this.depth); } } get _maps() { if (this.depth === 1) { throw new CannotAccessMapsOfNestedMapWithNoMoreLevels_1.CannotAccessMapsOfNestedMapWithNoMoreLevels(); } return this._map; } get _values() { if (this.depth !== 1) { throw new CannotAccessValuesOfNestedMapWithMoreLevels_1.CannotAccessValuesOfNestedMapWithMoreLevels(this.depth); } return this._map; } } exports.NestedMap = NestedMap; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTmVzdGVkTWFwLmpzIiwic291cmNlUm9vdCI6Ii4uLyIsInNvdXJjZXMiOlsiTWFwcGluZ3MvTmVzdGVkTWFwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSwrQ0FBK0M7QUFDL0MscUdBQXFHOzs7O0FBRXJHLCtHQUE0RztBQUM1RywrR0FBNEc7QUFDNUcscUdBQWtHO0FBT2xHOztHQUVHO0FBQ0gsTUFBYSxTQUFTO0lBR2xCOzs7T0FHRztJQUNILFlBQXFCLEtBQWtCO1FBQWxCLFVBQUssR0FBTCxLQUFLLENBQWE7UUFOdEIsU0FBSSxHQUFnRCxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBUy9FLGtCQUFrQjtRQUNsQixRQUFvQixHQUFHLFdBQVcsQ0FBQztJQUhuQyxDQUFDO0lBS0Qsa0JBQWtCO0lBQ2xCLElBQUksSUFBSTtRQUNKLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxDQUFDLEVBQUU7WUFDbEIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztTQUN6QjtRQUVELElBQUksSUFBSSxHQUFHLENBQUMsQ0FBQztRQUNiLEtBQUssTUFBTSxNQUFNLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUN0QyxJQUFJLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQztTQUN2QjtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsR0FBRyxDQUFDLEdBQU07UUFDTixJQUFJLENBQUMsNkNBQTZDLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFeEQsTUFBTSxDQUFDLEtBQUssRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQztRQUM3QixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDO1lBQUUsT0FBTyxLQUFLLENBQUM7UUFFeEMsSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLENBQUMsRUFBRTtZQUNsQixPQUFPLElBQUksQ0FBQztT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