Update MW to require a factory, add *-mw #3969
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
As I was playing around with middleware, in the first RC, I realized that the current way of
videojs.use
with an object was lacking. Specifically, if you have multiple players on the page, the middleware would need to be able to handle tech management itself, which doesn't seem right. Also, the mw didn't know about what player it was attached to.Now,
videojs.use
takes in a function that given a player, returns a middleware object. The middleware object looks the same as the current object we use for registration. This allows us to have per-player instances of middleware and because it's a factory, a user can use a class or Component or Plugin object for managing their middleware if they want, as long as the methods are available.For example:
Also, this PR adds the ability to register "star middleware" (* mw), which will always be run through right before selecting the tech.