UNPKG

13.6 kBJavaScriptView Raw
1/**
2 * @license
3 * Copyright Google Inc. All Rights Reserved.
4 *
5 * Use of this source code is governed by an MIT-style license that can be
6 * found in the LICENSE file at https://angular.io/license
7 */
8(function (factory) {
9 if (typeof module === "object" && typeof module.exports === "object") {
10 var v = factory(require, exports);
11 if (v !== undefined) module.exports = v;
12 }
13 else if (typeof define === "function" && define.amd) {
14 define("@angular/compiler-cli/src/ngtsc/synthetic_files_compiler_host", ["require", "exports", "tslib"], factory);
15 }
16})(function (require, exports) {
17 "use strict";
18 Object.defineProperty(exports, "__esModule", { value: true });
19 var tslib_1 = require("tslib");
20 /**
21 * Extension of the TypeScript compiler host that supports files added to the Program which
22 * were never on disk.
23 *
24 * This is used for backwards-compatibility with the ViewEngine compiler, which used ngsummary
25 * and ngfactory files as inputs to the program. We call these inputs "synthetic".
26 *
27 * They need to be program inputs because user code may import from these generated files.
28 *
29 * TODO(alxhub): remove this after all ng_module users have migrated to Ivy
30 */
31 var SyntheticFilesCompilerHost = /** @class */ (function () {
32 function SyntheticFilesCompilerHost(rootFiles, delegate, generatedFiles) {
33 var e_1, _a;
34 this.rootFiles = rootFiles;
35 this.delegate = delegate;
36 /**
37 * SourceFiles which are added to the program but which never existed on disk.
38 */
39 this.syntheticFiles = new Map();
40 // Allow ngtsc to contribute in-memory synthetic files, which will be loaded
41 // as if they existed on disk as action inputs.
42 var angularGeneratedFiles = generatedFiles(rootFiles);
43 try {
44 for (var _b = tslib_1.__values(Object.keys(angularGeneratedFiles)), _c = _b.next(); !_c.done; _c = _b.next()) {
45 var f = _c.value;
46 var generator = angularGeneratedFiles[f];
47 var generated = generator(delegate);
48 if (generated) {
49 this.syntheticFiles.set(generated.fileName, generated);
50 }
51 }
52 }
53 catch (e_1_1) { e_1 = { error: e_1_1 }; }
54 finally {
55 try {
56 if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
57 }
58 finally { if (e_1) throw e_1.error; }
59 }
60 if (delegate.getDirectories !== undefined) {
61 this.getDirectories = function (path) { return delegate.getDirectories(path); };
62 }
63 }
64 SyntheticFilesCompilerHost.prototype.fileExists = function (filePath) {
65 if (this.syntheticFiles.has(filePath)) {
66 return true;
67 }
68 return this.delegate.fileExists(filePath);
69 };
70 /** Loads a source file from in-memory map, or delegates. */
71 SyntheticFilesCompilerHost.prototype.getSourceFile = function (fileName, languageVersion, onError) {
72 var syntheticFile = this.syntheticFiles.get(fileName);
73 if (syntheticFile) {
74 return syntheticFile;
75 }
76 return this.delegate.getSourceFile(fileName, languageVersion, onError);
77 };
78 Object.defineProperty(SyntheticFilesCompilerHost.prototype, "inputFiles", {
79 get: function () { return tslib_1.__spread(this.rootFiles, Array.from(this.syntheticFiles.keys())); },
80 enumerable: true,
81 configurable: true
82 });
83 SyntheticFilesCompilerHost.prototype.fileNameToModuleId = function (fileName) {
84 return fileName; // TODO: Ivy logic. don't forget that the delegate has the google3 logic
85 };
86 // Delegate everything else to the original compiler host.
87 SyntheticFilesCompilerHost.prototype.getDefaultLibFileName = function (options) {
88 return this.delegate.getDefaultLibFileName(options);
89 };
90 SyntheticFilesCompilerHost.prototype.writeFile = function (fileName, content, writeByteOrderMark, onError, sourceFiles) {
91 this.delegate.writeFile(fileName, content, writeByteOrderMark, onError, sourceFiles);
92 };
93 SyntheticFilesCompilerHost.prototype.getCanonicalFileName = function (path) { return this.delegate.getCanonicalFileName(path); };
94 SyntheticFilesCompilerHost.prototype.getCurrentDirectory = function () { return this.delegate.getCurrentDirectory(); };
95 SyntheticFilesCompilerHost.prototype.useCaseSensitiveFileNames = function () { return this.delegate.useCaseSensitiveFileNames(); };
96 SyntheticFilesCompilerHost.prototype.getNewLine = function () { return this.delegate.getNewLine(); };
97 SyntheticFilesCompilerHost.prototype.readFile = function (fileName) { return this.delegate.readFile(fileName); };
98 SyntheticFilesCompilerHost.prototype.trace = function (s) { console.error(s); };
99 return SyntheticFilesCompilerHost;
100 }());
101 exports.SyntheticFilesCompilerHost = SyntheticFilesCompilerHost;
102});
103//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ludGhldGljX2ZpbGVzX2NvbXBpbGVyX2hvc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21waWxlci1jbGkvc3JjL25ndHNjL3N5bnRoZXRpY19maWxlc19jb21waWxlcl9ob3N0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRzs7Ozs7Ozs7Ozs7OztJQUtIOzs7Ozs7Ozs7O09BVUc7SUFDSDtRQU1FLG9DQUNZLFNBQW1CLEVBQVUsUUFBeUIsRUFDOUQsY0FFQzs7WUFITyxjQUFTLEdBQVQsU0FBUyxDQUFVO1lBQVUsYUFBUSxHQUFSLFFBQVEsQ0FBaUI7WUFObEU7O2VBRUc7WUFDSCxtQkFBYyxHQUFHLElBQUksR0FBRyxFQUF5QixDQUFDO1lBT2hELDRFQUE0RTtZQUM1RSwrQ0FBK0M7WUFDL0MsSUFBTSxxQkFBcUIsR0FBRyxjQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFDOztnQkFDMUQsS0FBZ0IsSUFBQSxLQUFBLGlCQUFBLE1BQU0sQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQSxnQkFBQSw0QkFBRTtvQkFBL0MsSUFBTSxDQUFDLFdBQUE7b0JBQ1YsSUFBTSxTQUFTLEdBQUcscUJBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQzNDLElBQU0sU0FBUyxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQztvQkFDdEMsSUFBSSxTQUFTLEVBQUU7d0JBQ2IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQztxQkFDeEQ7aUJBQ0Y7Ozs7Ozs7OztZQUNELElBQUksUUFBUSxDQUFDLGNBQWMsS0FBSyxTQUFTLEVBQUU7Z0JBQ3pDLElBQUksQ0FBQyxjQUFjLEdBQUcsVUFBQyxJQUFZLElBQUssT0FBQSxRQUFRLENBQUMsY0FBZ0IsQ0FBQyxJQUFJLENBQUMsRUFBL0IsQ0FBK0IsQ0FBQzthQUN6RTtRQUNILENBQUM7UUFFRCwrQ0FBVSxHQUFWLFVBQVcsUUFBZ0I7WUFDekIsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRTtnQkFDckMsT0FBTyxJQUFJLENBQUM7YUFDYjtZQUNELE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDNUMsQ0FBQztRQUVELDREQUE0RDtRQUM1RCxrREFBYSxHQUFiLFVBQ0ksUUFBZ0IsRUFBRSxlQUFnQyxFQUNsRCxPQUFtQztZQUNyQyxJQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN4RCxJQUFJLGFBQWEsRUFBRTtnQkFDakIsT0FBTyxhQUFlLENBQUM7YUFDeEI7WUFDRCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxlQUFlLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDekUsQ0FBQztRQUVELHNCQUFJLGtEQUFVO2lCQUFkLGNBQW1CLHdCQUFXLElBQUksQ0FBQyxTQUFTLEVBQUssS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDOzs7V0FBQTtRQUUzRix1REFBa0IsR0FBbEIsVUFBbUIsUUFBZ0I7WUFDakMsT0FBTyxRQUFRLENBQUMsQ0FBRSx3RUFBd0U7UUFDNUYsQ0FBQztRQUVELDBEQUEwRDtRQUUxRCwwREFBcUIsR0FBckIsVUFBc0IsT0FBMkI7WUFDL0MsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3RELENBQUM7UUFFRCw4Q0FBUyxHQUFULFVBQ0ksUUFBZ0IsRUFBRSxPQUFlLEVBQUUsa0JBQTJCLEVBQzlELE9BQThDLEVBQzlDLFdBQW1EO1lBQ3JELElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsT0FBTyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQ3ZGLENBQUM7UUFFRCx5REFBb0IsR0FBcEIsVUFBcUIsSUFBWSxJQUFJLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFdkYsd0RBQW1CLEdBQW5CLGNBQWdDLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUU3RSw4REFBeUIsR0FBekIsY0FBdUMsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLHlCQUF5QixFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRTFGLCtDQUFVLEdBQVYsY0FBdUIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUkzRCw2Q0FBUSxHQUFSLFVBQVMsUUFBZ0IsSUFBc0IsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFekYsMENBQUssR0FBTCxVQUFNLENBQVMsSUFBVSxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM5QyxpQ0FBQztJQUFELENBQUMsQUE1RUQsSUE0RUM7SUE1RVksZ0VBQTBCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge1BsdWdpbkNvbXBpbGVySG9zdH0gZnJvbSAnQGJhemVsL3R5cGVzY3JpcHQvaW50ZXJuYWwvdHNjX3dyYXBwZWQvcGx1Z2luX2FwaSc7XG5pbXBvcnQgKiBhcyB0cyBmcm9tICd0eXBlc2NyaXB0JztcblxuLyoqXG4gKiBFeHRlbnNpb24gb2YgdGhlIFR5cGVTY3JpcHQgY29tcGlsZXIgaG9zdCB0aGF0IHN1cHBvcnRzIGZpbGVzIGFkZGVkIHRvIHRoZSBQcm9ncmFtIHdoaWNoXG4gKiB3ZXJlIG5ldmVyIG9uIGRpc2suXG4gKlxuICogVGhpcyBpcyB1c2VkIGZvciBiYWNrd2FyZHMtY29tcGF0aWJpbGl0eSB3aXRoIHRoZSBWaWV3RW5naW5lIGNvbXBpbGVyLCB3aGljaCB1c2VkIG5nc3VtbWFyeVxuICogYW5kIG5nZmFjdG9yeSBmaWxlcyBhcyBpbnB1dHMgdG8gdGhlIHByb2dyYW0uIFdlIGNhbGwgdGhlc2UgaW5wdXRzIFwic3ludGhldGljXCIuXG4gKlxuICogVGhleSBuZWVkIHRvIGJlIHByb2dyYW0gaW5wdXRzIGJlY2F1c2UgdXNlciBjb2RlIG1heSBpbXBvcnQgZnJvbSB0aGVzZSBnZW5lcmF0ZWQgZmlsZXMuXG4gKlxuICogVE9ETyhhbHhodWIpOiByZW1vdmUgdGhpcyBhZnRlciBhbGwgbmdfbW9kdWxlIHVzZXJzIGhhdmUgbWlncmF0ZWQgdG8gSXZ5XG4gKi9cbmV4cG9ydCBjbGFzcyBTeW50aGV0aWNGaWxlc0NvbXBpbGVySG9zdCBpbXBsZW1lbnRzIFBsdWdpbkNvbXBpbGVySG9zdCB7XG4gIC8qKlxuICAgKiBTb3VyY2VGaWxlcyB3aGljaCBhcmUgYWRkZWQgdG8gdGhlIHByb2dyYW0gYnV0IHdoaWNoIG5ldmVyIGV4aXN0ZWQgb24gZGlzay5cbiAgICovXG4gIHN5bnRoZXRpY0ZpbGVzID0gbmV3IE1hcDxzdHJpbmcsIHRzLlNvdXJjZUZpbGU+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgICBwcml2YXRlIHJvb3RGaWxlczogc3RyaW5nW10sIHByaXZhdGUgZGVsZWdhdGU6IHRzLkNvbXBpbGVySG9zdCxcbiAgICAgIGdlbmVyYXRlZEZpbGVzOiAocm9vdEZpbGVzOiBzdHJpbmdbXSkgPT4ge1xuICAgICAgICBbZmlsZU5hbWU6IHN0cmluZ106IChob3N0OiB0cy5Db21waWxlckhvc3QpID0+IHRzLlNvdXJjZUZpbGUgfCB1bmRlZmluZWRcbiAgICAgIH0pIHtcbiAgICAvLyBBbGxvdyBuZ3RzYyB0byBjb250cmlidXRlIGluLW1lbW9yeSBzeW50aGV0aWMgZmlsZXMsIHdoaWNoIHdpbGwgYmUgbG9hZGVkXG4gICAgLy8gYXMgaWYgdGhleSBleGlzdGVkIG9uIGRpc2sgYXMgYWN0aW9uIGlucHV0cy5cbiAgICBjb25zdCBhbmd1bGFyR2VuZXJhdGVkRmlsZXMgPSBnZW5lcmF0ZWRGaWxlcyAhKHJvb3RGaWxlcyk7XG4gICAgZm9yIChjb25zdCBmIG9mIE9iamVjdC5rZXlzKGFuZ3VsYXJHZW5lcmF0ZWRGaWxlcykpIHtcbiAgICAgIGNvbnN0IGdlbmVyYXRvciA9IGFuZ3VsYXJHZW5lcmF0ZWRGaWxlc1tmXTtcbiAgICAgIGNvbnN0IGdlbmVyYXRlZCA9IGdlbmVyYXRvcihkZWxlZ2F0ZSk7XG4gICAgICBpZiAoZ2VuZXJhdGVkKSB7XG4gICAgICAgIHRoaXMuc3ludGhldGljRmlsZXMuc2V0KGdlbmVyYXRlZC5maWxlTmFtZSwgZ2VuZXJhdGVkKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGRlbGVnYXRlLmdldERpcmVjdG9yaWVzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuZ2V0RGlyZWN0b3JpZXMgPSAocGF0aDogc3RyaW5nKSA9PiBkZWxlZ2F0ZS5nZXREaXJlY3RvcmllcyAhKHBhdGgpO1xuICAgIH1cbiAgfVxuXG4gIGZpbGVFeGlzdHMoZmlsZVBhdGg6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLnN5bnRoZXRpY0ZpbGVzLmhhcyhmaWxlUGF0aCkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5kZWxlZ2F0ZS5maWxlRXhpc3RzKGZpbGVQYXRoKTtcbiAgfVxuXG4gIC8qKiBMb2FkcyBhIHNvdXJjZSBmaWxlIGZyb20gaW4tbWVtb3J5IG1hcCwgb3IgZGVsZWdhdGVzLiAqL1xuICBnZXRTb3VyY2VGaWxlKFxuICAgICAgZmlsZU5hbWU6IHN0cmluZywgbGFuZ3VhZ2VWZXJzaW9uOiB0cy5TY3JpcHRUYXJnZXQsXG4gICAgICBvbkVycm9yPzogKG1lc3NhZ2U6IHN0cmluZykgPT4gdm9pZCk6IHRzLlNvdXJjZUZpbGV8dW5kZWZpbmVkIHtcbiAgICBjb25zdCBzeW50aGV0aWNGaWxlID0gdGhpcy5zeW50aGV0aWNGaWxlcy5nZXQoZmlsZU5hbWUpO1xuICAgIGlmIChzeW50aGV0aWNGaWxlKSB7XG4gICAgICByZXR1cm4gc3ludGhldGljRmlsZSAhO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5kZWxlZ2F0ZS5nZXRTb3VyY2VGaWxlKGZpbGVOYW1lLCBsYW5ndWFnZVZlcnNpb24sIG9uRXJyb3IpO1xuICB9XG5cbiAgZ2V0IGlucHV0RmlsZXMoKSB7IHJldHVybiBbLi4udGhpcy5yb290RmlsZXMsIC4uLkFycmF5LmZyb20odGhpcy5zeW50aGV0aWNGaWxlcy5rZXlzKCkpXTsgfVxuXG4gIGZpbGVOYW1lVG9Nb2R1bGVJZChmaWxlTmFtZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZpbGVOYW1lOyAgLy8gVE9ETzogSXZ5IGxvZ2ljLiBkb24ndCBmb3JnZXQgdGhhdCB0aGUgZGVsZWdhdGUgaGFzIHRoZSBnb29nbGUzIGxvZ2ljXG4gIH1cblxuICAvLyBEZWxlZ2F0ZSBldmVyeXRoaW5nIGVsc2UgdG8gdGhlIG9yaWdpbmFsIGNvbXBpbGVyIGhvc3QuXG5cbiAgZ2V0RGVmYXVsdExpYkZpbGVOYW1lKG9wdGlvbnM6IHRzLkNvbXBpbGVyT3B0aW9ucyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZGVsZWdhdGUuZ2V0RGVmYXVsdExpYkZpbGVOYW1lKG9wdGlvbnMpO1xuICB9XG5cbiAgd3JpdGVGaWxlKFxuICAgICAgZmlsZU5hbWU6IHN0cmluZywgY29udGVudDogc3RyaW5nLCB3cml0ZUJ5dGVPcmRlck1hcms6IGJvb2xlYW4sXG4gICAgICBvbkVycm9yOiAoKG1lc3NhZ2U6IHN0cmluZykgPT4gdm9pZCl8dW5kZWZpbmVkLFxuICAgICAgc291cmNlRmlsZXM6IFJlYWRvbmx5QXJyYXk8dHMuU291cmNlRmlsZT58dW5kZWZpbmVkKTogdm9pZCB7XG4gICAgdGhpcy5kZWxlZ2F0ZS53cml0ZUZpbGUoZmlsZU5hbWUsIGNvbnRlbnQsIHdyaXRlQnl0ZU9yZGVyTWFyaywgb25FcnJvciwgc291cmNlRmlsZXMpO1xuICB9XG5cbiAgZ2V0Q2Fub25pY2FsRmlsZU5hbWUocGF0aDogc3RyaW5nKSB7IHJldHVybiB0aGlzLmRlbGVnYXRlLmdldENhbm9uaWNhbEZpbGVOYW1lKHBhdGgpOyB9XG5cbiAgZ2V0Q3VycmVudERpcmVjdG9yeSgpOiBzdHJpbmcgeyByZXR1cm4gdGhpcy5kZWxlZ2F0ZS5nZXRDdXJyZW50RGlyZWN0b3J5KCk7IH1cblxuICB1c2VDYXNlU2Vuc2l0aXZlRmlsZU5hbWVzKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5kZWxlZ2F0ZS51c2VDYXNlU2Vuc2l0aXZlRmlsZU5hbWVzKCk7IH1cblxuICBnZXROZXdMaW5lKCk6IHN0cmluZyB7IHJldHVybiB0aGlzLmRlbGVnYXRlLmdldE5ld0xpbmUoKTsgfVxuXG4gIGdldERpcmVjdG9yaWVzPzogKHBhdGg6IHN0cmluZykgPT4gc3RyaW5nW107XG5cbiAgcmVhZEZpbGUoZmlsZU5hbWU6IHN0cmluZyk6IHN0cmluZ3x1bmRlZmluZWQgeyByZXR1cm4gdGhpcy5kZWxlZ2F0ZS5yZWFkRmlsZShmaWxlTmFtZSk7IH1cblxuICB0cmFjZShzOiBzdHJpbmcpOiB2b2lkIHsgY29uc29sZS5lcnJvcihzKTsgfVxufVxuIl19
\No newline at end of file