codegen.js
4.69 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
"use strict";
/**
* @license
* Copyright Google Inc. All Rights Reserved.
*
* Use of this source code is governed by an MIT-style license that can be
* found in the LICENSE file at https://angular.io/license
*/
Object.defineProperty(exports, "__esModule", { value: true });
/**
* Transform template html and css into executable code.
* Intended to be used in a build step.
*/
var compiler = require("@angular/compiler");
var core_1 = require("@angular/core");
var fs_1 = require("fs");
var compiler_host_1 = require("./compiler_host");
var path_mapped_compiler_host_1 = require("./path_mapped_compiler_host");
var GENERATED_META_FILES = /\.json$/;
var PREAMBLE = "/**\n * @fileoverview This file is generated by the Angular template compiler.\n * Do not edit.\n * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride}\n */\n /* tslint:disable */\n\n";
var CodeGenerator = (function () {
function CodeGenerator(options, program, host, compiler, ngCompilerHost) {
this.options = options;
this.program = program;
this.host = host;
this.compiler = compiler;
this.ngCompilerHost = ngCompilerHost;
}
CodeGenerator.prototype.codegen = function () {
var _this = this;
return this.compiler
.analyzeModulesAsync(this.program.getSourceFiles().map(function (sf) { return _this.ngCompilerHost.getCanonicalFileName(sf.fileName); }))
.then(function (analyzedModules) { return _this.emit(analyzedModules); });
};
CodeGenerator.prototype.codegenSync = function () {
var _this = this;
var analyzed = this.compiler.analyzeModulesSync(this.program.getSourceFiles().map(function (sf) { return _this.ngCompilerHost.getCanonicalFileName(sf.fileName); }));
return this.emit(analyzed);
};
CodeGenerator.prototype.emit = function (analyzedModules) {
var _this = this;
var generatedModules = this.compiler.emitAllImpls(analyzedModules);
return generatedModules.map(function (generatedModule) {
var sourceFile = _this.program.getSourceFile(generatedModule.srcFileUrl);
var emitPath = _this.ngCompilerHost.calculateEmitPath(generatedModule.genFileUrl);
var source = generatedModule.source || compiler.toTypeScript(generatedModule, PREAMBLE);
_this.host.writeFile(emitPath, source, false, function () { }, [sourceFile]);
return emitPath;
});
};
CodeGenerator.create = function (options, cliOptions, program, tsCompilerHost, compilerHostContext, ngCompilerHost) {
if (!ngCompilerHost) {
var usePathMapping = !!options.rootDirs && options.rootDirs.length > 0;
var context = compilerHostContext || new compiler_host_1.ModuleResolutionHostAdapter(tsCompilerHost);
ngCompilerHost = usePathMapping ? new path_mapped_compiler_host_1.PathMappedCompilerHost(program, options, context) :
new compiler_host_1.CompilerHost(program, options, context);
}
var transContent = '';
if (cliOptions.i18nFile) {
if (!cliOptions.locale) {
throw new Error("The translation file (" + cliOptions.i18nFile + ") locale must be provided. Use the --locale option.");
}
transContent = fs_1.readFileSync(cliOptions.i18nFile, 'utf8');
}
var missingTranslation = core_1.MissingTranslationStrategy.Warning;
if (cliOptions.missingTranslation) {
switch (cliOptions.missingTranslation) {
case 'error':
missingTranslation = core_1.MissingTranslationStrategy.Error;
break;
case 'warning':
missingTranslation = core_1.MissingTranslationStrategy.Warning;
break;
case 'ignore':
missingTranslation = core_1.MissingTranslationStrategy.Ignore;
break;
default:
throw new Error("Unknown option for missingTranslation (" + cliOptions.missingTranslation + "). Use either error, warning or ignore.");
}
}
var aotCompiler = compiler.createAotCompiler(ngCompilerHost, {
translations: transContent,
i18nFormat: cliOptions.i18nFormat,
locale: cliOptions.locale, missingTranslation: missingTranslation,
enableLegacyTemplate: options.enableLegacyTemplate !== false,
enableSummariesForJit: options.enableSummariesForJit !== false,
}).compiler;
return new CodeGenerator(options, program, tsCompilerHost, aotCompiler, ngCompilerHost);
};
return CodeGenerator;
}());
exports.CodeGenerator = CodeGenerator;
//# sourceMappingURL=codegen.js.map