@angular-devkit/build-angular 16.2.1 → 17.0.0-next.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +14 -10
- package/builders.json +10 -0
- package/package.json +31 -29
- package/src/builders/application/options.d.ts +6 -1
- package/src/builders/application/options.js +6 -1
- package/src/builders/application/schema.d.ts +3 -6
- package/src/builders/application/schema.js +1 -1
- package/src/builders/application/schema.json +7 -16
- package/src/builders/browser-esbuild/index.js +3 -2
- package/src/builders/dev-server/vite-server.d.ts +1 -1
- package/src/builders/dev-server/vite-server.js +11 -8
- package/src/builders/extract-i18n/application-extraction.d.ts +17 -0
- package/src/builders/extract-i18n/application-extraction.js +137 -0
- package/src/builders/extract-i18n/builder.d.ts +17 -0
- package/src/builders/extract-i18n/builder.js +152 -0
- package/src/builders/extract-i18n/index.d.ts +4 -14
- package/src/builders/extract-i18n/index.js +4 -247
- package/src/builders/extract-i18n/options.d.ts +29 -0
- package/src/builders/extract-i18n/options.js +82 -0
- package/src/builders/extract-i18n/webpack-extraction.d.ts +21 -0
- package/src/builders/extract-i18n/webpack-extraction.js +100 -0
- package/src/builders/jest/schema.d.ts +3 -6
- package/src/builders/jest/schema.js +1 -1
- package/src/builders/jest/schema.json +7 -16
- package/src/builders/prerender/index.d.ts +20 -0
- package/src/builders/prerender/index.js +180 -0
- package/src/builders/prerender/render-worker.d.ts +30 -0
- package/src/builders/prerender/render-worker.js +126 -0
- package/src/builders/prerender/schema.d.ts +22 -0
- package/src/builders/prerender/schema.js +5 -0
- package/src/builders/prerender/schema.json +39 -0
- package/src/builders/prerender/utils.d.ts +22 -0
- package/src/builders/prerender/utils.js +79 -0
- package/src/builders/ssr-dev-server/index.d.ts +23 -0
- package/src/builders/ssr-dev-server/index.js +309 -0
- package/src/builders/ssr-dev-server/schema.d.ts +64 -0
- package/src/builders/ssr-dev-server/schema.js +5 -0
- package/src/builders/ssr-dev-server/schema.json +75 -0
- package/src/builders/ssr-dev-server/utils.d.ts +15 -0
- package/src/builders/ssr-dev-server/utils.js +75 -0
- package/src/tools/babel/plugins/elide-angular-metadata.js +43 -20
- package/src/tools/babel/plugins/pure-toplevel-functions.js +3 -2
- package/src/tools/babel/webpack-loader.js +2 -2
- package/src/tools/esbuild/angular/compilation/angular-compilation.d.ts +7 -2
- package/src/tools/esbuild/angular/compilation/angular-compilation.js +21 -1
- package/src/tools/esbuild/angular/compiler-plugin.js +8 -13
- package/src/tools/esbuild/application-code-bundle.js +3 -5
- package/src/tools/esbuild/utils.js +5 -1
- package/src/tools/sass/rebasing-importer.js +2 -2
- package/src/utils/index-file/inline-critical-css.js +13 -26
- package/src/tools/esbuild/external-packages-plugin.d.ts +0 -17
- package/src/tools/esbuild/external-packages-plugin.js +0 -49
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema",
|
|
3
|
+
"title": "SSR Dev Server Target",
|
|
4
|
+
"description": "SSR Dev Server target options for Build Facade.",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"properties": {
|
|
7
|
+
"browserTarget": {
|
|
8
|
+
"type": "string",
|
|
9
|
+
"description": "Browser target to build.",
|
|
10
|
+
"pattern": ".+:.+(:.+)?"
|
|
11
|
+
},
|
|
12
|
+
"serverTarget": {
|
|
13
|
+
"type": "string",
|
|
14
|
+
"description": "Server target to build.",
|
|
15
|
+
"pattern": ".+:.+(:.+)?"
|
|
16
|
+
},
|
|
17
|
+
"host": {
|
|
18
|
+
"type": "string",
|
|
19
|
+
"description": "Host to listen on.",
|
|
20
|
+
"default": "localhost"
|
|
21
|
+
},
|
|
22
|
+
"port": {
|
|
23
|
+
"type": "number",
|
|
24
|
+
"default": 4200,
|
|
25
|
+
"description": "Port to start the development server at. Default is 4200. Pass 0 to get a dynamically assigned port."
|
|
26
|
+
},
|
|
27
|
+
"watch": {
|
|
28
|
+
"type": "boolean",
|
|
29
|
+
"description": "Rebuild on change.",
|
|
30
|
+
"default": true
|
|
31
|
+
},
|
|
32
|
+
"publicHost": {
|
|
33
|
+
"type": "string",
|
|
34
|
+
"description": "The URL that the browser client should use to connect to the development server. Use for a complex dev server setup, such as one with reverse proxies."
|
|
35
|
+
},
|
|
36
|
+
"open": {
|
|
37
|
+
"type": "boolean",
|
|
38
|
+
"description": "Opens the url in default browser.",
|
|
39
|
+
"default": false,
|
|
40
|
+
"alias": "o"
|
|
41
|
+
},
|
|
42
|
+
"progress": {
|
|
43
|
+
"type": "boolean",
|
|
44
|
+
"description": "Log progress to the console while building."
|
|
45
|
+
},
|
|
46
|
+
"inspect": {
|
|
47
|
+
"type": "boolean",
|
|
48
|
+
"description": "Launch the development server in inspector mode and listen on address and port '127.0.0.1:9229'.",
|
|
49
|
+
"default": false
|
|
50
|
+
},
|
|
51
|
+
"ssl": {
|
|
52
|
+
"type": "boolean",
|
|
53
|
+
"description": "Serve using HTTPS.",
|
|
54
|
+
"default": false
|
|
55
|
+
},
|
|
56
|
+
"sslKey": {
|
|
57
|
+
"type": "string",
|
|
58
|
+
"description": "SSL key to use for serving HTTPS."
|
|
59
|
+
},
|
|
60
|
+
"sslCert": {
|
|
61
|
+
"type": "string",
|
|
62
|
+
"description": "SSL certificate to use for serving HTTPS."
|
|
63
|
+
},
|
|
64
|
+
"proxyConfig": {
|
|
65
|
+
"type": "string",
|
|
66
|
+
"description": "Proxy configuration file."
|
|
67
|
+
},
|
|
68
|
+
"verbose": {
|
|
69
|
+
"type": "boolean",
|
|
70
|
+
"description": "Adds more details to output logging."
|
|
71
|
+
}
|
|
72
|
+
},
|
|
73
|
+
"additionalProperties": false,
|
|
74
|
+
"required": ["browserTarget", "serverTarget"]
|
|
75
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright Google LLC 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
|
+
import { SpawnOptions } from 'child_process';
|
|
9
|
+
import { Observable } from 'rxjs';
|
|
10
|
+
export declare function getAvailablePort(): Promise<number>;
|
|
11
|
+
export declare function spawnAsObservable(command: string, args?: string[], options?: SpawnOptions): Observable<{
|
|
12
|
+
stdout?: string;
|
|
13
|
+
stderr?: string;
|
|
14
|
+
}>;
|
|
15
|
+
export declare function waitUntilServerIsListening(port: number, host?: string): Observable<undefined>;
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @license
|
|
4
|
+
* Copyright Google LLC All Rights Reserved.
|
|
5
|
+
*
|
|
6
|
+
* Use of this source code is governed by an MIT-style license that can be
|
|
7
|
+
* found in the LICENSE file at https://angular.io/license
|
|
8
|
+
*/
|
|
9
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
10
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
11
|
+
};
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
exports.waitUntilServerIsListening = exports.spawnAsObservable = exports.getAvailablePort = void 0;
|
|
14
|
+
const child_process_1 = require("child_process");
|
|
15
|
+
const net_1 = require("net");
|
|
16
|
+
const rxjs_1 = require("rxjs");
|
|
17
|
+
const tree_kill_1 = __importDefault(require("tree-kill"));
|
|
18
|
+
function getAvailablePort() {
|
|
19
|
+
return new Promise((resolve, reject) => {
|
|
20
|
+
const server = (0, net_1.createServer)();
|
|
21
|
+
server
|
|
22
|
+
.unref()
|
|
23
|
+
.on('error', reject)
|
|
24
|
+
.listen(0, () => {
|
|
25
|
+
const { port } = server.address();
|
|
26
|
+
server.close(() => resolve(port));
|
|
27
|
+
});
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
exports.getAvailablePort = getAvailablePort;
|
|
31
|
+
function spawnAsObservable(command, args = [], options = {}) {
|
|
32
|
+
return new rxjs_1.Observable((obs) => {
|
|
33
|
+
const proc = (0, child_process_1.spawn)(command, args, options);
|
|
34
|
+
if (proc.stdout) {
|
|
35
|
+
proc.stdout.on('data', (data) => obs.next({ stdout: data.toString() }));
|
|
36
|
+
}
|
|
37
|
+
if (proc.stderr) {
|
|
38
|
+
proc.stderr.on('data', (data) => obs.next({ stderr: data.toString() }));
|
|
39
|
+
}
|
|
40
|
+
proc
|
|
41
|
+
.on('error', (err) => obs.error(err))
|
|
42
|
+
.on('close', (code) => {
|
|
43
|
+
if (code !== 0) {
|
|
44
|
+
obs.error(new Error(`${command} exited with ${code} code.`));
|
|
45
|
+
}
|
|
46
|
+
obs.complete();
|
|
47
|
+
});
|
|
48
|
+
return () => {
|
|
49
|
+
if (!proc.killed && proc.pid) {
|
|
50
|
+
(0, tree_kill_1.default)(proc.pid, 'SIGTERM');
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
exports.spawnAsObservable = spawnAsObservable;
|
|
56
|
+
function waitUntilServerIsListening(port, host) {
|
|
57
|
+
const allowedErrorCodes = ['ECONNREFUSED', 'ECONNRESET'];
|
|
58
|
+
return new rxjs_1.Observable((obs) => {
|
|
59
|
+
const client = (0, net_1.createConnection)({ host, port }, () => {
|
|
60
|
+
obs.next(undefined);
|
|
61
|
+
obs.complete();
|
|
62
|
+
}).on('error', (err) => obs.error(err));
|
|
63
|
+
return () => {
|
|
64
|
+
if (!client.destroyed) {
|
|
65
|
+
client.destroy();
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
}).pipe((0, rxjs_1.retryWhen)((err) => err.pipe((0, rxjs_1.mergeMap)((error, attempts) => {
|
|
69
|
+
return attempts > 10 || !allowedErrorCodes.includes(error.code)
|
|
70
|
+
? (0, rxjs_1.throwError)(error)
|
|
71
|
+
: (0, rxjs_1.timer)(100 * (attempts * 1));
|
|
72
|
+
}))));
|
|
73
|
+
}
|
|
74
|
+
exports.waitUntilServerIsListening = waitUntilServerIsListening;
|
|
75
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyX2RldmtpdC9idWlsZF9hbmd1bGFyL3NyYy9idWlsZGVycy9zc3ItZGV2LXNlcnZlci91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7OztHQU1HOzs7Ozs7QUFFSCxpREFBb0Q7QUFDcEQsNkJBQWtFO0FBQ2xFLCtCQUEwRTtBQUMxRSwwREFBaUM7QUFFakMsU0FBZ0IsZ0JBQWdCO0lBQzlCLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7UUFDckMsTUFBTSxNQUFNLEdBQUcsSUFBQSxrQkFBWSxHQUFFLENBQUM7UUFDOUIsTUFBTTthQUNILEtBQUssRUFBRTthQUNQLEVBQUUsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDO2FBQ25CLE1BQU0sQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFO1lBQ2QsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLE1BQU0sQ0FBQyxPQUFPLEVBQWlCLENBQUM7WUFDakQsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUNwQyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQVhELDRDQVdDO0FBRUQsU0FBZ0IsaUJBQWlCLENBQy9CLE9BQWUsRUFDZixPQUFpQixFQUFFLEVBQ25CLFVBQXdCLEVBQUU7SUFFMUIsT0FBTyxJQUFJLGlCQUFVLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtRQUM1QixNQUFNLElBQUksR0FBRyxJQUFBLHFCQUFLLEVBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztRQUMzQyxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDZixJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQ3pFO1FBRUQsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ2YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztTQUN6RTtRQUVELElBQUk7YUFDRCxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQ3BDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNwQixJQUFJLElBQUksS0FBSyxDQUFDLEVBQUU7Z0JBQ2QsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyxHQUFHLE9BQU8sZ0JBQWdCLElBQUksUUFBUSxDQUFDLENBQUMsQ0FBQzthQUM5RDtZQUVELEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNqQixDQUFDLENBQUMsQ0FBQztRQUVMLE9BQU8sR0FBRyxFQUFFO1lBQ1YsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRTtnQkFDNUIsSUFBQSxtQkFBUSxFQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsU0FBUyxDQUFDLENBQUM7YUFDL0I7UUFDSCxDQUFDLENBQUM7SUFDSixDQUFDLENBQUMsQ0FBQztBQUNMLENBQUM7QUEvQkQsOENBK0JDO0FBRUQsU0FBZ0IsMEJBQTBCLENBQUMsSUFBWSxFQUFFLElBQWE7SUFDcEUsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLGNBQWMsRUFBRSxZQUFZLENBQUMsQ0FBQztJQUV6RCxPQUFPLElBQUksaUJBQVUsQ0FBWSxDQUFDLEdBQUcsRUFBRSxFQUFFO1FBQ3ZDLE1BQU0sTUFBTSxHQUFHLElBQUEsc0JBQWdCLEVBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUUsR0FBRyxFQUFFO1lBQ25ELEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDcEIsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2pCLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUV4QyxPQUFPLEdBQUcsRUFBRTtZQUNWLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFO2dCQUNyQixNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7YUFDbEI7UUFDSCxDQUFDLENBQUM7SUFDSixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQ0wsSUFBQSxnQkFBUyxFQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FDaEIsR0FBRyxDQUFDLElBQUksQ0FDTixJQUFBLGVBQVEsRUFBQyxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsRUFBRTtRQUMzQixPQUFPLFFBQVEsR0FBRyxFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQztZQUM3RCxDQUFDLENBQUMsSUFBQSxpQkFBVSxFQUFDLEtBQUssQ0FBQztZQUNuQixDQUFDLENBQUMsSUFBQSxZQUFLLEVBQUMsR0FBRyxHQUFHLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEMsQ0FBQyxDQUFDLENBQ0gsQ0FDRixDQUNGLENBQUM7QUFDSixDQUFDO0FBekJELGdFQXlCQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQgeyBTcGF3bk9wdGlvbnMsIHNwYXduIH0gZnJvbSAnY2hpbGRfcHJvY2Vzcyc7XG5pbXBvcnQgeyBBZGRyZXNzSW5mbywgY3JlYXRlQ29ubmVjdGlvbiwgY3JlYXRlU2VydmVyIH0gZnJvbSAnbmV0JztcbmltcG9ydCB7IE9ic2VydmFibGUsIG1lcmdlTWFwLCByZXRyeVdoZW4sIHRocm93RXJyb3IsIHRpbWVyIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgdHJlZUtpbGwgZnJvbSAndHJlZS1raWxsJztcblxuZXhwb3J0IGZ1bmN0aW9uIGdldEF2YWlsYWJsZVBvcnQoKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCBzZXJ2ZXIgPSBjcmVhdGVTZXJ2ZXIoKTtcbiAgICBzZXJ2ZXJcbiAgICAgIC51bnJlZigpXG4gICAgICAub24oJ2Vycm9yJywgcmVqZWN0KVxuICAgICAgLmxpc3RlbigwLCAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHsgcG9ydCB9ID0gc2VydmVyLmFkZHJlc3MoKSBhcyBBZGRyZXNzSW5mbztcbiAgICAgICAgc2VydmVyLmNsb3NlKCgpID0+IHJlc29sdmUocG9ydCkpO1xuICAgICAgfSk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3Bhd25Bc09ic2VydmFibGUoXG4gIGNvbW1hbmQ6IHN0cmluZyxcbiAgYXJnczogc3RyaW5nW10gPSBbXSxcbiAgb3B0aW9uczogU3Bhd25PcHRpb25zID0ge30sXG4pOiBPYnNlcnZhYmxlPHsgc3Rkb3V0Pzogc3RyaW5nOyBzdGRlcnI/OiBzdHJpbmcgfT4ge1xuICByZXR1cm4gbmV3IE9ic2VydmFibGUoKG9icykgPT4ge1xuICAgIGNvbnN0IHByb2MgPSBzcGF3bihjb21tYW5kLCBhcmdzLCBvcHRpb25zKTtcbiAgICBpZiAocHJvYy5zdGRvdXQpIHtcbiAgICAgIHByb2Muc3Rkb3V0Lm9uKCdkYXRhJywgKGRhdGEpID0+IG9icy5uZXh0KHsgc3Rkb3V0OiBkYXRhLnRvU3RyaW5nKCkgfSkpO1xuICAgIH1cblxuICAgIGlmIChwcm9jLnN0ZGVycikge1xuICAgICAgcHJvYy5zdGRlcnIub24oJ2RhdGEnLCAoZGF0YSkgPT4gb2JzLm5leHQoeyBzdGRlcnI6IGRhdGEudG9TdHJpbmcoKSB9KSk7XG4gICAgfVxuXG4gICAgcHJvY1xuICAgICAgLm9uKCdlcnJvcicsIChlcnIpID0+IG9icy5lcnJvcihlcnIpKVxuICAgICAgLm9uKCdjbG9zZScsIChjb2RlKSA9PiB7XG4gICAgICAgIGlmIChjb2RlICE9PSAwKSB7XG4gICAgICAgICAgb2JzLmVycm9yKG5ldyBFcnJvcihgJHtjb21tYW5kfSBleGl0ZWQgd2l0aCAke2NvZGV9IGNvZGUuYCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgb2JzLmNvbXBsZXRlKCk7XG4gICAgICB9KTtcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBpZiAoIXByb2Mua2lsbGVkICYmIHByb2MucGlkKSB7XG4gICAgICAgIHRyZWVLaWxsKHByb2MucGlkLCAnU0lHVEVSTScpO1xuICAgICAgfVxuICAgIH07XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gd2FpdFVudGlsU2VydmVySXNMaXN0ZW5pbmcocG9ydDogbnVtYmVyLCBob3N0Pzogc3RyaW5nKTogT2JzZXJ2YWJsZTx1bmRlZmluZWQ+IHtcbiAgY29uc3QgYWxsb3dlZEVycm9yQ29kZXMgPSBbJ0VDT05OUkVGVVNFRCcsICdFQ09OTlJFU0VUJ107XG5cbiAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlPHVuZGVmaW5lZD4oKG9icykgPT4ge1xuICAgIGNvbnN0IGNsaWVudCA9IGNyZWF0ZUNvbm5lY3Rpb24oeyBob3N0LCBwb3J0IH0sICgpID0+IHtcbiAgICAgIG9icy5uZXh0KHVuZGVmaW5lZCk7XG4gICAgICBvYnMuY29tcGxldGUoKTtcbiAgICB9KS5vbignZXJyb3InLCAoZXJyKSA9PiBvYnMuZXJyb3IoZXJyKSk7XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgaWYgKCFjbGllbnQuZGVzdHJveWVkKSB7XG4gICAgICAgIGNsaWVudC5kZXN0cm95KCk7XG4gICAgICB9XG4gICAgfTtcbiAgfSkucGlwZShcbiAgICByZXRyeVdoZW4oKGVycikgPT5cbiAgICAgIGVyci5waXBlKFxuICAgICAgICBtZXJnZU1hcCgoZXJyb3IsIGF0dGVtcHRzKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGF0dGVtcHRzID4gMTAgfHwgIWFsbG93ZWRFcnJvckNvZGVzLmluY2x1ZGVzKGVycm9yLmNvZGUpXG4gICAgICAgICAgICA/IHRocm93RXJyb3IoZXJyb3IpXG4gICAgICAgICAgICA6IHRpbWVyKDEwMCAqIChhdHRlbXB0cyAqIDEpKTtcbiAgICAgICAgfSksXG4gICAgICApLFxuICAgICksXG4gICk7XG59XG4iXX0=
|
|
@@ -13,6 +13,10 @@ const core_1 = require("@babel/core");
|
|
|
13
13
|
* The name of the Angular class metadata function created by the Angular compiler.
|
|
14
14
|
*/
|
|
15
15
|
const SET_CLASS_METADATA_NAME = 'ɵsetClassMetadata';
|
|
16
|
+
/**
|
|
17
|
+
* Name of the asynchronous Angular class metadata function created by the Angular compiler.
|
|
18
|
+
*/
|
|
19
|
+
const SET_CLASS_METADATA_ASYNC_NAME = 'ɵsetClassMetadataAsync';
|
|
16
20
|
/**
|
|
17
21
|
* Provides one or more keywords that if found within the content of a source file indicate
|
|
18
22
|
* that this plugin should be used with a source file.
|
|
@@ -20,7 +24,7 @@ const SET_CLASS_METADATA_NAME = 'ɵsetClassMetadata';
|
|
|
20
24
|
* @returns An a string iterable containing one or more keywords.
|
|
21
25
|
*/
|
|
22
26
|
function getKeywords() {
|
|
23
|
-
return [SET_CLASS_METADATA_NAME];
|
|
27
|
+
return [SET_CLASS_METADATA_NAME, SET_CLASS_METADATA_ASYNC_NAME];
|
|
24
28
|
}
|
|
25
29
|
exports.getKeywords = getKeywords;
|
|
26
30
|
/**
|
|
@@ -33,6 +37,7 @@ function default_1() {
|
|
|
33
37
|
visitor: {
|
|
34
38
|
CallExpression(path) {
|
|
35
39
|
const callee = path.node.callee;
|
|
40
|
+
const callArguments = path.node.arguments;
|
|
36
41
|
// The function being called must be the metadata function name
|
|
37
42
|
let calleeName;
|
|
38
43
|
if (core_1.types.isMemberExpression(callee) && core_1.types.isIdentifier(callee.property)) {
|
|
@@ -41,28 +46,46 @@ function default_1() {
|
|
|
41
46
|
else if (core_1.types.isIdentifier(callee)) {
|
|
42
47
|
calleeName = callee.name;
|
|
43
48
|
}
|
|
44
|
-
if (calleeName !==
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
return;
|
|
49
|
+
if (calleeName !== undefined &&
|
|
50
|
+
(isRemoveClassMetadataCall(calleeName, callArguments) ||
|
|
51
|
+
isRemoveClassmetadataAsyncCall(calleeName, callArguments))) {
|
|
52
|
+
// The metadata function is always emitted inside a function expression
|
|
53
|
+
const parent = path.getFunctionParent();
|
|
54
|
+
if (parent && (parent.isFunctionExpression() || parent.isArrowFunctionExpression())) {
|
|
55
|
+
// Replace the metadata function with `void 0` which is the equivalent return value
|
|
56
|
+
// of the metadata function.
|
|
57
|
+
path.replaceWith(path.scope.buildUndefinedNode());
|
|
58
|
+
}
|
|
55
59
|
}
|
|
56
|
-
// The metadata function is always emitted inside a function expression
|
|
57
|
-
if (!path.getFunctionParent()?.isFunctionExpression()) {
|
|
58
|
-
return;
|
|
59
|
-
}
|
|
60
|
-
// Replace the metadata function with `void 0` which is the equivalent return value
|
|
61
|
-
// of the metadata function.
|
|
62
|
-
path.replaceWith(path.scope.buildUndefinedNode());
|
|
63
60
|
},
|
|
64
61
|
},
|
|
65
62
|
};
|
|
66
63
|
}
|
|
67
64
|
exports.default = default_1;
|
|
68
|
-
|
|
65
|
+
/** Determines if a function call is a call to `setClassMetadata`. */
|
|
66
|
+
function isRemoveClassMetadataCall(name, args) {
|
|
67
|
+
// `setClassMetadata` calls have to meet the following criteria:
|
|
68
|
+
// * First must be an identifier
|
|
69
|
+
// * Second must be an array literal
|
|
70
|
+
return (name === SET_CLASS_METADATA_NAME &&
|
|
71
|
+
args.length === 4 &&
|
|
72
|
+
core_1.types.isIdentifier(args[0]) &&
|
|
73
|
+
core_1.types.isArrayExpression(args[1]));
|
|
74
|
+
}
|
|
75
|
+
/** Determines if a function call is a call to `setClassMetadataAsync`. */
|
|
76
|
+
function isRemoveClassmetadataAsyncCall(name, args) {
|
|
77
|
+
// `setClassMetadataAsync` calls have to meet the following criteria:
|
|
78
|
+
// * First argument must be an identifier.
|
|
79
|
+
// * Second argument must be an inline function.
|
|
80
|
+
// * Third argument must be an inline function.
|
|
81
|
+
return (name === SET_CLASS_METADATA_ASYNC_NAME &&
|
|
82
|
+
args.length === 3 &&
|
|
83
|
+
core_1.types.isIdentifier(args[0]) &&
|
|
84
|
+
isInlineFunction(args[1]) &&
|
|
85
|
+
isInlineFunction(args[2]));
|
|
86
|
+
}
|
|
87
|
+
/** Determines if a node is an inline function expression. */
|
|
88
|
+
function isInlineFunction(node) {
|
|
89
|
+
return core_1.types.isFunctionExpression(node) || core_1.types.isArrowFunctionExpression(node);
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxpZGUtYW5ndWxhci1tZXRhZGF0YS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXJfZGV2a2l0L2J1aWxkX2FuZ3VsYXIvc3JjL3Rvb2xzL2JhYmVsL3BsdWdpbnMvZWxpZGUtYW5ndWxhci1tZXRhZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7OztHQU1HOzs7QUFFSCxzQ0FBeUQ7QUFFekQ7O0dBRUc7QUFDSCxNQUFNLHVCQUF1QixHQUFHLG1CQUFtQixDQUFDO0FBRXBEOztHQUVHO0FBQ0gsTUFBTSw2QkFBNkIsR0FBRyx3QkFBd0IsQ0FBQztBQUUvRDs7Ozs7R0FLRztBQUNILFNBQWdCLFdBQVc7SUFDekIsT0FBTyxDQUFDLHVCQUF1QixFQUFFLDZCQUE2QixDQUFDLENBQUM7QUFDbEUsQ0FBQztBQUZELGtDQUVDO0FBRUQ7Ozs7R0FJRztBQUNIO0lBQ0UsT0FBTztRQUNMLE9BQU8sRUFBRTtZQUNQLGNBQWMsQ0FBQyxJQUFvQztnQkFDakQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7Z0JBQ2hDLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO2dCQUUxQywrREFBK0Q7Z0JBQy9ELElBQUksVUFBVSxDQUFDO2dCQUNmLElBQUksWUFBSyxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxJQUFJLFlBQUssQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFO29CQUMzRSxVQUFVLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7aUJBQ25DO3FCQUFNLElBQUksWUFBSyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBRTtvQkFDckMsVUFBVSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUM7aUJBQzFCO2dCQUVELElBQ0UsVUFBVSxLQUFLLFNBQVM7b0JBQ3hCLENBQUMseUJBQXlCLENBQUMsVUFBVSxFQUFFLGFBQWEsQ0FBQzt3QkFDbkQsOEJBQThCLENBQUMsVUFBVSxFQUFFLGFBQWEsQ0FBQyxDQUFDLEVBQzVEO29CQUNBLHVFQUF1RTtvQkFDdkUsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7b0JBRXhDLElBQUksTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLG9CQUFvQixFQUFFLElBQUksTUFBTSxDQUFDLHlCQUF5QixFQUFFLENBQUMsRUFBRTt3QkFDbkYsbUZBQW1GO3dCQUNuRiw0QkFBNEI7d0JBQzVCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLENBQUM7cUJBQ25EO2lCQUNGO1lBQ0gsQ0FBQztTQUNGO0tBQ0YsQ0FBQztBQUNKLENBQUM7QUFoQ0QsNEJBZ0NDO0FBRUQscUVBQXFFO0FBQ3JFLFNBQVMseUJBQXlCLENBQUMsSUFBWSxFQUFFLElBQXVDO0lBQ3RGLGdFQUFnRTtJQUNoRSxnQ0FBZ0M7SUFDaEMsb0NBQW9DO0lBQ3BDLE9BQU8sQ0FDTCxJQUFJLEtBQUssdUJBQXVCO1FBQ2hDLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQztRQUNqQixZQUFLLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMzQixZQUFLLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQ2pDLENBQUM7QUFDSixDQUFDO0FBRUQsMEVBQTBFO0FBQzFFLFNBQVMsOEJBQThCLENBQ3JDLElBQVksRUFDWixJQUF1QztJQUV2QyxxRUFBcUU7SUFDckUsMENBQTBDO0lBQzFDLGdEQUFnRDtJQUNoRCwrQ0FBK0M7SUFDL0MsT0FBTyxDQUNMLElBQUksS0FBSyw2QkFBNkI7UUFDdEMsSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDO1FBQ2pCLFlBQUssQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzNCLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN6QixnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDMUIsQ0FBQztBQUNKLENBQUM7QUFFRCw2REFBNkQ7QUFDN0QsU0FBUyxnQkFBZ0IsQ0FBQyxJQUFnQjtJQUN4QyxPQUFPLFlBQUssQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxZQUFLLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDbkYsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQgeyBOb2RlUGF0aCwgUGx1Z2luT2JqLCB0eXBlcyB9IGZyb20gJ0BiYWJlbC9jb3JlJztcblxuLyoqXG4gKiBUaGUgbmFtZSBvZiB0aGUgQW5ndWxhciBjbGFzcyBtZXRhZGF0YSBmdW5jdGlvbiBjcmVhdGVkIGJ5IHRoZSBBbmd1bGFyIGNvbXBpbGVyLlxuICovXG5jb25zdCBTRVRfQ0xBU1NfTUVUQURBVEFfTkFNRSA9ICfJtXNldENsYXNzTWV0YWRhdGEnO1xuXG4vKipcbiAqIE5hbWUgb2YgdGhlIGFzeW5jaHJvbm91cyBBbmd1bGFyIGNsYXNzIG1ldGFkYXRhIGZ1bmN0aW9uIGNyZWF0ZWQgYnkgdGhlIEFuZ3VsYXIgY29tcGlsZXIuXG4gKi9cbmNvbnN0IFNFVF9DTEFTU19NRVRBREFUQV9BU1lOQ19OQU1FID0gJ8m1c2V0Q2xhc3NNZXRhZGF0YUFzeW5jJztcblxuLyoqXG4gKiBQcm92aWRlcyBvbmUgb3IgbW9yZSBrZXl3b3JkcyB0aGF0IGlmIGZvdW5kIHdpdGhpbiB0aGUgY29udGVudCBvZiBhIHNvdXJjZSBmaWxlIGluZGljYXRlXG4gKiB0aGF0IHRoaXMgcGx1Z2luIHNob3VsZCBiZSB1c2VkIHdpdGggYSBzb3VyY2UgZmlsZS5cbiAqXG4gKiBAcmV0dXJucyBBbiBhIHN0cmluZyBpdGVyYWJsZSBjb250YWluaW5nIG9uZSBvciBtb3JlIGtleXdvcmRzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0S2V5d29yZHMoKTogSXRlcmFibGU8c3RyaW5nPiB7XG4gIHJldHVybiBbU0VUX0NMQVNTX01FVEFEQVRBX05BTUUsIFNFVF9DTEFTU19NRVRBREFUQV9BU1lOQ19OQU1FXTtcbn1cblxuLyoqXG4gKiBBIGJhYmVsIHBsdWdpbiBmYWN0b3J5IGZ1bmN0aW9uIGZvciBlbGlkaW5nIHRoZSBBbmd1bGFyIGNsYXNzIG1ldGFkYXRhIGZ1bmN0aW9uIChgybVzZXRDbGFzc01ldGFkYXRhYCkuXG4gKlxuICogQHJldHVybnMgQSBiYWJlbCBwbHVnaW4gb2JqZWN0IGluc3RhbmNlLlxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiAoKTogUGx1Z2luT2JqIHtcbiAgcmV0dXJuIHtcbiAgICB2aXNpdG9yOiB7XG4gICAgICBDYWxsRXhwcmVzc2lvbihwYXRoOiBOb2RlUGF0aDx0eXBlcy5DYWxsRXhwcmVzc2lvbj4pIHtcbiAgICAgICAgY29uc3QgY2FsbGVlID0gcGF0aC5ub2RlLmNhbGxlZTtcbiAgICAgICAgY29uc3QgY2FsbEFyZ3VtZW50cyA9IHBhdGgubm9kZS5hcmd1bWVudHM7XG5cbiAgICAgICAgLy8gVGhlIGZ1bmN0aW9uIGJlaW5nIGNhbGxlZCBtdXN0IGJlIHRoZSBtZXRhZGF0YSBmdW5jdGlvbiBuYW1lXG4gICAgICAgIGxldCBjYWxsZWVOYW1lO1xuICAgICAgICBpZiAodHlwZXMuaXNNZW1iZXJFeHByZXNzaW9uKGNhbGxlZSkgJiYgdHlwZXMuaXNJZGVudGlmaWVyKGNhbGxlZS5wcm9wZXJ0eSkpIHtcbiAgICAgICAgICBjYWxsZWVOYW1lID0gY2FsbGVlLnByb3BlcnR5Lm5hbWU7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZXMuaXNJZGVudGlmaWVyKGNhbGxlZSkpIHtcbiAgICAgICAgICBjYWxsZWVOYW1lID0gY2FsbGVlLm5hbWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoXG4gICAgICAgICAgY2FsbGVlTmFtZSAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgKGlzUmVtb3ZlQ2xhc3NNZXRhZGF0YUNhbGwoY2FsbGVlTmFtZSwgY2FsbEFyZ3VtZW50cykgfHxcbiAgICAgICAgICAgIGlzUmVtb3ZlQ2xhc3NtZXRhZGF0YUFzeW5jQ2FsbChjYWxsZWVOYW1lLCBjYWxsQXJndW1lbnRzKSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgLy8gVGhlIG1ldGFkYXRhIGZ1bmN0aW9uIGlzIGFsd2F5cyBlbWl0dGVkIGluc2lkZSBhIGZ1bmN0aW9uIGV4cHJlc3Npb25cbiAgICAgICAgICBjb25zdCBwYXJlbnQgPSBwYXRoLmdldEZ1bmN0aW9uUGFyZW50KCk7XG5cbiAgICAgICAgICBpZiAocGFyZW50ICYmIChwYXJlbnQuaXNGdW5jdGlvbkV4cHJlc3Npb24oKSB8fCBwYXJlbnQuaXNBcnJvd0Z1bmN0aW9uRXhwcmVzc2lvbigpKSkge1xuICAgICAgICAgICAgLy8gUmVwbGFjZSB0aGUgbWV0YWRhdGEgZnVuY3Rpb24gd2l0aCBgdm9pZCAwYCB3aGljaCBpcyB0aGUgZXF1aXZhbGVudCByZXR1cm4gdmFsdWVcbiAgICAgICAgICAgIC8vIG9mIHRoZSBtZXRhZGF0YSBmdW5jdGlvbi5cbiAgICAgICAgICAgIHBhdGgucmVwbGFjZVdpdGgocGF0aC5zY29wZS5idWlsZFVuZGVmaW5lZE5vZGUoKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LFxuICAgIH0sXG4gIH07XG59XG5cbi8qKiBEZXRlcm1pbmVzIGlmIGEgZnVuY3Rpb24gY2FsbCBpcyBhIGNhbGwgdG8gYHNldENsYXNzTWV0YWRhdGFgLiAqL1xuZnVuY3Rpb24gaXNSZW1vdmVDbGFzc01ldGFkYXRhQ2FsbChuYW1lOiBzdHJpbmcsIGFyZ3M6IHR5cGVzLkNhbGxFeHByZXNzaW9uWydhcmd1bWVudHMnXSk6IGJvb2xlYW4ge1xuICAvLyBgc2V0Q2xhc3NNZXRhZGF0YWAgY2FsbHMgaGF2ZSB0byBtZWV0IHRoZSBmb2xsb3dpbmcgY3JpdGVyaWE6XG4gIC8vICogRmlyc3QgbXVzdCBiZSBhbiBpZGVudGlmaWVyXG4gIC8vICogU2Vjb25kIG11c3QgYmUgYW4gYXJyYXkgbGl0ZXJhbFxuICByZXR1cm4gKFxuICAgIG5hbWUgPT09IFNFVF9DTEFTU19NRVRBREFUQV9OQU1FICYmXG4gICAgYXJncy5sZW5ndGggPT09IDQgJiZcbiAgICB0eXBlcy5pc0lkZW50aWZpZXIoYXJnc1swXSkgJiZcbiAgICB0eXBlcy5pc0FycmF5RXhwcmVzc2lvbihhcmdzWzFdKVxuICApO1xufVxuXG4vKiogRGV0ZXJtaW5lcyBpZiBhIGZ1bmN0aW9uIGNhbGwgaXMgYSBjYWxsIHRvIGBzZXRDbGFzc01ldGFkYXRhQXN5bmNgLiAqL1xuZnVuY3Rpb24gaXNSZW1vdmVDbGFzc21ldGFkYXRhQXN5bmNDYWxsKFxuICBuYW1lOiBzdHJpbmcsXG4gIGFyZ3M6IHR5cGVzLkNhbGxFeHByZXNzaW9uWydhcmd1bWVudHMnXSxcbik6IGJvb2xlYW4ge1xuICAvLyBgc2V0Q2xhc3NNZXRhZGF0YUFzeW5jYCBjYWxscyBoYXZlIHRvIG1lZXQgdGhlIGZvbGxvd2luZyBjcml0ZXJpYTpcbiAgLy8gKiBGaXJzdCBhcmd1bWVudCBtdXN0IGJlIGFuIGlkZW50aWZpZXIuXG4gIC8vICogU2Vjb25kIGFyZ3VtZW50IG11c3QgYmUgYW4gaW5saW5lIGZ1bmN0aW9uLlxuICAvLyAqIFRoaXJkIGFyZ3VtZW50IG11c3QgYmUgYW4gaW5saW5lIGZ1bmN0aW9uLlxuICByZXR1cm4gKFxuICAgIG5hbWUgPT09IFNFVF9DTEFTU19NRVRBREFUQV9BU1lOQ19OQU1FICYmXG4gICAgYXJncy5sZW5ndGggPT09IDMgJiZcbiAgICB0eXBlcy5pc0lkZW50aWZpZXIoYXJnc1swXSkgJiZcbiAgICBpc0lubGluZUZ1bmN0aW9uKGFyZ3NbMV0pICYmXG4gICAgaXNJbmxpbmVGdW5jdGlvbihhcmdzWzJdKVxuICApO1xufVxuXG4vKiogRGV0ZXJtaW5lcyBpZiBhIG5vZGUgaXMgYW4gaW5saW5lIGZ1bmN0aW9uIGV4cHJlc3Npb24uICovXG5mdW5jdGlvbiBpc0lubGluZUZ1bmN0aW9uKG5vZGU6IHR5cGVzLk5vZGUpOiBib29sZWFuIHtcbiAgcmV0dXJuIHR5cGVzLmlzRnVuY3Rpb25FeHByZXNzaW9uKG5vZGUpIHx8IHR5cGVzLmlzQXJyb3dGdW5jdGlvbkV4cHJlc3Npb24obm9kZSk7XG59XG4iXX0=
|
|
@@ -68,7 +68,8 @@ function default_1() {
|
|
|
68
68
|
return;
|
|
69
69
|
}
|
|
70
70
|
const callee = path.node.callee;
|
|
71
|
-
if (core_1.types.isFunctionExpression(callee)
|
|
71
|
+
if ((core_1.types.isFunctionExpression(callee) || core_1.types.isArrowFunctionExpression(callee)) &&
|
|
72
|
+
path.node.arguments.length !== 0) {
|
|
72
73
|
return;
|
|
73
74
|
}
|
|
74
75
|
// Do not annotate TypeScript helpers emitted by the TypeScript compiler.
|
|
@@ -88,4 +89,4 @@ function default_1() {
|
|
|
88
89
|
};
|
|
89
90
|
}
|
|
90
91
|
exports.default = default_1;
|
|
91
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
92
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVyZS10b3BsZXZlbC1mdW5jdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyX2RldmtpdC9idWlsZF9hbmd1bGFyL3NyYy90b29scy9iYWJlbC9wbHVnaW5zL3B1cmUtdG9wbGV2ZWwtZnVuY3Rpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7O0dBTUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFSCxzQ0FBeUQ7QUFDekQsNkZBQTREO0FBQzVELDZDQUErQjtBQUUvQjs7R0FFRztBQUNILE1BQU0sWUFBWSxHQUFHLElBQUksR0FBRyxDQUFTLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUUzRjs7Ozs7R0FLRztBQUNILFNBQVMsaUJBQWlCLENBQUMsSUFBWTtJQUNyQyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2xDLE1BQU0sWUFBWSxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUVsQyxJQUFJLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtRQUM1RSxPQUFPLEtBQUssQ0FBQztLQUNkO0lBRUQsT0FBTyxZQUFZLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDO0FBQ3hDLENBQUM7QUFFRDs7OztHQUlHO0FBQ0g7SUFDRSxPQUFPO1FBQ0wsT0FBTyxFQUFFO1lBQ1AsY0FBYyxDQUFDLElBQW9DO2dCQUNqRCwrREFBK0Q7Z0JBQy9ELElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFLEVBQUU7b0JBQzVCLE9BQU87aUJBQ1I7Z0JBRUQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7Z0JBQ2hDLElBQ0UsQ0FBQyxZQUFLLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDLElBQUksWUFBSyxDQUFDLHlCQUF5QixDQUFDLE1BQU0sQ0FBQyxDQUFDO29CQUMvRSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUNoQztvQkFDQSxPQUFPO2lCQUNSO2dCQUNELHlFQUF5RTtnQkFDekUseURBQXlEO2dCQUN6RCxJQUFJLFlBQUssQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLElBQUksaUJBQWlCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFO29CQUNoRSxPQUFPO2lCQUNSO2dCQUVELElBQUEsaUNBQWMsRUFBQyxJQUFJLENBQUMsQ0FBQztZQUN2QixDQUFDO1lBQ0QsYUFBYSxDQUFDLElBQW1DO2dCQUMvQywrREFBK0Q7Z0JBQy9ELElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsRUFBRTtvQkFDN0IsSUFBQSxpQ0FBYyxFQUFDLElBQUksQ0FBQyxDQUFDO2lCQUN0QjtZQUNILENBQUM7U0FDRjtLQUNGLENBQUM7QUFDSixDQUFDO0FBaENELDRCQWdDQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQgeyBOb2RlUGF0aCwgUGx1Z2luT2JqLCB0eXBlcyB9IGZyb20gJ0BiYWJlbC9jb3JlJztcbmltcG9ydCBhbm5vdGF0ZUFzUHVyZSBmcm9tICdAYmFiZWwvaGVscGVyLWFubm90YXRlLWFzLXB1cmUnO1xuaW1wb3J0ICogYXMgdHNsaWIgZnJvbSAndHNsaWInO1xuXG4vKipcbiAqIEEgY2FjaGVkIHNldCBvZiBUeXBlU2NyaXB0IGhlbHBlciBmdW5jdGlvbiBuYW1lcyB1c2VkIGJ5IHRoZSBoZWxwZXIgbmFtZSBtYXRjaGVyIHV0aWxpdHkgZnVuY3Rpb24uXG4gKi9cbmNvbnN0IHRzbGliSGVscGVycyA9IG5ldyBTZXQ8c3RyaW5nPihPYmplY3Qua2V5cyh0c2xpYikuZmlsdGVyKChoKSA9PiBoLnN0YXJ0c1dpdGgoJ19fJykpKTtcblxuLyoqXG4gKiBEZXRlcm1pbmF0ZXMgd2hldGhlciBhbiBpZGVudGlmaWVyIG5hbWUgbWF0Y2hlcyBvbmUgb2YgdGhlIFR5cGVTY3JpcHQgaGVscGVyIGZ1bmN0aW9uIG5hbWVzLlxuICpcbiAqIEBwYXJhbSBuYW1lIFRoZSBpZGVudGlmaWVyIG5hbWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyBUcnVlLCBpZiB0aGUgbmFtZSBtYXRjaGVzIGEgVHlwZVNjcmlwdCBoZWxwZXIgbmFtZTsgb3RoZXJ3aXNlLCBmYWxzZS5cbiAqL1xuZnVuY3Rpb24gaXNUc2xpYkhlbHBlck5hbWUobmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGNvbnN0IG5hbWVQYXJ0cyA9IG5hbWUuc3BsaXQoJyQnKTtcbiAgY29uc3Qgb3JpZ2luYWxOYW1lID0gbmFtZVBhcnRzWzBdO1xuXG4gIGlmIChuYW1lUGFydHMubGVuZ3RoID4gMiB8fCAobmFtZVBhcnRzLmxlbmd0aCA9PT0gMiAmJiBpc05hTigrbmFtZVBhcnRzWzFdKSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gdHNsaWJIZWxwZXJzLmhhcyhvcmlnaW5hbE5hbWUpO1xufVxuXG4vKipcbiAqIEEgYmFiZWwgcGx1Z2luIGZhY3RvcnkgZnVuY3Rpb24gZm9yIGFkZGluZyB0aGUgUFVSRSBhbm5vdGF0aW9uIHRvIHRvcC1sZXZlbCBuZXcgYW5kIGNhbGwgZXhwcmVzc2lvbnMuXG4gKlxuICogQHJldHVybnMgQSBiYWJlbCBwbHVnaW4gb2JqZWN0IGluc3RhbmNlLlxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiAoKTogUGx1Z2luT2JqIHtcbiAgcmV0dXJuIHtcbiAgICB2aXNpdG9yOiB7XG4gICAgICBDYWxsRXhwcmVzc2lvbihwYXRoOiBOb2RlUGF0aDx0eXBlcy5DYWxsRXhwcmVzc2lvbj4pIHtcbiAgICAgICAgLy8gSWYgdGhlIGV4cHJlc3Npb24gaGFzIGEgZnVuY3Rpb24gcGFyZW50LCBpdCBpcyBub3QgdG9wLWxldmVsXG4gICAgICAgIGlmIChwYXRoLmdldEZ1bmN0aW9uUGFyZW50KCkpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjYWxsZWUgPSBwYXRoLm5vZGUuY2FsbGVlO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgKHR5cGVzLmlzRnVuY3Rpb25FeHByZXNzaW9uKGNhbGxlZSkgfHwgdHlwZXMuaXNBcnJvd0Z1bmN0aW9uRXhwcmVzc2lvbihjYWxsZWUpKSAmJlxuICAgICAgICAgIHBhdGgubm9kZS5hcmd1bWVudHMubGVuZ3RoICE9PSAwXG4gICAgICAgICkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyBEbyBub3QgYW5ub3RhdGUgVHlwZVNjcmlwdCBoZWxwZXJzIGVtaXR0ZWQgYnkgdGhlIFR5cGVTY3JpcHQgY29tcGlsZXIuXG4gICAgICAgIC8vIFR5cGVTY3JpcHQgaGVscGVycyBhcmUgaW50ZW5kZWQgdG8gY2F1c2Ugc2lkZSBlZmZlY3RzLlxuICAgICAgICBpZiAodHlwZXMuaXNJZGVudGlmaWVyKGNhbGxlZSkgJiYgaXNUc2xpYkhlbHBlck5hbWUoY2FsbGVlLm5hbWUpKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgYW5ub3RhdGVBc1B1cmUocGF0aCk7XG4gICAgICB9LFxuICAgICAgTmV3RXhwcmVzc2lvbihwYXRoOiBOb2RlUGF0aDx0eXBlcy5OZXdFeHByZXNzaW9uPikge1xuICAgICAgICAvLyBJZiB0aGUgZXhwcmVzc2lvbiBoYXMgYSBmdW5jdGlvbiBwYXJlbnQsIGl0IGlzIG5vdCB0b3AtbGV2ZWxcbiAgICAgICAgaWYgKCFwYXRoLmdldEZ1bmN0aW9uUGFyZW50KCkpIHtcbiAgICAgICAgICBhbm5vdGF0ZUFzUHVyZShwYXRoKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICB9LFxuICB9O1xufVxuIl19
|
|
@@ -109,7 +109,7 @@ exports.default = (0, babel_loader_1.custom)(() => {
|
|
|
109
109
|
!instrumentCode.excludedPaths.has(this.resourcePath) &&
|
|
110
110
|
!/\.(e2e|spec)\.tsx?$|[\\/]node_modules[\\/]/.test(this.resourcePath) &&
|
|
111
111
|
this.resourcePath.startsWith(instrumentCode.includedBasePath)) {
|
|
112
|
-
// `babel-plugin-istanbul` has it's own includes but we do the below so that we avoid running the
|
|
112
|
+
// `babel-plugin-istanbul` has it's own includes but we do the below so that we avoid running the loader.
|
|
113
113
|
customOptions.instrumentCode = {
|
|
114
114
|
includedBasePath: instrumentCode.includedBasePath,
|
|
115
115
|
inputSourceMap: map,
|
|
@@ -166,4 +166,4 @@ exports.default = (0, babel_loader_1.custom)(() => {
|
|
|
166
166
|
},
|
|
167
167
|
};
|
|
168
168
|
});
|
|
169
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2VicGFjay1sb2FkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyX2RldmtpdC9idWlsZF9hbmd1bGFyL3NyYy90b29scy9iYWJlbC93ZWJwYWNrLWxvYWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7OztHQU1HOztBQUVILCtDQUFzQztBQUN0QyxtREFBcUQ7QUFDckQsaUVBQXNEO0FBQ3RELHVEQUkrQjtBQVkvQjs7R0FFRztBQUNILElBQUksbUJBRVMsQ0FBQztBQUVkOztHQUVHO0FBQ0gsSUFBSSxrQkFBa0QsQ0FBQztBQUV2RCxrREFBa0Q7QUFDbEQsa0JBQWUsSUFBQSxxQkFBTSxFQUEyQixHQUFHLEVBQUU7SUFDbkQsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQztRQUNoQyxPQUFPLEVBQUUsS0FBSztRQUNkLFVBQVUsRUFBRSxLQUFLO1FBQ2pCLE9BQU8sRUFBRSxLQUFLO1FBQ2QsZ0JBQWdCLEVBQUUsS0FBSztRQUN2QixVQUFVLEVBQUUsYUFBYTtRQUN6QixjQUFjLEVBQUUsS0FBSztLQUN0QixDQUFDLENBQUM7SUFFSCxPQUFPO1FBQ0wsS0FBSyxDQUFDLGFBQWEsQ0FBQyxPQUFPLEVBQUUsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFO1lBQzFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxjQUFjLEVBQUUsaUJBQWlCLEVBQUUsR0FBRyxVQUFVLEVBQUUsR0FDN0UsT0FBb0MsQ0FBQztZQUV2Qyx5Q0FBeUM7WUFDekMsSUFBSSxhQUFhLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLElBQUksVUFBVSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1lBRXZGLE1BQU0sYUFBYSxHQUE2QjtnQkFDOUMsd0JBQXdCLEVBQUUsS0FBSztnQkFD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Q0FBQyx1QkFBdUIsQ0FBQyxDQUFDLE9BQU87d0JBQ3hDOzRCQUNFLEdBQUcsYUFBYTs0QkFDaEIsa0JBQWtCLEVBQUUsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLEVBQUU7Z0NBQ3BDLFFBQVEsSUFBSSxFQUFFO29DQUNaLEtBQUssT0FBTzt3Q0FDVixJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO3dDQUN4QixNQUFNO29DQUNSLEtBQUssTUFBTSxDQUFDO29DQUNaLDhEQUE4RDtvQ0FDOUQsS0FBSyxTQUFTO3dDQUNaLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7d0NBQzFCLE1BQU07aUNBQ1Q7NEJBQ0gsQ0FBQzt5QkFDMEI7cUJBQzlCO2lCQUNGO2FBQ0YsQ0FBQztRQUNKLENBQUM7S0FDRixDQUFDO0FBQ0osQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHsgY3VzdG9tIH0gZnJvbSAnYmFiZWwtbG9hZGVyJztcbmltcG9ydCB7IGxvYWRFc21Nb2R1bGUgfSBmcm9tICcuLi8uLi91dGlscy9sb2FkLWVzbSc7XG5pbXBvcnQgeyBWRVJTSU9OIH0gZnJvbSAnLi4vLi4vdXRpbHMvcGFja2FnZS12ZXJzaW9uJztcbmltcG9ydCB7XG4gIEFwcGxpY2F0aW9uUHJlc2V0T3B0aW9ucyxcbiAgSTE4blBsdWdpbkNyZWF0b3JzLFxuICByZXF1aXJlc0xpbmtpbmcsXG59IGZyb20gJy4vcHJlc2V0cy9hcHBsaWNhdGlvbic7XG5cbmludGVyZmFjZSBBbmd1bGFyQ3VzdG9tT3B0aW9ucyBleHRlbmRzIE9taXQ8QXBwbGljYXRpb25QcmVzZXRPcHRpb25zLCAnaW5zdHJ1bWVudENvZGUnPiB7XG4gIGluc3RydW1lbnRDb2RlPzoge1xuICAgIC8qKiBub2RlX21vZHVsZXMgYW5kIHRlc3QgZmlsZXMgYXJlIGFsd2F5cyBleGNsdWRlZC4gKi9cbiAgICBleGNsdWRlZFBhdGhzOiBTZXQ8c3RyaW5nPjtcbiAgICBpbmNsdWRlZEJhc2VQYXRoOiBzdHJpbmc7XG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIEFuZ3VsYXJCYWJlbExvYWRlck9wdGlvbnMgPSBBbmd1bGFyQ3VzdG9tT3B0aW9ucyAmIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuXG4vKipcbiAqIENhY2hlZCBpbnN0YW5jZSBvZiB0aGUgY29tcGlsZXItY2xpIGxpbmtlcidzIEJhYmVsIHBsdWdpbiBmYWN0b3J5IGZ1bmN0aW9uLlxuICovXG5sZXQgbGlua2VyUGx1Z2luQ3JlYXRvcjpcbiAgfCB0eXBlb2YgaW1wb3J0KCdAYW5ndWxhci9jb21waWxlci1jbGkvbGlua2VyL2JhYmVsJykuY3JlYXRlRXMyMDE1TGlua2VyUGx1Z2luXG4gIHwgdW5kZWZpbmVkO1xuXG4vKipcbiAqIENhY2hlZCBpbnN0YW5jZSBvZiB0aGUgbG9jYWxpemUgQmFiZWwgcGx1Z2lucyBmYWN0b3J5IGZ1bmN0aW9ucy5cbiAqL1xubGV0IGkxOG5QbHVnaW5DcmVhdG9yczogSTE4blBsdWdpbkNyZWF0b3JzIHwgdW5kZWZpbmVkO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbWF4LWxpbmVzLXBlci1mdW5jdGlvblxuZXhwb3J0IGRlZmF1bHQgY3VzdG9tPEFwcGxpY2F0aW9uUHJlc2V0T3B0aW9ucz4oKCkgPT4ge1xuICBjb25zdCBiYXNlT3B0aW9ucyA9IE9iamVjdC5mcmVlemUoe1xuICAgIGJhYmVscmM6IGZhbHNlLFxuICAgIGNvbmZpZ0ZpbGU6IGZhbHNlLFxuICAgIGNvbXBhY3Q6IGZhbHNlLFxuICAgIGNhY2hlQ29tcHJlc3Npb246IGZhbHNlLFxuICAgIHNvdXJjZVR5cGU6ICd1bmFtYmlndW91cycsXG4gICAgaW5wdXRTb3VyY2VNYXA6IGZhbHNlLFxuICB9KTtcblxuICByZXR1cm4ge1xuICAgIGFzeW5jIGN1c3RvbU9wdGlvbnMob3B0aW9ucywgeyBzb3VyY2UsIG1hcCB9KSB7XG4gICAgICBjb25zdCB7IGkxOG4sIGFvdCwgb3B0aW1pemUsIGluc3RydW1lbnRDb2RlLCBzdXBwb3J0ZWRCcm93c2VycywgLi4ucmF3T3B0aW9ucyB9ID1cbiAgICAgICAgb3B0aW9ucyBhcyBBbmd1bGFyQmFiZWxMb2FkZXJPcHRpb25zO1xuXG4gICAgICAvLyBNdXN0IHByb2Nlc3MgZmlsZSBpZiBwbHVnaW5zIGFyZSBhZGRlZFxuICAgICAgbGV0IHNob3VsZFByb2Nlc3MgPSBBcnJheS5pc0FycmF5KHJhd09wdGlvbnMucGx1Z2lucykgJiYgcmF3T3B0aW9ucy5wbHVnaW5zLmxlbmd0aCA+IDA7XG5cbiAgICAgIGNvbnN0IGN1c3RvbU9wdGlvbnM6IEFwcGxpY2F0aW9uUHJlc2V0T3B0aW9ucyA9IHtcbiAgICAgICAgZm9yY2VBc3luY1RyYW5zZm9ybWF0aW9uOiBmYWxzZSxcbiAgICAgICAgYW5ndWxhckxpbmtlcjogdW5kZWZpbmVkLFxuICAgICAgICBpMThuOiB1bmRlZmluZWQsXG4gICAgICAgIGluc3RydW1lbnRDb2RlOiB1bmRlZmluZWQsXG4gICAgICAgIHN1cHBvcnRlZEJyb3dzZXJzLFxuICAgICAgfTtcblxuICAgICAgLy8gQW5hbHl6ZSBmaWxlIGZvciBsaW5raW5nXG4gICAgICBpZiAoYXdhaXQgcmVxdWlyZXNMaW5raW5nKHRoaXMucmVzb3VyY2VQYXRoLCBzb3VyY2UpKSB7XG4gICAgICAgIC8vIExvYWQgRVNNIGBAYW5ndWxhci9jb21waWxlci1jbGkvbGlua2VyL2JhYmVsYCB1c2luZyB0aGUgVHlwZVNjcmlwdCBkeW5hbWljIGltcG9ydCB3b3JrYXJvdW5kLlxuICAgICAgICAvLyBPbmNlIFR5cGVTY3JpcHQgcHJvdmlkZXMgc3VwcG9ydCBmb3Iga2VlcGluZyB0aGUgZHluYW1pYyBpbXBvcnQgdGhpcyB3b3JrYXJvdW5kIGNhbiBiZVxuICAgICAgICAvLyBjaGFuZ2VkIHRvIGEgZGlyZWN0IGR5bmFtaWMgaW1wb3J0LlxuICAgICAgICBsaW5rZXJQbHVnaW5DcmVhdG9yID8/PSAoXG4gICAgICAgICAgYXdhaXQgbG9hZEVzbU1vZHVsZTx0eXBlb2YgaW1wb3J0KCdAYW5ndWxhci9jb21waWxlci1jbGkvbGlua2VyL2JhYmVsJyk+KFxuICAgICAgICAgICAgJ0Bhbmd1bGFyL2NvbXBpbGVyLWNsaS9saW5rZXIvYmFiZWwnLFxuICAgICAgICAgIClcbiAgICAgICAgKS5jcmVhdGVFczIwMTVMaW5rZXJQbHVnaW47XG5cbiAgICAgICAgY3VzdG9tT3B0aW9ucy5hbmd1bGFyTGlua2VyID0ge1xuICAgICAgICAgIHNob3VsZExpbms6IHRydWUsXG4gICAgICAgICAgaml0TW9kZTogYW90ICE9PSB0cnVlLFxuICAgICAgICAgIGxpbmtlclBsdWdpbkNyZWF0b3IsXG4gICAgICAgIH07XG4gICAgICAgIHNob3VsZFByb2Nlc3MgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICAvLyBBcHBsaWNhdGlvbiBjb2RlIChUUyBmaWxlcykgd2lsbCBvbmx5IGNvbnRhaW4gbmF0aXZlIGFzeW5jIGlmIHRhcmdldCBpcyBFUzIwMTcrLlxuICAgICAgLy8gSG93ZXZlciwgdGhpcmQtcGFydHkgbGlicmFyaWVzIGNhbiByZWdhcmRsZXNzIG9mIHRoZSB0YXJnZXQgb3B0aW9uLlxuICAgICAgLy8gQVBGIHBhY2thZ2VzIHdpdGggY29kZSBpbiBbZl1lc20yMDE1IGRpcmVjdG9yaWVzIGlzIGRvd25sZXZlbGxlZCB0byBFUzIwMTUgYW5kXG4gICAgICAvLyB3aWxsIG5vdCBoYXZlIG5hdGl2ZSBhc3luYy5cbiAgICAgIGN1c3RvbU9wdGlvbnMuZm9yY2VBc3luY1RyYW5zZm9ybWF0aW9uID1cbiAgICAgICAgIS9bXFxcXC9dW19mXT9lc20yMDE1W1xcXFwvXS8udGVzdCh0aGlzLnJlc291cmNlUGF0aCkgJiYgc291cmNlLmluY2x1ZGVzKCdhc3luYycpO1xuXG4gICAgICBzaG91bGRQcm9jZXNzIHx8PVxuICAgICAgICBjdXN0b21PcHRpb25zLmZvcmNlQXN5bmNUcmFuc2Zvcm1hdGlvbiB8fFxuICAgICAgICBjdXN0b21PcHRpb25zLnN1cHBvcnRlZEJyb3dzZXJzICE9PSB1bmRlZmluZWQgfHxcbiAgICAgICAgZmFsc2U7XG5cbiAgICAgIC8vIEFuYWx5emUgZm9yIGkxOG4gaW5saW5pbmdcbiAgICAgIGlmIChcbiAgICAgICAgaTE4biAmJlxuICAgICAgICAhL1tcXFxcL11AYW5ndWxhcltcXFxcL10oPzpjb21waWxlcnxsb2NhbGl6ZSkvLnRlc3QodGhpcy5yZXNvdXJjZVBhdGgpICYmXG4gICAgICAgIHNvdXJjZS5pbmNsdWRlcygnJGxvY2FsaXplJylcbiAgICAgICkge1xuICAgICAgICAvLyBMb2FkIHRoZSBpMThuIHBsdWdpbiBjcmVhdG9ycyBmcm9tIHRoZSBuZXcgYEBhbmd1bGFyL2xvY2FsaXplL3Rvb2xzYCBlbnRyeSBwb2ludC5cbiAgICAgICAgLy8gVGhpcyBtYXkgZmFpbCBkdXJpbmcgdGhlIHRyYW5zaXRpb24gdG8gRVNNIGR1ZSB0byB0aGUgZW50cnkgcG9pbnQgbm90IHlldCBleGlzdGluZy5cbiAgICAgICAgLy8gRHVyaW5nIHRoZSB0cmFuc2l0aW9uLCB0aGlzIHdpbGwgYWx3YXlzIGF0dGVtcHQgdG8gbG9hZCB0aGUgZW50cnkgcG9pbnQgZm9yIGVhY2ggZmlsZS5cbiAgICAgICAgLy8gVGhpcyB3aWxsIG9ubHkgb2NjdXIgZHVyaW5nIHByZXJlbGVhc2UgYW5kIHdpbGwgYmUgYXV0b21hdGljYWxseSBjb3JyZWN0ZWQgb25jZSB0aGUgbmV3XG4gICAgICAgIC8vIGVudHJ5IHBvaW50IGV4aXN0cy5cbiAgICAgICAgaWYgKGkxOG5QbHVnaW5DcmVhdG9ycyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgLy8gTG9hZCBFU00gYEBhbmd1bGFyL2xvY2FsaXplL3Rvb2xzYCB1c2luZyB0aGUgVHlwZVNjcmlwdCBkeW5hbWljIGltcG9ydCB3b3JrYXJvdW5kLlxuICAgICAgICAgIC8vIE9uY2UgVHlwZVNjcmlwdCBwcm92aWRlcyBzdXBwb3J0IGZvciBrZWVwaW5nIHRoZSBkeW5hbWljIGltcG9ydCB0aGlzIHdvcmthcm91bmQgY2FuIGJlXG4gICAgICAgICAgLy8gY2hhbmdlZCB0byBhIGRpcmVjdCBkeW5hbWljIGltcG9ydC5cbiAgICAgICAgICBpMThuUGx1Z2luQ3JlYXRvcnMgPSBhd2FpdCBsb2FkRXNtTW9kdWxlPEkxOG5QbHVnaW5DcmVhdG9ycz4oJ0Bhbmd1bGFyL2xvY2FsaXplL3Rvb2xzJyk7XG4gICAgICAgIH1cblxuICAgICAgICBjdXN0b21PcHRpb25zLmkxOG4gPSB7XG4gICAgICAgICAgLi4uKGkxOG4gYXMgTm9uTnVsbGFibGU8QXBwbGljYXRpb25QcmVzZXRPcHRpb25zWydpMThuJ10+KSxcbiAgICAgICAgICBwbHVnaW5DcmVhdG9yczogaTE4blBsdWdpbkNyZWF0b3JzLFxuICAgICAgICB9O1xuXG4gICAgICAgIC8vIEFkZCB0cmFuc2xhdGlvbiBmaWxlcyBhcyBkZXBlbmRlbmNpZXMgb2YgdGhlIGZpbGUgdG8gc3VwcG9ydCByZWJ1aWxkc1xuICAgICAgICAvLyBFeGNlcHQgZm9yIGBAYW5ndWxhci9jb3JlYCB3aGljaCBuZWVkcyBsb2NhbGUgaW5qZWN0aW9uIGJ1dCBoYXMgbm8gdHJhbnNsYXRpb25zXG4gICAgICAgIGlmIChcbiAgICAgICAgICBjdXN0b21PcHRpb25zLmkxOG4udHJhbnNsYXRpb25GaWxlcyAmJlxuICAgICAgICAgICEvW1xcXFwvXUBhbmd1bGFyW1xcXFwvXWNvcmUvLnRlc3QodGhpcy5yZXNvdXJjZVBhdGgpXG4gICAgICAgICkge1xuICAgICAgICAgIGZvciAoY29uc3QgZmlsZSBvZiBjdXN0b21PcHRpb25zLmkxOG4udHJhbnNsYXRpb25GaWxlcykge1xuICAgICAgICAgICAgdGhpcy5hZGREZXBlbmRlbmN5KGZpbGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHNob3VsZFByb2Nlc3MgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAob3B0aW1pemUpIHtcbiAgICAgICAgY29uc3QgQW5ndWxhclBhY2thZ2UgPSAvW1xcXFwvXW5vZGVfbW9kdWxlc1tcXFxcL11AYW5ndWxhcltcXFxcL10vLnRlc3QodGhpcy5yZXNvdXJjZVBhdGgpO1xuICAgICAgICBjb25zdCBzaWRlRWZmZWN0RnJlZSA9ICEhdGhpcy5fbW9kdWxlPy5mYWN0b3J5TWV0YT8uc2lkZUVmZmVjdEZyZWU7XG4gICAgICAgIGN1c3RvbU9wdGlvbnMub3B0aW1pemUgPSB7XG4gICAgICAgICAgLy8gQW5ndWxhciBwYWNrYWdlcyBwcm92aWRlIGFkZGl0aW9uYWwgdGVzdGVkIHNpZGUgZWZmZWN0cyBndWFyYW50ZWVzIGFuZCBjYW4gdXNlXG4gICAgICAgICAgLy8gb3RoZXJ3aXNlIHVuc2FmZSBvcHRpbWl6YXRpb25zLiAoQGFuZ3VsYXIvcGxhdGZvcm0tc2VydmVyL2luaXQpIGhvd2V2ZXIgaGFzIHNpZGUtZWZmZWN0cy5cbiAgICAgICAgICBwdXJlVG9wTGV2ZWw6IEFuZ3VsYXJQYWNrYWdlICYmIHNpZGVFZmZlY3RGcmVlLFxuICAgICAgICAgIC8vIEphdmFTY3JpcHQgbW9kdWxlcyB0aGF0IGFyZSBtYXJrZWQgYXMgc2lkZSBlZmZlY3QgZnJlZSBhcmUgY29uc2lkZXJlZCB0byBoYXZlXG4gICAgICAgICAgLy8gbm8gZGVjb3JhdG9ycyB0aGF0IGNvbnRhaW4gbm9uLWxvY2FsIGVmZmVjdHMuXG4gICAgICAgICAgd3JhcERlY29yYXRvcnM6IHNpZGVFZmZlY3RGcmVlLFxuICAgICAgICB9O1xuXG4gICAgICAgIHNob3VsZFByb2Nlc3MgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoXG4gICAgICAgIGluc3RydW1lbnRDb2RlICYmXG4gICAgICAgICFpbnN0cnVtZW50Q29kZS5leGNsdWRlZFBhdGhzLmhhcyh0aGlzLnJlc291cmNlUGF0aCkgJiZcbiAgICAgICAgIS9cXC4oZTJlfHNwZWMpXFwudHN4PyR8W1xcXFwvXW5vZGVfbW9kdWxlc1tcXFxcL10vLnRlc3QodGhpcy5yZXNvdXJjZVBhdGgpICYmXG4gICAgICAgIHRoaXMucmVzb3VyY2VQYXRoLnN0YXJ0c1dpdGgoaW5zdHJ1bWVudENvZGUuaW5jbHVkZWRCYXNlUGF0aClcbiAgICAgICkge1xuICAgICAgICAvLyBgYmFiZWwtcGx1Z2luLWlzdGFuYnVsYCBoYXMgaXQncyBvd24gaW5jbHVkZXMgYnV0IHdlIGRvIHRoZSBiZWxvdyBzbyB0aGF0IHdlIGF2b2lkIHJ1bm5pbmcgdGhlIHRoZSBsb2FkZXIuXG4gICAgICAgIGN1c3RvbU9wdGlvbnMuaW5zdHJ1bWVudENvZGUgPSB7XG4gICAgICAgICAgaW5jbHVkZWRCYXNlUGF0aDogaW5zdHJ1bWVudENvZGUuaW5jbHVkZWRCYXNlUGF0aCxcbiAgICAgICAgICBpbnB1dFNvdXJjZU1hcDogbWFwLFxuICAgICAgICB9O1xuXG4gICAgICAgIHNob3VsZFByb2Nlc3MgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICAvLyBBZGQgcHJvdmlkZWQgbG9hZGVyIG9wdGlvbnMgdG8gZGVmYXVsdCBiYXNlIG9wdGlvbnNcbiAgICAgIGNvbnN0IGxvYWRlck9wdGlvbnM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge1xuICAgICAgICAuLi5iYXNlT3B0aW9ucyxcbiAgICAgICAgLi4ucmF3T3B0aW9ucyxcbiAgICAgICAgY2FjaGVJZGVudGlmaWVyOiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgYnVpbGRBbmd1bGFyOiBWRVJTSU9OLFxuICAgICAgICAgIGN1c3RvbU9wdGlvbnMsXG4gICAgICAgICAgYmFzZU9wdGlvbnMsXG4gICAgICAgICAgcmF3T3B0aW9ucyxcbiAgICAgICAgfSksXG4gICAgICB9O1xuXG4gICAgICAvLyBTa2lwIGJhYmVsIHByb2Nlc3NpbmcgaWYgbm8gYWN0aW9ucyBhcmUgbmVlZGVkXG4gICAgICBpZiAoIXNob3VsZFByb2Nlc3MpIHtcbiAgICAgICAgLy8gRm9yY2UgdGhlIGN1cnJlbnQgZmlsZSB0byBiZSBpZ25vcmVkXG4gICAgICAgIGxvYWRlck9wdGlvbnMuaWdub3JlID0gWygpID0+IHRydWVdO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4geyBjdXN0b206IGN1c3RvbU9wdGlvbnMsIGxvYWRlcjogbG9hZGVyT3B0aW9ucyB9O1xuICAgIH0sXG4gICAgY29uZmlnKGNvbmZpZ3VyYXRpb24sIHsgY3VzdG9tT3B0aW9ucyB9KSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5jb25maWd1cmF0aW9uLm9wdGlvbnMsXG4gICAgICAgIC8vIFVzaW5nIGBmYWxzZWAgZGlzYWJsZXMgYmFiZWwgZnJvbSBhdHRlbXB0aW5nIHRvIGxvY2F0ZSBzb3VyY2VtYXBzIG9yIHByb2Nlc3MgYW55IGlubGluZSBtYXBzLlxuICAgICAgICAvLyBUaGUgYmFiZWwgdHlwZXMgZG8gbm90IGluY2x1ZGUgdGhlIGZhbHNlIG9wdGlvbiBldmVuIHRob3VnaCBpdCBpcyB2YWxpZFxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgICBpbnB1dFNvdXJjZU1hcDogY29uZmlndXJhdGlvbi5vcHRpb25zLmlucHV0U291cmNlTWFwID8/IChmYWxzZSBhcyBhbnkpLFxuICAgICAgICBwcmVzZXRzOiBbXG4gICAgICAgICAgLi4uKGNvbmZpZ3VyYXRpb24ub3B0aW9ucy5wcmVzZXRzIHx8IFtdKSxcbiAgICAgICAgICBbXG4gICAgICAgICAgICByZXF1aXJlKCcuL3ByZXNldHMvYXBwbGljYXRpb24nKS5kZWZhdWx0LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAuLi5jdXN0b21PcHRpb25zLFxuICAgICAgICAgICAgICBkaWFnbm9zdGljUmVwb3J0ZXI6ICh0eXBlLCBtZXNzYWdlKSA9PiB7XG4gICAgICAgICAgICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgICAgICAgICAgICBjYXNlICdlcnJvcic6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZW1pdEVycm9yKG1lc3NhZ2UpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm8nOlxuICAgICAgICAgICAgICAgICAgLy8gV2VicGFjayBkb2VzIG5vdCBjdXJyZW50bHkgaGF2ZSBhbiBpbmZvcm1hdGlvbmFsIGRpYWdub3N0aWNcbiAgICAgICAgICAgICAgICAgIGNhc2UgJ3dhcm5pbmcnOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmVtaXRXYXJuaW5nKG1lc3NhZ2UpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9IGFzIEFwcGxpY2F0aW9uUHJlc2V0T3B0aW9ucyxcbiAgICAgICAgICBdLFxuICAgICAgICBdLFxuICAgICAgfTtcbiAgICB9LFxuICB9O1xufSk7XG4iXX0=
|
|
169
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2VicGFjay1sb2FkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyX2RldmtpdC9idWlsZF9hbmd1bGFyL3NyYy90b29scy9iYWJlbC93ZWJwYWNrLWxvYWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7OztHQU1HOztBQUVILCtDQUFzQztBQUN0QyxtREFBcUQ7QUFDckQsaUVBQXNEO0FBQ3RELHVEQUkrQjtBQVkvQjs7R0FFRztBQUNILElBQUksbUJBRVMsQ0FBQztBQUVkOztHQUVHO0FBQ0gsSUFBSSxrQkFBa0QsQ0FBQztBQUV2RCxrREFBa0Q7QUFDbEQsa0JBQWUsSUFBQSxxQkFBTSxFQUEyQixHQUFHLEVBQUU7SUFDbkQsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQztRQUNoQyxPQUFPLEVBQUUsS0FBSztRQUNkLFVBQVUsRUFBRSxLQUFLO1FBQ2pCLE9BQU8sRUFBRSxLQUFLO1FBQ2QsZ0JBQWdCLEVBQUUsS0FBSztRQUN2QixVQUFVLEVBQUUsYUFBYTtRQUN6QixjQUFjLEVBQUUsS0FBSztLQUN0QixDQUFDLENBQUM7SUFFSCxPQUFPO1FBQ0wsS0FBSyxDQUFDLGFBQWEsQ0FBQyxPQUFPLEVBQUUsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFO1lBQzFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxjQUFjLEVBQUUsaUJBQWlCLEVBQUUsR0FBRyxVQUFVLEVBQUUsR0FDN0UsT0FBb0MsQ0FBQztZQUV2Qyx5Q0FBeUM7WUFDekMsSUFBSSxhQUFhLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLElBQUksVUFBVSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1lBRXZGLE1BQU0sYUFBYSxHQUE2QjtnQkFDOUMsd0JBQXdCLEVBQUUsS0FBSztnQkFD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Q0FBQyx1QkFBdUIsQ0FBQyxDQUFDLE9BQU87d0JBQ3hDOzRCQUNFLEdBQUcsYUFBYTs0QkFDaEIsa0JBQWtCLEVBQUUsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLEVBQUU7Z0NBQ3BDLFFBQVEsSUFBSSxFQUFFO29DQUNaLEtBQUssT0FBTzt3Q0FDVixJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO3dDQUN4QixNQUFNO29DQUNSLEtBQUssTUFBTSxDQUFDO29DQUNaLDhEQUE4RDtvQ0FDOUQsS0FBSyxTQUFTO3dDQUNaLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7d0NBQzFCLE1BQU07aUNBQ1Q7NEJBQ0gsQ0FBQzt5QkFDMEI7cUJBQzlCO2lCQUNGO2FBQ0YsQ0FBQztRQUNKLENBQUM7S0FDRixDQUFDO0FBQ0osQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHsgY3VzdG9tIH0gZnJvbSAnYmFiZWwtbG9hZGVyJztcbmltcG9ydCB7IGxvYWRFc21Nb2R1bGUgfSBmcm9tICcuLi8uLi91dGlscy9sb2FkLWVzbSc7XG5pbXBvcnQgeyBWRVJTSU9OIH0gZnJvbSAnLi4vLi4vdXRpbHMvcGFja2FnZS12ZXJzaW9uJztcbmltcG9ydCB7XG4gIEFwcGxpY2F0aW9uUHJlc2V0T3B0aW9ucyxcbiAgSTE4blBsdWdpbkNyZWF0b3JzLFxuICByZXF1aXJlc0xpbmtpbmcsXG59IGZyb20gJy4vcHJlc2V0cy9hcHBsaWNhdGlvbic7XG5cbmludGVyZmFjZSBBbmd1bGFyQ3VzdG9tT3B0aW9ucyBleHRlbmRzIE9taXQ8QXBwbGljYXRpb25QcmVzZXRPcHRpb25zLCAnaW5zdHJ1bWVudENvZGUnPiB7XG4gIGluc3RydW1lbnRDb2RlPzoge1xuICAgIC8qKiBub2RlX21vZHVsZXMgYW5kIHRlc3QgZmlsZXMgYXJlIGFsd2F5cyBleGNsdWRlZC4gKi9cbiAgICBleGNsdWRlZFBhdGhzOiBTZXQ8c3RyaW5nPjtcbiAgICBpbmNsdWRlZEJhc2VQYXRoOiBzdHJpbmc7XG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIEFuZ3VsYXJCYWJlbExvYWRlck9wdGlvbnMgPSBBbmd1bGFyQ3VzdG9tT3B0aW9ucyAmIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuXG4vKipcbiAqIENhY2hlZCBpbnN0YW5jZSBvZiB0aGUgY29tcGlsZXItY2xpIGxpbmtlcidzIEJhYmVsIHBsdWdpbiBmYWN0b3J5IGZ1bmN0aW9uLlxuICovXG5sZXQgbGlua2VyUGx1Z2luQ3JlYXRvcjpcbiAgfCB0eXBlb2YgaW1wb3J0KCdAYW5ndWxhci9jb21waWxlci1jbGkvbGlua2VyL2JhYmVsJykuY3JlYXRlRXMyMDE1TGlua2VyUGx1Z2luXG4gIHwgdW5kZWZpbmVkO1xuXG4vKipcbiAqIENhY2hlZCBpbnN0YW5jZSBvZiB0aGUgbG9jYWxpemUgQmFiZWwgcGx1Z2lucyBmYWN0b3J5IGZ1bmN0aW9ucy5cbiAqL1xubGV0IGkxOG5QbHVnaW5DcmVhdG9yczogSTE4blBsdWdpbkNyZWF0b3JzIHwgdW5kZWZpbmVkO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbWF4LWxpbmVzLXBlci1mdW5jdGlvblxuZXhwb3J0IGRlZmF1bHQgY3VzdG9tPEFwcGxpY2F0aW9uUHJlc2V0T3B0aW9ucz4oKCkgPT4ge1xuICBjb25zdCBiYXNlT3B0aW9ucyA9IE9iamVjdC5mcmVlemUoe1xuICAgIGJhYmVscmM6IGZhbHNlLFxuICAgIGNvbmZpZ0ZpbGU6IGZhbHNlLFxuICAgIGNvbXBhY3Q6IGZhbHNlLFxuICAgIGNhY2hlQ29tcHJlc3Npb246IGZhbHNlLFxuICAgIHNvdXJjZVR5cGU6ICd1bmFtYmlndW91cycsXG4gICAgaW5wdXRTb3VyY2VNYXA6IGZhbHNlLFxuICB9KTtcblxuICByZXR1cm4ge1xuICAgIGFzeW5jIGN1c3RvbU9wdGlvbnMob3B0aW9ucywgeyBzb3VyY2UsIG1hcCB9KSB7XG4gICAgICBjb25zdCB7IGkxOG4sIGFvdCwgb3B0aW1pemUsIGluc3RydW1lbnRDb2RlLCBzdXBwb3J0ZWRCcm93c2VycywgLi4ucmF3T3B0aW9ucyB9ID1cbiAgICAgICAgb3B0aW9ucyBhcyBBbmd1bGFyQmFiZWxMb2FkZXJPcHRpb25zO1xuXG4gICAgICAvLyBNdXN0IHByb2Nlc3MgZmlsZSBpZiBwbHVnaW5zIGFyZSBhZGRlZFxuICAgICAgbGV0IHNob3VsZFByb2Nlc3MgPSBBcnJheS5pc0FycmF5KHJhd09wdGlvbnMucGx1Z2lucykgJiYgcmF3T3B0aW9ucy5wbHVnaW5zLmxlbmd0aCA+IDA7XG5cbiAgICAgIGNvbnN0IGN1c3RvbU9wdGlvbnM6IEFwcGxpY2F0aW9uUHJlc2V0T3B0aW9ucyA9IHtcbiAgICAgICAgZm9yY2VBc3luY1RyYW5zZm9ybWF0aW9uOiBmYWxzZSxcbiAgICAgICAgYW5ndWxhckxpbmtlcjogdW5kZWZpbmVkLFxuICAgICAgICBpMThuOiB1bmRlZmluZWQsXG4gICAgICAgIGluc3RydW1lbnRDb2RlOiB1bmRlZmluZWQsXG4gICAgICAgIHN1cHBvcnRlZEJyb3dzZXJzLFxuICAgICAgfTtcblxuICAgICAgLy8gQW5hbHl6ZSBmaWxlIGZvciBsaW5raW5nXG4gICAgICBpZiAoYXdhaXQgcmVxdWlyZXNMaW5raW5nKHRoaXMucmVzb3VyY2VQYXRoLCBzb3VyY2UpKSB7XG4gICAgICAgIC8vIExvYWQgRVNNIGBAYW5ndWxhci9jb21waWxlci1jbGkvbGlua2VyL2JhYmVsYCB1c2luZyB0aGUgVHlwZVNjcmlwdCBkeW5hbWljIGltcG9ydCB3b3JrYXJvdW5kLlxuICAgICAgICAvLyBPbmNlIFR5cGVTY3JpcHQgcHJvdmlkZXMgc3VwcG9ydCBmb3Iga2VlcGluZyB0aGUgZHluYW1pYyBpbXBvcnQgdGhpcyB3b3JrYXJvdW5kIGNhbiBiZVxuICAgICAgICAvLyBjaGFuZ2VkIHRvIGEgZGlyZWN0IGR5bmFtaWMgaW1wb3J0LlxuICAgICAgICBsaW5rZXJQbHVnaW5DcmVhdG9yID8/PSAoXG4gICAgICAgICAgYXdhaXQgbG9hZEVzbU1vZHVsZTx0eXBlb2YgaW1wb3J0KCdAYW5ndWxhci9jb21waWxlci1jbGkvbGlua2VyL2JhYmVsJyk+KFxuICAgICAgICAgICAgJ0Bhbmd1bGFyL2NvbXBpbGVyLWNsaS9saW5rZXIvYmFiZWwnLFxuICAgICAgICAgIClcbiAgICAgICAgKS5jcmVhdGVFczIwMTVMaW5rZXJQbHVnaW47XG5cbiAgICAgICAgY3VzdG9tT3B0aW9ucy5hbmd1bGFyTGlua2VyID0ge1xuICAgICAgICAgIHNob3VsZExpbms6IHRydWUsXG4gICAgICAgICAgaml0TW9kZTogYW90ICE9PSB0cnVlLFxuICAgICAgICAgIGxpbmtlclBsdWdpbkNyZWF0b3IsXG4gICAgICAgIH07XG4gICAgICAgIHNob3VsZFByb2Nlc3MgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICAvLyBBcHBsaWNhdGlvbiBjb2RlIChUUyBmaWxlcykgd2lsbCBvbmx5IGNvbnRhaW4gbmF0aXZlIGFzeW5jIGlmIHRhcmdldCBpcyBFUzIwMTcrLlxuICAgICAgLy8gSG93ZXZlciwgdGhpcmQtcGFydHkgbGlicmFyaWVzIGNhbiByZWdhcmRsZXNzIG9mIHRoZSB0YXJnZXQgb3B0aW9uLlxuICAgICAgLy8gQVBGIHBhY2thZ2VzIHdpdGggY29kZSBpbiBbZl1lc20yMDE1IGRpcmVjdG9yaWVzIGlzIGRvd25sZXZlbGxlZCB0byBFUzIwMTUgYW5kXG4gICAgICAvLyB3aWxsIG5vdCBoYXZlIG5hdGl2ZSBhc3luYy5cbiAgICAgIGN1c3RvbU9wdGlvbnMuZm9yY2VBc3luY1RyYW5zZm9ybWF0aW9uID1cbiAgICAgICAgIS9bXFxcXC9dW19mXT9lc20yMDE1W1xcXFwvXS8udGVzdCh0aGlzLnJlc291cmNlUGF0aCkgJiYgc291cmNlLmluY2x1ZGVzKCdhc3luYycpO1xuXG4gICAgICBzaG91bGRQcm9jZXNzIHx8PVxuICAgICAgICBjdXN0b21PcHRpb25zLmZvcmNlQXN5bmNUcmFuc2Zvcm1hdGlvbiB8fFxuICAgICAgICBjdXN0b21PcHRpb25zLnN1cHBvcnRlZEJyb3dzZXJzICE9PSB1bmRlZmluZWQgfHxcbiAgICAgICAgZmFsc2U7XG5cbiAgICAgIC8vIEFuYWx5emUgZm9yIGkxOG4gaW5saW5pbmdcbiAgICAgIGlmIChcbiAgICAgICAgaTE4biAmJlxuICAgICAgICAhL1tcXFxcL11AYW5ndWxhcltcXFxcL10oPzpjb21waWxlcnxsb2NhbGl6ZSkvLnRlc3QodGhpcy5yZXNvdXJjZVBhdGgpICYmXG4gICAgICAgIHNvdXJjZS5pbmNsdWRlcygnJGxvY2FsaXplJylcbiAgICAgICkge1xuICAgICAgICAvLyBMb2FkIHRoZSBpMThuIHBsdWdpbiBjcmVhdG9ycyBmcm9tIHRoZSBuZXcgYEBhbmd1bGFyL2xvY2FsaXplL3Rvb2xzYCBlbnRyeSBwb2ludC5cbiAgICAgICAgLy8gVGhpcyBtYXkgZmFpbCBkdXJpbmcgdGhlIHRyYW5zaXRpb24gdG8gRVNNIGR1ZSB0byB0aGUgZW50cnkgcG9pbnQgbm90IHlldCBleGlzdGluZy5cbiAgICAgICAgLy8gRHVyaW5nIHRoZSB0cmFuc2l0aW9uLCB0aGlzIHdpbGwgYWx3YXlzIGF0dGVtcHQgdG8gbG9hZCB0aGUgZW50cnkgcG9pbnQgZm9yIGVhY2ggZmlsZS5cbiAgICAgICAgLy8gVGhpcyB3aWxsIG9ubHkgb2NjdXIgZHVyaW5nIHByZXJlbGVhc2UgYW5kIHdpbGwgYmUgYXV0b21hdGljYWxseSBjb3JyZWN0ZWQgb25jZSB0aGUgbmV3XG4gICAgICAgIC8vIGVudHJ5IHBvaW50IGV4aXN0cy5cbiAgICAgICAgaWYgKGkxOG5QbHVnaW5DcmVhdG9ycyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgLy8gTG9hZCBFU00gYEBhbmd1bGFyL2xvY2FsaXplL3Rvb2xzYCB1c2luZyB0aGUgVHlwZVNjcmlwdCBkeW5hbWljIGltcG9ydCB3b3JrYXJvdW5kLlxuICAgICAgICAgIC8vIE9uY2UgVHlwZVNjcmlwdCBwcm92aWRlcyBzdXBwb3J0IGZvciBrZWVwaW5nIHRoZSBkeW5hbWljIGltcG9ydCB0aGlzIHdvcmthcm91bmQgY2FuIGJlXG4gICAgICAgICAgLy8gY2hhbmdlZCB0byBhIGRpcmVjdCBkeW5hbWljIGltcG9ydC5cbiAgICAgICAgICBpMThuUGx1Z2luQ3JlYXRvcnMgPSBhd2FpdCBsb2FkRXNtTW9kdWxlPEkxOG5QbHVnaW5DcmVhdG9ycz4oJ0Bhbmd1bGFyL2xvY2FsaXplL3Rvb2xzJyk7XG4gICAgICAgIH1cblxuICAgICAgICBjdXN0b21PcHRpb25zLmkxOG4gPSB7XG4gICAgICAgICAgLi4uKGkxOG4gYXMgTm9uTnVsbGFibGU8QXBwbGljYXRpb25QcmVzZXRPcHRpb25zWydpMThuJ10+KSxcbiAgICAgICAgICBwbHVnaW5DcmVhdG9yczogaTE4blBsdWdpbkNyZWF0b3JzLFxuICAgICAgICB9O1xuXG4gICAgICAgIC8vIEFkZCB0cmFuc2xhdGlvbiBmaWxlcyBhcyBkZXBlbmRlbmNpZXMgb2YgdGhlIGZpbGUgdG8gc3VwcG9ydCByZWJ1aWxkc1xuICAgICAgICAvLyBFeGNlcHQgZm9yIGBAYW5ndWxhci9jb3JlYCB3aGljaCBuZWVkcyBsb2NhbGUgaW5qZWN0aW9uIGJ1dCBoYXMgbm8gdHJhbnNsYXRpb25zXG4gICAgICAgIGlmIChcbiAgICAgICAgICBjdXN0b21PcHRpb25zLmkxOG4udHJhbnNsYXRpb25GaWxlcyAmJlxuICAgICAgICAgICEvW1xcXFwvXUBhbmd1bGFyW1xcXFwvXWNvcmUvLnRlc3QodGhpcy5yZXNvdXJjZVBhdGgpXG4gICAgICAgICkge1xuICAgICAgICAgIGZvciAoY29uc3QgZmlsZSBvZiBjdXN0b21PcHRpb25zLmkxOG4udHJhbnNsYXRpb25GaWxlcykge1xuICAgICAgICAgICAgdGhpcy5hZGREZXBlbmRlbmN5KGZpbGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHNob3VsZFByb2Nlc3MgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAob3B0aW1pemUpIHtcbiAgICAgICAgY29uc3QgQW5ndWxhclBhY2thZ2UgPSAvW1xcXFwvXW5vZGVfbW9kdWxlc1tcXFxcL11AYW5ndWxhcltcXFxcL10vLnRlc3QodGhpcy5yZXNvdXJjZVBhdGgpO1xuICAgICAgICBjb25zdCBzaWRlRWZmZWN0RnJlZSA9ICEhdGhpcy5fbW9kdWxlPy5mYWN0b3J5TWV0YT8uc2lkZUVmZmVjdEZyZWU7XG4gICAgICAgIGN1c3RvbU9wdGlvbnMub3B0aW1pemUgPSB7XG4gICAgICAgICAgLy8gQW5ndWxhciBwYWNrYWdlcyBwcm92aWRlIGFkZGl0aW9uYWwgdGVzdGVkIHNpZGUgZWZmZWN0cyBndWFyYW50ZWVzIGFuZCBjYW4gdXNlXG4gICAgICAgICAgLy8gb3RoZXJ3aXNlIHVuc2FmZSBvcHRpbWl6YXRpb25zLiAoQGFuZ3VsYXIvcGxhdGZvcm0tc2VydmVyL2luaXQpIGhvd2V2ZXIgaGFzIHNpZGUtZWZmZWN0cy5cbiAgICAgICAgICBwdXJlVG9wTGV2ZWw6IEFuZ3VsYXJQYWNrYWdlICYmIHNpZGVFZmZlY3RGcmVlLFxuICAgICAgICAgIC8vIEphdmFTY3JpcHQgbW9kdWxlcyB0aGF0IGFyZSBtYXJrZWQgYXMgc2lkZSBlZmZlY3QgZnJlZSBhcmUgY29uc2lkZXJlZCB0byBoYXZlXG4gICAgICAgICAgLy8gbm8gZGVjb3JhdG9ycyB0aGF0IGNvbnRhaW4gbm9uLWxvY2FsIGVmZmVjdHMuXG4gICAgICAgICAgd3JhcERlY29yYXRvcnM6IHNpZGVFZmZlY3RGcmVlLFxuICAgICAgICB9O1xuXG4gICAgICAgIHNob3VsZFByb2Nlc3MgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoXG4gICAgICAgIGluc3RydW1lbnRDb2RlICYmXG4gICAgICAgICFpbnN0cnVtZW50Q29kZS5leGNsdWRlZFBhdGhzLmhhcyh0aGlzLnJlc291cmNlUGF0aCkgJiZcbiAgICAgICAgIS9cXC4oZTJlfHNwZWMpXFwudHN4PyR8W1xcXFwvXW5vZGVfbW9kdWxlc1tcXFxcL10vLnRlc3QodGhpcy5yZXNvdXJjZVBhdGgpICYmXG4gICAgICAgIHRoaXMucmVzb3VyY2VQYXRoLnN0YXJ0c1dpdGgoaW5zdHJ1bWVudENvZGUuaW5jbHVkZWRCYXNlUGF0aClcbiAgICAgICkge1xuICAgICAgICAvLyBgYmFiZWwtcGx1Z2luLWlzdGFuYnVsYCBoYXMgaXQncyBvd24gaW5jbHVkZXMgYnV0IHdlIGRvIHRoZSBiZWxvdyBzbyB0aGF0IHdlIGF2b2lkIHJ1bm5pbmcgdGhlIGxvYWRlci5cbiAgICAgICAgY3VzdG9tT3B0aW9ucy5pbnN0cnVtZW50Q29kZSA9IHtcbiAgICAgICAgICBpbmNsdWRlZEJhc2VQYXRoOiBpbnN0cnVtZW50Q29kZS5pbmNsdWRlZEJhc2VQYXRoLFxuICAgICAgICAgIGlucHV0U291cmNlTWFwOiBtYXAsXG4gICAgICAgIH07XG5cbiAgICAgICAgc2hvdWxkUHJvY2VzcyA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIC8vIEFkZCBwcm92aWRlZCBsb2FkZXIgb3B0aW9ucyB0byBkZWZhdWx0IGJhc2Ugb3B0aW9uc1xuICAgICAgY29uc3QgbG9hZGVyT3B0aW9uczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7XG4gICAgICAgIC4uLmJhc2VPcHRpb25zLFxuICAgICAgICAuLi5yYXdPcHRpb25zLFxuICAgICAgICBjYWNoZUlkZW50aWZpZXI6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICBidWlsZEFuZ3VsYXI6IFZFUlNJT04sXG4gICAgICAgICAgY3VzdG9tT3B0aW9ucyxcbiAgICAgICAgICBiYXNlT3B0aW9ucyxcbiAgICAgICAgICByYXdPcHRpb25zLFxuICAgICAgICB9KSxcbiAgICAgIH07XG5cbiAgICAgIC8vIFNraXAgYmFiZWwgcHJvY2Vzc2luZyBpZiBubyBhY3Rpb25zIGFyZSBuZWVkZWRcbiAgICAgIGlmICghc2hvdWxkUHJvY2Vzcykge1xuICAgICAgICAvLyBGb3JjZSB0aGUgY3VycmVudCBmaWxlIHRvIGJlIGlnbm9yZWRcbiAgICAgICAgbG9hZGVyT3B0aW9ucy5pZ25vcmUgPSBbKCkgPT4gdHJ1ZV07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7IGN1c3RvbTogY3VzdG9tT3B0aW9ucywgbG9hZGVyOiBsb2FkZXJPcHRpb25zIH07XG4gICAgfSxcbiAgICBjb25maWcoY29uZmlndXJhdGlvbiwgeyBjdXN0b21PcHRpb25zIH0pIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmNvbmZpZ3VyYXRpb24ub3B0aW9ucyxcbiAgICAgICAgLy8gVXNpbmcgYGZhbHNlYCBkaXNhYmxlcyBiYWJlbCBmcm9tIGF0dGVtcHRpbmcgdG8gbG9jYXRlIHNvdXJjZW1hcHMgb3IgcHJvY2VzcyBhbnkgaW5saW5lIG1hcHMuXG4gICAgICAgIC8vIFRoZSBiYWJlbCB0eXBlcyBkbyBub3QgaW5jbHVkZSB0aGUgZmFsc2Ugb3B0aW9uIGV2ZW4gdGhvdWdoIGl0IGlzIHZhbGlkXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICAgIGlucHV0U291cmNlTWFwOiBjb25maWd1cmF0aW9uLm9wdGlvbnMuaW5wdXRTb3VyY2VNYXAgPz8gKGZhbHNlIGFzIGFueSksXG4gICAgICAgIHByZXNldHM6IFtcbiAgICAgICAgICAuLi4oY29uZmlndXJhdGlvbi5vcHRpb25zLnByZXNldHMgfHwgW10pLFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIHJlcXVpcmUoJy4vcHJlc2V0cy9hcHBsaWNhdGlvbicpLmRlZmF1bHQsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIC4uLmN1c3RvbU9wdGlvbnMsXG4gICAgICAgICAgICAgIGRpYWdub3N0aWNSZXBvcnRlcjogKHR5cGUsIG1lc3NhZ2UpID0+IHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgICAgICAgICAgICAgIGNhc2UgJ2Vycm9yJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbWl0RXJyb3IobWVzc2FnZSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mbyc6XG4gICAgICAgICAgICAgICAgICAvLyBXZWJwYWNrIGRvZXMgbm90IGN1cnJlbnRseSBoYXZlIGFuIGluZm9ybWF0aW9uYWwgZGlhZ25vc3RpY1xuICAgICAgICAgICAgICAgICAgY2FzZSAnd2FybmluZyc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZW1pdFdhcm5pbmcobWVzc2FnZSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0gYXMgQXBwbGljYXRpb25QcmVzZXRPcHRpb25zLFxuICAgICAgICAgIF0sXG4gICAgICAgIF0sXG4gICAgICB9O1xuICAgIH0sXG4gIH07XG59KTtcbiJdfQ==
|
|
@@ -6,7 +6,8 @@
|
|
|
6
6
|
* found in the LICENSE file at https://angular.io/license
|
|
7
7
|
*/
|
|
8
8
|
import type ng from '@angular/compiler-cli';
|
|
9
|
-
import type
|
|
9
|
+
import type { PartialMessage } from 'esbuild';
|
|
10
|
+
import ts from 'typescript';
|
|
10
11
|
import type { AngularHostOptions } from '../angular-host';
|
|
11
12
|
export interface EmitFileResult {
|
|
12
13
|
filename: string;
|
|
@@ -22,6 +23,10 @@ export declare abstract class AngularCompilation {
|
|
|
22
23
|
compilerOptions: ng.CompilerOptions;
|
|
23
24
|
referencedFiles: readonly string[];
|
|
24
25
|
}>;
|
|
25
|
-
abstract collectDiagnostics(): Iterable<ts.Diagnostic>;
|
|
26
26
|
abstract emitAffectedFiles(): Iterable<EmitFileResult>;
|
|
27
|
+
protected abstract collectDiagnostics(): Iterable<ts.Diagnostic>;
|
|
28
|
+
diagnoseFiles(): Promise<{
|
|
29
|
+
errors?: PartialMessage[];
|
|
30
|
+
warnings?: PartialMessage[];
|
|
31
|
+
}>;
|
|
27
32
|
}
|
|
@@ -17,11 +17,16 @@ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (
|
|
|
17
17
|
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
18
18
|
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
19
19
|
};
|
|
20
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
21
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
22
|
+
};
|
|
20
23
|
var _a, _AngularCompilation_angularCompilerCliModule;
|
|
21
24
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
25
|
exports.AngularCompilation = void 0;
|
|
26
|
+
const typescript_1 = __importDefault(require("typescript"));
|
|
23
27
|
const load_esm_1 = require("../../../../utils/load-esm");
|
|
24
28
|
const profiling_1 = require("../../profiling");
|
|
29
|
+
const diagnostics_1 = require("../diagnostics");
|
|
25
30
|
class AngularCompilation {
|
|
26
31
|
static async loadCompilerCli() {
|
|
27
32
|
var _b;
|
|
@@ -46,8 +51,23 @@ class AngularCompilation {
|
|
|
46
51
|
supportJitMode: false,
|
|
47
52
|
}));
|
|
48
53
|
}
|
|
54
|
+
async diagnoseFiles() {
|
|
55
|
+
const result = {};
|
|
56
|
+
(0, profiling_1.profileSync)('NG_DIAGNOSTICS_TOTAL', () => {
|
|
57
|
+
for (const diagnostic of this.collectDiagnostics()) {
|
|
58
|
+
const message = (0, diagnostics_1.convertTypeScriptDiagnostic)(diagnostic);
|
|
59
|
+
if (diagnostic.category === typescript_1.default.DiagnosticCategory.Error) {
|
|
60
|
+
(result.errors ?? (result.errors = [])).push(message);
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
(result.warnings ?? (result.warnings = [])).push(message);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
return result;
|
|
68
|
+
}
|
|
49
69
|
}
|
|
50
70
|
exports.AngularCompilation = AngularCompilation;
|
|
51
71
|
_a = AngularCompilation;
|
|
52
72
|
_AngularCompilation_angularCompilerCliModule = { value: void 0 };
|
|
53
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
73
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1jb21waWxhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXJfZGV2a2l0L2J1aWxkX2FuZ3VsYXIvc3JjL3Rvb2xzL2VzYnVpbGQvYW5ndWxhci9jb21waWxhdGlvbi9hbmd1bGFyLWNvbXBpbGF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7O0dBTUc7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUlILDREQUE0QjtBQUM1Qix5REFBMkQ7QUFDM0QsK0NBQThDO0FBRTlDLGdEQUE2RDtBQVE3RCxNQUFzQixrQkFBa0I7SUFHdEMsTUFBTSxDQUFDLEtBQUssQ0FBQyxlQUFlOztRQUMxQixtRkFBbUY7UUFDbkYsaUdBQWlHO1FBQ2pHLHlJQUFpRCxNQUFNLElBQUEsd0JBQWEsRUFDbEUsdUJBQXVCLENBQ3hCLG9EQUFBLENBQUM7UUFFRixPQUFPLHVCQUFBLGtCQUFrQix3REFBMEIsQ0FBQztJQUN0RCxDQUFDO0lBRVMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLFFBQWdCO1FBQ2hELE1BQU0sRUFBRSxpQkFBaUIsRUFBRSxHQUFHLE1BQU0sa0JBQWtCLENBQUMsZUFBZSxFQUFFLENBQUM7UUFFekUsT0FBTyxJQUFBLHVCQUFXLEVBQUMsZ0JBQWdCLEVBQUUsR0FBRyxFQUFFLENBQ3hDLGlCQUFpQixDQUFDLFFBQVEsRUFBRTtZQUMxQiw2RkFBNkY7WUFDN0YsdUJBQXVCLEVBQUUsSUFBSTtZQUM3QixNQUFNLEVBQUUsU0FBUztZQUNqQixTQUFTLEVBQUUsS0FBSztZQUNoQixXQUFXLEVBQUUsS0FBSztZQUNsQixjQUFjLEVBQUUsS0FBSztZQUNyQixzQkFBc0IsRUFBRSxLQUFLO1lBQzdCLGFBQWEsRUFBRSxZQUFZO1lBQzNCLHNCQUFzQixFQUFFLEtBQUs7WUFDN0IsY0FBYyxFQUFFLEtBQUs7WUFDckIsY0FBYyxFQUFFLEtBQUs7U0FDdEIsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0lBZ0JELEtBQUssQ0FBQyxhQUFhO1FBQ2pCLE1BQU0sTUFBTSxHQUErRCxFQUFFLENBQUM7UUFFOUUsSUFBQSx1QkFBVyxFQUFDLHNCQUFzQixFQUFFLEdBQUcsRUFBRTtZQUN2QyxLQUFLLE1BQU0sVUFBVSxJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxFQUFFO2dCQUNsRCxNQUFNLE9BQU8sR0FBRyxJQUFBLHlDQUEyQixFQUFDLFVBQVUsQ0FBQyxDQUFDO2dCQUN4RCxJQUFJLFVBQVUsQ0FBQyxRQUFRLEtBQUssb0JBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLEVBQUU7b0JBQ3ZELENBQUMsTUFBTSxDQUFDLE1BQU0sS0FBYixNQUFNLENBQUMsTUFBTSxHQUFLLEVBQUUsRUFBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztpQkFDdEM7cUJBQU07b0JBQ0wsQ0FBQyxNQUFNLENBQUMsUUFBUSxLQUFmLE1BQU0sQ0FBQyxRQUFRLEdBQUssRUFBRSxFQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2lCQUN4QzthQUNGO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0NBQ0Y7QUEvREQsZ0RBK0RDOztBQTlEUSxnRUFBeUIsQ0FBYSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQgdHlwZSBuZyBmcm9tICdAYW5ndWxhci9jb21waWxlci1jbGknO1xuaW1wb3J0IHR5cGUgeyBQYXJ0aWFsTWVzc2FnZSB9IGZyb20gJ2VzYnVpbGQnO1xuaW1wb3J0IHRzIGZyb20gJ3R5cGVzY3JpcHQnO1xuaW1wb3J0IHsgbG9hZEVzbU1vZHVsZSB9IGZyb20gJy4uLy4uLy4uLy4uL3V0aWxzL2xvYWQtZXNtJztcbmltcG9ydCB7IHByb2ZpbGVTeW5jIH0gZnJvbSAnLi4vLi4vcHJvZmlsaW5nJztcbmltcG9ydCB0eXBlIHsgQW5ndWxhckhvc3RPcHRpb25zIH0gZnJvbSAnLi4vYW5ndWxhci1ob3N0JztcbmltcG9ydCB7IGNvbnZlcnRUeXBlU2NyaXB0RGlhZ25vc3RpYyB9IGZyb20gJy4uL2RpYWdub3N0aWNzJztcblxuZXhwb3J0IGludGVyZmFjZSBFbWl0RmlsZVJlc3VsdCB7XG4gIGZpbGVuYW1lOiBzdHJpbmc7XG4gIGNvbnRlbnRzOiBzdHJpbmc7XG4gIGRlcGVuZGVuY2llcz86IHJlYWRvbmx5IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQW5ndWxhckNvbXBpbGF0aW9uIHtcbiAgc3RhdGljICNhbmd1bGFyQ29tcGlsZXJDbGlNb2R1bGU/OiB0eXBlb2Ygbmc7XG5cbiAgc3RhdGljIGFzeW5jIGxvYWRDb21waWxlckNsaSgpOiBQcm9taXNlPHR5cGVvZiBuZz4ge1xuICAgIC8vIFRoaXMgdXNlcyBhIHdyYXBwZWQgZHluYW1pYyBpbXBvcnQgdG8gbG9hZCBgQGFuZ3VsYXIvY29tcGlsZXItY2xpYCB3aGljaCBpcyBFU00uXG4gICAgLy8gT25jZSBUeXBlU2NyaXB0IHByb3ZpZGVzIHN1cHBvcnQgZm9yIHJldGFpbmluZyBkeW5hbWljIGltcG9ydHMgdGhpcyB3b3JrYXJvdW5kIGNhbiBiZSBkcm9wcGVkLlxuICAgIEFuZ3VsYXJDb21waWxhdGlvbi4jYW5ndWxhckNvbXBpbGVyQ2xpTW9kdWxlID8/PSBhd2FpdCBsb2FkRXNtTW9kdWxlPHR5cGVvZiBuZz4oXG4gICAgICAnQGFuZ3VsYXIvY29tcGlsZXItY2xpJyxcbiAgICApO1xuXG4gICAgcmV0dXJuIEFuZ3VsYXJDb21waWxhdGlvbi4jYW5ndWxhckNvbXBpbGVyQ2xpTW9kdWxlO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGxvYWRDb25maWd1cmF0aW9uKHRzY29uZmlnOiBzdHJpbmcpOiBQcm9taXNlPG5nLkNvbXBpbGVyT3B0aW9ucz4ge1xuICAgIGNvbnN0IHsgcmVhZENvbmZpZ3VyYXRpb24gfSA9IGF3YWl0IEFuZ3VsYXJDb21waWxhdGlvbi5sb2FkQ29tcGlsZXJDbGkoKTtcblxuICAgIHJldHVybiBwcm9maWxlU3luYygnTkdfUkVBRF9DT05GSUcnLCAoKSA9PlxuICAgICAgcmVhZENvbmZpZ3VyYXRpb24odHNjb25maWcsIHtcbiAgICAgICAgLy8gQW5ndWxhciBzcGVjaWZpYyBjb25maWd1cmF0aW9uIGRlZmF1bHRzIGFuZCBvdmVycmlkZXMgdG8gZW5zdXJlIGEgZnVuY3Rpb25pbmcgY29tcGlsYXRpb24uXG4gICAgICAgIHN1cHByZXNzT3V0cHV0UGF0aENoZWNrOiB0cnVlLFxuICAgICAgICBvdXREaXI6IHVuZGVmaW5lZCxcbiAgICAgICAgc291cmNlTWFwOiBmYWxzZSxcbiAgICAgICAgZGVjbGFyYXRpb246IGZhbHNlLFxuICAgICAgICBkZWNsYXJhdGlvbk1hcDogZmFsc2UsXG4gICAgICAgIGFsbG93RW1wdHlDb2RlZ2VuRmlsZXM6IGZhbHNlLFxuICAgICAgICBhbm5vdGF0aW9uc0FzOiAnZGVjb3JhdG9ycycsXG4gICAgICAgIGVuYWJsZVJlc291cmNlSW5saW5pbmc6IGZhbHNlLFxuICAgICAgICBzdXBwb3J0VGVzdEJlZDogZmFsc2UsXG4gICAgICAgIHN1cHBvcnRKaXRNb2RlOiBmYWxzZSxcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICBhYnN0cmFjdCBpbml0aWFsaXplKFxuICAgIHRzY29uZmlnOiBzdHJpbmcsXG4gICAgaG9zdE9wdGlvbnM6IEFuZ3VsYXJIb3N0T3B0aW9ucyxcbiAgICBjb21waWxlck9wdGlvbnNUcmFuc2Zvcm1lcj86IChjb21waWxlck9wdGlvbnM6IG5nLkNvbXBpbGVyT3B0aW9ucykgPT4gbmcuQ29tcGlsZXJPcHRpb25zLFxuICApOiBQcm9taXNlPHtcbiAgICBhZmZlY3RlZEZpbGVzOiBSZWFkb25seVNldDx0cy5Tb3VyY2VGaWxlPjtcbiAgICBjb21waWxlck9wdGlvbnM6IG5nLkNvbXBpbGVyT3B0aW9ucztcbiAgICByZWZlcmVuY2VkRmlsZXM6IHJlYWRvbmx5IHN0cmluZ1tdO1xuICB9PjtcblxuICBhYnN0cmFjdCBlbWl0QWZmZWN0ZWRGaWxlcygpOiBJdGVyYWJsZTxFbWl0RmlsZVJlc3VsdD47XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IGNvbGxlY3REaWFnbm9zdGljcygpOiBJdGVyYWJsZTx0cy5EaWFnbm9zdGljPjtcblxuICBhc3luYyBkaWFnbm9zZUZpbGVzKCk6IFByb21pc2U8eyBlcnJvcnM/OiBQYXJ0aWFsTWVzc2FnZVtdOyB3YXJuaW5ncz86IFBhcnRpYWxNZXNzYWdlW10gfT4ge1xuICAgIGNvbnN0IHJlc3VsdDogeyBlcnJvcnM/OiBQYXJ0aWFsTWVzc2FnZVtdOyB3YXJuaW5ncz86IFBhcnRpYWxNZXNzYWdlW10gfSA9IHt9O1xuXG4gICAgcHJvZmlsZVN5bmMoJ05HX0RJQUdOT1NUSUNTX1RPVEFMJywgKCkgPT4ge1xuICAgICAgZm9yIChjb25zdCBkaWFnbm9zdGljIG9mIHRoaXMuY29sbGVjdERpYWdub3N0aWNzKCkpIHtcbiAgICAgICAgY29uc3QgbWVzc2FnZSA9IGNvbnZlcnRUeXBlU2NyaXB0RGlhZ25vc3RpYyhkaWFnbm9zdGljKTtcbiAgICAgICAgaWYgKGRpYWdub3N0aWMuY2F0ZWdvcnkgPT09IHRzLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcikge1xuICAgICAgICAgIChyZXN1bHQuZXJyb3JzID8/PSBbXSkucHVzaChtZXNzYWdlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAocmVzdWx0Lndhcm5pbmdzID8/PSBbXSkucHVzaChtZXNzYWdlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuIl19
|