/* This Source Code Form is subject to the terms of the Mozilla Public
* License , v . 2 . 0 . If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
/**
* WeakMapMap is a weakmap collection dual - keyed using an object and a string .
* This is useful for keeping data compartmentalized e . g . grouped by tab .
*
* It ' s name comes from the internal structure which maps a WeakMap to a map ,
* which contains the target data .
*
* Usage :
* const myWeakMapMap = new WeakMapMap ( ) ;
* const key = { randomObject : true } ;
* myWeakMapMap . set ( key , " text1 " , " Some value1 " ) ;
* myWeakMapMap . set ( key , " text2 " , " Some value2 " ) ;
* myWeakMapMap . get ( key , " text1 " ) ; // Returns "Some value1"
* myWeakMapMap . get ( key , " text2 " ) ; // Returns "Some value2"
* myWeakMapMap . has ( key , " text1 " ) ; // Returns true
* myWeakMapMap . has ( key , " notakey " ) ; // Returns false
*/
"use strict" ;
class WeakMapMap {
constructor() {
this .clear();
}
/**
* Returns the value associated to the key and nestedKey , or undefined if
* there is none .
*
* @ param { object } key
* The key associated with the desired value .
* @ param { string } nestedKey
* The nested key associated with the desired value .
*/
get(key, nestedKey) {
if (!
this .has(key, nestedKey)) {
return undefined;
}
return this .store.get(key).get(nestedKey);
}
/**
* Returns the value associated to the key and nestedKey , or undefined if
* there is none .
*
* @ param { object } key
* The key associated with the desired value .
* @ param { string } nestedKey
* The nested key associated with the desired value .
*/
has(key, nestedKey) {
const hasKey =
this .store.has(key);
return hasKey &&
this .store.get(key).has(nestedKey);
}
/**
*
* @ param { object } key
* The key associated with the value .
* @ param { string } nestedKey
* The nested key associated with the value .
* @ param { any } value
* The value to add .
*/
set(key, nestedKey, value) {
if (!
this .store.has(key)) {
this .store.set(key,
new Map());
}
const innerMap =
this .store.get(key);
innerMap.set(nestedKey, value);
}
/**
* Removes the value associated to the key and nestedKey .
*
* @ param { object } key
* The key associated with the desired value .
* @ param { string } nestedKey
* The nested key associated with the desired value .
*
* @ returns True if an element in the store has been removed successfully .
* False if the key is not found in the store .
*/
delete (key, nestedKey) {
if (!
this .store.has(key)) {
return false ;
}
return this .store.get(key).
delete (nestedKey);
}
/**
* Clear the store .
*/
clear() {
this .store =
new WeakMap();
}
}
module.exports = WeakMapMap;
Messung V0.5 in Prozent C=91 H=100 G=95
¤ Dauer der Verarbeitung: 0.16 Sekunden
(vorverarbeitet am 2026-08-25)
¤
*© Formatika GbR, Deutschland