templateParser.js 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. var core_1 = require("@angular/core");
  4. var compiler = require("@angular/compiler");
  5. var config_1 = require("../config");
  6. var ngVersion_1 = require("../../util/ngVersion");
  7. var refId = 0;
  8. var dummyMetadataFactory = function (declaration) {
  9. if (refId > 1e10) {
  10. refId = 0;
  11. }
  12. return {
  13. inputs: declaration.inputs || [],
  14. outputs: declaration.outputs || [],
  15. hostListeners: declaration.hostListeners || [],
  16. hostProperties: declaration.hostProperties || [],
  17. hostAttributes: declaration.hostAttributes || [],
  18. isSummary: true,
  19. type: {
  20. diDeps: [],
  21. lifecycleHooks: [],
  22. isHost: false,
  23. reference: ++refId + '-ref'
  24. },
  25. isComponent: false,
  26. selector: declaration.selector,
  27. exportAs: declaration.exportAs,
  28. providers: [],
  29. viewProviders: [],
  30. queries: [],
  31. entryComponents: [],
  32. changeDetection: 0,
  33. template: {
  34. isSummary: true,
  35. animations: [],
  36. ngContentSelectors: [],
  37. encapsulation: 0
  38. }
  39. };
  40. };
  41. var Console = (function () {
  42. function Console() {
  43. }
  44. Console.prototype.log = function (message) { };
  45. Console.prototype.warn = function (message) { };
  46. return Console;
  47. }());
  48. var defaultDirectives = [];
  49. exports.parseTemplate = function (template, directives) {
  50. if (directives === void 0) { directives = []; }
  51. defaultDirectives = directives.map(function (d) { return dummyMetadataFactory(d); });
  52. var TemplateParser = compiler.TemplateParser;
  53. var expressionParser = new compiler.Parser(new compiler.Lexer());
  54. var elementSchemaRegistry = new compiler.DomElementSchemaRegistry();
  55. var ngConsole = new Console();
  56. var htmlParser = new compiler.HtmlParser();
  57. var tmplParser;
  58. ngVersion_1.SemVerDSL.gte('4.0.0-beta.8', function () {
  59. var config = new compiler.CompilerConfig({});
  60. tmplParser = new TemplateParser(config, expressionParser, elementSchemaRegistry, htmlParser, ngConsole, []);
  61. })
  62. .elseIf.lt('4.1.0', function () {
  63. tmplParser = new TemplateParser(expressionParser, elementSchemaRegistry, htmlParser, ngConsole, []);
  64. })
  65. .elseIf.lt('5.0.0-rc.0', function () {
  66. var config = new compiler.CompilerConfig({});
  67. tmplParser = new TemplateParser(config, new compiler.JitReflector(), expressionParser, elementSchemaRegistry, htmlParser, ngConsole, []);
  68. })
  69. .else(function () {
  70. var JitReflector = require('./jitReflector').JitReflector;
  71. var config = new compiler.CompilerConfig({});
  72. tmplParser = new compiler.TemplateParser(config, new JitReflector(), expressionParser, elementSchemaRegistry, htmlParser, ngConsole, []);
  73. });
  74. var interpolation = config_1.Config.interpolation;
  75. var summaryKind = (compiler.CompileSummaryKind || {}).Template;
  76. var templateMetadata = {
  77. encapsulation: 0,
  78. template: template,
  79. templateUrl: '',
  80. styles: [],
  81. isInline: true,
  82. styleUrls: [],
  83. ngContentSelectors: [],
  84. animations: [],
  85. externalStylesheets: [],
  86. interpolation: interpolation,
  87. toSummary: function () {
  88. return {
  89. isSummary: true,
  90. animations: this.animations.map(function (anim) { return anim.name; }),
  91. ngContentSelectors: this.ngContentSelectors,
  92. encapsulation: this.encapsulation,
  93. summaryKind: summaryKind
  94. };
  95. }
  96. };
  97. var type = {
  98. diDeps: [],
  99. lifecycleHooks: [],
  100. reference: null,
  101. isHost: false,
  102. name: '',
  103. prefix: '',
  104. moduleUrl: '',
  105. value: '',
  106. identifier: null
  107. };
  108. var result;
  109. try {
  110. ngVersion_1.SemVerDSL.lt('4.1.0', function () {
  111. result = tmplParser.tryParse(compiler.CompileDirectiveMetadata.create({
  112. type: type,
  113. template: templateMetadata
  114. }), template, defaultDirectives, [], [core_1.NO_ERRORS_SCHEMA], '').templateAst;
  115. })
  116. .elseIf.lt('4.1.3', function () {
  117. result = tmplParser.tryParse(compiler.CompileDirectiveMetadata.create({
  118. type: type,
  119. template: templateMetadata,
  120. isHost: true,
  121. isComponent: true,
  122. selector: '',
  123. exportAs: '',
  124. changeDetection: core_1.ChangeDetectionStrategy.Default,
  125. inputs: [],
  126. outputs: [],
  127. host: {},
  128. providers: [],
  129. viewProviders: [],
  130. queries: [],
  131. viewQueries: [],
  132. entryComponents: [],
  133. guards: [],
  134. componentViewType: null,
  135. rendererType: null,
  136. componentFactory: null
  137. }), template, defaultDirectives, [], [core_1.NO_ERRORS_SCHEMA], '').templateAst;
  138. })
  139. .elseIf.lt('5.0.0-rc.0', function () {
  140. result = tmplParser.tryParse(compiler.CompileDirectiveMetadata.create({
  141. type: type,
  142. template: templateMetadata,
  143. isHost: true,
  144. isComponent: true,
  145. selector: '',
  146. exportAs: '',
  147. changeDetection: core_1.ChangeDetectionStrategy.Default,
  148. inputs: [],
  149. outputs: [],
  150. host: {},
  151. providers: [],
  152. viewProviders: [],
  153. queries: [],
  154. viewQueries: [],
  155. entryComponents: [],
  156. guards: [],
  157. componentViewType: null,
  158. rendererType: null,
  159. componentFactory: null
  160. }), template, defaultDirectives, [], [core_1.NO_ERRORS_SCHEMA], '').templateAst;
  161. })
  162. .elseIf.lt('5.2.0', function () {
  163. result = tmplParser.tryParse(compiler.CompileDirectiveMetadata.create({
  164. type: type,
  165. template: templateMetadata,
  166. isHost: true,
  167. isComponent: true,
  168. selector: '',
  169. exportAs: '',
  170. changeDetection: core_1.ChangeDetectionStrategy.Default,
  171. inputs: [],
  172. outputs: [],
  173. host: {},
  174. providers: [],
  175. viewProviders: [],
  176. queries: [],
  177. viewQueries: [],
  178. entryComponents: [],
  179. guards: [],
  180. componentViewType: null,
  181. rendererType: null,
  182. componentFactory: null
  183. }), template, defaultDirectives, [], [core_1.NO_ERRORS_SCHEMA], '', true).templateAst;
  184. })
  185. .else(function () {
  186. result = tmplParser.tryParse(compiler.CompileDirectiveMetadata.create({
  187. type: type,
  188. template: templateMetadata,
  189. isHost: true,
  190. isComponent: true,
  191. selector: '',
  192. exportAs: '',
  193. changeDetection: core_1.ChangeDetectionStrategy.Default,
  194. inputs: [],
  195. outputs: [],
  196. host: {},
  197. providers: [],
  198. viewProviders: [],
  199. queries: [],
  200. viewQueries: [],
  201. entryComponents: [],
  202. componentViewType: null,
  203. rendererType: null,
  204. componentFactory: null,
  205. guards: {}
  206. }), template, defaultDirectives, [], [core_1.NO_ERRORS_SCHEMA], '', true).templateAst;
  207. });
  208. }
  209. catch (e) {
  210. console.error(e);
  211. }
  212. return result;
  213. };