This was a jam packed week:
- Original Languages got support for preview
- Stepping now handles many edge cases
- Preview supports many new edge cases
- Huge performance wins for loading evil and cheap webpack bundles
Thanks to all of the contributors!
@Rohanhacker, @atwalg2, @bomsy, @lukaszsobek, @loganfsmyth, @mmcote, @AnshulMalik, @zeoneo, @hozefaj, @MarkPollmann
Last week we landed support for mapping expressions. We map original variables to generated expressions, which is especially useful for webpack and babel module dependencies.
We are currently using the new mappings in the debugger's preview and watch expressions. We will add support to the console this week.
Last week we also fixed some bugs with the scope mapping logic:
- out of order declarations
- flow types are now excluded
- optimized away bindings
- Use original scope mappings to rewrite preview and watch expressions @loganfsmyth
- Handle out-of-order declarations in scopes. @loganfsmyth
- Exclude Flowtype bindings from original scope list. @loganfsmyth
- Render a toggle for original/generated scopes when available. @loganfsmyth
- [Scopes] Avoid exceptions when import bindings are optimized away. @loganfsmyth
| Preview original expressions |
|---|
![]() |
| Jump between original and generated scopes |
|---|
![]() |
One of our quarterly goals is to improve the debugger's stepping quality. There are some cases where we either step too often or miss locations:
- multiple statements on the same line
console.log(); debugger; console.log(); debugger; - multiple expressions on the same line
e.g. a() ? b() ? c() : d() - multi-line statements e.g. array, object declarations and call expressions
We hope to solve all of these issues in the engine's debugger frontend, but in the meantime, we're using a new pause point data structure which has all of the valid pause locations.
- Improve loading sources @jasonLaster
- refactored loading states & added loading in outline @Rohanhacker
- Added VisibilityHandler to handle the mounting and unmounting of child components of App when changing panel tabs. @mmcote
- update file icons to use img instead of svg @hozefaj
| Loading eval-source-maps (New) |
|---|
![]() |
| Loading eval-source-maps (Old) |
|---|
![]() |
@bomsy landed an awesome fix for our preview engine, which makes it possible to preview member properties of indexed objects. In the example below, previously it was only possible to preview collection and genres, now it is possible to preview movies and director.
We'll be adding additional support for index keys and several other syntax locations in this issue.
collection.genres["sci-fi"].movies[0].director;- [QuickOpen] Fix loading for searching symbols @atwalg2
- Ensure sort by name button is visible in dark theme @darkwing
- Fix home button color for dark theme @darkwing
- Fix #5668 - Restore missing CSS var @darkwing
- Fix message and formatting of Outline when no functions @darkwing
- Open quick open without prefix selected @MarkPollmann
- Enhancement add contenxt menu copy to clipboard @zeoneo
| Quick Open - Prefix |
|---|
![]() |
One of our goals this quarter is to improve our pausing and stepping stability. To that end, we want to improve our flow support to help prevent preventable typeErrors.
This past week @AnshulMalik converted our source type, to a stricter read-only object. This will catch unintentional sets.
@lukaszsobek is making progress removing toJS calls from the codebase. He's seeing a significant performance win here as well.
- Removes toJS from setInScopeLines @lukaszsobek
- Fix flow config rules @jasonLaster
- Make SourceRecord fields Read-Only @AnshulMalik
- Lock down parser flow type exports @jasonLaster
- Bump mochii @jasonLaster
- Bump mochii to 28 @jasonLaster
- Fix failing mochitests @jasonLaster
- Fixup console pretty print test @jasonLaster







