obsidian-dev-utils
Version:
This is the collection of useful functions that you can use for your Obsidian plugin development
129 lines (126 loc) • 9.27 kB
JavaScript
/*
THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
if you want to view the source, please visit the github repository of this plugin
*/
(function initEsm(){if(globalThis.process){return}const browserProcess={browser:true,cwd(){return"/"},env:{},platform:"android"};globalThis.process=browserProcess})();
class TwoWayMap {
keyValueMap = /* @__PURE__ */ new Map();
valueKeyMap = /* @__PURE__ */ new Map();
/**
* Creates a new two-way map.
*
* @param entries - Entries to initialize the map with.
*/
constructor(entries = []) {
for (const [key, value] of entries) {
this.set(key, value);
}
}
/**
* Clears the map.
*/
clear() {
this.keyValueMap.clear();
this.valueKeyMap.clear();
}
/**
* Deletes a key from the map.
*
* @param key - The key.
*/
deleteKey(key) {
const value = this.getValue(key);
if (value !== void 0) {
this.valueKeyMap.delete(value);
}
this.keyValueMap.delete(key);
}
/**
* Deletes a value from the map.
*
* @param value - The value.
*/
deleteValue(value) {
const key = this.getKey(value);
if (key !== void 0) {
this.keyValueMap.delete(key);
}
this.valueKeyMap.delete(value);
}
/**
* Gets all entries in the map.
*
* @returns An iterator over all entries in the map.
*/
entries() {
return this.keyValueMap.entries();
}
/**
* Gets a key by its value.
*
* @param value - The value.
* @returns The key.
*/
getKey(value) {
return this.valueKeyMap.get(value);
}
/**
* Gets a value by its key.
*
* @param key - The key.
* @returns The value.
*/
getValue(key) {
return this.keyValueMap.get(key);
}
/**
* Checks if the map has a key.
*
* @param key - The key.
* @returns `true` if the map has the key, `false` otherwise.
*/
hasKey(key) {
return this.keyValueMap.has(key);
}
/**
* Checks if the map has a value.
*
* @param value - The value.
* @returns `true` if the map has the value, `false` otherwise.
*/
hasValue(value) {
return this.valueKeyMap.has(value);
}
/**
* Gets all keys in the map.
*
* @returns An iterator over all keys in the map.
*/
keys() {
return this.keyValueMap.keys();
}
/**
* Sets a key-value pair in the map.
*
* @param key - The key.
* @param value - The value.
*/
set(key, value) {
this.deleteKey(key);
this.deleteValue(value);
this.keyValueMap.set(key, value);
this.valueKeyMap.set(value, key);
}
/**
* Gets all values in the map.
*
* @returns An iterator over all values in the map.
*/
values() {
return this.valueKeyMap.keys();
}
}
export {
TwoWayMap
};
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL1R3b1dheU1hcC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAcGFja2FnZURvY3VtZW50YXRpb25cbiAqXG4gKiBUd28td2F5IG1hcC5cbiAqL1xuXG4vKipcbiAqIEEgbWFwIHRoYXQgYWxsb3dzIHlvdSB0byBsb29rIHVwIGEgdmFsdWUgYnkgaXRzIGtleSBhbmQgdmljZSB2ZXJzYS5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIGNvbnN0IG1hcCA9IG5ldyBUd29XYXlNYXA8c3RyaW5nLCBudW1iZXI+KCk7XG4gKiBtYXAuc2V0KCdmb28nLCA0Mik7XG4gKiBtYXAuZ2V0VmFsdWUoJ2ZvbycpOyAvLyA0MlxuICogbWFwLmdldEtleSg0Mik7IC8vICdmb28nXG4gKiBtYXAuZGVsZXRlS2V5KCdmb28nKTtcbiAqIG1hcC5kZWxldGVWYWx1ZSg0Mik7XG4gKiBtYXAuY2xlYXIoKTtcbiAqIGBgYFxuICovXG5leHBvcnQgY2xhc3MgVHdvV2F5TWFwPEtleSwgVmFsdWU+IHtcbiAgcHJpdmF0ZSByZWFkb25seSBrZXlWYWx1ZU1hcCA9IG5ldyBNYXA8S2V5LCBWYWx1ZT4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSB2YWx1ZUtleU1hcCA9IG5ldyBNYXA8VmFsdWUsIEtleT4oKTtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyB0d28td2F5IG1hcC5cbiAgICpcbiAgICogQHBhcmFtIGVudHJpZXMgLSBFbnRyaWVzIHRvIGluaXRpYWxpemUgdGhlIG1hcCB3aXRoLlxuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKGVudHJpZXM6IChyZWFkb25seSBba2V5OiBLZXksIHZhbHVlOiBWYWx1ZV0pW10gPSBbXSkge1xuICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIGVudHJpZXMpIHtcbiAgICAgIHRoaXMuc2V0KGtleSwgdmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDbGVhcnMgdGhlIG1hcC5cbiAgICovXG4gIHB1YmxpYyBjbGVhcigpOiB2b2lkIHtcbiAgICB0aGlzLmtleVZhbHVlTWFwLmNsZWFyKCk7XG4gICAgdGhpcy52YWx1ZUtleU1hcC5jbGVhcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIERlbGV0ZXMgYSBrZXkgZnJvbSB0aGUgbWFwLlxuICAgKlxuICAgKiBAcGFyYW0ga2V5IC0gVGhlIGtleS5cbiAgICovXG4gIHB1YmxpYyBkZWxldGVLZXkoa2V5OiBLZXkpOiB2b2lkIHtcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMuZ2V0VmFsdWUoa2V5KTtcbiAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy52YWx1ZUtleU1hcC5kZWxldGUodmFsdWUpO1xuICAgIH1cbiAgICB0aGlzLmtleVZhbHVlTWFwLmRlbGV0ZShrZXkpO1xuICB9XG5cbiAgLyoqXG4gICAqIERlbGV0ZXMgYSB2YWx1ZSBmcm9tIHRoZSBtYXAuXG4gICAqXG4gICAqIEBwYXJhbSB2YWx1ZSAtIFRoZSB2YWx1ZS5cbiAgICovXG4gIHB1YmxpYyBkZWxldGVWYWx1ZSh2YWx1ZTogVmFsdWUpOiB2b2lkIHtcbiAgICBjb25zdCBrZXkgPSB0aGlzLmdldEtleSh2YWx1ZSk7XG4gICAgaWYgKGtleSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmtleVZhbHVlTWFwLmRlbGV0ZShrZXkpO1xuICAgIH1cbiAgICB0aGlzLnZhbHVlS2V5TWFwLmRlbGV0ZSh2YWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyBhbGwgZW50cmllcyBpbiB0aGUgbWFwLlxuICAgKlxuICAgKiBAcmV0dXJucyBBbiBpdGVyYXRvciBvdmVyIGFsbCBlbnRyaWVzIGluIHRoZSBtYXAuXG4gICAqL1xuICBwdWJsaWMgZW50cmllcygpOiBJdGVyYWJsZUl0ZXJhdG9yPHJlYWRvbmx5IFtrZXk6IEtleSwgdmFsdWU6IFZhbHVlXT4ge1xuICAgIHJldHVybiB0aGlzLmtleVZhbHVlTWFwLmVudHJpZXMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIGEga2V5IGJ5IGl0cyB2YWx1ZS5cbiAgICpcbiAgICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlLlxuICAgKiBAcmV0dXJucyBUaGUga2V5LlxuICAgKi9cbiAgcHVibGljIGdldEtleSh2YWx1ZTogVmFsdWUpOiBLZXkgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLnZhbHVlS2V5TWFwLmdldCh2YWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyBhIHZhbHVlIGJ5IGl0cyBrZXkuXG4gICAqXG4gICAqIEBwYXJhbSBrZXkgLSBUaGUga2V5LlxuICAgKiBAcmV0dXJucyBUaGUgdmFsdWUuXG4gICAqL1xuICBwdWJsaWMgZ2V0VmFsdWUoa2V5OiBLZXkpOiB1bmRlZmluZWQgfCBWYWx1ZSB7XG4gICAgcmV0dXJuIHRoaXMua2V5VmFsdWVNYXAuZ2V0KGtleSk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHRoZSBtYXAgaGFzIGEga2V5LlxuICAgKlxuICAgKiBAcGFyYW0ga2V5IC0gVGhlIGtleS5cbiAgICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBtYXAgaGFzIHRoZSBrZXksIGBmYWxzZWAgb3RoZXJ3aXNlLlxuICAgKi9cbiAgcHVibGljIGhhc0tleShrZXk6IEtleSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmtleVZhbHVlTWFwLmhhcyhrZXkpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiB0aGUgbWFwIGhhcyBhIHZhbHVlLlxuICAgKlxuICAgKiBAcGFyYW0gdmFsdWUgLSBUaGUgdmFsdWUuXG4gICAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgbWFwIGhhcyB0aGUgdmFsdWUsIGBmYWxzZWAgb3RoZXJ3aXNlLlxuICAgKi9cbiAgcHVibGljIGhhc1ZhbHVlKHZhbHVlOiBWYWx1ZSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnZhbHVlS2V5TWFwLmhhcyh2YWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyBhbGwga2V5cyBpbiB0aGUgbWFwLlxuICAgKlxuICAgKiBAcmV0dXJucyBBbiBpdGVyYXRvciBvdmVyIGFsbCBrZXlzIGluIHRoZSBtYXAuXG4gICAqL1xuICBwdWJsaWMga2V5cygpOiBJdGVyYWJsZUl0ZXJhdG9yPEtleT4ge1xuICAgIHJldHVybiB0aGlzLmtleVZhbHVlTWFwLmtleXMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIGEga2V5LXZhbHVlIHBhaXIgaW4gdGhlIG1hcC5cbiAgICpcbiAgICogQHBhcmFtIGtleSAtIFRoZSBrZXkuXG4gICAqIEBwYXJhbSB2YWx1ZSAtIFRoZSB2YWx1ZS5cbiAgICovXG4gIHB1YmxpYyBzZXQoa2V5OiBLZXksIHZhbHVlOiBWYWx1ZSk6IHZvaWQge1xuICAgIHRoaXMuZGVsZXRlS2V5KGtleSk7XG4gICAgdGhpcy5kZWxldGVWYWx1ZSh2YWx1ZSk7XG5cbiAgICB0aGlzLmtleVZhbHVlTWFwLnNldChrZXksIHZhbHVlKTtcbiAgICB0aGlzLnZhbHVlS2V5TWFwLnNldCh2YWx1ZSwga2V5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIGFsbCB2YWx1ZXMgaW4gdGhlIG1hcC5cbiAgICpcbiAgICogQHJldHVybnMgQW4gaXRlcmF0b3Igb3ZlciBhbGwgdmFsdWVzIGluIHRoZSBtYXAuXG4gICAqL1xuICBwdWJsaWMgdmFsdWVzKCk6IEl0ZXJhYmxlSXRlcmF0b3I8VmFsdWU+IHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZUtleU1hcC5rZXlzKCk7XG4gIH1cbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7QUFvQk8sTUFBTSxVQUFzQjtBQUFBLEVBQ2hCLGNBQWMsb0JBQUksSUFBZ0I7QUFBQSxFQUNsQyxjQUFjLG9CQUFJLElBQWdCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBTzVDLFlBQVksVUFBaUQsQ0FBQyxHQUFHO0FBQ3RFLGVBQVcsQ0FBQyxLQUFLLEtBQUssS0FBSyxTQUFTO0FBQ2xDLFdBQUssSUFBSSxLQUFLLEtBQUs7QUFBQSxJQUNyQjtBQUFBLEVBQ0Y7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQUtPLFFBQWM7QUFDbkIsU0FBSyxZQUFZLE1BQU07QUFDdkIsU0FBSyxZQUFZLE1BQU07QUFBQSxFQUN6QjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9PLFVBQVUsS0FBZ0I7QUFDL0IsVUFBTSxRQUFRLEtBQUssU0FBUyxHQUFHO0FBQy9CLFFBQUksVUFBVSxRQUFXO0FBQ3ZCLFdBQUssWUFBWSxPQUFPLEtBQUs7QUFBQSxJQUMvQjtBQUNBLFNBQUssWUFBWSxPQUFPLEdBQUc7QUFBQSxFQUM3QjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9PLFlBQVksT0FBb0I7QUFDckMsVUFBTSxNQUFNLEtBQUssT0FBTyxLQUFLO0FBQzdCLFFBQUksUUFBUSxRQUFXO0FBQ3JCLFdBQUssWUFBWSxPQUFPLEdBQUc7QUFBQSxJQUM3QjtBQUNBLFNBQUssWUFBWSxPQUFPLEtBQUs7QUFBQSxFQUMvQjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9PLFVBQStEO0FBQ3BFLFdBQU8sS0FBSyxZQUFZLFFBQVE7QUFBQSxFQUNsQztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBUU8sT0FBTyxPQUErQjtBQUMzQyxXQUFPLEtBQUssWUFBWSxJQUFJLEtBQUs7QUFBQSxFQUNuQztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBUU8sU0FBUyxLQUE2QjtBQUMzQyxXQUFPLEtBQUssWUFBWSxJQUFJLEdBQUc7QUFBQSxFQUNqQztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBUU8sT0FBTyxLQUFtQjtBQUMvQixXQUFPLEtBQUssWUFBWSxJQUFJLEdBQUc7QUFBQSxFQUNqQztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBUU8sU0FBUyxPQUF1QjtBQUNyQyxXQUFPLEtBQUssWUFBWSxJQUFJLEtBQUs7QUFBQSxFQUNuQztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9PLE9BQThCO0FBQ25DLFdBQU8sS0FBSyxZQUFZLEtBQUs7QUFBQSxFQUMvQjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBUU8sSUFBSSxLQUFVLE9BQW9CO0FBQ3ZDLFNBQUssVUFBVSxHQUFHO0FBQ2xCLFNBQUssWUFBWSxLQUFLO0FBRXRCLFNBQUssWUFBWSxJQUFJLEtBQUssS0FBSztBQUMvQixTQUFLLFlBQVksSUFBSSxPQUFPLEdBQUc7QUFBQSxFQUNqQztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9PLFNBQWtDO0FBQ3ZDLFdBQU8sS0FBSyxZQUFZLEtBQUs7QUFBQSxFQUMvQjtBQUNGOyIsCiAgIm5hbWVzIjogW10KfQo=