* Quick hack to demo how an offline loader would work with as little complication as possible
* Further simplified yielding objects in offline mode
* Commented out the URL thing
* Implemented SpeckleOfflineLoader. JSON parsing is implemented at object-loader level, completely isolated from the rest of the implementation in order to avoid regression
* Isolated ObjectLoader creation in base SpeckleLoader class so any extended classes can overwrite the way the object loader is created and used
* Removed the big json sample file
* Updated version
* Removed unused functions from objectloader
* Restored viewer package version
* Fixed typo
* Renamed and moved the sample offline Speckle JSON
* Replaced the default JSON object sample with a much smaller one since we don't want to increase the sandbox's build size by 10 megs
* Fixed a linting error
* Improve shortcuts
* WIP
* View Mode menu
* Styling updates
* split activeControls
* Reusable Menu component
* Menu updates
* Sun menu updates
* Tidyups
* CommonAlert
* Updates
* WIP change to currentViewMode
* Serialization
* defineModel
* Tidy up emits
* Remove v-model
* Force close other panels
* Remove transition
* More robust isTypingComment
* activeControl > activePanel
* View menu shortcuts
* Explode menu definemodel
* Small changes from Benjamin
* Add colors view mode
* Fix server problem in data.ts
* Fix build
* feat(multi-region): metrics for knex for all regional databases
* improve typing in knex monitoring
* error logging around migrations
* await async calls for db connections
- add 'region' label
* add missing 'await' statements
* more missing 'await'
* guard against re-adding listeners
* It was possible for update to be called before initialize
- this change collapses both into initialize, and adds checks to ensure initialization is done before being updated for new regions
* separate back into non-exported const and rename
* align with main
* Amend order at which metrics is enabled
* feat(gatekeeper): show subscription seats
* Enabled summary on billing page
* Made interval dynamic
---------
Co-authored-by: Mike Tasset <mike.tasset@gmail.com>
* chore(healthchecks): refactor out of modules
* feat(server): multi-region aware liveness and readiness checks
* Add tests for redis & postgres healthchecks
* do not close Redis client after checking it is healthy, we now use a shared client