Adds a schematic and tslint rule that automatically migrate the consumer from `Renderer` to `Renderer2`. Supports:
* Renaming imports.
* Renaming property and method argument types.
* Casting to `Renderer`.
* Mapping all of the methods from the `Renderer` to `Renderer2`.
Note that some of the `Renderer` methods don't map cleanly between renderers. In these cases the migration adds a helper function at the bottom of the file which ensures that we generate valid code with the same return value as before. E.g. here's what the migration for `createText` looks like.
Before:
```
class SomeComponent {
createAndAddText() {
const node = this._renderer.createText(this._element.nativeElement, 'hello');
node.textContent += ' world';
}
}
```
After:
```
class SomeComponent {
createAndAddText() {
const node = __rendererCreateTextHelper(this._renderer, this._element.nativeElement, 'hello');
node.textContent += ' world';
}
}
function __rendererCreateTextHelper(renderer: any, parent: any, value: any) {
const node = renderer.createText(value);
if (parent) {
renderer.appendChild(parent, node);
}
return node;
}
```
This PR resolves FW-1344.
PR Close #30936
36 lines
1.2 KiB
Python
36 lines
1.2 KiB
Python
load("//tools:defaults.bzl", "jasmine_node_test", "ts_library")
|
|
|
|
ts_library(
|
|
name = "test_lib",
|
|
testonly = True,
|
|
srcs = glob(["**/*.ts"]),
|
|
data = [
|
|
"test-migrations.json",
|
|
"//packages/core/schematics:migrations.json",
|
|
],
|
|
deps = [
|
|
"//packages/core/schematics/migrations/injectable-pipe",
|
|
"//packages/core/schematics/migrations/injectable-pipe/google3",
|
|
"//packages/core/schematics/migrations/move-document",
|
|
"//packages/core/schematics/migrations/renderer-to-renderer2",
|
|
"//packages/core/schematics/migrations/renderer-to-renderer2/google3",
|
|
"//packages/core/schematics/migrations/static-queries",
|
|
"//packages/core/schematics/migrations/static-queries/google3",
|
|
"//packages/core/schematics/migrations/template-var-assignment",
|
|
"//packages/core/schematics/migrations/template-var-assignment/google3",
|
|
"//packages/core/schematics/utils",
|
|
"@npm//@angular-devkit/core",
|
|
"@npm//@angular-devkit/schematics",
|
|
"@npm//@types/shelljs",
|
|
"@npm//tslint",
|
|
],
|
|
)
|
|
|
|
jasmine_node_test(
|
|
name = "test",
|
|
deps = [
|
|
":test_lib",
|
|
"@npm//shelljs",
|
|
],
|
|
)
|