@dolittle/sdk.artifacts
Version:
Dolittle is a decentralized, distributed, event-driven microservice platform built to harness the power of events.
81 lines • 5.17 kB
JavaScript
;
// Copyright (c) Dolittle. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
Object.defineProperty(exports, "__esModule", { value: true });
exports.ComplexValueMap = void 0;
const NestedMap_1 = require("./NestedMap");
/**
* Represents a {@link Map} that handles complex value types - that can be decomposed into stable primitive keys - as keys.
* @template K The type of the complex key.
* @template V The type of the value.
* @template D The type of the decomposed primitive values key.
*/
class ComplexValueMap {
/**
* Initialises a new instance of the {@link ComplexValueMap} class.
* @param {Constructor} type - The type of the complex value key.
* @param {(K) => D} _decomposer - The callback to use for decomposing the complex valye key to primitive types.
* @param {number} depth - The length of a decomposed key.
*/
constructor(type, _decomposer, depth) {
this._decomposer = _decomposer;
this._map = new NestedMap_1.NestedMap(depth);
this[Symbol.toStringTag] = `ComplexValueMap<${type.name}>`;
}
/** @inheritdoc */
get size() {
return this._map.size;
}
/** @inheritdoc */
has(key) {
return this._map.has(this._decomposer(key));
}
/** @inheritdoc */
get(key) {
var _a;
return (_a = this._map.get(this._decomposer(key))) === null || _a === void 0 ? void 0 : _a[1];
}
/** @inheritdoc */
set(key, value) {
this._map.set(this._decomposer(key), [key, value]);
return this;
}
/** @inheritdoc */
delete(key) {
return this._map.delete(this._decomposer(key));
}
/** @inheritdoc */
clear() {
this._map.clear();
}
/** @inheritdoc */
*entries() {
for (const [_, [key, value]] of this._map.entries()) {
yield [key, value];
}
}
/** @inheritdoc */
[(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);
}
}
}
exports.ComplexValueMap = ComplexValueMap;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29tcGxleFZhbHVlTWFwLmpzIiwic291cmNlUm9vdCI6Ii4uLyIsInNvdXJjZXMiOlsiTWFwcGluZ3MvQ29tcGxleFZhbHVlTWFwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSwrQ0FBK0M7QUFDL0MscUdBQXFHOzs7QUFJckcsMkNBQXNEO0FBT3REOzs7OztHQUtHO0FBQ0gsTUFBYSxlQUFlO0lBR3hCOzs7OztPQUtHO0lBQ0gsWUFDSSxJQUFvQixFQUNILFdBQTBCLEVBQzNDLEtBQWtCO1FBREQsZ0JBQVcsR0FBWCxXQUFXLENBQWU7UUFHM0MsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLHFCQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsR0FBRyxtQkFBbUIsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDO0lBQy9ELENBQUM7SUFLRCxrQkFBa0I7SUFDbEIsSUFBSSxJQUFJO1FBQ0osT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztJQUMxQixDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLEdBQUcsQ0FBQyxHQUFNO1FBQ04sT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixHQUFHLENBQUMsR0FBTTs7UUFDTixPQUFPLE1BQUEsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQywwQ0FBRyxDQUFDLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLEdBQUcsQ0FBQyxHQUFNLEVBQUUsS0FBUTtRQUNoQixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDbkQsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixNQUFNLENBQUMsR0FBTTtRQUNULE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsS0FBSztRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixDQUFDLE9BQU87UUFDSixLQUFLLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQ2pELE1BQU0sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDdEI7SUFDTCxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLEVBekNDLE1BQU0sQ0FBQyxXQUFXLEVBeUNsQixNQUFNLENBQUMsUUFBUSxFQUFDO1FBQ2IsT0FBTyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixDQUFDLElBQUk7UUFDRCxLQUFLLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQ25DLE1BQU0sR0FBRyxDQUFDO1NBQ2I7SUFDTCxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLENBQUMsTUFBTTtRQUNILEtBQUssTUFBTSxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDckMsTUFBTSxLQUFLLENBQUM7U0FDZjtJQUNMLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsT0FBTyxDQUFDLFVBQXNELEVBQUUsT0FBYTtRQUN6RSxLQUFLLE1BQU0sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQ3ZDLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FDOUM7SUFDTCxDQUFDO0NBQ0o7QUFwRkQsMENBb0ZDIn0=