The way that the hot loader is included in a bundle breaks in Java 8's
Nashorn engine, because of a missing semicolon. This change introduces
a placeholder value that can be correctly substituted when building
a bundle, but is otherwise inert.
Note that I don't particularly like this change, so if there's a better
fix, I'd like to hear about it.
If the length option on a hash was being used for a file path template
(e.g. '[hash:8].js'), the file would be outputted with the correct name,
but the reference inside require.ensure would not work, because the length
truncation would operate on more than just the hash, and would truncate
some of the characters added to pad the hash value.
Fix is to implement the `hashWithLength` function where this is a problem.
This doesn't feel like a proper solution, as it adds some redundancies
in a few places, but it's only in the chunk loading blocks that this matters,
so it's small in scope.
If requests are made while other chunks are loading, it can cause blocking
requests to load the additional chunks. Code splitting should ensure that
you can load these chunks completely async, and so we should.
Generalized identifier cleansing to replace invalid (and unicode)
characters with underscores to ensure a valid function name.
Applied function in other places functions were generated based on
libarary name.