See #272263, it currently assumes that all keys of K will be defined. This still isn't perfect, because it says that the returned object might contain a key with value `undefined`, but in reality, if a key is defined, it will have a value. So now usages of this with Object.entries and so on are slighly wrong, but that's preferable IMO.
We want to prevent mistaken changes that do something like this:
```ts
foo.onEvent = () => { ... };
```
When they almost always mean:
```ts
foo.onEvent(() => { ... })
```
* SR command to read last REPL execution
* use error details
* just use the values within the error
* test error collection
* combine output helpers
* auto read item executed in REPL
* switch order so universal hotkey is in a11y help
* combine adjacent stream outputs
* self-review
* support textual selections in notebook find widget
* add textual selection decorations
* union type
* fix passed ranges, clear find scope text range decs
* organize imports pass
* remove auto find explorations
* registered editor with notebook model
* migrated some stuff from Interactive Editor
* display notebook and input box
* dont always filter kernels by view
* fix restore
* implement some commands
* working copy recovery/discarding
* fix tear down
* do not show last cell
* simplify notebookOptions creation
* reset text model on execute
* fix run button
* set tab name
* use differentiated notebooktype to determine kernel
* allow registering notebooks as other priorities
* conditionally register actions
* move registerAction back to top level
* fix input box message
* naming
* dont register extra repl commands for now
* use jupyter-notebook notebook type
* set scratchpad on backup recovery
* remove unused method
`DisposableStore`/`MutableDisposable` properties should almost always be `readonly`. Otherwise it's easy to accidentally overwrite the property and leak the previous value. This commonly happens with code such as:
```ts
class Foo {
private disposables = new DisposableStore();
bar() {
this.disposables = new DisposableStore(); // leaks old values
...
}
```
This change adds an eslint rule to enforce this and adopts `readonly` for the caught cases. I only needed to add 2 suppression comments, which seems like an acceptable tradeoff for helping catch a common mistake
* relocate toggle action, fix toggle verbage, more generic section args
* support toolbar in outline pane entries
* unused imports slipped in with the merge
* css class name fix
* folding action support + css fix
* better typeguard fn
* Enable markup search hybrid mode
* Experiment turning all cells into editing mode on replace
* Prepare for minimal find markdown mode
* Add settings for controlling the initial state for find in markdown cells
* Validate initial state
Ran into these while debugging through notebook code. Adding readonly makes it more clear the objects are not mutable
In one case, we were also reversing an array passed to an event. This is not safe as it reverses in place so all event listeners will now see the reversed array
Notebook workspace edits currently only work in cases we have explicitly enabled them for. They don't work in code actions or on drop/paste
The root cause is that currently the edits need to be converted before they are passed along to the workbench bulk edit service. This is currently done by `reviveWorkspaceEditDto2`
This change moves the conversion logic into the bulk edit service itself
* * derive workspace dto with util
* be strict when defining reference version ids (must be set to a value or undefined)
* relax `ResourceNotebookCellEdit`