cdk-import 0.2.134 → 0.2.135
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/lib/service-catalog.d.ts +68 -0
- package/lib/service-catalog.js +139 -0
- package/package.json +1 -1
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import * as AWS from 'aws-sdk';
|
|
2
|
+
export interface IServiceCatalogClient {
|
|
3
|
+
searchProducts(input: AWS.ServiceCatalog.ListPortfoliosInput): Promise<AWS.ServiceCatalog.ListPortfoliosOutput>;
|
|
4
|
+
listProvisioningArtifacts(input: AWS.ServiceCatalog.ListProvisioningArtifactsInput): Promise<AWS.ServiceCatalog.ListProvisioningArtifactsOutput>;
|
|
5
|
+
listLaunchPaths(input: AWS.ServiceCatalog.ListLaunchPathsInput): Promise<AWS.ServiceCatalog.ListLaunchPathsOutput>;
|
|
6
|
+
describeProvisioningParameters(input: AWS.ServiceCatalog.DescribeProvisioningParametersInput): Promise<AWS.ServiceCatalog.DescribeProvisioningParametersOutput>;
|
|
7
|
+
}
|
|
8
|
+
export declare class ServiceCatalogClient implements IServiceCatalogClient {
|
|
9
|
+
private readonly sc;
|
|
10
|
+
constructor();
|
|
11
|
+
searchProducts(input: AWS.ServiceCatalog.SearchProductsInput): Promise<AWS.ServiceCatalog.SearchProductsOutput>;
|
|
12
|
+
listProvisioningArtifacts(input: AWS.ServiceCatalog.ListProvisioningArtifactsInput): Promise<AWS.ServiceCatalog.ListProvisioningArtifactsOutput>;
|
|
13
|
+
listLaunchPaths(input: AWS.ServiceCatalog.ListLaunchPathsInput): Promise<AWS.ServiceCatalog.ListLaunchPathsOutput>;
|
|
14
|
+
describeProvisioningParameters(input: AWS.ServiceCatalog.DescribeProvisioningParametersInput): Promise<AWS.ServiceCatalog.DescribeProvisioningParametersOutput>;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Provide query values for a specific provisionable product.
|
|
18
|
+
* If no specific IDs are declared for a product, we will use the set DEFAULT value for the provisioning artifact and launch path.
|
|
19
|
+
*/
|
|
20
|
+
export interface DescribeProvisionedProductOptions {
|
|
21
|
+
/**
|
|
22
|
+
* A client that performs calls to AWS Service Catalog. You can provide a mock here
|
|
23
|
+
* for testing.
|
|
24
|
+
*/
|
|
25
|
+
readonly client?: IServiceCatalogClient;
|
|
26
|
+
/**
|
|
27
|
+
* The product Id..
|
|
28
|
+
*/
|
|
29
|
+
readonly productId?: string;
|
|
30
|
+
/**
|
|
31
|
+
* The provisioning artifact Id.
|
|
32
|
+
*/
|
|
33
|
+
readonly provisioningArtifactId?: string;
|
|
34
|
+
/**
|
|
35
|
+
* The launch path Id.
|
|
36
|
+
*/
|
|
37
|
+
readonly launchPathId?: string;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Fetches the all the available or queried service catalog product(s) for the caller.
|
|
41
|
+
*
|
|
42
|
+
* @returns list of product view summaries
|
|
43
|
+
*/
|
|
44
|
+
export declare function fetchAvailableProducts(options?: DescribeProvisionedProductOptions): Promise<AWS.ServiceCatalog.ProductViewSummaries>;
|
|
45
|
+
/**
|
|
46
|
+
* Fetches the all the available or queried provisioning artifact(s) for the caller.
|
|
47
|
+
*
|
|
48
|
+
* @param productId the product to fetch provisioning artifacts for
|
|
49
|
+
* @returns list of provisioning artifact details for a product
|
|
50
|
+
*/
|
|
51
|
+
export declare function listProvisioningArtifacts(productId: string, options?: DescribeProvisionedProductOptions): Promise<AWS.ServiceCatalog.ProvisioningArtifactDetail[]>;
|
|
52
|
+
/**
|
|
53
|
+
* Retrieves all the availalbe or queried launch path(s) for a product.
|
|
54
|
+
*
|
|
55
|
+
* @param productId the product to list launch paths for
|
|
56
|
+
* @returns list of launchPathSummaries for a product
|
|
57
|
+
*/
|
|
58
|
+
export declare function listLaunchPaths(productId: string, options?: DescribeProvisionedProductOptions): Promise<AWS.ServiceCatalog.LaunchPathSummaries>;
|
|
59
|
+
/**
|
|
60
|
+
* Gets the information required to provision an artifact.
|
|
61
|
+
* Includes information on inputs and outputs of the product.
|
|
62
|
+
*
|
|
63
|
+
* @param productId the product to get provisioning parameters for
|
|
64
|
+
* @param provisioningArtifactId the provisioning artifact to get provisioning parameters for
|
|
65
|
+
* @param launchPathId the launch path to get provisioning parameters for
|
|
66
|
+
* @returns the provisoning parameters for an artifact
|
|
67
|
+
*/
|
|
68
|
+
export declare function describeProvisioningParameters(productId: string, provisioningArtifactId: string, launchPathId: string, options?: DescribeProvisionedProductOptions): Promise<AWS.ServiceCatalog.DescribeProvisioningParametersOutput>;
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.describeProvisioningParameters = exports.listLaunchPaths = exports.listProvisioningArtifacts = exports.fetchAvailableProducts = exports.ServiceCatalogClient = void 0;
|
|
27
|
+
const AWS = __importStar(require("aws-sdk"));
|
|
28
|
+
const aws_1 = require("./aws");
|
|
29
|
+
class ServiceCatalogClient {
|
|
30
|
+
constructor() {
|
|
31
|
+
this.sc = (0, aws_1.createAwsClient)(AWS.ServiceCatalog);
|
|
32
|
+
}
|
|
33
|
+
async searchProducts(input) {
|
|
34
|
+
return this.sc.searchProducts(input).promise();
|
|
35
|
+
}
|
|
36
|
+
async listProvisioningArtifacts(input) {
|
|
37
|
+
return this.sc.listProvisioningArtifacts(input).promise();
|
|
38
|
+
}
|
|
39
|
+
async listLaunchPaths(input) {
|
|
40
|
+
return this.sc.listLaunchPaths(input).promise();
|
|
41
|
+
}
|
|
42
|
+
async describeProvisioningParameters(input) {
|
|
43
|
+
return this.sc.describeProvisioningParameters(input).promise();
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
exports.ServiceCatalogClient = ServiceCatalogClient;
|
|
47
|
+
/**
|
|
48
|
+
* Fetches the all the available or queried service catalog product(s) for the caller.
|
|
49
|
+
*
|
|
50
|
+
* @returns list of product view summaries
|
|
51
|
+
*/
|
|
52
|
+
async function fetchAvailableProducts(options = {}) {
|
|
53
|
+
var _a;
|
|
54
|
+
const sc = (_a = options.client) !== null && _a !== void 0 ? _a : new ServiceCatalogClient();
|
|
55
|
+
const products = [];
|
|
56
|
+
let token;
|
|
57
|
+
do {
|
|
58
|
+
const res = await sc.searchProducts({
|
|
59
|
+
PageToken: token,
|
|
60
|
+
...(options.productId ? { SourceProductId: options.productId } : {}),
|
|
61
|
+
});
|
|
62
|
+
if (res.ProductViewSummaries) {
|
|
63
|
+
products.push(...res.ProductViewSummaries);
|
|
64
|
+
}
|
|
65
|
+
token = res.NextPageToken;
|
|
66
|
+
} while (token);
|
|
67
|
+
return products;
|
|
68
|
+
}
|
|
69
|
+
exports.fetchAvailableProducts = fetchAvailableProducts;
|
|
70
|
+
/**
|
|
71
|
+
* Fetches the all the available or queried provisioning artifact(s) for the caller.
|
|
72
|
+
*
|
|
73
|
+
* @param productId the product to fetch provisioning artifacts for
|
|
74
|
+
* @returns list of provisioning artifact details for a product
|
|
75
|
+
*/
|
|
76
|
+
async function listProvisioningArtifacts(productId, options = {}) {
|
|
77
|
+
var _a;
|
|
78
|
+
const sc = (_a = options.client) !== null && _a !== void 0 ? _a : new ServiceCatalogClient();
|
|
79
|
+
const provisioningArtifacts = await sc.listProvisioningArtifacts({
|
|
80
|
+
ProductId: productId,
|
|
81
|
+
});
|
|
82
|
+
if (options.provisioningArtifactId != null) {
|
|
83
|
+
return provisioningArtifacts.ProvisioningArtifactDetails.filter(pa => pa.Id == options.provisioningArtifactId);
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
return provisioningArtifacts.ProvisioningArtifactDetails;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
exports.listProvisioningArtifacts = listProvisioningArtifacts;
|
|
90
|
+
/**
|
|
91
|
+
* Retrieves all the availalbe or queried launch path(s) for a product.
|
|
92
|
+
*
|
|
93
|
+
* @param productId the product to list launch paths for
|
|
94
|
+
* @returns list of launchPathSummaries for a product
|
|
95
|
+
*/
|
|
96
|
+
async function listLaunchPaths(productId, options = {}) {
|
|
97
|
+
var _a;
|
|
98
|
+
const sc = (_a = options.client) !== null && _a !== void 0 ? _a : new ServiceCatalogClient();
|
|
99
|
+
const launchPaths = [];
|
|
100
|
+
let token;
|
|
101
|
+
do {
|
|
102
|
+
const res = await sc.listLaunchPaths({
|
|
103
|
+
ProductId: productId,
|
|
104
|
+
PageToken: token,
|
|
105
|
+
});
|
|
106
|
+
if (res.LaunchPathSummaries) {
|
|
107
|
+
launchPaths.push(...res.LaunchPathSummaries);
|
|
108
|
+
}
|
|
109
|
+
token = res.NextPageToken;
|
|
110
|
+
} while (token);
|
|
111
|
+
if (options.launchPathId != null) {
|
|
112
|
+
return launchPaths.filter(lp => lp.Id == options.launchPathId);
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
return launchPaths;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
exports.listLaunchPaths = listLaunchPaths;
|
|
119
|
+
/**
|
|
120
|
+
* Gets the information required to provision an artifact.
|
|
121
|
+
* Includes information on inputs and outputs of the product.
|
|
122
|
+
*
|
|
123
|
+
* @param productId the product to get provisioning parameters for
|
|
124
|
+
* @param provisioningArtifactId the provisioning artifact to get provisioning parameters for
|
|
125
|
+
* @param launchPathId the launch path to get provisioning parameters for
|
|
126
|
+
* @returns the provisoning parameters for an artifact
|
|
127
|
+
*/
|
|
128
|
+
async function describeProvisioningParameters(productId, provisioningArtifactId, launchPathId, options = {}) {
|
|
129
|
+
var _a;
|
|
130
|
+
const sc = (_a = options.client) !== null && _a !== void 0 ? _a : new ServiceCatalogClient();
|
|
131
|
+
const provisioningParameters = await sc.describeProvisioningParameters({
|
|
132
|
+
ProductId: productId,
|
|
133
|
+
ProvisioningArtifactId: provisioningArtifactId,
|
|
134
|
+
PathId: launchPathId,
|
|
135
|
+
});
|
|
136
|
+
return provisioningParameters;
|
|
137
|
+
}
|
|
138
|
+
exports.describeProvisioningParameters = describeProvisioningParameters;
|
|
139
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS1jYXRhbG9nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3NlcnZpY2UtY2F0YWxvZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDZDQUErQjtBQUMvQiwrQkFBd0M7QUFVeEMsTUFBYSxvQkFBb0I7SUFHL0I7UUFDRSxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUEscUJBQWUsRUFBQyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVNLEtBQUssQ0FBQyxjQUFjLENBQUMsS0FBNkM7UUFDdkUsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNqRCxDQUFDO0lBRU0sS0FBSyxDQUFDLHlCQUF5QixDQUFDLEtBQXdEO1FBRTdGLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyx5QkFBeUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUM1RCxDQUFDO0lBRU0sS0FBSyxDQUFDLGVBQWUsQ0FBQyxLQUE4QztRQUN6RSxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2xELENBQUM7SUFFTSxLQUFLLENBQUMsOEJBQThCLENBQUMsS0FBNkQ7UUFFdkcsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLDhCQUE4QixDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2pFLENBQUM7Q0FDRjtBQXhCRCxvREF3QkM7QUE2QkQ7Ozs7R0FJRztBQUNJLEtBQUssVUFBVSxzQkFBc0IsQ0FBQyxVQUE2QyxFQUFFOztJQUMxRixNQUFNLEVBQUUsR0FBRyxNQUFBLE9BQU8sQ0FBQyxNQUFNLG1DQUFJLElBQUksb0JBQW9CLEVBQUUsQ0FBQztJQUV4RCxNQUFNLFFBQVEsR0FBRyxFQUFFLENB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LENBQUMsQ0FBQztJQUVILE9BQU8sc0JBQXNCLENBQUM7QUFDaEMsQ0FBQztBQWJELHdFQWFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgQVdTIGZyb20gJ2F3cy1zZGsnO1xuaW1wb3J0IHsgY3JlYXRlQXdzQ2xpZW50IH0gZnJvbSAnLi9hd3MnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElTZXJ2aWNlQ2F0YWxvZ0NsaWVudCB7XG4gIHNlYXJjaFByb2R1Y3RzKGlucHV0OiBBV1MuU2VydmljZUNhdGFsb2cuTGlzdFBvcnRmb2xpb3NJbnB1dCk6IFByb21pc2U8QVdTLlNlcnZpY2VDYXRhbG9nLkxpc3RQb3J0Zm9saW9zT3V0cHV0PjtcbiAgbGlzdFByb3Zpc2lvbmluZ0FydGlmYWN0cyhpbnB1dDogQVdTLlNlcnZpY2VDYXRhbG9nLkxpc3RQcm92aXNpb25pbmdBcnRpZmFjdHNJbnB1dCk6IFByb21pc2U8QVdTLlNlcnZpY2VDYXRhbG9nLkxpc3RQcm92aXNpb25pbmdBcnRpZmFjdHNPdXRwdXQ+O1xuICBsaXN0TGF1bmNoUGF0aHMoaW5wdXQ6IEFXUy5TZXJ2aWNlQ2F0YWxvZy5MaXN0TGF1bmNoUGF0aHNJbnB1dCk6IFByb21pc2U8QVdTLlNlcnZpY2VDYXRhbG9nLkxpc3RMYXVuY2hQYXRoc091dHB1dD4gO1xuICBkZXNjcmliZVByb3Zpc2lvbmluZ1BhcmFtZXRlcnMoaW5wdXQ6IEFXUy5TZXJ2aWNlQ2F0YWxvZy5EZXNjcmliZVByb3Zpc2lvbmluZ1BhcmFtZXRlcnNJbnB1dCk6XG4gIFByb21pc2U8QVdTLlNlcnZpY2VDYXRhbG9nLkRlc2NyaWJlUHJvdmlzaW9uaW5nUGFyYW1ldGVyc091dHB1dD47XG59XG5cbmV4cG9ydCBjbGFzcyBTZXJ2aWNlQ2F0YWxvZ0NsaWVudCBpbXBsZW1lbnRzIElTZXJ2aWNlQ2F0YWxvZ0NsaWVudCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgc2M6IEFXUy5TZXJ2aWNlQ2F0YWxvZztcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLnNjID0gY3JlYXRlQXdzQ2xpZW50KEFXUy5TZXJ2aWNlQ2F0YWxvZyk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgc2VhcmNoUHJvZHVjdHMoaW5wdXQ6IEFXUy5TZXJ2aWNlQ2F0YWxvZy5TZWFyY2hQcm9kdWN0c0lucHV0KTogUHJvbWlzZTxBV1MuU2VydmljZUNhdGFsb2cuU2VhcmNoUHJvZHVjdHNPdXRwdXQ+IHtcbiAgICByZXR1cm4gdGhpcy5zYy5zZWFyY2hQcm9kdWN0cyhpbnB1dCkucHJvbWlzZSgpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGxpc3RQcm92aXNpb25pbmdBcnRpZmFjdHMoaW5wdXQ6IEFXUy5TZXJ2aWNlQ2F0YWxvZy5MaXN0UHJvdmlzaW9uaW5nQXJ0aWZhY3RzSW5wdXQpOlxuICBQcm9taXNlPEFXUy5TZXJ2aWNlQ2F0YWxvZy5MaXN0UHJvdmlzaW9uaW5nQXJ0aWZhY3RzT3V0cHV0PiB7XG4gICAgcmV0dXJuIHRoaXMuc2MubGlzdFByb3Zpc2lvbmluZ0FydGlmYWN0cyhpbnB1dCkucHJvbWlzZSgpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGxpc3RMYXVuY2hQYXRocyhpbnB1dDogQVdTLlNlcnZpY2VDYXRhbG9nLkxpc3RMYXVuY2hQYXRoc0lucHV0KTogUHJvbWlzZTxBV1MuU2VydmljZUNhdGFsb2cuTGlzdExhdW5jaFBhdGhzT3V0cHV0PiB7XG4gICAgcmV0dXJuIHRoaXMuc2MubGlzdExhdW5jaFBhdGhzKGlucHV0KS5wcm9taXNlKCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZGVzY3JpYmVQcm92aXNpb25pbmdQYXJhbWV0ZXJzKGlucHV0OiBBV1MuU2VydmljZUNhdGFsb2cuRGVzY3JpYmVQcm92aXNpb25pbmdQYXJhbWV0ZXJzSW5wdXQpOlxuICBQcm9taXNlPEFXUy5TZXJ2aWNlQ2F0YWxvZy5EZXNjcmliZVByb3Zpc2lvbmluZ1BhcmFtZXRlcnNPdXRwdXQ+IHtcbiAgICByZXR1cm4gdGhpcy5zYy5kZXNjcmliZVByb3Zpc2lvbmluZ1BhcmFtZXRlcnMoaW5wdXQpLnByb21pc2UoKTtcbiAgfVxufVxuXG4vKipcbiAqIFByb3ZpZGUgcXVlcnkgdmFsdWVzIGZvciBhIHNwZWNpZmljIHByb3Zpc2lvbmFibGUgcHJvZHVjdC5cbiAqIElmIG5vIHNwZWNpZmljIElEcyBhcmUgZGVjbGFyZWQgZm9yIGEgcHJvZHVjdCwgd2Ugd2lsbCB1c2UgdGhlIHNldCBERUZBVUxUIHZhbHVlIGZvciB0aGUgcHJvdmlzaW9uaW5nIGFydGlmYWN0IGFuZCBsYXVuY2ggcGF0aC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEZXNjcmliZVByb3Zpc2lvbmVkUHJvZHVjdE9wdGlvbnMge1xuICAvKipcbiAgICogQSBjbGllbnQgdGhhdCBwZXJmb3JtcyBjYWxscyB0byBBV1MgU2VydmljZSBDYXRhbG9nLiBZb3UgY2FuIHByb3ZpZGUgYSBtb2NrIGhlcmVcbiAgICogZm9yIHRlc3RpbmcuXG4gICAqL1xuICByZWFkb25seSBjbGllbnQ/OiBJU2VydmljZUNhdGFsb2dDbGllbnQ7XG5cbiAgLyoqXG4gICAqIFRoZSBwcm9kdWN0IElkLi5cbiAgICovXG4gIHJlYWRvbmx5IHByb2R1Y3RJZD86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHByb3Zpc2lvbmluZyBhcnRpZmFjdCBJZC5cbiAgICovXG4gIHJlYWRvbmx5IHByb3Zpc2lvbmluZ0FydGlmYWN0SWQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBsYXVuY2ggcGF0aCBJZC5cbiAgICovXG4gIHJlYWRvbmx5IGxhdW5jaFBhdGhJZD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBGZXRjaGVzIHRoZSBhbGwgdGhlIGF2YWlsYWJsZSBvciBxdWVyaWVkIHNlcnZpY2UgY2F0YWxvZyBwcm9kdWN0KHMpIGZvciB0aGUgY2FsbGVyLlxuICpcbiAqIEByZXR1cm5zIGxpc3Qgb2YgcHJvZHVjdCB2aWV3IHN1bW1hcmllc1xuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZmV0Y2hBdmFpbGFibGVQcm9kdWN0cyhvcHRpb25zOiBEZXNjcmliZVByb3Zpc2lvbmVkUHJvZHVjdE9wdGlvbnMgPSB7fSk6IFByb21pc2U8QVdTLlNlcnZpY2VDYXRhbG9nLlByb2R1Y3RWaWV3U3VtbWFyaWVzPiB7XG4gIGNvbnN0IHNjID0gb3B0aW9ucy5jbGllbnQgPz8gbmV3IFNlcnZpY2VDYXRhbG9nQ2xpZW50KCk7XG5cbiAgY29uc3QgcHJvZHVjdHMgPSBbXTtcbiAgbGV0IHRva2VuO1xuXG4gIGRvIHtcbiAgICBjb25zdCByZXM6IEFXUy5TZXJ2aWNlQ2F0YWxvZy5TZWFyY2hQcm9kdWN0c091dHB1dCA9IGF3YWl0IHNjLnNlYXJjaFByb2R1Y3RzKHtcbiAgICAgIFBhZ2VUb2tlbjogdG9rZW4sXG4gICAgICAuLi4ob3B0aW9ucy5wcm9kdWN0SWQgPyB7IFNvdXJjZVByb2R1Y3RJZDogb3B0aW9ucy5wcm9kdWN0SWQgfSA6IHt9KSxcbiAgICB9KTtcblxuICAgIGlmIChyZXMuUHJvZHVjdFZpZXdTdW1tYXJpZXMpIHtcbiAgICAgIHByb2R1Y3RzLnB1c2goLi4ucmVzLlByb2R1Y3RWaWV3U3VtbWFyaWVzKTtcbiAgICB9XG4gICAgdG9rZW4gPSByZXMuTmV4dFBhZ2VUb2tlbjtcbiAgfSB3aGlsZSAodG9rZW4pO1xuXG4gIHJldHVybiBwcm9kdWN0cztcbn1cblxuLyoqXG4gKiBGZXRjaGVzIHRoZSBhbGwgdGhlIGF2YWlsYWJsZSBvciBxdWVyaWVkIHByb3Zpc2lvbmluZyBhcnRpZmFjdChzKSBmb3IgdGhlIGNhbGxlci5cbiAqXG4gKiBAcGFyYW0gcHJvZHVjdElkIHRoZSBwcm9kdWN0IHRvIGZldGNoIHByb3Zpc2lvbmluZyBhcnRpZmFjdHMgZm9yXG4gKiBAcmV0dXJucyBsaXN0IG9mIHByb3Zpc2lvbmluZyBhcnRpZmFjdCBkZXRhaWxzIGZvciBhIHByb2R1Y3RcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGxpc3RQcm92aXNpb25pbmdBcnRpZmFjdHMoXG4gIHByb2R1Y3RJZDogc3RyaW5nLFxuICBvcHRpb25zOiBEZXNjcmliZVByb3Zpc2lvbmVkUHJvZHVjdE9wdGlvbnMgPSB7fSk6IFByb21pc2U8QVdTLlNlcnZpY2VDYXRhbG9nLlByb3Zpc2lvbmluZ0FydGlmYWN0RGV0YWlsW10+IHtcbiAgY29uc3Qgc2MgPSBvcHRpb25zLmNsaWVudCA/PyBuZXcgU2VydmljZUNhdGFsb2dDbGllbnQoKTtcblxuICBjb25zdCBwcm92aXNpb25pbmdBcnRpZmFjdHM6IEFXUy5TZXJ2aWNlQ2F0YWxvZy5MaXN0UHJvdmlzaW9uaW5nQXJ0aWZhY3RzT3V0cHV0ID0gYXdhaXQgc2MubGlzdFByb3Zpc2lvbmluZ0FydGlmYWN0cyh7XG4gICAgUHJvZHVjdElkOiBwcm9kdWN0SWQsXG4gIH0pO1xuXG4gIGlmICggb3B0aW9ucy5wcm92aXNpb25pbmdBcnRpZmFjdElkICE9IG51bGwgKSB7XG4gICAgcmV0dXJuIHByb3Zpc2lvbmluZ0FydGlmYWN0cy5Qcm92aXNpb25pbmdBcnRpZmFjdERldGFpbHMhLmZpbHRlcihwYSA9PiBwYS5JZCA9PSBvcHRpb25zLnByb3Zpc2lvbmluZ0FydGlmYWN0SWQpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBwcm92aXNpb25pbmdBcnRpZmFjdHMuUHJvdmlzaW9uaW5nQXJ0aWZhY3REZXRhaWxzITtcbiAgfVxufVxuXG4vKipcbiAqIFJldHJpZXZlcyBhbGwgdGhlIGF2YWlsYWxiZSBvciBxdWVyaWVkIGxhdW5jaCBwYXRoKHMpIGZvciBhIHByb2R1Y3QuXG4gKlxuICogQHBhcmFtIHByb2R1Y3RJZCB0aGUgcHJvZHVjdCB0byBsaXN0IGxhdW5jaCBwYXRocyBmb3JcbiAqIEByZXR1cm5zIGxpc3Qgb2YgbGF1bmNoUGF0aFN1bW1hcmllcyBmb3IgYSBwcm9kdWN0XG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsaXN0TGF1bmNoUGF0aHMoXG4gIHByb2R1Y3RJZDogc3RyaW5nLFxuICBvcHRpb25zOiBEZXNjcmliZVByb3Zpc2lvbmVkUHJvZHVjdE9wdGlvbnMgPSB7fSk6XG4gIFByb21pc2U8QVdTLlNlcnZpY2VDYXRhbG9nLkxhdW5jaFBhdGhTdW1tYXJpZXM+IHtcbiAgY29uc3Qgc2MgPSBvcHRpb25zLmNsaWVudCA/PyBuZXcgU2VydmljZUNhdGFsb2dDbGllbnQoKTtcblxuICBjb25zdCBsYXVuY2hQYXRocyA9IFtdO1xuICBsZXQgdG9rZW47XG5cbiAgZG8ge1xuICAgIGNvbnN0IHJlczogQVdTLlNlcnZpY2VDYXRhbG9nLkxpc3RMYXVuY2hQYXRoc091dHB1dCA9IGF3YWl0IHNjLmxpc3RMYXVuY2hQYXRocyh7XG4gICAgICBQcm9kdWN0SWQ6IHByb2R1Y3RJZCxcbiAgICAgIFBhZ2VUb2tlbjogdG9rZW4sXG4gICAgfSk7XG5cbiAgICBpZiAocmVzLkxhdW5jaFBhdGhTdW1tYXJpZXMpIHtcbiAgICAgIGxhdW5jaFBhdGhzLnB1c2goLi4ucmVzLkxhdW5jaFBhdGhTdW1tYXJpZXMpO1xuICAgIH1cbiAgICB0b2tlbiA9IHJlcy5OZXh0UGFnZVRva2VuO1xuICB9IHdoaWxlICh0b2tlbik7XG5cbiAgaWYgKCBvcHRpb25zLmxhdW5jaFBhdGhJZCAhPSBudWxsICkge1xuICAgIHJldHVybiBsYXVuY2hQYXRocy5maWx0ZXIobHAgPT4gbHAuSWQgPT0gb3B0aW9ucy5sYXVuY2hQYXRoSWQpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBsYXVuY2hQYXRocztcbiAgfVxufVxuXG4vKipcbiAqIEdldHMgdGhlIGluZm9ybWF0aW9uIHJlcXVpcmVkIHRvIHByb3Zpc2lvbiBhbiBhcnRpZmFjdC5cbiAqIEluY2x1ZGVzIGluZm9ybWF0aW9uIG9uIGlucHV0cyBhbmQgb3V0cHV0cyBvZiB0aGUgcHJvZHVjdC5cbiAqXG4gKiBAcGFyYW0gcHJvZHVjdElkIHRoZSBwcm9kdWN0IHRvIGdldCBwcm92aXNpb25pbmcgcGFyYW1ldGVycyBmb3JcbiAqIEBwYXJhbSBwcm92aXNpb25pbmdBcnRpZmFjdElkIHRoZSBwcm92aXNpb25pbmcgYXJ0aWZhY3QgdG8gZ2V0IHByb3Zpc2lvbmluZyBwYXJhbWV0ZXJzIGZvclxuICogQHBhcmFtIGxhdW5jaFBhdGhJZCB0aGUgbGF1bmNoIHBhdGggdG8gZ2V0IHByb3Zpc2lvbmluZyBwYXJhbWV0ZXJzIGZvclxuICogQHJldHVybnMgdGhlIHByb3Zpc29uaW5nIHBhcmFtZXRlcnMgZm9yIGFuIGFydGlmYWN0XG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBkZXNjcmliZVByb3Zpc2lvbmluZ1BhcmFtZXRlcnMocHJvZHVjdElkOiBzdHJpbmcsIHByb3Zpc2lvbmluZ0FydGlmYWN0SWQ6IHN0cmluZywgbGF1bmNoUGF0aElkOiBzdHJpbmcsXG4gIG9wdGlvbnM6IERlc2NyaWJlUHJvdmlzaW9uZWRQcm9kdWN0T3B0aW9ucyA9IHt9KTpcbiAgUHJvbWlzZTxBV1MuU2VydmljZUNhdGFsb2cuRGVzY3JpYmVQcm92aXNpb25pbmdQYXJhbWV0ZXJzT3V0cHV0PiB7XG5cbiAgY29uc3Qgc2MgPSBvcHRpb25zLmNsaWVudCA/PyBuZXcgU2VydmljZUNhdGFsb2dDbGllbnQoKTtcblxuICBjb25zdCBwcm92aXNpb25pbmdQYXJhbWV0ZXJzOiBBV1MuU2VydmljZUNhdGFsb2cuRGVzY3JpYmVQcm92aXNpb25pbmdQYXJhbWV0ZXJzT3V0cHV0ID0gYXdhaXQgc2MuZGVzY3JpYmVQcm92aXNpb25pbmdQYXJhbWV0ZXJzKHtcbiAgICBQcm9kdWN0SWQ6IHByb2R1Y3RJZCxcbiAgICBQcm92aXNpb25pbmdBcnRpZmFjdElkOiBwcm92aXNpb25pbmdBcnRpZmFjdElkLFxuICAgIFBhdGhJZDogbGF1bmNoUGF0aElkLFxuICB9KTtcblxuICByZXR1cm4gcHJvdmlzaW9uaW5nUGFyYW1ldGVycztcbn0iXX0=
|