This is a BREAKING change in the core & will require updating the
clients. The way it works is instead of keeping noteIds of all the
notes in the topic, it keeps an in-memory cache. This in-memory
cache `topicReferences` lives in the notes collection & decouples
notes from notebooks/topics. This also simplifies all the different
actions where references would persist after the note was deleted.
Since the note acts as the source of truth for where it currently is,
there is nothing else to do except rebuild the `topicReferences`
cache.
* fix content not removed when clear is called in trash
* add test to ensure content is deleted on clearing trash
* tests: clearing trash should clear referenced note history
* add cleanup function for content
* feat: note version history
* fix bugs
* add tests for session history
* update tests
* add tests for restoring content
* add more tests
* update jsdoc
* return empty array if no session history present for a note
* init note history with await
* add note history versions limit
* cleanup note history after adding a new session
* fix tests
* add test for session cleanup
* test: add collector tests
* feat: dateEdited -> dateModified
* feat: migrate to liqe for searching
* chore: forceExit jest after test run
* feat: note version history
* fix bugs
* add tests for session history
* update tests
* add tests for restoring content
* add more tests
* update jsdoc
* return empty array if no session history present for a note
* init note history with await
* add note history versions limit
* cleanup note history after adding a new session
* fix tests
* add test for session cleanup
* init ContentHistory with await
* fix reference to db in init
* make sessionId in db
* check if note is locked through note metadata
* make cleanup method private
* use remove methods in notehistory and contenthistory
* restore note content via notes.add method if note is not locked
* move getting all items to seperate functions
* check if parsed json is valid
* deserialize a session only if it's sessionContent exists
* add locked property to sessionContent
* remove makeSessionId function
* update tests
* remove yarn.lock file
* update tests
Co-authored-by: ammarahm-ed <ammarahmed6506@gmail.com>