docs(ivy): document project status (#22751)

Moves the status reporting from the issue #21706 to a file that
can be updated as changes are being made. This addresses one of the
comments on the issue and allows better tracking of updates to this
status and changes made.

PR Close #22751
This commit is contained in:
Chuck Jazdzewski 2018-03-13 17:29:57 -07:00 committed by Miško Hevery
parent bafdad9083
commit cedc04c320
1 changed files with 162 additions and 0 deletions

View File

@ -0,0 +1,162 @@
## Annotations
| Annotation | `defineXXX()` | Run time | Spec | Compiler | Back Patch |
| -------------------- | ------------------------------ | ------- | -------- | -------- | -------- |
| `@Component` | ✅ `defineComponent()` | ✅ | ✅ | ✅ | ❌ |
| `@Directive` | ✅ `defineDirective()` | ✅ | ✅ | ✅ | ❌ |
| `@Directive` | ❌ `defineAbstractDirective()` | ❌ | ❌ | ❌ | ❌ |
| `@Pipe` | ✅ `definePipe()` | ✅ | ✅ | ✅ | ❌ |
| `@Injectable` | ❌ `defineInjectable()` | ❌ | ❌ | ❌ | ❌ |
| `@NgModule` | ❌ `defineInjector()` | ❌ | ❌ | ❌ | ❌ |
| `@ConfigureInjector` | ❌ `defineInjector()` | ❌ | ❌ | ❌ | ❌ |
## Component Composition
| Feature | Runtime | Spec | Compiler |
| ---------------------------------------- | ------- | -------- | -------- |
| creation reordering based on injection | ❌ | ❌ | ✅ |
| `class CompA extends CompB {}` | ❌ | ❌ | ❌ |
| `class CompA extends CompB { @Input }` | ❌ | ❌ | ❌ |
| `class CompA extends CompB { @Output }` | ❌ | ❌ | ❌ |
## Life Cycle Hooks
| Feature | Runtime | Spec | Compiler |
| ------------------------- | ------- | -------- | -------- |
| `onChanges()` | ✅ | ✅ | ✅ |
| `onDestroy()` | ✅ | ✅ | ✅ |
| `onInit()` | ✅ | ✅ | ✅ |
| `onChanges()` | ✅ | ✅ | ✅ |
| `doCheck()` | ✅ | ✅ | ✅ |
| `afterViewChecked()` | ✅ | ✅ | ✅ |
| `afterViewInit()` | ✅ | ✅ | ✅ |
| `afterContentChecked()` | ✅ | ✅ | ✅ |
| `afterContentInit()` | ✅ | ✅ | ✅ |
| listener teardown | ✅ | ✅ | ✅ |
## Template Syntax
| Feature | Runtime | Spec | Compiler |
| -------------------------------- | ------- | -------- | -------- |
| `<div>` | ✅ | ✅ | ✅ |
| `<div>{{exp}}</div>` | ✅ | ✅ | ✅ |
| `<div attr=value>` | ✅ | ✅ | ✅ |
| `<div (click)="stmt">` | ✅ | ✅ | ✅ |
| `<div #foo>` | ✅ | ✅ | ✅ |
| `<div #foo="bar">` | ✅ | ✅ | ✅ |
| `<div [value]="exp">` | ✅ | ✅ | ✅ |
| `<div title="Hello {{name}}!">` | ✅ | ✅ | ✅ |
| `<div [attr.value]="exp">` | ✅ | ✅ | ❌ |
| `<div class="literal">` | ✅ | ✅ | ✅ |
| `<div [class]="exp">` | ❌ | ❌ | ❌ |
| `<div [class.foo]="exp">` | ✅ | ✅ | ❌ |
| `<div style="literal">` | ✅ | ✅ | ✅ |
| `<div [style]="exp">` | ❌ | ❌ | ❌ |
| `<div [style.foo]="exp">` | ✅ | ✅ | ❌ |
| `{{ ['literal', exp ] }}` | ✅ | ✅ | ❌ |
| `{{ { a: 'literal', b: exp } }}` | ✅ | ✅ | ❌ |
| `{{ exp \| pipe: arg }}` | ✅ | ✅ | ❌ |
## `@Query`
| Feature | Runtime | Spec | Compiler |
| ------------------------------- | ------- | -------- | -------- |
| `@Query(descendants)` | ✅ | ✅ | ❌ |
| `@Query(one)` | ✅ | ✅ | ❌ |
| `@Query(read)` | ✅ | ✅ | ❌ |
| `@Query(selector)` | ✅ | ✅ | ❌ |
| `@Query(Type)` | ✅ | ✅ | ❌ |
| `@ContentChildred` | ✅ | ✅ | ❌ |
| `@ContentChild` | ✅ | ✅ | ❌ |
| `@ViewChildren` | ✅ | ✅ | ❌ |
| `@ViewChild` | ✅ | ✅ | ❌ |
## Content Projection
| Feature | Runtime | Spec | Compiler |
| ------------------------------- | ------- | -------- | -------- |
| `<ng-content>` | ✅ | ✅ | ✅ |
| `<ng-content selector="...">` | ✅ | ✅ | ✅ |
| container `projectAs` | ✅ | ✅ | ❌ |
## Injection Features
| Feature | Runtime | Spec | Compiler |
| ----------------------------------- | ------- | -------- | -------- |
| `inject(Type)` | ✅ | ✅ | ✅ |
| `directiveInject(Type)` | ✅ | ✅ | ❌ |
| `inject(Type, SkipSelf)` | ❌ | ❌ | ❌ |
| `attribute('name')` | ✅ | ✅ | ❌ |
| `injectChangeDetectionRef()` | ✅ | ✅ | ❌ |
| `injectElementRef()` | ✅ | ✅ | ✅ |
| `injectViewContainerRef()` | ✅ | ✅ | ✅ |
| `injectTemplateRef()` | ✅ | ✅ | ✅ |
| default `inject()` with no injector | ❌ | ❌ | ❌ |
| sanitization with no injector | ✅ | ✅ | ❌ |
## Change Detection
| Feature | Runtime |
| ----------------------------------- | ------- |
| `markDirty()` | ✅ |
| `detectChanges()` | ✅ |
| `tick()` | ✅ |
| `attach()` | ✅ |
| `detach()` | ✅ |
| `ON_PUSH` | ✅ |
| `ALWAYS` | ✅ |
| `DIRTY` | ✅ |
| `ATTACHED` | ✅ |
## Bootstrap API
| Feature | Runtime |
| ----------------------------------- | ------- |
| `renderComponent()` | ✅ |
| `getHostElement()` | ✅ |
| `Injector.create()` | ❌ |
## I18N
| Feature | Runtime | Spec | Compiler |
| ----------------------------------- | ------- | -------- | -------- |
| translate text literals | ❌ | ❌ | ❌ |
| rearrange text nodes | ❌ | ❌ | ❌ |
| ICU | ❌ | ❌ | ❌ |
## `______Ref`s
| Method | View Container Ref | Template Ref | Embeded View Ref | View Ref | Element Ref | Change Detection Ref |
| ---------------------- | ------------------ | ------------ | ---------------- | -------- | ----------- | -------------------- |
| `clear()` | ❌ | n/a | n/a | n/a | n/a | n/a |
| `get()` | ❌ | n/a | n/a | n/a | n/a | n/a |
| `createEmbededView()` | ✅ | ✅ | n/a | n/a | n/a | n/a |
| `createComponent()` | ✅ | n/a | n/a | n/a | n/a | n/a |
| `insert()` | ✅ | n/a | n/a | n/a | n/a | n/a |
| `move()` | ❌ | n/a | n/a | n/a | n/a | n/a |
| `indexOf()` | ❌ | n/a | n/a | n/a | n/a | n/a |
| `destroy()` | n/a | n/a | ❌ | ❌ | n/a | n/a |
| `destroyed` | n/a | n/a | ❌ | ❌ | n/a | n/a |
| `onDestroy()` | n/a | n/a | ❌ | ❌ | n/a | n/a |
| `markForCheck()` | n/a | n/a | ❌ | n/a | n/a | ✅ |
| `detach()` | ❌ | n/a | ❌ | n/a | n/a | ✅ |
| `detachChanges()` | n/a | n/a | ❌ | n/a | n/a | ✅ |
| `checkNoChanges()` | n/a | n/a | ❌ | n/a | n/a | ✅ |
| `reattach()` | n/a | n/a | ❌ | n/a | n/a | ✅ |
| `nativeElement()` | n/a | n/a | n/a | n/a | ✅ | n/a |
## Missing Pieces
- Sanitization ✅
- Back patching in tree shakable way. ❌
- attribute namespace ❌