"use strict"; class NoteCache { constructor() { this.reset(); } reset() { /** @type {Object.} */ this.notes = []; /** @type {Object.} */ this.branches = []; /** @type {Object.} */ this.childParentToBranch = {}; /** @type {Object.} */ this.attributes = []; /** @type {Object.} Points from attribute type-name to list of attributes */ this.attributeIndex = {}; this.loaded = false; } /** @return {Attribute[]} */ findAttributes(type, name) { return this.attributeIndex[`${type}-${name.toLowerCase()}`] || []; } /** @return {Attribute[]} */ findAttributesWithPrefix(type, name) { const resArr = []; const key = `${type}-${name}`; for (const idx in this.attributeIndex) { if (idx.startsWith(key)) { resArr.push(this.attributeIndex[idx]); } } return resArr.flat(); } decryptProtectedNotes() { for (const note of Object.values(this.notes)) { note.decrypt(); } } getBranch(childNoteId, parentNoteId) { return this.childParentToBranch[`${childNoteId}-${parentNoteId}`]; } } const noteCache = new NoteCache(); module.exports = noteCache;