In 2.9 and earlier, Typescript allowed braces around the name introduced
by the `@template` tag, even though this syntax is non-standard. In 3.0,
Typescript introduces a more complex `@template` syntax that uses braces
for specifying the constraint of a type parameter:
```js
/** @template {Constraint} T -- By analogy with param syntax:
* @param {T} name
*/
function f(name) { ... }
```
That means that the syntax `/** @template {T} */` is illegal. This PR
fixes the uses of the `@template` tag ahead of Typescript 3.0 as well as
typescript@next.
# The first commit's message is:
chore(types): add type support for chunkgroup
# This is the 2nd commit message:
remove unneeded comments
# This is the 3rd commit message:
fix(types): add ModuleReason and some other missing parameters
# This is the 4th commit message:
fix(types): add removed usestrict
Chunks are now always in ChunkGroups
ChunkGroups have parents and children, Chunks no longer have this
AsyncDependenciesBlocks point to a ChunkGroup instead of a list of chunks
Entrypoint is now a ChunkGroup (extends from it)
move stuff graph modification methods into GraphHelpers
Change chunk id recording to source-based
Chunks have parents, siblings and children in Stats
rename AutomaticCommonsChunksPlugin to SplitChunksPlugin
add request property to origin (ChunkGroup)
remove moveToParent from AggressiveMergingPlugin
fix issues with AggressiveSplittingPlugin
remove CommonsChunkPlugin
add optimization.runtimeChunk (RuntimeChunkPlugin)
fix a filename bug for initial chunks
remove extract-text-webpack-plugin from test suite
add DebugHash to help debugging hash issues
fix issues with entry modules in different chunk as runtime
redo optimization.splitChunks options
Compilation.entrypoints is now a Map
Compilation.chunkGroups has been added
remove some unittests
update examples
update tests with CommonsChunkPlugin