* ability to mark an open document as unsaved
* unsaved detection now being triggered based on layer tree height
* Changed responses to use classes instead of interfaces
* - rust implementation of unsaved markers
- upgraded eslint
* updated eslint in package.json
* - Renamed GetOpenDocumentsList -> UpdateOpenDocumentsList
- is not -> was not
* changed hash to current identifier to better reflect its meaning
* resolve some merge conflicts
* removed console.log statement leftover from debuging
* - changed Response to jsMessage
- split files
- Array<> -> []
* -remove path from UpdateLayer
* - remove unused if statements
* - comment for reflect-metadata
- registerJsMessageHandler -> subscribeJsMessage
- readonly message properties
- fixed binding filename and comment
- toRgb -> toRgba
* - newOpacity -> transformer
- added comments
* MessageMaker -> messageMaker
* Upgrade TypeScript, ESLint, and other dependencies
This also cleans up various other files where newer ESLint rules complained
* Set CI and CD to use Node.js version 16
* Small tweak
* Fix CD version printing
* Add nvm version for Cloudflare Pages
* Add two-way tool option messaging system
* Rename tool option functions
* Move repeated frontend messaging code to function
* Address style comments
* Rename variable to be more descriptive
* Move tool options update to SetActiveTool message
* Refactor record of all tool options
* Only pass active tool options to bar
Co-authored-by: Keavon Chambers <keavon@keavon.com>