"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var core_1 = require("@angular/core"); var compiler = require("@angular/compiler"); var config_1 = require("../config"); var ngVersion_1 = require("../../util/ngVersion"); var refId = 0; var dummyMetadataFactory = function (declaration) { if (refId > 1e10) { refId = 0; } return { inputs: declaration.inputs || [], outputs: declaration.outputs || [], hostListeners: declaration.hostListeners || [], hostProperties: declaration.hostProperties || [], hostAttributes: declaration.hostAttributes || [], isSummary: true, type: { diDeps: [], lifecycleHooks: [], isHost: false, reference: ++refId + '-ref' }, isComponent: false, selector: declaration.selector, exportAs: declaration.exportAs, providers: [], viewProviders: [], queries: [], entryComponents: [], changeDetection: 0, template: { isSummary: true, animations: [], ngContentSelectors: [], encapsulation: 0 } }; }; var Console = (function () { function Console() { } Console.prototype.log = function (message) { }; Console.prototype.warn = function (message) { }; return Console; }()); var defaultDirectives = []; exports.parseTemplate = function (template, directives) { if (directives === void 0) { directives = []; } defaultDirectives = directives.map(function (d) { return dummyMetadataFactory(d); }); var TemplateParser = compiler.TemplateParser; var expressionParser = new compiler.Parser(new compiler.Lexer()); var elementSchemaRegistry = new compiler.DomElementSchemaRegistry(); var ngConsole = new Console(); var htmlParser = new compiler.HtmlParser(); var tmplParser; ngVersion_1.SemVerDSL.gte('4.0.0-beta.8', function () { var config = new compiler.CompilerConfig({}); tmplParser = new TemplateParser(config, expressionParser, elementSchemaRegistry, htmlParser, ngConsole, []); }) .elseIf.lt('4.1.0', function () { tmplParser = new TemplateParser(expressionParser, elementSchemaRegistry, htmlParser, ngConsole, []); }) .elseIf.lt('5.0.0-rc.0', function () { var config = new compiler.CompilerConfig({}); tmplParser = new TemplateParser(config, new compiler.JitReflector(), expressionParser, elementSchemaRegistry, htmlParser, ngConsole, []); }) .else(function () { var JitReflector = require('./jitReflector').JitReflector; var config = new compiler.CompilerConfig({}); tmplParser = new compiler.TemplateParser(config, new JitReflector(), expressionParser, elementSchemaRegistry, htmlParser, ngConsole, []); }); var interpolation = config_1.Config.interpolation; var summaryKind = (compiler.CompileSummaryKind || {}).Template; var templateMetadata = { encapsulation: 0, template: template, templateUrl: '', styles: [], isInline: true, styleUrls: [], ngContentSelectors: [], animations: [], externalStylesheets: [], interpolation: interpolation, toSummary: function () { return { isSummary: true, animations: this.animations.map(function (anim) { return anim.name; }), ngContentSelectors: this.ngContentSelectors, encapsulation: this.encapsulation, summaryKind: summaryKind }; } }; var type = { diDeps: [], lifecycleHooks: [], reference: null, isHost: false, name: '', prefix: '', moduleUrl: '', value: '', identifier: null }; var result; try { ngVersion_1.SemVerDSL.lt('4.1.0', function () { result = tmplParser.tryParse(compiler.CompileDirectiveMetadata.create({ type: type, template: templateMetadata }), template, defaultDirectives, [], [core_1.NO_ERRORS_SCHEMA], '').templateAst; }) .elseIf.lt('4.1.3', function () { result = tmplParser.tryParse(compiler.CompileDirectiveMetadata.create({ type: type, template: templateMetadata, isHost: true, isComponent: true, selector: '', exportAs: '', changeDetection: core_1.ChangeDetectionStrategy.Default, inputs: [], outputs: [], host: {}, providers: [], viewProviders: [], queries: [], viewQueries: [], entryComponents: [], guards: [], componentViewType: null, rendererType: null, componentFactory: null }), template, defaultDirectives, [], [core_1.NO_ERRORS_SCHEMA], '').templateAst; }) .elseIf.lt('5.0.0-rc.0', function () { result = tmplParser.tryParse(compiler.CompileDirectiveMetadata.create({ type: type, template: templateMetadata, isHost: true, isComponent: true, selector: '', exportAs: '', changeDetection: core_1.ChangeDetectionStrategy.Default, inputs: [], outputs: [], host: {}, providers: [], viewProviders: [], queries: [], viewQueries: [], entryComponents: [], guards: [], componentViewType: null, rendererType: null, componentFactory: null }), template, defaultDirectives, [], [core_1.NO_ERRORS_SCHEMA], '').templateAst; }) .elseIf.lt('5.2.0', function () { result = tmplParser.tryParse(compiler.CompileDirectiveMetadata.create({ type: type, template: templateMetadata, isHost: true, isComponent: true, selector: '', exportAs: '', changeDetection: core_1.ChangeDetectionStrategy.Default, inputs: [], outputs: [], host: {}, providers: [], viewProviders: [], queries: [], viewQueries: [], entryComponents: [], guards: [], componentViewType: null, rendererType: null, componentFactory: null }), template, defaultDirectives, [], [core_1.NO_ERRORS_SCHEMA], '', true).templateAst; }) .else(function () { result = tmplParser.tryParse(compiler.CompileDirectiveMetadata.create({ type: type, template: templateMetadata, isHost: true, isComponent: true, selector: '', exportAs: '', changeDetection: core_1.ChangeDetectionStrategy.Default, inputs: [], outputs: [], host: {}, providers: [], viewProviders: [], queries: [], viewQueries: [], entryComponents: [], componentViewType: null, rendererType: null, componentFactory: null, guards: {} }), template, defaultDirectives, [], [core_1.NO_ERRORS_SCHEMA], '', true).templateAst; }); } catch (e) { console.error(e); } return result; };