This is a very big commit that does an initial job of upgrading everything to the latest version. TSLint gets replaced by ESLint. Instead of plain node, now ts-node is being used. Old modules also get replaced with new ones (mostly ng2 to ngx). Also obsolete configs have been replaced with how it's used today with Angular.
This includes:
* Upgrade to:
** Angular 12
** Typescript 4
** ESLint 7 and replace TSLint
** Bootstrap 5
** Eerything connected to these
* Run with ts-node
* Convert wepack config to angular config
* Remove typescript-ioc
* Update tsconfigs
* Run a git command instead of using a library for sshort hash
* Move assets to a new location align with default Angular settings
* Database migration for new avatarUrl locations
* Simplify Model extension align with newest sequelize version
* Remove breadcrumb hack
* Fix homeserver typo
* A few general fixes that are necessary with newest Typescript rules
* Define Express.User interface
We were accidentally setting the createMeeting query parameter when
creating a widget through Dimension's UI, which tells the widget to use
the non-UI method of connecting to a meeting.
Here is where the actual code that runs in the widget's iframe is. This
includes the HTML/CSS stuff, the definitions for API request/responses,
some routing and the javascript which makes requests to the new /join
api endpoint.
This commit adds the join API endpoint that will be used by the widget
to transform a greenlight URL to a BigBlueButton meeting URL.
The full flow is defined within the code itself, but it roughly boils
down to taking a greenlight URL that the user pastes it, sending it to
Dimension, Dimension making some API calls to greenlight to "join" the
meeting and retrieving a join link, before passing that back down to the
client to load.
Unfortunately, while BigBlueButton's server has a nice API, it's useless
to us if all we have is a greenlight link, so we need to do this hacky
route instead.