Our JSHint configuration is not extensive and we have excluded multiple
files from linting. Additionally, we have seen JSHint to be unable to
parse newer ECMAScript features such as the object spread operator
(proposal).
On the other hand, we have seen ESLint to beautifully work on React and
React Native source code in addition to ES2015 and later. Introduce
ESLint alongside JSHint as an intermediate step to eventually switching
from JSHint to ESLint.
As our source code does not fully follow even the JSHint rules we have,
it is very difficult to introduce ESLint with many rules. At the
beginning, introduce it with as little rules as possible. Morever,
ESLint is able to automatically fix certain rule offenders so once we
have ESLint merged we can incrementally add new rules while keeping our
commits' modification on as little subjects as possible.
Rename "stream" to "track" in RTC context plus fixes
Rename variables with "stream" in name which refer to JitsiTrack.
Rename TRACK ADDED/REMOVED events.
Try to reduce direct access to remoteTracks object.
Log warning message when track is overwritten.
Returns Promise from mute/unmute and ignores requests while mute/unmuting is in progress. Moves mute/unmute methods to JitsiLocalTrack as said in API docs.
Fixes reporting local resolution when simulcast is enabled. Removes storing localSSRCs in JingleSessionPC and use the available ssrcs from the local tracks.
Changes video mute/unmute implementation. JitsiLocalTrack objects store information about the SSRCs. On video mute / unmute operation no jingle packets are sent anymore.
Modifies the semantics of JitsiTrack#attach method, so that it will return current stream container instance. Also it now takes HTML element instance directly instead of jQuery selector.