diff --git a/package.json b/package.json index 58ddd8f7a..6412f1502 100644 --- a/package.json +++ b/package.json @@ -44,8 +44,8 @@ }, "homepage": "https://github.com/mgechev/codelyzer#readme", "devDependencies": { - "@angular/compiler": "^4.0.0-rc.5", - "@angular/core": "^4.0.0-rc.5", + "@angular/compiler": "^4.0.0", + "@angular/core": "^4.0.0", "@types/chai": "^3.4.33", "@types/less": "0.0.31", "@types/mocha": "^2.2.32", @@ -63,7 +63,7 @@ "ts-node": "1.2.2", "tslint": "^4.0.0", "typescript": "^2.1.4", - "zone.js": "^0.7.2" + "zone.js": "^0.8.4" }, "peerDependencies": { "tslint": "^4.0.0", diff --git a/src/angular/templates/basicTemplateAstVisitor.ts b/src/angular/templates/basicTemplateAstVisitor.ts index d5e475d7f..63636e908 100644 --- a/src/angular/templates/basicTemplateAstVisitor.ts +++ b/src/angular/templates/basicTemplateAstVisitor.ts @@ -116,8 +116,7 @@ export class BasicTemplateAstVisitor extends SourceMappingVisitor implements ast element.directives.forEach(d => this.visit(d, context)); } - visitReference(ast: ast.ReferenceAst, context: any): any { - } + visitReference(ast: ast.ReferenceAst, context: any): any {} visitVariable(ast: ast.VariableAst, context: any): any { this._variables.push(ast.name); diff --git a/src/angular/templates/templateParser.ts b/src/angular/templates/templateParser.ts index a0083d890..4ee1dbc25 100644 --- a/src/angular/templates/templateParser.ts +++ b/src/angular/templates/templateParser.ts @@ -1,9 +1,9 @@ +import { NO_ERRORS_SCHEMA, ViewEncapsulation } from '@angular/core'; import * as compiler from '@angular/compiler'; import { Config, DirectiveDeclaration } from '../config'; import { SemVerDSL } from '../../util/ngVersion'; -import { NO_ERRORS_SCHEMA } from '@angular/core'; -import { ɵConsole } from '@angular/core'; + let refId = 0; const dummyMetadataFactory = (declaration: DirectiveDeclaration) => { @@ -40,6 +40,12 @@ const dummyMetadataFactory = (declaration: DirectiveDeclaration) => { }; }; +class Console { + log(message: string) {} + warn(message: string) {} +} + + let defaultDirectives = []; export const parseTemplate = (template: string, directives: DirectiveDeclaration[] = []) => { @@ -48,7 +54,7 @@ export const parseTemplate = (template: string, directives: DirectiveDeclaration const TemplateParser = compiler.TemplateParser; const expressionParser = new compiler.Parser(new compiler.Lexer()); const elementSchemaRegistry = new compiler.DomElementSchemaRegistry(); - const ngConsole = new ɵConsole(); + const ngConsole = new Console(); const htmlParser = new compiler.I18NHtmlParser(new compiler.HtmlParser()); @@ -69,12 +75,12 @@ export const parseTemplate = (template: string, directives: DirectiveDeclaration // Make sure it works with 2.2.x & 2.3.x const summaryKind = ((compiler as any).CompileSummaryKind || {}).Template; - const templateMetadata: compiler.CompileTemplateMetadata = { + let templateMetadata: any = { encapsulation: 0, template: template, - isInline: false, templateUrl: '', styles: [], + isInline: true, styleUrls: [], ngContentSelectors: [], animations: [], diff --git a/src/index.ts b/src/index.ts index b4db7e62e..1e18c454b 100644 --- a/src/index.ts +++ b/src/index.ts @@ -18,4 +18,5 @@ export { Rule as UseInputPropertyDecoratorRule } from './useInputPropertyDecorat export { Rule as UseLifeCycleInterfaceRule } from './useLifeCycleInterfaceRule'; export { Rule as UseOutputPropertyDecoratorRule } from './useOutputPropertyDecoratorRule'; export { Rule as UsePipeTransformInterfaceRule } from './usePipeTransformInterfaceRule'; +export { Rule as TemplateToNgTemplateRule } from './templateToNgTemplateRule'; export * from './angular/config'; diff --git a/src/templateToNgTemplateRule.ts b/src/templateToNgTemplateRule.ts new file mode 100644 index 000000000..97e57af19 --- /dev/null +++ b/src/templateToNgTemplateRule.ts @@ -0,0 +1,83 @@ +import * as Lint from 'tslint'; +import * as ts from 'typescript'; +import {stringDistance} from './util/utils'; +import {getDeclaredProperties, getDeclaredMethods} from './util/classDeclarationUtils'; +import {Ng2Walker} from './angular/ng2Walker'; +import {RecursiveAngularExpressionVisitor} from './angular/templates/recursiveAngularExpressionVisitor'; +import * as e from '@angular/compiler/src/expression_parser/ast'; +import { EmbeddedTemplateAst, ElementAst } from '@angular/compiler'; +import { BasicTemplateAstVisitor } from './angular/templates/basicTemplateAstVisitor'; +import { Fix } from 'tslint'; +import SyntaxKind = require('./util/syntaxKind'); + +const ErrorMessage = 'You should use instead of