`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
* Fix injected services becoming public by mistake
Fixes cases of `@IFooService readonly foo: IFooService`. This makes the service public, which is likely not expected and also means we can't mangle it
* Fix name
* Remove unused props
Adds a lint rule that ensures ensureNoDisposablesAreLeakedInTestSuite
is called in suites. It grandfathers in existing files that were lacking
the call entirely.
This PR also includes manual fixes to files that used the function
already but were missing it in one or more suites, which the lint rule
detects.
* Introduce `localize2` function
This is syntax sugar around:
```
{ value localize('id', "Hello"), original: 'Hello' }
```
That will now be returned when you do:
```
localize2('id', "Hello");
```
* fix merge conflic
* new source map due to updated deps
* Propose "allowLocal" open dialog option API
Part of #131138
* Update comment
* allowUIResources API proposal
Part of #131138
* Fix scheme ordering and update doc comment
Resubmission of #157532 with the following changes:
- Use `eslint-plugin-local` instead of `yarn` link to run our plugins
- Move our plugins to a top level `.eslintplugin` dir (as required by `eslint-plugin-local`)
- Update all names to `local/`