@angular-devkit/build-webpack 0.12.3 → 0.13.0
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/package.json
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@angular-devkit/build-webpack",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.13.0",
|
|
4
4
|
"description": "Webpack Builder for Architect",
|
|
5
5
|
"main": "src/index.js",
|
|
6
6
|
"typings": "src/index.d.ts",
|
|
7
7
|
"builders": "builders.json",
|
|
8
8
|
"dependencies": {
|
|
9
|
-
"@angular-devkit/architect": "0.
|
|
10
|
-
"@angular-devkit/core": "7.
|
|
9
|
+
"@angular-devkit/architect": "0.13.0",
|
|
10
|
+
"@angular-devkit/core": "7.3.0",
|
|
11
11
|
"rxjs": "6.3.3"
|
|
12
12
|
},
|
|
13
13
|
"peerDependencies": {
|
package/src/webpack/index.d.ts
CHANGED
|
@@ -19,6 +19,7 @@ export declare class WebpackBuilder implements Builder<WebpackBuilderSchema> {
|
|
|
19
19
|
constructor(context: BuilderContext);
|
|
20
20
|
run(builderConfig: BuilderConfiguration<WebpackBuilderSchema>): Observable<BuildEvent>;
|
|
21
21
|
loadWebpackConfig(webpackConfigPath: string): Observable<webpack.Configuration>;
|
|
22
|
+
protected createWebpackCompiler(config: webpack.Configuration): webpack.Compiler;
|
|
22
23
|
runWebpack(config: webpack.Configuration, loggingCb?: LoggingCallback): Observable<BuildEvent>;
|
|
23
24
|
}
|
|
24
25
|
export default WebpackBuilder;
|
package/src/webpack/index.js
CHANGED
|
@@ -16,9 +16,12 @@ class WebpackBuilder {
|
|
|
16
16
|
loadWebpackConfig(webpackConfigPath) {
|
|
17
17
|
return rxjs_1.from(Promise.resolve().then(() => require(webpackConfigPath)));
|
|
18
18
|
}
|
|
19
|
+
createWebpackCompiler(config) {
|
|
20
|
+
return webpack(config);
|
|
21
|
+
}
|
|
19
22
|
runWebpack(config, loggingCb = exports.defaultLoggingCb) {
|
|
20
23
|
return new rxjs_1.Observable(obs => {
|
|
21
|
-
const webpackCompiler =
|
|
24
|
+
const webpackCompiler = this.createWebpackCompiler(config);
|
|
22
25
|
const callback = (err, stats) => {
|
|
23
26
|
if (err) {
|
|
24
27
|
return obs.error(err);
|
|
@@ -52,4 +55,4 @@ class WebpackBuilder {
|
|
|
52
55
|
}
|
|
53
56
|
exports.WebpackBuilder = WebpackBuilder;
|
|
54
57
|
exports.default = WebpackBuilder;
|
|
55
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
58
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiLi8iLCJzb3VyY2VzIjpbInBhY2thZ2VzL2FuZ3VsYXJfZGV2a2l0L2J1aWxkX3dlYnBhY2svc3JjL3dlYnBhY2svaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFhQSwrQ0FBd0Y7QUFDeEYsK0JBQXdDO0FBQ3hDLDhDQUEyQztBQUMzQyxtQ0FBbUM7QUFRdEIsUUFBQSxnQkFBZ0IsR0FBb0IsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxFQUFFLENBQ3pFLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUU1QyxNQUFhLGNBQWM7SUFFekIsWUFBbUIsT0FBdUI7UUFBdkIsWUFBTyxHQUFQLE9BQU8sQ0FBZ0I7SUFBSSxDQUFDO0lBRS9DLEdBQUcsQ0FBQyxhQUF5RDtRQUMzRCxNQUFNLFVBQVUsR0FBRyxjQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUNwRCxnQkFBUyxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztRQUVsRCxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxvQkFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUMzRCxxQkFBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUM3QyxDQUFDO0lBQ0osQ0FBQztJQUVNLGlCQUFpQixDQUFDLGlCQUF5QjtRQUNoRCxPQUFPLFdBQUksc0NBQVEsaUJBQWlCLEdBQUUsQ0FBQztJQUN6QyxDQUFDO0lBRVMscUJBQXFCLENBQUMsTUFBNkI7UUFDM0QsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDekIsQ0FBQztJQUVNLFVBQVUsQ0FDZixNQUE2QixFQUFFLFNBQVMsR0FBRyx3QkFBZ0I7UUFFM0QsT0FBTyxJQUFJLGlCQUFVLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDMUIsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBRTNELE1BQU0sUUFBUSxHQUFzQyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRTtnQkFDakUsSUFBSSxHQUFHLEVBQUU7b0JBQ1AsT0FBTyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2lCQUN2QjtnQkFFRCxhQUFhO2dCQUNiLFNBQVMsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBRTlDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUUxQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRTtvQkFDakIsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDO2lCQUNoQjtZQUNILENBQUMsQ0FBQztZQUVGLElBQUk7Z0JBQ0YsSUFBSSxNQUFNLENBQUMsS0FBSyxFQUFFO29CQUNoQixNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsWUFBWSxJQUFJLEVBQUUsQ0FBQztvQkFDL0MsTUFBTSxRQUFRLEdBQUcsZUFBZSxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQUUsUUFBUSxDQUFDLENBQUM7b0JBRS9ELDREQUE0RDtvQkFDNUQsT0FBTyxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO2lCQUN4QztxQkFBTTtvQkFDTCxlQUFlLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO2lCQUMvQjthQUNGO1lBQUMsT0FBTyxHQUFHLEVBQUU7Z0JBQ1osSUFBSSxHQUFHLEVBQUU7b0JBQ1AsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUN2Qix3Q0FBd0MsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDO2lCQUMzRTtnQkFDRCxNQUFNLEdBQUcsQ0FBQzthQUNYO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUE3REQsd0NBNkRDO0FBRUQsa0JBQWUsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuaW1wb3J0IHtcbiAgQnVpbGRFdmVudCxcbiAgQnVpbGRlcixcbiAgQnVpbGRlckNvbmZpZ3VyYXRpb24sXG4gIEJ1aWxkZXJDb250ZXh0LFxufSBmcm9tICdAYW5ndWxhci1kZXZraXQvYXJjaGl0ZWN0JztcbmltcG9ydCB7IFBhdGgsIGdldFN5c3RlbVBhdGgsIGxvZ2dpbmcsIG5vcm1hbGl6ZSwgcmVzb2x2ZSB9IGZyb20gJ0Bhbmd1bGFyLWRldmtpdC9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIGZyb20gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNvbmNhdE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCAqIGFzIHdlYnBhY2sgZnJvbSAnd2VicGFjayc7XG5pbXBvcnQgeyBXZWJwYWNrQnVpbGRlclNjaGVtYSB9IGZyb20gJy4vc2NoZW1hJztcblxuXG5leHBvcnQgaW50ZXJmYWNlIExvZ2dpbmdDYWxsYmFjayB7XG4gIChzdGF0czogd2VicGFjay5TdGF0cywgY29uZmlnOiB3ZWJwYWNrLkNvbmZpZ3VyYXRpb24sIGxvZ2dlcjogbG9nZ2luZy5Mb2dnZXIpOiB2b2lkO1xufVxuXG5leHBvcnQgY29uc3QgZGVmYXVsdExvZ2dpbmdDYjogTG9nZ2luZ0NhbGxiYWNrID0gKHN0YXRzLCBjb25maWcsIGxvZ2dlcikgPT5cbiAgbG9nZ2VyLmluZm8oc3RhdHMudG9TdHJpbmcoY29uZmlnLnN0YXRzKSk7XG5cbmV4cG9ydCBjbGFzcyBXZWJwYWNrQnVpbGRlciBpbXBsZW1lbnRzIEJ1aWxkZXI8V2VicGFja0J1aWxkZXJTY2hlbWE+IHtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgY29udGV4dDogQnVpbGRlckNvbnRleHQpIHsgfVxuXG4gIHJ1bihidWlsZGVyQ29uZmlnOiBCdWlsZGVyQ29uZmlndXJhdGlvbjxXZWJwYWNrQnVpbGRlclNjaGVtYT4pOiBPYnNlcnZhYmxlPEJ1aWxkRXZlbnQ+IHtcbiAgICBjb25zdCBjb25maWdQYXRoID0gcmVzb2x2ZSh0aGlzLmNvbnRleHQud29ya3NwYWNlLnJvb3QsXG4gICAgICBub3JtYWxpemUoYnVpbGRlckNvbmZpZy5vcHRpb25zLndlYnBhY2tDb25maWcpKTtcblxuICAgIHJldHVybiB0aGlzLmxvYWRXZWJwYWNrQ29uZmlnKGdldFN5c3RlbVBhdGgoY29uZmlnUGF0aCkpLnBpcGUoXG4gICAgICBjb25jYXRNYXAoY29uZmlnID0+IHRoaXMucnVuV2VicGFjayhjb25maWcpKSxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGxvYWRXZWJwYWNrQ29uZmlnKHdlYnBhY2tDb25maWdQYXRoOiBzdHJpbmcpOiBPYnNlcnZhYmxlPHdlYnBhY2suQ29uZmlndXJhdGlvbj4ge1xuICAgIHJldHVybiBmcm9tKGltcG9ydCh3ZWJwYWNrQ29uZmlnUGF0aCkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNyZWF0ZVdlYnBhY2tDb21waWxlcihjb25maWc6IHdlYnBhY2suQ29uZmlndXJhdGlvbik6IHdlYnBhY2suQ29tcGlsZXIge1xuICAgIHJldHVybiB3ZWJwYWNrKGNvbmZpZyk7XG4gIH1cblxuICBwdWJsaWMgcnVuV2VicGFjayhcbiAgICBjb25maWc6IHdlYnBhY2suQ29uZmlndXJhdGlvbiwgbG9nZ2luZ0NiID0gZGVmYXVsdExvZ2dpbmdDYixcbiAgKTogT2JzZXJ2YWJsZTxCdWlsZEV2ZW50PiB7XG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlKG9icyA9PiB7XG4gICAgICBjb25zdCB3ZWJwYWNrQ29tcGlsZXIgPSB0aGlzLmNyZWF0ZVdlYnBhY2tDb21waWxlcihjb25maWcpO1xuXG4gICAgICBjb25zdCBjYWxsYmFjazogd2VicGFjay5jb21waWxlci5Db21waWxlckNhbGxiYWNrID0gKGVyciwgc3RhdHMpID0+IHtcbiAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgIHJldHVybiBvYnMuZXJyb3IoZXJyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIExvZyBzdGF0cy5cbiAgICAgICAgbG9nZ2luZ0NiKHN0YXRzLCBjb25maWcsIHRoaXMuY29udGV4dC5sb2dnZXIpO1xuXG4gICAgICAgIG9icy5uZXh0KHsgc3VjY2VzczogIXN0YXRzLmhhc0Vycm9ycygpIH0pO1xuXG4gICAgICAgIGlmICghY29uZmlnLndhdGNoKSB7XG4gICAgICAgICAgb2JzLmNvbXBsZXRlKCk7XG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGlmIChjb25maWcud2F0Y2gpIHtcbiAgICAgICAgICBjb25zdCB3YXRjaE9wdGlvbnMgPSBjb25maWcud2F0Y2hPcHRpb25zIHx8IHt9O1xuICAgICAgICAgIGNvbnN0IHdhdGNoaW5nID0gd2VicGFja0NvbXBpbGVyLndhdGNoKHdhdGNoT3B0aW9ucywgY2FsbGJhY2spO1xuXG4gICAgICAgICAgLy8gVGVhcmRvd24gbG9naWMuIENsb3NlIHRoZSB3YXRjaGVyIHdoZW4gdW5zdWJzY3JpYmVkIGZyb20uXG4gICAgICAgICAgcmV0dXJuICgpID0+IHdhdGNoaW5nLmNsb3NlKCgpID0+IHsgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgd2VicGFja0NvbXBpbGVyLnJ1bihjYWxsYmFjayk7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgdGhpcy5jb250ZXh0LmxvZ2dlci5lcnJvcihcbiAgICAgICAgICAgICdcXG5BbiBlcnJvciBvY2N1cmVkIGR1cmluZyB0aGUgYnVpbGQ6XFxuJyArICgoZXJyICYmIGVyci5zdGFjaykgfHwgZXJyKSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFdlYnBhY2tCdWlsZGVyO1xuIl19
|
|
@@ -11,11 +11,16 @@ import * as webpack from 'webpack';
|
|
|
11
11
|
import * as WebpackDevServer from 'webpack-dev-server';
|
|
12
12
|
import { LoggingCallback } from '../webpack';
|
|
13
13
|
import { WebpackDevServerBuilderSchema } from './schema';
|
|
14
|
+
export interface DevServerResult {
|
|
15
|
+
port: number;
|
|
16
|
+
family: string;
|
|
17
|
+
address: string;
|
|
18
|
+
}
|
|
14
19
|
export declare class WebpackDevServerBuilder implements Builder<WebpackDevServerBuilderSchema> {
|
|
15
20
|
context: BuilderContext;
|
|
16
21
|
constructor(context: BuilderContext);
|
|
17
|
-
run(builderConfig: BuilderConfiguration<WebpackDevServerBuilderSchema>): Observable<BuildEvent
|
|
22
|
+
run(builderConfig: BuilderConfiguration<WebpackDevServerBuilderSchema>): Observable<BuildEvent<DevServerResult>>;
|
|
18
23
|
loadWebpackConfig(webpackConfigPath: string): Observable<webpack.Configuration>;
|
|
19
|
-
runWebpackDevServer(webpackConfig: webpack.Configuration, devServerCfg?: WebpackDevServer.Configuration, loggingCb?: LoggingCallback): Observable<BuildEvent
|
|
24
|
+
runWebpackDevServer(webpackConfig: webpack.Configuration, devServerCfg?: WebpackDevServer.Configuration, loggingCb?: LoggingCallback): Observable<BuildEvent<DevServerResult>>;
|
|
20
25
|
}
|
|
21
26
|
export default WebpackDevServerBuilder;
|
|
@@ -28,7 +28,9 @@ class WebpackDevServerBuilder {
|
|
|
28
28
|
return new rxjs_1.Observable(obs => {
|
|
29
29
|
const devServerConfig = devServerCfg || webpackConfig.devServer || {};
|
|
30
30
|
devServerConfig.host = devServerConfig.host || 'localhost';
|
|
31
|
-
devServerConfig.port
|
|
31
|
+
if (devServerConfig.port == undefined) {
|
|
32
|
+
devServerConfig.port = 8080;
|
|
33
|
+
}
|
|
32
34
|
if (devServerConfig.stats) {
|
|
33
35
|
webpackConfig.stats = devServerConfig.stats;
|
|
34
36
|
}
|
|
@@ -36,15 +38,22 @@ class WebpackDevServerBuilder {
|
|
|
36
38
|
devServerConfig.stats = false;
|
|
37
39
|
const webpackCompiler = webpack(webpackConfig);
|
|
38
40
|
const server = new WebpackDevServer(webpackCompiler, devServerConfig);
|
|
41
|
+
let result;
|
|
39
42
|
webpackCompiler.hooks.done.tap('build-webpack', (stats) => {
|
|
40
43
|
// Log stats.
|
|
41
44
|
loggingCb(stats, webpackConfig, this.context.logger);
|
|
42
|
-
obs.next({ success: !stats.hasErrors() });
|
|
45
|
+
obs.next({ success: !stats.hasErrors(), result });
|
|
43
46
|
});
|
|
44
|
-
server.listen(devServerConfig.port, devServerConfig.host, (err)
|
|
47
|
+
server.listen(devServerConfig.port, devServerConfig.host, function (err) {
|
|
45
48
|
if (err) {
|
|
46
49
|
obs.error(err);
|
|
47
50
|
}
|
|
51
|
+
else {
|
|
52
|
+
// this is ignored because of ts errors
|
|
53
|
+
// that this is overshadowed by it's outer contain
|
|
54
|
+
// @ts-ignore;
|
|
55
|
+
result = this.address();
|
|
56
|
+
}
|
|
48
57
|
});
|
|
49
58
|
// Teardown logic. Close the server when unsubscribed from.
|
|
50
59
|
return () => server.close();
|
|
@@ -53,4 +62,4 @@ class WebpackDevServerBuilder {
|
|
|
53
62
|
}
|
|
54
63
|
exports.WebpackDevServerBuilder = WebpackDevServerBuilder;
|
|
55
64
|
exports.default = WebpackDevServerBuilder;
|
|
56
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
65
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiLi8iLCJzb3VyY2VzIjpbInBhY2thZ2VzL2FuZ3VsYXJfZGV2a2l0L2J1aWxkX3dlYnBhY2svc3JjL3dlYnBhY2stZGV2LXNlcnZlci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7OztHQU1HOztBQVFILCtDQUF5RTtBQUV6RSwrQkFBd0M7QUFDeEMsOENBQTJDO0FBQzNDLG1DQUFtQztBQUNuQyx1REFBdUQ7QUFDdkQsd0NBQStEO0FBUy9ELE1BQWEsdUJBQXVCO0lBRWxDLFlBQW1CLE9BQXVCO1FBQXZCLFlBQU8sR0FBUCxPQUFPLENBQWdCO0lBQUksQ0FBQztJQUUvQyxHQUFHLENBQUMsYUFBa0U7UUFFcEUsTUFBTSxVQUFVLEdBQUcsY0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksRUFDcEQsZ0JBQVMsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7UUFFbEQsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsb0JBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDM0QscUJBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUN0RCxDQUFDO0lBQ0osQ0FBQztJQUVNLGlCQUFpQixDQUFDLGlCQUF5QjtRQUNoRCxPQUFPLFdBQUksc0NBQVEsaUJBQWlCLEdBQUUsQ0FBQztJQUN6QyxDQUFDO0lBRU0sbUJBQW1CLENBQ3hCLGFBQW9DLEVBQ3BDLFlBQTZDLEVBQzdDLFlBQTZCLDBCQUFnQjtRQUU3QyxPQUFPLElBQUksaUJBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUMxQixNQUFNLGVBQWUsR0FBRyxZQUFZLElBQUksYUFBYSxDQUFDLFNBQVMsSUFBSSxFQUFFLENBQUM7WUFDdEUsZUFBZSxDQUFDLElBQUksR0FBRyxlQUFlLENBQUMsSUFBSSxJQUFJLFdBQVcsQ0FBQztZQUMzRCxJQUFJLGVBQWUsQ0FBQyxJQUFJLElBQUksU0FBUyxFQUFFO2dCQUNyQyxlQUFlLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQzthQUM3QjtZQUVELElBQUksZUFBZSxDQUFDLEtBQUssRUFBRTtnQkFDekIsYUFBYSxDQUFDLEtBQUssR0FBRyxlQUFlLENBQUMsS0FBNEMsQ0FBQzthQUNwRjtZQUNELG9FQUFvRTtZQUNwRSxlQUFlLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztZQUU5QixNQUFNLGVBQWUsR0FBRyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDL0MsTUFBTSxNQUFNLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBQyxlQUFlLEVBQUUsZUFBZSxDQUFDLENBQUM7WUFDdEUsSUFBSSxNQUFtQyxDQUFDO1lBRXhDLGVBQWUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxlQUFlLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRTtnQkFDeEQsYUFBYTtnQkFDYixTQUFTLENBQUMsS0FBSyxFQUFFLGFBQWEsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUVyRCxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7WUFDcEQsQ0FBQyxDQUFDLENBQUM7WUFFSCxNQUFNLENBQUMsTUFBTSxDQUNYLGVBQWUsQ0FBQyxJQUFJLEVBQ3BCLGVBQWUsQ0FBQyxJQUFJLEVBQ3BCLFVBQVUsR0FBRztnQkFDWCxJQUFJLEdBQUcsRUFBRTtvQkFDUCxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2lCQUNoQjtxQkFBTTtvQkFDTCx1Q0FBdUM7b0JBQ3ZDLGtEQUFrRDtvQkFDbEQsY0FBYztvQkFDZCxNQUFNLEdBQUksSUFBbUIsQ0FBQyxPQUFPLEVBQUUsQ0FBQztpQkFDekM7WUFDSCxDQUFDLENBQ0YsQ0FBQztZQUVGLDJEQUEyRDtZQUMzRCxPQUFPLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUM5QixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQWxFRCwwREFrRUM7QUFHRCxrQkFBZSx1QkFBdUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtcbiAgQnVpbGRFdmVudCxcbiAgQnVpbGRlcixcbiAgQnVpbGRlckNvbmZpZ3VyYXRpb24sXG4gIEJ1aWxkZXJDb250ZXh0LFxufSBmcm9tICdAYW5ndWxhci1kZXZraXQvYXJjaGl0ZWN0JztcbmltcG9ydCB7IGdldFN5c3RlbVBhdGgsIG5vcm1hbGl6ZSwgcmVzb2x2ZSB9IGZyb20gJ0Bhbmd1bGFyLWRldmtpdC9jb3JlJztcbmltcG9ydCAqIGFzIG5ldCBmcm9tICduZXQnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgZnJvbSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY29uY2F0TWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0ICogYXMgd2VicGFjayBmcm9tICd3ZWJwYWNrJztcbmltcG9ydCAqIGFzIFdlYnBhY2tEZXZTZXJ2ZXIgZnJvbSAnd2VicGFjay1kZXYtc2VydmVyJztcbmltcG9ydCB7IExvZ2dpbmdDYWxsYmFjaywgZGVmYXVsdExvZ2dpbmdDYiB9IGZyb20gJy4uL3dlYnBhY2snO1xuaW1wb3J0IHsgV2VicGFja0RldlNlcnZlckJ1aWxkZXJTY2hlbWEgfSBmcm9tICcuL3NjaGVtYSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGV2U2VydmVyUmVzdWx0IHtcbiAgcG9ydDogbnVtYmVyO1xuICBmYW1pbHk6IHN0cmluZztcbiAgYWRkcmVzczogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgV2VicGFja0RldlNlcnZlckJ1aWxkZXIgaW1wbGVtZW50cyBCdWlsZGVyPFdlYnBhY2tEZXZTZXJ2ZXJCdWlsZGVyU2NoZW1hPiB7XG5cbiAgY29uc3RydWN0b3IocHVibGljIGNvbnRleHQ6IEJ1aWxkZXJDb250ZXh0KSB7IH1cblxuICBydW4oYnVpbGRlckNvbmZpZzogQnVpbGRlckNvbmZpZ3VyYXRpb248V2VicGFja0RldlNlcnZlckJ1aWxkZXJTY2hlbWE+KVxuICAgIDogT2JzZXJ2YWJsZTxCdWlsZEV2ZW50PERldlNlcnZlclJlc3VsdD4+IHtcbiAgICBjb25zdCBjb25maWdQYXRoID0gcmVzb2x2ZSh0aGlzLmNvbnRleHQud29ya3NwYWNlLnJvb3QsXG4gICAgICBub3JtYWxpemUoYnVpbGRlckNvbmZpZy5vcHRpb25zLndlYnBhY2tDb25maWcpKTtcblxuICAgIHJldHVybiB0aGlzLmxvYWRXZWJwYWNrQ29uZmlnKGdldFN5c3RlbVBhdGgoY29uZmlnUGF0aCkpLnBpcGUoXG4gICAgICBjb25jYXRNYXAoY29uZmlnID0+IHRoaXMucnVuV2VicGFja0RldlNlcnZlcihjb25maWcpKSxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGxvYWRXZWJwYWNrQ29uZmlnKHdlYnBhY2tDb25maWdQYXRoOiBzdHJpbmcpOiBPYnNlcnZhYmxlPHdlYnBhY2suQ29uZmlndXJhdGlvbj4ge1xuICAgIHJldHVybiBmcm9tKGltcG9ydCh3ZWJwYWNrQ29uZmlnUGF0aCkpO1xuICB9XG5cbiAgcHVibGljIHJ1bldlYnBhY2tEZXZTZXJ2ZXIoXG4gICAgd2VicGFja0NvbmZpZzogd2VicGFjay5Db25maWd1cmF0aW9uLFxuICAgIGRldlNlcnZlckNmZz86IFdlYnBhY2tEZXZTZXJ2ZXIuQ29uZmlndXJhdGlvbixcbiAgICBsb2dnaW5nQ2I6IExvZ2dpbmdDYWxsYmFjayA9IGRlZmF1bHRMb2dnaW5nQ2IsXG4gICk6IE9ic2VydmFibGU8QnVpbGRFdmVudDxEZXZTZXJ2ZXJSZXN1bHQ+PiB7XG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlKG9icyA9PiB7XG4gICAgICBjb25zdCBkZXZTZXJ2ZXJDb25maWcgPSBkZXZTZXJ2ZXJDZmcgfHwgd2VicGFja0NvbmZpZy5kZXZTZXJ2ZXIgfHwge307XG4gICAgICBkZXZTZXJ2ZXJDb25maWcuaG9zdCA9IGRldlNlcnZlckNvbmZpZy5ob3N0IHx8ICdsb2NhbGhvc3QnO1xuICAgICAgaWYgKGRldlNlcnZlckNvbmZpZy5wb3J0ID09IHVuZGVmaW5lZCkge1xuICAgICAgICBkZXZTZXJ2ZXJDb25maWcucG9ydCA9IDgwODA7XG4gICAgICB9XG5cbiAgICAgIGlmIChkZXZTZXJ2ZXJDb25maWcuc3RhdHMpIHtcbiAgICAgICAgd2VicGFja0NvbmZpZy5zdGF0cyA9IGRldlNlcnZlckNvbmZpZy5zdGF0cyBhcyB3ZWJwYWNrLlN0YXRzLlRvU3RyaW5nT3B0aW9uc09iamVjdDtcbiAgICAgIH1cbiAgICAgIC8vIERpc2FibGUgc3RhdHMgcmVwb3J0aW5nIGJ5IHRoZSBkZXZzZXJ2ZXIsIHdlIGhhdmUgb3VyIG93biBsb2dnZXIuXG4gICAgICBkZXZTZXJ2ZXJDb25maWcuc3RhdHMgPSBmYWxzZTtcblxuICAgICAgY29uc3Qgd2VicGFja0NvbXBpbGVyID0gd2VicGFjayh3ZWJwYWNrQ29uZmlnKTtcbiAgICAgIGNvbnN0IHNlcnZlciA9IG5ldyBXZWJwYWNrRGV2U2VydmVyKHdlYnBhY2tDb21waWxlciwgZGV2U2VydmVyQ29uZmlnKTtcbiAgICAgIGxldCByZXN1bHQ6IHVuZGVmaW5lZCB8IERldlNlcnZlclJlc3VsdDtcblxuICAgICAgd2VicGFja0NvbXBpbGVyLmhvb2tzLmRvbmUudGFwKCdidWlsZC13ZWJwYWNrJywgKHN0YXRzKSA9PiB7XG4gICAgICAgIC8vIExvZyBzdGF0cy5cbiAgICAgICAgbG9nZ2luZ0NiKHN0YXRzLCB3ZWJwYWNrQ29uZmlnLCB0aGlzLmNvbnRleHQubG9nZ2VyKTtcblxuICAgICAgICBvYnMubmV4dCh7IHN1Y2Nlc3M6ICFzdGF0cy5oYXNFcnJvcnMoKSwgcmVzdWx0IH0pO1xuICAgICAgfSk7XG5cbiAgICAgIHNlcnZlci5saXN0ZW4oXG4gICAgICAgIGRldlNlcnZlckNvbmZpZy5wb3J0LFxuICAgICAgICBkZXZTZXJ2ZXJDb25maWcuaG9zdCxcbiAgICAgICAgZnVuY3Rpb24gKGVycikge1xuICAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgIG9icy5lcnJvcihlcnIpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyB0aGlzIGlzIGlnbm9yZWQgYmVjYXVzZSBvZiB0cyBlcnJvcnNcbiAgICAgICAgICAgIC8vIHRoYXQgdGhpcyBpcyBvdmVyc2hhZG93ZWQgYnkgaXQncyBvdXRlciBjb250YWluXG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlO1xuICAgICAgICAgICAgcmVzdWx0ID0gKHRoaXMgYXMgbmV0LlNlcnZlcikuYWRkcmVzcygpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICk7XG5cbiAgICAgIC8vIFRlYXJkb3duIGxvZ2ljLiBDbG9zZSB0aGUgc2VydmVyIHdoZW4gdW5zdWJzY3JpYmVkIGZyb20uXG4gICAgICByZXR1cm4gKCkgPT4gc2VydmVyLmNsb3NlKCk7XG4gICAgfSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBXZWJwYWNrRGV2U2VydmVyQnVpbGRlcjtcbiJdfQ==
|