cdk-import 0.2.144 → 0.2.145

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/index.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import { DescribeResourceTypeOptions } from './cfn-registry';
2
+ import { DescribeProductAggregateOptions } from './service-catalog';
2
3
  export interface ImportResourceTypeOptions extends DescribeResourceTypeOptions {
3
4
  /**
4
5
  * @default "."
@@ -14,3 +15,25 @@ export interface ImportResourceTypeOptions extends DescribeResourceTypeOptions {
14
15
  * @returns name of the resource type
15
16
  */
16
17
  export declare function importResourceType(resourceName: string, _resourceVersion: string, options: ImportResourceTypeOptions): Promise<string>;
18
+ /**
19
+ * Configure options for importing products into your local workspace
20
+ */
21
+ export interface ImportProductOptions extends DescribeProductAggregateOptions {
22
+ /**
23
+ * The folder in which product constructs (as separate class files) will be output to.
24
+ * @default "./sc-products"
25
+ */
26
+ readonly outdir?: string;
27
+ }
28
+ /**
29
+ * Entry point to import Service Catalog product resource.
30
+ *
31
+ * @returns name of the product version
32
+ */
33
+ export declare function importProduct(options: ImportProductOptions): Promise<string>;
34
+ /**
35
+ * Entry point to import all available Service Catalog product resources with `DEFAULT` parameters.
36
+ *
37
+ * @returns names of the product versions
38
+ */
39
+ export declare function importProducts(options: ImportProductOptions): Promise<string[]>;
package/lib/index.js CHANGED
@@ -23,11 +23,12 @@ var __importStar = (this && this.__importStar) || function (mod) {
23
23
  return result;
24
24
  };
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.importResourceType = void 0;
26
+ exports.importProducts = exports.importProduct = exports.importResourceType = void 0;
27
27
  const fs = __importStar(require("fs"));
28
28
  const path = __importStar(require("path"));
29
29
  const cfn_registry_1 = require("./cfn-registry");
30
30
  const cfn_resource_generator_1 = require("./cfn-resource-generator");
31
+ const service_catalog_1 = require("./service-catalog");
31
32
  /**
32
33
  * Entry point to import CFN resource types
33
34
  *
@@ -48,4 +49,39 @@ async function importResourceType(resourceName, _resourceVersion, options) {
48
49
  }
49
50
  exports.importResourceType = importResourceType;
50
51
  ;
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx1Q0FBeUI7QUFDekIsMkNBQTZCO0FBQzdCLGlEQUFtRjtBQUNuRixxRUFBZ0U7QUFTaEU7Ozs7Ozs7R0FPRztBQUNJLEtBQUssVUFBVSxrQkFBa0IsQ0FBQyxZQUFvQixFQUFFLGdCQUF3QixFQUFFLE9BQWtDOztJQUN6SCxNQUFNLE1BQU0sR0FBRyxNQUFBLE9BQU8sQ0FBQyxNQUFNLG1DQUFJLEdBQUcsQ0FBQztJQUNyQyxNQUFNLElBQUksR0FBRyxNQUFNLElBQUEsbUNBQW9CLEVBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBRS9ELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU8sQ0FBQyxDQUFDO0lBRTVDLE1BQU0sR0FBRyxHQUFHLElBQUksNkNBQW9CLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFFdEUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUUxQyxFQUFFLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBRTlELE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztBQUN2QixDQUFDO0FBYkQsZ0RBYUM7QUFBQSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IGRlc2NyaWJlUmVzb3VyY2VUeXBlLCBEZXNjcmliZVJlc291cmNlVHlwZU9wdGlvbnMgfSBmcm9tICcuL2Nmbi1yZWdpc3RyeSc7XG5pbXBvcnQgeyBDZm5SZXNvdXJjZUdlbmVyYXRvciB9IGZyb20gJy4vY2ZuLXJlc291cmNlLWdlbmVyYXRvcic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW1wb3J0UmVzb3VyY2VUeXBlT3B0aW9ucyBleHRlbmRzIERlc2NyaWJlUmVzb3VyY2VUeXBlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBAZGVmYXVsdCBcIi5cIlxuICAgKi9cbiAgcmVhZG9ubHkgb3V0ZGlyPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEVudHJ5IHBvaW50IHRvIGltcG9ydCBDRk4gcmVzb3VyY2UgdHlwZXNcbiAqXG4gKiBAcGFyYW0gcmVzb3VyY2VOYW1lIHRoZSBuYW1lIG9yIEFSTiBvZiB0aGUgcmVzb3VyY2UgdHlwZVxuICogQHBhcmFtIF9yZXNvdXJjZVZlcnNpb24gdGhlIHZlcnNpb24gb2YgdGhlIHJlc291cmNlIHR5cGUgKGlnbm9yZWQgZm9yIG5vdylcbiAqIEBwYXJhbSBvdXRkaXIgdGhlIG91dCBmb2xkZXIgdG8gdXNlIChkZWZhdWx0cyB0byB0aGUgY3VycmVudCBkaXJlY3RvcnkpXG4gKiBAcmV0dXJucyBuYW1lIG9mIHRoZSByZXNvdXJjZSB0eXBlXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBpbXBvcnRSZXNvdXJjZVR5cGUocmVzb3VyY2VOYW1lOiBzdHJpbmcsIF9yZXNvdXJjZVZlcnNpb246IHN0cmluZywgb3B0aW9uczogSW1wb3J0UmVzb3VyY2VUeXBlT3B0aW9ucyk6IFByb21pc2U8c3RyaW5nPiB7XG4gIGNvbnN0IG91dGRpciA9IG9wdGlvbnMub3V0ZGlyID8/ICcuJztcbiAgY29uc3QgdHlwZSA9IGF3YWl0IGRlc2NyaWJlUmVzb3VyY2VUeXBlKHJlc291cmNlTmFtZSwgb3B0aW9ucyk7XG5cbiAgY29uc3QgdHlwZVNjaGVtYSA9IEpTT04ucGFyc2UodHlwZS5TY2hlbWEhKTtcblxuICBjb25zdCBnZW4gPSBuZXcgQ2ZuUmVzb3VyY2VHZW5lcmF0b3IodHlwZS5UeXBlTmFtZSwgdHlwZSwgdHlwZVNjaGVtYSk7XG5cbiAgZnMubWtkaXJTeW5jKG91dGRpciwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG5cbiAgZnMud3JpdGVGaWxlU3luYyhwYXRoLmpvaW4ob3V0ZGlyLCAnaW5kZXgudHMnKSwgZ2VuLnJlbmRlcigpKTtcblxuICByZXR1cm4gdHlwZS5UeXBlTmFtZTtcbn07XG4iXX0=
52
+ /**
53
+ * Entry point to import Service Catalog product resource.
54
+ *
55
+ * @returns name of the product version
56
+ */
57
+ async function importProduct(options) {
58
+ var _a;
59
+ const outdir = (_a = options.outdir) !== null && _a !== void 0 ? _a : '.';
60
+ await (0, service_catalog_1.describeProductAggregate)(options);
61
+ //TODO CodeGen
62
+ return outdir; //just for typechecking
63
+ }
64
+ exports.importProduct = importProduct;
65
+ ;
66
+ /**
67
+ * Entry point to import all available Service Catalog product resources with `DEFAULT` parameters.
68
+ *
69
+ * @returns names of the product versions
70
+ */
71
+ async function importProducts(options) {
72
+ var _a;
73
+ const outdir = (_a = options.outdir) !== null && _a !== void 0 ? _a : '.';
74
+ let productVersions = [];
75
+ const availableProducts = await (0, service_catalog_1.fetchAvailableProducts)();
76
+ await Promise.all(availableProducts.map(async (product) => {
77
+ const productVersion = await importProduct({
78
+ outdir: outdir,
79
+ productId: product.Id,
80
+ });
81
+ productVersions.push(productVersion);
82
+ }));
83
+ return productVersions;
84
+ }
85
+ exports.importProducts = importProducts;
86
+ ;
87
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx1Q0FBeUI7QUFDekIsMkNBQTZCO0FBQzdCLGlEQUFtRjtBQUNuRixxRUFBZ0U7QUFDaEUsdURBQXNIO0FBU3RIOzs7Ozs7O0dBT0c7QUFDSSxLQUFLLFVBQVUsa0JBQWtCLENBQUMsWUFBb0IsRUFBRSxnQkFBd0IsRUFBRSxPQUFrQzs7SUFDekgsTUFBTSxNQUFNLEdBQUcsTUFBQSxPQUFPLENBQUMsTUFBTSxtQ0FBSSxHQUFHLENBQUM7SUFDckMsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFBLG1DQUFvQixFQUFDLFlBQVksRUFBRSxPQUFPLENBQUMsQ0FBQztJQUUvRCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFPLENBQUMsQ0FBQztJQUU1QyxNQUFNLEdBQUcsR0FBRyxJQUFJLDZDQUFvQixDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBRXRFLEVBQUUsQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFFMUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxVQUFVLENBQUMsRUFBRSxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUU5RCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7QUFDdkIsQ0FBQztBQWJELGdEQWFDO0FBQUEsQ0FBQztBQWFGOzs7O0dBSUc7QUFDSSxLQUFLLFVBQVUsYUFBYSxDQUFDLE9BQTZCOztJQUMvRCxNQUFNLE1BQU0sR0FBRyxNQUFBLE9BQU8sQ0FBQyxNQUFNLG1DQUFJLEdBQUcsQ0FBQztJQUVyQyxNQUFNLElBQUEsMENBQXdCLEVBQUMsT0FBTyxDQUFDLENBQUM7SUFFeEMsY0FBYztJQUVkLE9BQU8sTUFBTSxDQUFDLENBQUMsdUJBQXVCO0FBQ3hDLENBQUM7QUFSRCxzQ0FRQztBQUFBLENBQUM7QUFFRjs7OztHQUlHO0FBQ0ksS0FBSyxVQUFVLGNBQWMsQ0FBQyxPQUE2Qjs7SUFDaEUsTUFBTSxNQUFNLEdBQUcsTUFBQSxPQUFPLENBQUMsTUFBTSxtQ0FBSSxHQUFHLENBQUM7SUFDckMsSUFBSSxlQUFlLEdBQWEsRUFBRSxDQUFDO0lBRW5DLE1BQU0saUJBQWlCLEdBQUcsTUFBTSxJQUFBLHdDQUFzQixHQUFFLENBQUM7SUFFekQsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLEVBQUU7UUFDeEQsTUFBTSxjQUFjLEdBQUcsTUFBTSxhQUFhLENBQUU7WUFDMUMsTUFBTSxFQUFFLE1BQU07WUFDZCxTQUFTLEVBQUUsT0FBTyxDQUFDLEVBQUc7U0FDdkIsQ0FBQyxDQUFDO1FBQ0gsZUFBZSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUN2QyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRUosT0FBTyxlQUFlLENBQUM7QUFDekIsQ0FBQztBQWZELHdDQWVDO0FBQUEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBkZXNjcmliZVJlc291cmNlVHlwZSwgRGVzY3JpYmVSZXNvdXJjZVR5cGVPcHRpb25zIH0gZnJvbSAnLi9jZm4tcmVnaXN0cnknO1xuaW1wb3J0IHsgQ2ZuUmVzb3VyY2VHZW5lcmF0b3IgfSBmcm9tICcuL2Nmbi1yZXNvdXJjZS1nZW5lcmF0b3InO1xuaW1wb3J0IHsgZGVzY3JpYmVQcm9kdWN0QWdncmVnYXRlLCBEZXNjcmliZVByb2R1Y3RBZ2dyZWdhdGVPcHRpb25zLCBmZXRjaEF2YWlsYWJsZVByb2R1Y3RzIH0gZnJvbSAnLi9zZXJ2aWNlLWNhdGFsb2cnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEltcG9ydFJlc291cmNlVHlwZU9wdGlvbnMgZXh0ZW5kcyBEZXNjcmliZVJlc291cmNlVHlwZU9wdGlvbnMge1xuICAvKipcbiAgICogQGRlZmF1bHQgXCIuXCJcbiAgICovXG4gIHJlYWRvbmx5IG91dGRpcj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBFbnRyeSBwb2ludCB0byBpbXBvcnQgQ0ZOIHJlc291cmNlIHR5cGVzXG4gKlxuICogQHBhcmFtIHJlc291cmNlTmFtZSB0aGUgbmFtZSBvciBBUk4gb2YgdGhlIHJlc291cmNlIHR5cGVcbiAqIEBwYXJhbSBfcmVzb3VyY2VWZXJzaW9uIHRoZSB2ZXJzaW9uIG9mIHRoZSByZXNvdXJjZSB0eXBlIChpZ25vcmVkIGZvciBub3cpXG4gKiBAcGFyYW0gb3V0ZGlyIHRoZSBvdXQgZm9sZGVyIHRvIHVzZSAoZGVmYXVsdHMgdG8gdGhlIGN1cnJlbnQgZGlyZWN0b3J5KVxuICogQHJldHVybnMgbmFtZSBvZiB0aGUgcmVzb3VyY2UgdHlwZVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaW1wb3J0UmVzb3VyY2VUeXBlKHJlc291cmNlTmFtZTogc3RyaW5nLCBfcmVzb3VyY2VWZXJzaW9uOiBzdHJpbmcsIG9wdGlvbnM6IEltcG9ydFJlc291cmNlVHlwZU9wdGlvbnMpOiBQcm9taXNlPHN0cmluZz4ge1xuICBjb25zdCBvdXRkaXIgPSBvcHRpb25zLm91dGRpciA/PyAnLic7XG4gIGNvbnN0IHR5cGUgPSBhd2FpdCBkZXNjcmliZVJlc291cmNlVHlwZShyZXNvdXJjZU5hbWUsIG9wdGlvbnMpO1xuXG4gIGNvbnN0IHR5cGVTY2hlbWEgPSBKU09OLnBhcnNlKHR5cGUuU2NoZW1hISk7XG5cbiAgY29uc3QgZ2VuID0gbmV3IENmblJlc291cmNlR2VuZXJhdG9yKHR5cGUuVHlwZU5hbWUsIHR5cGUsIHR5cGVTY2hlbWEpO1xuXG4gIGZzLm1rZGlyU3luYyhvdXRkaXIsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuXG4gIGZzLndyaXRlRmlsZVN5bmMocGF0aC5qb2luKG91dGRpciwgJ2luZGV4LnRzJyksIGdlbi5yZW5kZXIoKSk7XG5cbiAgcmV0dXJuIHR5cGUuVHlwZU5hbWU7XG59O1xuXG4vKipcbiAqIENvbmZpZ3VyZSBvcHRpb25zIGZvciBpbXBvcnRpbmcgcHJvZHVjdHMgaW50byB5b3VyIGxvY2FsIHdvcmtzcGFjZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEltcG9ydFByb2R1Y3RPcHRpb25zIGV4dGVuZHMgRGVzY3JpYmVQcm9kdWN0QWdncmVnYXRlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgZm9sZGVyIGluIHdoaWNoIHByb2R1Y3QgY29uc3RydWN0cyAoYXMgc2VwYXJhdGUgY2xhc3MgZmlsZXMpIHdpbGwgYmUgb3V0cHV0IHRvLlxuICAgKiBAZGVmYXVsdCBcIi4vc2MtcHJvZHVjdHNcIlxuICAgKi9cbiAgcmVhZG9ubHkgb3V0ZGlyPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEVudHJ5IHBvaW50IHRvIGltcG9ydCBTZXJ2aWNlIENhdGFsb2cgcHJvZHVjdCByZXNvdXJjZS5cbiAqXG4gKiBAcmV0dXJucyBuYW1lIG9mIHRoZSBwcm9kdWN0IHZlcnNpb25cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGltcG9ydFByb2R1Y3Qob3B0aW9uczogSW1wb3J0UHJvZHVjdE9wdGlvbnMpOiBQcm9taXNlPHN0cmluZz4ge1xuICBjb25zdCBvdXRkaXIgPSBvcHRpb25zLm91dGRpciA/PyAnLic7XG5cbiAgYXdhaXQgZGVzY3JpYmVQcm9kdWN0QWdncmVnYXRlKG9wdGlvbnMpO1xuXG4gIC8vVE9ETyBDb2RlR2VuXG5cbiAgcmV0dXJuIG91dGRpcjsgLy9qdXN0IGZvciB0eXBlY2hlY2tpbmdcbn07XG5cbi8qKlxuICogRW50cnkgcG9pbnQgdG8gaW1wb3J0IGFsbCBhdmFpbGFibGUgU2VydmljZSBDYXRhbG9nIHByb2R1Y3QgcmVzb3VyY2VzIHdpdGggYERFRkFVTFRgIHBhcmFtZXRlcnMuXG4gKlxuICogQHJldHVybnMgbmFtZXMgb2YgdGhlIHByb2R1Y3QgdmVyc2lvbnNcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGltcG9ydFByb2R1Y3RzKG9wdGlvbnM6IEltcG9ydFByb2R1Y3RPcHRpb25zKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICBjb25zdCBvdXRkaXIgPSBvcHRpb25zLm91dGRpciA/PyAnLic7XG4gIGxldCBwcm9kdWN0VmVyc2lvbnM6IHN0cmluZ1tdID0gW107XG5cbiAgY29uc3QgYXZhaWxhYmxlUHJvZHVjdHMgPSBhd2FpdCBmZXRjaEF2YWlsYWJsZVByb2R1Y3RzKCk7XG5cbiAgYXdhaXQgUHJvbWlzZS5hbGwoYXZhaWxhYmxlUHJvZHVjdHMubWFwKGFzeW5jIChwcm9kdWN0KSA9PiB7XG4gICAgY29uc3QgcHJvZHVjdFZlcnNpb24gPSBhd2FpdCBpbXBvcnRQcm9kdWN0KCB7XG4gICAgICBvdXRkaXI6IG91dGRpcixcbiAgICAgIHByb2R1Y3RJZDogcHJvZHVjdC5JZCEsXG4gICAgfSk7XG4gICAgcHJvZHVjdFZlcnNpb25zLnB1c2gocHJvZHVjdFZlcnNpb24pO1xuICB9KSk7XG5cbiAgcmV0dXJuIHByb2R1Y3RWZXJzaW9ucztcbn07XG4iXX0=
@@ -1,32 +1,32 @@
1
1
  import * as AWS from 'aws-sdk';
2
2
  export interface IServiceCatalogClient {
3
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
4
  describeProvisioningParameters(input: AWS.ServiceCatalog.DescribeProvisioningParametersInput): Promise<AWS.ServiceCatalog.DescribeProvisioningParametersOutput>;
5
+ describeProduct(input: AWS.ServiceCatalog.DescribeProductInput): Promise<AWS.ServiceCatalog.DescribeProductOutput>;
7
6
  }
8
7
  export declare class ServiceCatalogClient implements IServiceCatalogClient {
9
8
  private readonly sc;
10
9
  constructor();
11
10
  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
11
  describeProvisioningParameters(input: AWS.ServiceCatalog.DescribeProvisioningParametersInput): Promise<AWS.ServiceCatalog.DescribeProvisioningParametersOutput>;
12
+ describeProduct(input: AWS.ServiceCatalog.DescribeProductInput): Promise<AWS.ServiceCatalog.DescribeProductOutput>;
15
13
  }
16
14
  /**
17
15
  * 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.
16
+ * If no specific IDs are declared for a product, we will use the set `DEFAULT` value for the provisioning artifact and launch path.
19
17
  */
20
- export interface DescribeProvisionedProductOptions {
18
+ export interface DescribeProductAggregateOptions {
21
19
  /**
22
20
  * A client that performs calls to AWS Service Catalog. You can provide a mock here
23
21
  * for testing.
22
+ *
23
+ * @default - A real Service Catalog client
24
24
  */
25
25
  readonly client?: IServiceCatalogClient;
26
26
  /**
27
- * The product Id..
27
+ * The product Id.
28
28
  */
29
- readonly productId?: string;
29
+ readonly productId: string;
30
30
  /**
31
31
  * The provisioning artifact Id.
32
32
  */
@@ -37,32 +37,46 @@ export interface DescribeProvisionedProductOptions {
37
37
  readonly launchPathId?: string;
38
38
  }
39
39
  /**
40
- * Fetches the all the available or queried service catalog product(s) for the caller.
40
+ * Fetches all the available service catalog product(s) for the caller.
41
41
  *
42
42
  * @returns list of product view summaries
43
43
  */
44
- export declare function fetchAvailableProducts(options?: DescribeProvisionedProductOptions): Promise<AWS.ServiceCatalog.ProductViewSummaries>;
44
+ export declare function fetchAvailableProducts(client?: IServiceCatalogClient): Promise<AWS.ServiceCatalog.ProductViewSummaries>;
45
45
  /**
46
- * Fetches the all the available or queried provisioning artifact(s) for the caller.
46
+ * Gets the information required to provision an artifact.
47
+ * Includes information on inputs and outputs of the product.
47
48
  *
48
- * @param productId the product to fetch provisioning artifacts for
49
- * @returns list of provisioning artifact details for a product
49
+ * @returns the provisoning parameters for an artifact
50
50
  */
51
- export declare function listProvisioningArtifacts(productId: string, options?: DescribeProvisionedProductOptions): Promise<AWS.ServiceCatalog.ProvisioningArtifactDetail[]>;
51
+ export declare function describeProvisioningParameters(options: DescribeProductAggregateOptions): Promise<AWS.ServiceCatalog.DescribeProvisioningParametersOutput>;
52
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
53
+ * Holds all the information needed to generate a product artifact to provision.
57
54
  */
58
- export declare function listLaunchPaths(productId: string, options?: DescribeProvisionedProductOptions): Promise<AWS.ServiceCatalog.LaunchPathSummaries>;
55
+ export interface ProductDataAggregate {
56
+ /**
57
+ * Core product details.
58
+ */
59
+ readonly product: AWS.ServiceCatalog.ProductViewSummary;
60
+ /**
61
+ * Details on the selected provisioning artifact for the product.
62
+ * Represents the actual template that contains resources.
63
+ */
64
+ readonly provisioningArtifact: AWS.ServiceCatalog.ProvisioningArtifact;
65
+ /**
66
+ * Details on the selected launch path for the product.
67
+ * Represents the permissions/ability for end user to provision the product.
68
+ */
69
+ readonly launchPath: AWS.ServiceCatalog.LaunchPathSummary;
70
+ /**
71
+ * Details on provisioning requirements for the provisioning artifact and launch path.
72
+ * Holds information on the inputs and outputs for the downstream template.
73
+ */
74
+ readonly params: AWS.ServiceCatalog.DescribeProvisioningParametersOutput;
75
+ }
59
76
  /**
60
- * Gets the information required to provision an artifact.
61
- * Includes information on inputs and outputs of the product.
77
+ * Makes a series of calls to service catalog to get all information
78
+ * required to provision a service catalog product.
62
79
  *
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
80
+ * @returns ProductVersionData aggregate of provisioning artifact details.
67
81
  */
68
- export declare function describeProvisioningParameters(productId: string, provisioningArtifactId: string, launchPathId: string, options?: DescribeProvisionedProductOptions): Promise<AWS.ServiceCatalog.DescribeProvisioningParametersOutput>;
82
+ export declare function describeProductAggregate(options: DescribeProductAggregateOptions): Promise<ProductDataAggregate>;
@@ -23,7 +23,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
23
23
  return result;
24
24
  };
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.describeProvisioningParameters = exports.listLaunchPaths = exports.listProvisioningArtifacts = exports.fetchAvailableProducts = exports.ServiceCatalogClient = void 0;
26
+ exports.describeProductAggregate = exports.describeProvisioningParameters = exports.fetchAvailableProducts = exports.ServiceCatalogClient = void 0;
27
27
  const AWS = __importStar(require("aws-sdk"));
28
28
  const aws_1 = require("./aws");
29
29
  class ServiceCatalogClient {
@@ -33,107 +33,157 @@ class ServiceCatalogClient {
33
33
  async searchProducts(input) {
34
34
  return this.sc.searchProducts(input).promise();
35
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
36
  async describeProvisioningParameters(input) {
43
37
  return this.sc.describeProvisioningParameters(input).promise();
44
38
  }
39
+ async describeProduct(input) {
40
+ return this.sc.describeProduct(input).promise();
41
+ }
45
42
  }
46
43
  exports.ServiceCatalogClient = ServiceCatalogClient;
47
44
  /**
48
- * Fetches the all the available or queried service catalog product(s) for the caller.
45
+ * Returns the provisioning artifact from list of available artifacts.
46
+ * If no query artifact Id is provided, the artifact marked `DEFAULT` will be returned.
47
+ * If no `DEFAULT` artifact exists, the most recently created artifact will be returned.
49
48
  *
50
- * @returns list of product view summaries
49
+ * @param provisioningArtifacts list of provisioning artifacts for a product
50
+ * @param provisioningArtifactId query artifact Id
51
+ * @returns provisioning artifact detail
51
52
  */
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);
53
+ function resolveProvisioningArtifact(provisioningArtifacts, provisioningArtifactId) {
54
+ if (provisioningArtifactId) {
55
+ const provisioningArtifact = provisioningArtifacts.filter(pa => pa.Id == provisioningArtifactId);
56
+ if (provisioningArtifact.length == 0) {
57
+ throw new Error(`Could not find specified provisioning artifact id: ${provisioningArtifactId}`);
64
58
  }
65
- token = res.NextPageToken;
66
- } while (token);
67
- return products;
59
+ else {
60
+ return provisioningArtifact.pop();
61
+ }
62
+ }
63
+ else {
64
+ try {
65
+ if (provisioningArtifacts.filter(pa => pa.Guidance == 'DEFAULT').length == 1) {
66
+ return provisioningArtifacts.filter(pa => pa.Guidance == 'DEFAULT').pop();
67
+ }
68
+ else {
69
+ return provisioningArtifacts.sort((a, b) => a.CreatedTime.valueOf() - b.CreatedTime.valueOf()).pop();
70
+ }
71
+ }
72
+ catch {
73
+ throw new Error('Unable to resolve default or latest provisioning artifact.');
74
+ }
75
+ }
68
76
  }
69
- exports.fetchAvailableProducts = fetchAvailableProducts;
70
77
  /**
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
78
+ * Returns the queried launch path from list of available launch paths.
79
+ * @param launchPaths list of available launch paths for the product
80
+ * @param launchPathId the query launch path's Id
81
+ * @returns the launch path summary for the query launch path
75
82
  */
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);
83
+ function resolveLaunchPath(launchPaths, launchPathId) {
84
+ if (launchPathId) {
85
+ const launchPath = launchPaths.filter(lp => lp.Id == launchPathId);
86
+ if (launchPath.length == 0) {
87
+ throw new Error(`Could not find specified launch path id: ${launchPathId}`);
88
+ }
89
+ else {
90
+ return launchPath.pop();
91
+ }
92
+ }
93
+ else if (launchPaths.length == 1) {
94
+ return launchPaths.pop();
84
95
  }
85
96
  else {
86
- return provisioningArtifacts.ProvisioningArtifactDetails;
97
+ throw new Error('Unable to resolve between multiple launch paths.');
87
98
  }
88
99
  }
89
- exports.listProvisioningArtifacts = listProvisioningArtifacts;
90
100
  /**
91
- * Retrieves all the availalbe or queried launch path(s) for a product.
101
+ * Fetches the all the available or queried service catalog product(s) for the caller.
92
102
  *
93
- * @param productId the product to list launch paths for
94
- * @returns list of launchPathSummaries for a product
103
+ * @returns list of product view summaries
95
104
  */
96
- async function listLaunchPaths(productId, options = {}) {
105
+ async function describeProduct(options) {
97
106
  var _a;
98
107
  const sc = (_a = options.client) !== null && _a !== void 0 ? _a : new ServiceCatalogClient();
99
- const launchPaths = [];
108
+ const describeProductResponse = await sc.describeProduct({
109
+ Id: options.productId,
110
+ });
111
+ validateProductData(options.productId, describeProductResponse);
112
+ const provisioningArtifact = resolveProvisioningArtifact(describeProductResponse.ProvisioningArtifacts, options.provisioningArtifactId);
113
+ const launchPath = resolveLaunchPath(describeProductResponse.LaunchPaths, options.launchPathId);
114
+ const parameters = await describeProvisioningParameters(options);
115
+ return {
116
+ product: describeProductResponse.ProductViewSummary,
117
+ provisioningArtifact: provisioningArtifact,
118
+ launchPath: launchPath,
119
+ params: parameters,
120
+ };
121
+ }
122
+ /**
123
+ * Fetches all the available service catalog product(s) for the caller.
124
+ *
125
+ * @returns list of product view summaries
126
+ */
127
+ async function fetchAvailableProducts(client) {
128
+ const sc = client !== null && client !== void 0 ? client : new ServiceCatalogClient();
129
+ const products = [];
100
130
  let token;
101
131
  do {
102
- const res = await sc.listLaunchPaths({
103
- ProductId: productId,
132
+ const res = await sc.searchProducts({
104
133
  PageToken: token,
105
134
  });
106
- if (res.LaunchPathSummaries) {
107
- launchPaths.push(...res.LaunchPathSummaries);
135
+ if (res.ProductViewSummaries) {
136
+ products.push(...res.ProductViewSummaries);
108
137
  }
109
138
  token = res.NextPageToken;
110
139
  } while (token);
111
- if (options.launchPathId != null) {
112
- return launchPaths.filter(lp => lp.Id == options.launchPathId);
113
- }
114
- else {
115
- return launchPaths;
116
- }
140
+ return products;
117
141
  }
118
- exports.listLaunchPaths = listLaunchPaths;
142
+ exports.fetchAvailableProducts = fetchAvailableProducts;
119
143
  /**
120
144
  * Gets the information required to provision an artifact.
121
145
  * Includes information on inputs and outputs of the product.
122
146
  *
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
147
  * @returns the provisoning parameters for an artifact
127
148
  */
128
- async function describeProvisioningParameters(productId, provisioningArtifactId, launchPathId, options = {}) {
149
+ async function describeProvisioningParameters(options) {
129
150
  var _a;
130
151
  const sc = (_a = options.client) !== null && _a !== void 0 ? _a : new ServiceCatalogClient();
131
152
  const provisioningParameters = await sc.describeProvisioningParameters({
132
- ProductId: productId,
133
- ProvisioningArtifactId: provisioningArtifactId,
134
- PathId: launchPathId,
153
+ ProductId: options.productId,
154
+ ProvisioningArtifactId: options.provisioningArtifactId,
155
+ PathId: options.launchPathId,
135
156
  });
136
157
  return provisioningParameters;
137
158
  }
138
159
  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=
160
+ /**
161
+ * Makes a series of calls to service catalog to get all information
162
+ * required to provision a service catalog product.
163
+ *
164
+ * @returns ProductVersionData aggregate of provisioning artifact details.
165
+ */
166
+ async function describeProductAggregate(options) {
167
+ var _a;
168
+ const sc = (_a = options.client) !== null && _a !== void 0 ? _a : new ServiceCatalogClient();
169
+ const productDataAggregate = await describeProduct({
170
+ productId: options.productId,
171
+ launchPathId: options.launchPathId,
172
+ provisioningArtifactId: options.provisioningArtifactId,
173
+ client: sc,
174
+ });
175
+ return productDataAggregate;
176
+ }
177
+ exports.describeProductAggregate = describeProductAggregate;
178
+ function validateProductData(productId, product) {
179
+ if (product.ProductViewSummary == undefined) {
180
+ throw new Error(`Cannot resolve product details for ${productId}`);
181
+ }
182
+ else if (product.ProvisioningArtifacts == undefined) {
183
+ throw new Error(`Cannot resolve provisioning artifacts for product: ${productId}`);
184
+ }
185
+ else if (product.LaunchPaths == undefined) {
186
+ throw new Error(`Cannot resolve launch paths for product: ${productId}`);
187
+ }
188
+ }
189
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS1jYXRhbG9nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3NlcnZpY2UtY2F0YWxvZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDZDQUErQjtBQUMvQiwrQkFBd0M7QUFTeEMsTUFBYSxvQkFBb0I7SUFHL0I7UUFDRSxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUEscUJBQWUsRUFBQyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVNLEtBQUssQ0FBQyxjQUFjLENBQUMsS0FBNkM7UUFDdkUsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNqRCxDQUFDO0lBRU0sS0FBSyxDQUFDLDhCQUE4QixDQUFDLEtBQTZEO1FBRXZHLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyw4QkFBOEIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNqRSxDQUFDO0lBRU0sS0FBSyxDQUFDLGVBQWUsQ0FBQyxLQUE4QztRQUN6RSxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2xELENBQUM7Q0FDRjtBQW5CRCxvREFtQkM7QUErQkQ7Ozs7Ozs7O0dBUUc7QUFDSCxTQUFTLDJCQUEyQixDQUFDLHFCQUErRCxFQUFFLHNCQUErQjtJQUVuSSxJQUFJLHNCQUFzQixFQUFFO1FBQzFCLE1BQU0sb0JBQW9CLEdBQUcscUJBQXFCLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxzQkFBc0IsQ0FBQyxDQUFDO1FBQ2pHLElBQUksb0JBQW9CLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRTtZQUNwQyxNQUFNLElBQUksS0FBSyxDQUFDLHNEQUFzRCxzQkFBc0Is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RTtLQUNYLENBQUMsQ0FBQztJQUVILE9BQU8sb0JBQW9CLENBQUM7QUFDOUIsQ0FBQztBQVhELDREQVdDO0FBRUQsU0FBUyxtQkFBbUIsQ0FBQyxTQUFpQixFQUFFLE9BQWlEO0lBQy9GLElBQUksT0FBTyxDQUFDLGtCQUFrQixJQUFJLFNBQVMsRUFBRTtRQUMzQyxNQUFNLElBQUksS0FBSyxDQUFDLHNDQUFzQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO0tBQ3BFO1NBQU0sSUFBSSxPQUFPLENBQUMscUJBQXFCLElBQUksU0FBUyxFQUFFO1FBQ3JELE1BQU0sSUFBSSxLQUFLLENBQUMsc0RBQXNELFNBQVMsRUFBRSxDQUFDLENBQUM7S0FDcEY7U0FBTSxJQUFJLE9BQU8sQ0FBQyxXQUFXLElBQUksU0FBUyxFQUFFO1FBQzNDLE1BQU0sSUFBSSxLQUFLLENBQUMsNENBQTRDLFNBQVMsRUFBRSxDQUFDLENBQUM7S0FDMUU7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgQVdTIGZyb20gJ2F3cy1zZGsnO1xuaW1wb3J0IHsgY3JlYXRlQXdzQ2xpZW50IH0gZnJvbSAnLi9hd3MnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElTZXJ2aWNlQ2F0YWxvZ0NsaWVudCB7XG4gIHNlYXJjaFByb2R1Y3RzKGlucHV0OiBBV1MuU2VydmljZUNhdGFsb2cuTGlzdFBvcnRmb2xpb3NJbnB1dCk6IFByb21pc2U8QVdTLlNlcnZpY2VDYXRhbG9nLkxpc3RQb3J0Zm9saW9zT3V0cHV0PjtcbiAgZGVzY3JpYmVQcm92aXNpb25pbmdQYXJhbWV0ZXJzKGlucHV0OiBBV1MuU2VydmljZUNhdGFsb2cuRGVzY3JpYmVQcm92aXNpb25pbmdQYXJhbWV0ZXJzSW5wdXQpOlxuICBQcm9taXNlPEFXUy5TZXJ2aWNlQ2F0YWxvZy5EZXNjcmliZVByb3Zpc2lvbmluZ1BhcmFtZXRlcnNPdXRwdXQ+O1xuICBkZXNjcmliZVByb2R1Y3QoaW5wdXQ6IEFXUy5TZXJ2aWNlQ2F0YWxvZy5EZXNjcmliZVByb2R1Y3RJbnB1dCk6IFByb21pc2U8QVdTLlNlcnZpY2VDYXRhbG9nLkRlc2NyaWJlUHJvZHVjdE91dHB1dD47XG59XG5cbmV4cG9ydCBjbGFzcyBTZXJ2aWNlQ2F0YWxvZ0NsaWVudCBpbXBsZW1lbnRzIElTZXJ2aWNlQ2F0YWxvZ0NsaWVudCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgc2M6IEFXUy5TZXJ2aWNlQ2F0YWxvZztcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLnNjID0gY3JlYXRlQXdzQ2xpZW50KEFXUy5TZXJ2aWNlQ2F0YWxvZyk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgc2VhcmNoUHJvZHVjdHMoaW5wdXQ6IEFXUy5TZXJ2aWNlQ2F0YWxvZy5TZWFyY2hQcm9kdWN0c0lucHV0KTogUHJvbWlzZTxBV1MuU2VydmljZUNhdGFsb2cuU2VhcmNoUHJvZHVjdHNPdXRwdXQ+IHtcbiAgICByZXR1cm4gdGhpcy5zYy5zZWFyY2hQcm9kdWN0cyhpbnB1dCkucHJvbWlzZSgpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGRlc2NyaWJlUHJvdmlzaW9uaW5nUGFyYW1ldGVycyhpbnB1dDogQVdTLlNlcnZpY2VDYXRhbG9nLkRlc2NyaWJlUHJvdmlzaW9uaW5nUGFyYW1ldGVyc0lucHV0KTpcbiAgUHJvbWlzZTxBV1MuU2VydmljZUNhdGFsb2cuRGVzY3JpYmVQcm92aXNpb25pbmdQYXJhbWV0ZXJzT3V0cHV0PiB7XG4gICAgcmV0dXJuIHRoaXMuc2MuZGVzY3JpYmVQcm92aXNpb25pbmdQYXJhbWV0ZXJzKGlucHV0KS5wcm9taXNlKCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZGVzY3JpYmVQcm9kdWN0KGlucHV0OiBBV1MuU2VydmljZUNhdGFsb2cuRGVzY3JpYmVQcm9kdWN0SW5wdXQpOiBQcm9taXNlPEFXUy5TZXJ2aWNlQ2F0YWxvZy5EZXNjcmliZVByb2R1Y3RPdXRwdXQ+IHtcbiAgICByZXR1cm4gdGhpcy5zYy5kZXNjcmliZVByb2R1Y3QoaW5wdXQpLnByb21pc2UoKTtcbiAgfVxufVxuXG4vKipcbiAqIFByb3ZpZGUgcXVlcnkgdmFsdWVzIGZvciBhIHNwZWNpZmljIHByb3Zpc2lvbmFibGUgcHJvZHVjdC5cbiAqIElmIG5vIHNwZWNpZmljIElEcyBhcmUgZGVjbGFyZWQgZm9yIGEgcHJvZHVjdCwgd2Ugd2lsbCB1c2UgdGhlIHNldCBgREVGQVVMVGAgdmFsdWUgZm9yIHRoZSBwcm92aXNpb25pbmcgYXJ0aWZhY3QgYW5kIGxhdW5jaCBwYXRoLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIERlc2NyaWJlUHJvZHVjdEFnZ3JlZ2F0ZU9wdGlvbnMge1xuICAvKipcbiAgICogQSBjbGllbnQgdGhhdCBwZXJmb3JtcyBjYWxscyB0byBBV1MgU2VydmljZSBDYXRhbG9nLiBZb3UgY2FuIHByb3ZpZGUgYSBtb2NrIGhlcmVcbiAgICogZm9yIHRlc3RpbmcuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gQSByZWFsIFNlcnZpY2UgQ2F0YWxvZyBjbGllbnRcbiAgICovXG4gIHJlYWRvbmx5IGNsaWVudD86IElTZXJ2aWNlQ2F0YWxvZ0NsaWVudDtcblxuICAvKipcbiAgICogVGhlIHByb2R1Y3QgSWQuXG4gICAqL1xuICByZWFkb25seSBwcm9kdWN0SWQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHByb3Zpc2lvbmluZyBhcnRpZmFjdCBJZC5cbiAgICovXG4gIHJlYWRvbmx5IHByb3Zpc2lvbmluZ0FydGlmYWN0SWQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBsYXVuY2ggcGF0aCBJZC5cbiAgICovXG4gIHJlYWRvbmx5IGxhdW5jaFBhdGhJZD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBwcm92aXNpb25pbmcgYXJ0aWZhY3QgZnJvbSBsaXN0IG9mIGF2YWlsYWJsZSBhcnRpZmFjdHMuXG4gKiBJZiBubyBxdWVyeSBhcnRpZmFjdCBJZCBpcyBwcm92aWRlZCwgdGhlIGFydGlmYWN0IG1hcmtlZCBgREVGQVVMVGAgd2lsbCBiZSByZXR1cm5lZC5cbiAqIElmIG5vIGBERUZBVUxUYCBhcnRpZmFjdCBleGlzdHMsIHRoZSBtb3N0IHJlY2VudGx5IGNyZWF0ZWQgYXJ0aWZhY3Qgd2lsbCBiZSByZXR1cm5lZC5cbiAqXG4gKiBAcGFyYW0gcHJvdmlzaW9uaW5nQXJ0aWZhY3RzIGxpc3Qgb2YgcHJvdmlzaW9uaW5nIGFydGlmYWN0cyBmb3IgYSBwcm9kdWN0XG4gKiBAcGFyYW0gcHJvdmlzaW9uaW5nQXJ0aWZhY3RJZCBxdWVyeSBhcnRpZmFjdCBJZFxuICogQHJldHVybnMgcHJvdmlzaW9uaW5nIGFydGlmYWN0IGRldGFpbFxuICovXG5mdW5jdGlvbiByZXNvbHZlUHJvdmlzaW9uaW5nQXJ0aWZhY3QocHJvdmlzaW9uaW5nQXJ0aWZhY3RzOiBBV1MuU2VydmljZUNhdGFsb2cuUHJvdmlzaW9uaW5nQXJ0aWZhY3RzLCBwcm92aXNpb25pbmdBcnRpZmFjdElkPzogc3RyaW5nKTpcbkFXUy5TZXJ2aWNlQ2F0YWxvZy5Qcm92aXNpb25pbmdBcnRpZmFjdCB7XG4gIGlmIChwcm92aXNpb25pbmdBcnRpZmFjdElkKSB7XG4gICAgY29uc3QgcHJvdmlzaW9uaW5nQXJ0aWZhY3QgPSBwcm92aXNpb25pbmdBcnRpZmFjdHMuZmlsdGVyKHBhID0+IHBhLklkID09IHByb3Zpc2lvbmluZ0FydGlmYWN0SWQpO1xuICAgIGlmIChwcm92aXNpb25pbmdBcnRpZmFjdC5sZW5ndGggPT0gMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb3VsZCBub3QgZmluZCBzcGVjaWZpZWQgcHJvdmlzaW9uaW5nIGFydGlmYWN0IGlkOiAke3Byb3Zpc2lvbmluZ0FydGlmYWN0SWR9YCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBwcm92aXNpb25pbmdBcnRpZmFjdC5wb3AoKSE7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHRyeSB7XG4gICAgICBpZiAocHJvdmlzaW9uaW5nQXJ0aWZhY3RzLmZpbHRlcihwYSA9PiBwYS5HdWlkYW5jZSA9PSAnREVGQVVMVCcpLmxlbmd0aCA9PSAxKSB7XG4gICAgICAgIHJldHVybiBwcm92aXNpb25pbmdBcnRpZmFjdHMuZmlsdGVyKHBhID0+IHBhLkd1aWRhbmNlID09ICdERUZBVUxUJykucG9wKCkhO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHByb3Zpc2lvbmluZ0FydGlmYWN0cy5zb3J0KChhLCBiKSA9PiBhLkNyZWF0ZWRUaW1lIS52YWx1ZU9mKCkgLSBiLkNyZWF0ZWRUaW1lIS52YWx1ZU9mKCkpLnBvcCgpITtcbiAgICAgIH1cbiAgICB9IGNhdGNoIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVW5hYmxlIHRvIHJlc29sdmUgZGVmYXVsdCBvciBsYXRlc3QgcHJvdmlzaW9uaW5nIGFydGlmYWN0LicpO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIHF1ZXJpZWQgbGF1bmNoIHBhdGggZnJvbSBsaXN0IG9mIGF2YWlsYWJsZSBsYXVuY2ggcGF0aHMuXG4gKiBAcGFyYW0gbGF1bmNoUGF0aHMgbGlzdCBvZiBhdmFpbGFibGUgbGF1bmNoIHBhdGhzIGZvciB0aGUgcHJvZHVjdFxuICogQHBhcmFtIGxhdW5jaFBhdGhJZCB0aGUgcXVlcnkgbGF1bmNoIHBhdGgncyBJZFxuICogQHJldHVybnMgdGhlIGxhdW5jaCBwYXRoIHN1bW1hcnkgZm9yIHRoZSBxdWVyeSBsYXVuY2ggcGF0aFxuICovXG5mdW5jdGlvbiByZXNvbHZlTGF1bmNoUGF0aChsYXVuY2hQYXRoczogQVdTLlNlcnZpY2VDYXRhbG9nLkxhdW5jaFBhdGhTdW1tYXJpZXMsIGxhdW5jaFBhdGhJZD86IHN0cmluZyk6IEFXUy5TZXJ2aWNlQ2F0YWxvZy5MYXVuY2hQYXRoU3VtbWFyeSB7XG4gIGlmIChsYXVuY2hQYXRoSWQpIHtcbiAgICBjb25zdCBsYXVuY2hQYXRoID0gbGF1bmNoUGF0aHMuZmlsdGVyKGxwID0+IGxwLklkID09IGxhdW5jaFBhdGhJZCk7XG4gICAgaWYgKGxhdW5jaFBhdGgubGVuZ3RoID09IDAgKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENvdWxkIG5vdCBmaW5kIHNwZWNpZmllZCBsYXVuY2ggcGF0aCBpZDogJHtsYXVuY2hQYXRoSWR9YCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBsYXVuY2hQYXRoLnBvcCgpITtcbiAgICB9XG5cbiAgfSBlbHNlIGlmIChsYXVuY2hQYXRocy5sZW5ndGggPT0gMSkge1xuICAgIHJldHVybiBsYXVuY2hQYXRocy5wb3AoKSE7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdVbmFibGUgdG8gcmVzb2x2ZSBiZXR3ZWVuIG11bHRpcGxlIGxhdW5jaCBwYXRocy4nKTtcbiAgfVxufVxuXG4vKipcbiAqIEZldGNoZXMgdGhlIGFsbCB0aGUgYXZhaWxhYmxlIG9yIHF1ZXJpZWQgc2VydmljZSBjYXRhbG9nIHByb2R1Y3QocykgZm9yIHRoZSBjYWxsZXIuXG4gKlxuICogQHJldHVybnMgbGlzdCBvZiBwcm9kdWN0IHZpZXcgc3VtbWFyaWVzXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGRlc2NyaWJlUHJvZHVjdChvcHRpb25zOiBEZXNjcmliZVByb2R1Y3RBZ2dyZWdhdGVPcHRpb25zKTogUHJvbWlzZTxQcm9kdWN0RGF0YUFnZ3JlZ2F0ZT4ge1xuICBjb25zdCBzYzogSVNlcnZpY2VDYXRhbG9nQ2xpZW50ID0gb3B0aW9ucy5jbGllbnQgPz8gbmV3IFNlcnZpY2VDYXRhbG9nQ2xpZW50KCk7XG5cbiAgY29uc3QgZGVzY3JpYmVQcm9kdWN0UmVzcG9uc2U6IEFXUy5TZXJ2aWNlQ2F0YWxvZy5EZXNjcmliZVByb2R1Y3RPdXRwdXQgPSBhd2FpdCBzYy5kZXNjcmliZVByb2R1Y3Qoe1xuICAgIElkOiBvcHRpb25zLnByb2R1Y3RJZCxcbiAgfSk7XG4gIHZhbGlkYXRlUHJvZHVjdERhdGEob3B0aW9ucy5wcm9kdWN0SWQsIGRlc2NyaWJlUHJvZHVjdFJlc3BvbnNlKTtcblxuICBjb25zdCBwcm92aXNpb25pbmdBcnRpZmFjdDogQVdTLlNlcnZpY2VDYXRhbG9nLlByb3Zpc2lvbmluZ0FydGlmYWN0ID0gcmVzb2x2ZVByb3Zpc2lvbmluZ0FydGlmYWN0KGRlc2NyaWJlUHJvZHVjdFJlc3BvbnNlLlByb3Zpc2lvbmluZ0FydGlmYWN0cyEsXG4gICAgb3B0aW9ucy5wcm92aXNpb25pbmdBcnRpZmFjdElkKTtcblxuICBjb25zdCBsYXVuY2hQYXRoOiBBV1MuU2VydmljZUNhdGFsb2cuTGF1bmNoUGF0aFN1bW1hcnkgPSByZXNvbHZlTGF1bmNoUGF0aChkZXNjcmliZVByb2R1Y3RSZXNwb25zZS5MYXVuY2hQYXRocyEsIG9wdGlvbnMubGF1bmNoUGF0aElkKTtcblxuICBjb25zdCBwYXJhbWV0ZXJzOiBBV1MuU2VydmljZUNhdGFsb2cuRGVzY3JpYmVQcm92aXNpb25pbmdQYXJhbWV0ZXJzT3V0cHV0ID0gYXdhaXQgZGVzY3JpYmVQcm92aXNpb25pbmdQYXJhbWV0ZXJzKG9wdGlvbnMpO1xuXG4gIHJldHVybiB7XG4gICAgcHJvZHVjdDogZGVzY3JpYmVQcm9kdWN0UmVzcG9uc2UuUHJvZHVjdFZpZXdTdW1tYXJ5ISxcbiAgICBwcm92aXNpb25pbmdBcnRpZmFjdDogcHJvdmlzaW9uaW5nQXJ0aWZhY3QsXG4gICAgbGF1bmNoUGF0aDogbGF1bmNoUGF0aCxcbiAgICBwYXJhbXM6IHBhcmFtZXRlcnMsXG4gIH07XG59XG5cbi8qKlxuICogRmV0Y2hlcyBhbGwgdGhlIGF2YWlsYWJsZSBzZXJ2aWNlIGNhdGFsb2cgcHJvZHVjdChzKSBmb3IgdGhlIGNhbGxlci5cbiAqXG4gKiBAcmV0dXJucyBsaXN0IG9mIHByb2R1Y3QgdmlldyBzdW1tYXJpZXNcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZldGNoQXZhaWxhYmxlUHJvZHVjdHMoY2xpZW50PzogSVNlcnZpY2VDYXRhbG9nQ2xpZW50KTogUHJvbWlzZTxBV1MuU2VydmljZUNhdGFsb2cuUHJvZHVjdFZpZXdTdW1tYXJpZXM+IHtcbiAgY29uc3Qgc2MgPSBjbGllbnQgPz8gbmV3IFNlcnZpY2VDYXRhbG9nQ2xpZW50KCk7XG5cbiAgY29uc3QgcHJvZHVjdHM6IEFXUy5TZXJ2aWNlQ2F0YWxvZy5Qcm9kdWN0Vmlld1N1bW1hcmllcyA9IFtdO1xuICBsZXQgdG9rZW47XG5cbiAgZG8ge1xuICAgIGNvbnN0IHJlczogQVdTLlNlcnZpY2VDYXRhbG9nLlNlYXJjaFByb2R1Y3RzT3V0cHV0ID0gYXdhaXQgc2Muc2VhcmNoUHJvZHVjdHMoe1xuICAgICAgUGFnZVRva2VuOiB0b2tlbixcbiAgICB9KTtcblxuICAgIGlmIChyZXMuUHJvZHVjdFZpZXdTdW1tYXJpZXMpIHtcbiAgICAgIHByb2R1Y3RzLnB1c2goLi4ucmVzLlByb2R1Y3RWaWV3U3VtbWFyaWVzKTtcbiAgICB9XG4gICAgdG9rZW4gPSByZXMuTmV4dFBhZ2VUb2tlbjtcbiAgfSB3aGlsZSAodG9rZW4pO1xuXG4gIHJldHVybiBwcm9kdWN0cztcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBpbmZvcm1hdGlvbiByZXF1aXJlZCB0byBwcm92aXNpb24gYW4gYXJ0aWZhY3QuXG4gKiBJbmNsdWRlcyBpbmZvcm1hdGlvbiBvbiBpbnB1dHMgYW5kIG91dHB1dHMgb2YgdGhlIHByb2R1Y3QuXG4gKlxuICogQHJldHVybnMgdGhlIHByb3Zpc29uaW5nIHBhcmFtZXRlcnMgZm9yIGFuIGFydGlmYWN0XG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBkZXNjcmliZVByb3Zpc2lvbmluZ1BhcmFtZXRlcnMob3B0aW9uczogRGVzY3JpYmVQcm9kdWN0QWdncmVnYXRlT3B0aW9ucyk6XG5Qcm9taXNlPEFXUy5TZXJ2aWNlQ2F0YWxvZy5EZXNjcmliZVByb3Zpc2lvbmluZ1BhcmFtZXRlcnNPdXRwdXQ+IHtcblxuICBjb25zdCBzYyA9IG9wdGlvbnMuY2xpZW50ID8/IG5ldyBTZXJ2aWNlQ2F0YWxvZ0NsaWVudCgpO1xuXG4gIGNvbnN0IHByb3Zpc2lvbmluZ1BhcmFtZXRlcnM6IEFXUy5TZXJ2aWNlQ2F0YWxvZy5EZXNjcmliZVByb3Zpc2lvbmluZ1BhcmFtZXRlcnNPdXRwdXQgPSBhd2FpdCBzYy5kZXNjcmliZVByb3Zpc2lvbmluZ1BhcmFtZXRlcnMoe1xuICAgIFByb2R1Y3RJZDogb3B0aW9ucy5wcm9kdWN0SWQsXG4gICAgUHJvdmlzaW9uaW5nQXJ0aWZhY3RJZDogb3B0aW9ucy5wcm92aXNpb25pbmdBcnRpZmFjdElkLFxuICAgIFBhdGhJZDogb3B0aW9ucy5sYXVuY2hQYXRoSWQsXG4gIH0pO1xuXG4gIHJldHVybiBwcm92aXNpb25pbmdQYXJhbWV0ZXJzO1xufVxuXG4vKipcbiAqIEhvbGRzIGFsbCB0aGUgaW5mb3JtYXRpb24gbmVlZGVkIHRvIGdlbmVyYXRlIGEgcHJvZHVjdCBhcnRpZmFjdCB0byBwcm92aXNpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUHJvZHVjdERhdGFBZ2dyZWdhdGUge1xuICAvKipcbiAgICogQ29yZSBwcm9kdWN0IGRldGFpbHMuXG4gICAqL1xuICByZWFkb25seSBwcm9kdWN0OiBBV1MuU2VydmljZUNhdGFsb2cuUHJvZHVjdFZpZXdTdW1tYXJ5O1xuICAvKipcbiAgICogRGV0YWlscyBvbiB0aGUgc2VsZWN0ZWQgcHJvdmlzaW9uaW5nIGFydGlmYWN0IGZvciB0aGUgcHJvZHVjdC5cbiAgICogUmVwcmVzZW50cyB0aGUgYWN0dWFsIHRlbXBsYXRlIHRoYXQgY29udGFpbnMgcmVzb3VyY2VzLlxuICAgKi9cbiAgcmVhZG9ubHkgcHJvdmlzaW9uaW5nQXJ0aWZhY3Q6IEFXUy5TZXJ2aWNlQ2F0YWxvZy5Qcm92aXNpb25pbmdBcnRpZmFjdDtcbiAgLyoqXG4gICAqIERldGFpbHMgb24gdGhlIHNlbGVjdGVkIGxhdW5jaCBwYXRoIGZvciB0aGUgcHJvZHVjdC5cbiAgICogUmVwcmVzZW50cyB0aGUgcGVybWlzc2lvbnMvYWJpbGl0eSBmb3IgZW5kIHVzZXIgdG8gcHJvdmlzaW9uIHRoZSBwcm9kdWN0LlxuICAgKi9cbiAgcmVhZG9ubHkgbGF1bmNoUGF0aDogQVdTLlNlcnZpY2VDYXRhbG9nLkxhdW5jaFBhdGhTdW1tYXJ5O1xuICAvKipcbiAgICogRGV0YWlscyBvbiBwcm92aXNpb25pbmcgcmVxdWlyZW1lbnRzIGZvciB0aGUgcHJvdmlzaW9uaW5nIGFydGlmYWN0IGFuZCBsYXVuY2ggcGF0aC5cbiAgICogSG9sZHMgaW5mb3JtYXRpb24gb24gdGhlIGlucHV0cyBhbmQgb3V0cHV0cyBmb3IgdGhlIGRvd25zdHJlYW0gdGVtcGxhdGUuXG4gICAqL1xuICByZWFkb25seSBwYXJhbXM6IEFXUy5TZXJ2aWNlQ2F0YWxvZy5EZXNjcmliZVByb3Zpc2lvbmluZ1BhcmFtZXRlcnNPdXRwdXQ7XG59XG5cbi8qKlxuICogTWFrZXMgYSBzZXJpZXMgb2YgY2FsbHMgdG8gc2VydmljZSBjYXRhbG9nIHRvIGdldCBhbGwgaW5mb3JtYXRpb25cbiAqIHJlcXVpcmVkIHRvIHByb3Zpc2lvbiBhIHNlcnZpY2UgY2F0YWxvZyBwcm9kdWN0LlxuICpcbiAqIEByZXR1cm5zIFByb2R1Y3RWZXJzaW9uRGF0YSBhZ2dyZWdhdGUgb2YgcHJvdmlzaW9uaW5nIGFydGlmYWN0IGRldGFpbHMuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBkZXNjcmliZVByb2R1Y3RBZ2dyZWdhdGUob3B0aW9uczogRGVzY3JpYmVQcm9kdWN0QWdncmVnYXRlT3B0aW9ucyk6IFByb21pc2U8UHJvZHVjdERhdGFBZ2dyZWdhdGU+IHtcbiAgY29uc3Qgc2MgPSBvcHRpb25zLmNsaWVudCA/PyBuZXcgU2VydmljZUNhdGFsb2dDbGllbnQoKTtcblxuICBjb25zdCBwcm9kdWN0RGF0YUFnZ3JlZ2F0ZSA9IGF3YWl0IGRlc2NyaWJlUHJvZHVjdCh7XG4gICAgcHJvZHVjdElkOiBvcHRpb25zLnByb2R1Y3RJZCxcbiAgICBsYXVuY2hQYXRoSWQ6IG9wdGlvbnMubGF1bmNoUGF0aElkLFxuICAgIHByb3Zpc2lvbmluZ0FydGlmYWN0SWQ6IG9wdGlvbnMucHJvdmlzaW9uaW5nQXJ0aWZhY3RJZCxcbiAgICBjbGllbnQ6IHNjLFxuICB9KTtcblxuICByZXR1cm4gcHJvZHVjdERhdGFBZ2dyZWdhdGU7XG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlUHJvZHVjdERhdGEocHJvZHVjdElkOiBzdHJpbmcsIHByb2R1Y3Q6IEFXUy5TZXJ2aWNlQ2F0YWxvZy5EZXNjcmliZVByb2R1Y3RPdXRwdXQpOiB2b2lkIHtcbiAgaWYgKHByb2R1Y3QuUHJvZHVjdFZpZXdTdW1tYXJ5ID09IHVuZGVmaW5lZCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IHJlc29sdmUgcHJvZHVjdCBkZXRhaWxzIGZvciAke3Byb2R1Y3RJZH1gKTtcbiAgfSBlbHNlIGlmIChwcm9kdWN0LlByb3Zpc2lvbmluZ0FydGlmYWN0cyA9PSB1bmRlZmluZWQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCByZXNvbHZlIHByb3Zpc2lvbmluZyBhcnRpZmFjdHMgZm9yIHByb2R1Y3Q6ICR7cHJvZHVjdElkfWApO1xuICB9IGVsc2UgaWYgKHByb2R1Y3QuTGF1bmNoUGF0aHMgPT0gdW5kZWZpbmVkKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgcmVzb2x2ZSBsYXVuY2ggcGF0aHMgZm9yIHByb2R1Y3Q6ICR7cHJvZHVjdElkfWApO1xuICB9XG59Il19
package/package.json CHANGED
@@ -59,7 +59,7 @@
59
59
  },
60
60
  "main": "lib/index.js",
61
61
  "license": "Apache-2.0",
62
- "version": "0.2.144",
62
+ "version": "0.2.145",
63
63
  "jest": {
64
64
  "testMatch": [
65
65
  "<rootDir>/src/**/__tests__/**/*.ts?(x)",