fix: ensure refresh runtime init is stable across module boundaries #290
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.
The previous implementation would have side-effects when a non-processed require pop up within the module, effectively causing runtime to be cleaned before the module have finished executing. As a result some parts of the update chain became unbound and causes bailouts that shouldn't happen.
To fix this, the
init
andsetup
stages are consolidated into one, which will trigger on EVERY call to__webpack_require__
, setting boundaries for all helpers and also ensures all fields on the refresh global would be properly restored after the module's execution.TODO: Test cases to ensure the behaviour by mocking Webpack's main template
Fixes #260
Fixes #287
Fixes #314