Socket
Socket
Sign inDemoInstall

@aws-cdk/cloud-assembly-schema

Package Overview
Dependencies
Maintainers
5
Versions
485
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@aws-cdk/cloud-assembly-schema - npm Package Compare versions

Comparing version 1.46.0 to 1.47.0

lib/assets/aws-destination.d.ts

6

lib/index.d.ts

@@ -0,5 +1,3 @@

export * from './cloud-assembly';
export * from './assets';
export * from './manifest';
export * from './schema';
export * from './metadata-schema';
export * from './artifact-schema';
export * from './context-queries';

@@ -13,7 +13,5 @@ "use strict";

Object.defineProperty(exports, "__esModule", { value: true });
__exportStar(require("./cloud-assembly"), exports);
__exportStar(require("./assets"), exports);
__exportStar(require("./manifest"), exports);
__exportStar(require("./schema"), exports);
__exportStar(require("./metadata-schema"), exports);
__exportStar(require("./artifact-schema"), exports);
__exportStar(require("./context-queries"), exports);
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQSw2Q0FBMkI7QUFDM0IsMkNBQXlCO0FBQ3pCLG9EQUFrQztBQUNsQyxvREFBa0M7QUFDbEMsb0RBQWtDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9tYW5pZmVzdCc7XG5leHBvcnQgKiBmcm9tICcuL3NjaGVtYSc7XG5leHBvcnQgKiBmcm9tICcuL21ldGFkYXRhLXNjaGVtYSc7XG5leHBvcnQgKiBmcm9tICcuL2FydGlmYWN0LXNjaGVtYSc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnRleHQtcXVlcmllcyc7XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQSxtREFBaUM7QUFDakMsMkNBQXlCO0FBQ3pCLDZDQUEyQiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vY2xvdWQtYXNzZW1ibHknO1xuZXhwb3J0ICogZnJvbSAnLi9hc3NldHMnO1xuZXhwb3J0ICogZnJvbSAnLi9tYW5pZmVzdCc7XG4iXX0=

@@ -1,2 +0,3 @@

import * as assembly from './schema';
import * as assets from './assets';
import * as assembly from './cloud-assembly';
export declare const VERSION_MISMATCH: string;

@@ -8,19 +9,44 @@ /**

/**
* Save manifest to file.
* Validates and saves the cloud assembly manifest to file.
*
* @param manifest - manifest.
* @param filePath - output file path.
*/
static save(manifest: assembly.AssemblyManifest, filePath: string): void;
static saveAssemblyManifest(manifest: assembly.AssemblyManifest, filePath: string): void;
/**
* Load manifest from file.
* Load and validates the cloud assembly manifest from file.
*
* @param filePath - path to the manifest file.
*/
static load(filePath: string): assembly.AssemblyManifest;
static loadAssemblyManifest(filePath: string): assembly.AssemblyManifest;
/**
* Validates and saves the asset manifest to file.
*
* @param manifest - manifest.
* @param filePath - output file path.
*/
static saveAssetManifest(manifest: assets.AssetManifest, filePath: string): void;
/**
* Load and validates the asset manifest from file.
*
* @param filePath - path to the manifest file.
*/
static loadAssetManifest(filePath: string): assets.AssetManifest;
/**
* Fetch the current schema version number.
*/
static version(): string;
private static schema;
/**
* Deprecated
* @deprecated use `saveAssemblyManifest()`
*/
static save(manifest: assembly.AssemblyManifest, filePath: string): void;
/**
* Deprecated
* @deprecated use `loadAssemblyManifest()`
*/
static load(filePath: string): assembly.AssemblyManifest;
private static validate;
private static saveManifest;
private static loadManifest;
/**

@@ -27,0 +53,0 @@ * This requires some explaining...

@@ -7,4 +7,3 @@ "use strict";

const semver = require("semver");
const metadata_schema_1 = require("./metadata-schema");
const assembly = require("./schema");
const assembly = require("./cloud-assembly");
// this prefix is used by the CLI to identify this specific error.

@@ -14,34 +13,68 @@ // in which case we want to instruct the user to upgrade his CLI.

exports.VERSION_MISMATCH = 'Cloud assembly schema version mismatch';
// tslint:disable: no-var-requires
// eslint-disable-next-line @typescript-eslint/no-require-imports
const ASSETS_SCHEMA = require('../schema/assets.schema.json');
// eslint-disable-next-line @typescript-eslint/no-require-imports
const ASSEMBLY_SCHEMA = require('../schema/cloud-assembly.schema.json');
/**
* Version is shared for both manifests
*/
// eslint-disable-next-line @typescript-eslint/no-require-imports
const SCHEMA_VERSION = require('../schema/cloud-assembly.version.json').version;
// tslint:enable: no-var-requires
/**
* Protocol utility class.
*/
class Manifest {
constructor() { }
/**
* Save manifest to file.
* Validates and saves the cloud assembly manifest to file.
*
* @param manifest - manifest.
* @param filePath - output file path.
*/
static save(manifest, filePath) {
fs.writeFileSync(filePath, JSON.stringify(manifest, undefined, 2));
static saveAssemblyManifest(manifest, filePath) {
Manifest.saveManifest(manifest, filePath, ASSEMBLY_SCHEMA);
}
/**
* Load manifest from file.
* Load and validates the cloud assembly manifest from file.
*
* @param filePath - path to the manifest file.
*/
static load(filePath) {
const raw = JSON.parse(fs.readFileSync(filePath, { encoding: 'utf-8' }));
Manifest.patchStackTags(raw);
Manifest.validate(raw);
return raw;
static loadAssemblyManifest(filePath) {
return Manifest.loadManifest(filePath, ASSEMBLY_SCHEMA, obj => Manifest.patchStackTags(obj));
}
/**
* Validates and saves the asset manifest to file.
*
* @param manifest - manifest.
* @param filePath - output file path.
*/
static saveAssetManifest(manifest, filePath) {
Manifest.saveManifest(manifest, filePath, ASSETS_SCHEMA);
}
/**
* Load and validates the asset manifest from file.
*
* @param filePath - path to the manifest file.
*/
static loadAssetManifest(filePath) {
return this.loadManifest(filePath, ASSETS_SCHEMA);
}
/**
* Fetch the current schema version number.
*/
static version() {
// eslint-disable-next-line @typescript-eslint/no-require-imports
return require('../schema/cloud-assembly.version.json').version;
return SCHEMA_VERSION;
}
static validate(manifest) {
/**
* Deprecated
* @deprecated use `saveAssemblyManifest()`
*/
static save(manifest, filePath) { return this.saveAssemblyManifest(manifest, filePath); }
/**
* Deprecated
* @deprecated use `loadAssemblyManifest()`
*/
static load(filePath) { return this.loadAssemblyManifest(filePath); }
static validate(manifest, schema) {
function parseVersion(version) {

@@ -64,3 +97,3 @@ const ver = semver.valid(version);

const validator = new jsonschema.Validator();
const result = validator.validate(manifest, Manifest.schema, {
const result = validator.validate(manifest, schema, {
// does exist but is not in the TypeScript definitions

@@ -74,2 +107,15 @@ nestedErrors: true,

}
static saveManifest(manifest, filePath, schema) {
const withVersion = { ...manifest, version: Manifest.version() };
Manifest.validate(withVersion, schema);
fs.writeFileSync(filePath, JSON.stringify(withVersion, undefined, 2));
}
static loadManifest(filePath, schema, preprocess) {
let obj = JSON.parse(fs.readFileSync(filePath, { encoding: 'utf-8' }));
if (preprocess) {
obj = preprocess(obj);
}
Manifest.validate(obj, schema);
return obj;
}
/**

@@ -95,7 +141,5 @@ * This requires some explaining...

for (const metadataEntry of metadataEntries) {
if (metadataEntry.type === metadata_schema_1.ArtifactMetadataEntryType.STACK_TAGS && metadataEntry.data) {
if (metadataEntry.type === assembly.ArtifactMetadataEntryType.STACK_TAGS && metadataEntry.data) {
const metadataAny = metadataEntry;
metadataAny.data = metadataAny.data.map((t) => {
return { key: t.Key, value: t.Value };
});
metadataAny.data = metadataAny.data.map((t) => ({ key: t.Key, value: t.Value }));
}

@@ -106,7 +150,7 @@ }

}
return manifest;
}
constructor() { }
}
exports.Manifest = Manifest;
// eslint-disable-next-line @typescript-eslint/no-require-imports
Manifest.schema = require('../schema/cloud-assembly.schema.json');
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuaWZlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJtYW5pZmVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx5QkFBeUI7QUFDekIseUNBQXlDO0FBQ3pDLGlDQUFpQztBQUNqQyx1REFBOEQ7QUFDOUQscUNBQXFDO0FBRXJDLGtFQUFrRTtBQUNsRSxpRUFBaUU7QUFDakUsNkJBQTZCO0FBQ2hCLFFBQUEsZ0JBQWdCLEdBQVcsd0NBQXdDLENBQUM7QUFFakY7O0dBRUc7QUFDSCxNQUFhLFFBQVE7SUF1R25CLGdCQUF1QixDQUFDO0lBdEd4Qjs7OztPQUlHO0lBQ0ksTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFtQyxFQUFFLFFBQWdCO1FBQ3RFLEVBQUUsQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFnQjtRQUNqQyxNQUFNLEdBQUcsR0FBOEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDcEcsUUFBUSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM3QixRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZCLE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUVEOztPQUVHO0lBQ0ksTUFBTSxDQUFDLE9BQU87UUFDbkIsaUVBQWlFO1FBQ2pFLE9BQU8sT0FBTyxDQUFDLHVDQUF1QyxDQUFDLENBQUMsT0FBTyxDQUFDO0lBQ2xFLENBQUM7SUFLTyxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQW1DO1FBRXpELFNBQVMsWUFBWSxDQUFDLE9BQWU7WUFDbkMsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNsQyxJQUFJLENBQUMsR0FBRyxFQUFFO2dCQUNSLE1BQU0sSUFBSSxLQUFLLENBQUMsMkJBQTJCLE9BQU8sR0FBRyxDQUFDLENBQUM7YUFDeEQ7WUFDRCxPQUFPLEdBQUcsQ0FBQztRQUNiLENBQUM7UUFFRCxNQUFNLFlBQVksR0FBRyxZQUFZLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDdEQsTUFBTSxNQUFNLEdBQUcsWUFBWSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUU5QyxpREFBaUQ7UUFDakQsSUFBSSxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxZQUFZLENBQUMsRUFBRTtZQUNuQyxvRkFBb0Y7WUFDcEYsMkNBQTJDO1lBQzNDLE1BQU0sSUFBSSxLQUFLLENBQUMsR0FBRyx3QkFBZ0IseUNBQXlDLFlBQVksZUFBZSxNQUFNLEVBQUUsQ0FBQyxDQUFDO1NBQ2xIO1FBRUQsbUNBQW1DO1FBQ25DLE1BQU0sU0FBUyxHQUFHLElBQUksVUFBVSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQzdDLE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxNQUFNLEVBQUU7WUFFM0Qsc0RBQXNEO1lBQ3RELFlBQVksRUFBRSxJQUFJO1lBRWxCLHNCQUFzQixFQUFFLEtBQUs7U0FFdkIsQ0FBQyxDQUFDO1FBQ1YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUU7WUFDakIsTUFBTSxJQUFJLEtBQUssQ0FBQywrQkFBK0IsTUFBTSxFQUFFLENBQUMsQ0FBQztTQUMxRDtJQUVILENBQUM7SUFFRDs7Ozs7Ozs7Ozs7Ozs7T0FjRztJQUNLLE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBbUM7UUFDL0QsS0FBSyxNQUFNLFFBQVEsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxTQUFTLElBQUksRUFBRSxDQUFDLEVBQUU7WUFDOUQsSUFBSSxRQUFRLENBQUMsSUFBSSxLQUFLLFFBQVEsQ0FBQyxZQUFZLENBQUMsd0JBQXdCLEVBQUU7Z0JBQ3BFLEtBQUssTUFBTSxlQUFlLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQyxFQUFFO29CQUNwRSxLQUFLLE1BQU0sYUFBYSxJQUFJLGVBQWUsRUFBRTt3QkFDM0MsSUFBSSxhQUFhLENBQUMsSUFBSSxLQUFLLDJDQUF5QixDQUFDLFVBQVUsSUFBSSxhQUFhLENBQUMsSUFBSSxFQUFFOzRCQUVyRixNQUFNLFdBQVcsR0FBRyxhQUFvQixDQUFDOzRCQUV6QyxXQUFXLENBQUMsSUFBSSxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBTSxFQUFFLEVBQUU7Z0NBQ2pELE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDOzRCQUN4QyxDQUFDLENBQUMsQ0FBQzt5QkFDSjtxQkFDRjtpQkFDRjthQUNGO1NBQ0Y7SUFDSCxDQUFDOztBQXJHSCw0QkF5R0M7QUEzRUMsaUVBQWlFO0FBQ2xELGVBQU0sR0FBc0IsT0FBTyxDQUFDLHNDQUFzQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBmcyBmcm9tICdmcyc7XG5pbXBvcnQgKiBhcyBqc29uc2NoZW1hIGZyb20gJ2pzb25zY2hlbWEnO1xuaW1wb3J0ICogYXMgc2VtdmVyIGZyb20gJ3NlbXZlcic7XG5pbXBvcnQgeyBBcnRpZmFjdE1ldGFkYXRhRW50cnlUeXBlIH0gZnJvbSAnLi9tZXRhZGF0YS1zY2hlbWEnO1xuaW1wb3J0ICogYXMgYXNzZW1ibHkgZnJvbSAnLi9zY2hlbWEnO1xuXG4vLyB0aGlzIHByZWZpeCBpcyB1c2VkIGJ5IHRoZSBDTEkgdG8gaWRlbnRpZnkgdGhpcyBzcGVjaWZpYyBlcnJvci5cbi8vIGluIHdoaWNoIGNhc2Ugd2Ugd2FudCB0byBpbnN0cnVjdCB0aGUgdXNlciB0byB1cGdyYWRlIGhpcyBDTEkuXG4vLyBzZWUgZXhlYy50cyNjcmVhdGVBc3NlbWJseVxuZXhwb3J0IGNvbnN0IFZFUlNJT05fTUlTTUFUQ0g6IHN0cmluZyA9ICdDbG91ZCBhc3NlbWJseSBzY2hlbWEgdmVyc2lvbiBtaXNtYXRjaCc7XG5cbi8qKlxuICogUHJvdG9jb2wgdXRpbGl0eSBjbGFzcy5cbiAqL1xuZXhwb3J0IGNsYXNzIE1hbmlmZXN0IHtcbiAgLyoqXG4gICAqIFNhdmUgbWFuaWZlc3QgdG8gZmlsZS5cbiAgICpcbiAgICogQHBhcmFtIG1hbmlmZXN0IC0gbWFuaWZlc3QuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHNhdmUobWFuaWZlc3Q6IGFzc2VtYmx5LkFzc2VtYmx5TWFuaWZlc3QsIGZpbGVQYXRoOiBzdHJpbmcpIHtcbiAgICBmcy53cml0ZUZpbGVTeW5jKGZpbGVQYXRoLCBKU09OLnN0cmluZ2lmeShtYW5pZmVzdCwgdW5kZWZpbmVkLCAyKSk7XG4gIH1cblxuICAvKipcbiAgICogTG9hZCBtYW5pZmVzdCBmcm9tIGZpbGUuXG4gICAqXG4gICAqIEBwYXJhbSBmaWxlUGF0aCAtIHBhdGggdG8gdGhlIG1hbmlmZXN0IGZpbGUuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGxvYWQoZmlsZVBhdGg6IHN0cmluZyk6IGFzc2VtYmx5LkFzc2VtYmx5TWFuaWZlc3Qge1xuICAgIGNvbnN0IHJhdzogYXNzZW1ibHkuQXNzZW1ibHlNYW5pZmVzdCA9IEpTT04ucGFyc2UoZnMucmVhZEZpbGVTeW5jKGZpbGVQYXRoLCB7IGVuY29kaW5nOiAndXRmLTgnIH0pKTtcbiAgICBNYW5pZmVzdC5wYXRjaFN0YWNrVGFncyhyYXcpO1xuICAgIE1hbmlmZXN0LnZhbGlkYXRlKHJhdyk7XG4gICAgcmV0dXJuIHJhdztcbiAgfVxuXG4gIC8qKlxuICAgKiBGZXRjaCB0aGUgY3VycmVudCBzY2hlbWEgdmVyc2lvbiBudW1iZXIuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHZlcnNpb24oKTogc3RyaW5nIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXJlcXVpcmUtaW1wb3J0c1xuICAgIHJldHVybiByZXF1aXJlKCcuLi9zY2hlbWEvY2xvdWQtYXNzZW1ibHkudmVyc2lvbi5qc29uJykudmVyc2lvbjtcbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tcmVxdWlyZS1pbXBvcnRzXG4gIHByaXZhdGUgc3RhdGljIHNjaGVtYToganNvbnNjaGVtYS5TY2hlbWEgPSByZXF1aXJlKCcuLi9zY2hlbWEvY2xvdWQtYXNzZW1ibHkuc2NoZW1hLmpzb24nKTtcblxuICBwcml2YXRlIHN0YXRpYyB2YWxpZGF0ZShtYW5pZmVzdDogYXNzZW1ibHkuQXNzZW1ibHlNYW5pZmVzdCkge1xuXG4gICAgZnVuY3Rpb24gcGFyc2VWZXJzaW9uKHZlcnNpb246IHN0cmluZykge1xuICAgICAgY29uc3QgdmVyID0gc2VtdmVyLnZhbGlkKHZlcnNpb24pO1xuICAgICAgaWYgKCF2ZXIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHNlbXZlciBzdHJpbmc6IFwiJHt2ZXJzaW9ufVwiYCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdmVyO1xuICAgIH1cblxuICAgIGNvbnN0IG1heFN1cHBvcnRlZCA9IHBhcnNlVmVyc2lvbihNYW5pZmVzdC52ZXJzaW9uKCkpO1xuICAgIGNvbnN0IGFjdHVhbCA9IHBhcnNlVmVyc2lvbihtYW5pZmVzdC52ZXJzaW9uKTtcblxuICAgIC8vIGZpcnN0IHZhbGlkYXRlIHRoZSB2ZXJzaW9uIHNob3VsZCBiZSBhY2NlcHRlZC5cbiAgICBpZiAoc2VtdmVyLmd0KGFjdHVhbCwgbWF4U3VwcG9ydGVkKSkge1xuICAgICAgLy8gd2UgdXNlIGEgd2VsbCBrbm93biBlcnJvciBwcmVmaXggc28gdGhhdCB0aGUgQ0xJIGNhbiBpZGVudGlmeSB0aGlzIHNwZWNpZmljIGVycm9yXG4gICAgICAvLyBhbmQgcHJpbnQgc29tZSBtb3JlIGNvbnRleHQgdG8gdGhlIHVzZXIuXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7VkVSU0lPTl9NSVNNQVRDSH06IE1heGltdW0gc2NoZW1hIHZlcnNpb24gc3VwcG9ydGVkIGlzICR7bWF4U3VwcG9ydGVkfSwgYnV0IGZvdW5kICR7YWN0dWFsfWApO1xuICAgIH1cblxuICAgIC8vIG5vdyB2YWxpZGF0ZSB0aGUgZm9ybWF0IGlzIGdvb2QuXG4gICAgY29uc3QgdmFsaWRhdG9yID0gbmV3IGpzb25zY2hlbWEuVmFsaWRhdG9yKCk7XG4gICAgY29uc3QgcmVzdWx0ID0gdmFsaWRhdG9yLnZhbGlkYXRlKG1hbmlmZXN0LCBNYW5pZmVzdC5zY2hlbWEsIHtcblxuICAgICAgLy8gZG9lcyBleGlzdCBidXQgaXMgbm90IGluIHRoZSBUeXBlU2NyaXB0IGRlZmluaXRpb25zXG4gICAgICBuZXN0ZWRFcnJvcnM6IHRydWUsXG5cbiAgICAgIGFsbG93VW5rbm93bkF0dHJpYnV0ZXM6IGZhbHNlLFxuXG4gICAgfSBhcyBhbnkpO1xuICAgIGlmICghcmVzdWx0LnZhbGlkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgYXNzZW1ibHkgbWFuaWZlc3Q6XFxuJHtyZXN1bHR9YCk7XG4gICAgfVxuXG4gIH1cblxuICAvKipcbiAgICogVGhpcyByZXF1aXJlcyBzb21lIGV4cGxhaW5pbmcuLi5cbiAgICpcbiAgICogV2UgcHJldmlvdXNseSB1c2VkIGB7IEtleSwgVmFsdWUgfWAgZm9yIHRoZSBvYmplY3QgdGhhdCByZXByZXNlbnRzIGEgc3RhY2sgdGFnLiAoTm90aWNlIHRoZSBjYXNpbmcpXG4gICAqIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYXdzLWNkay9ibG9iL3YxLjI3LjAvcGFja2FnZXMvYXdzLWNkay9saWIvYXBpL2N4YXBwL3N0YWNrcy50cyNMNDI3LlxuICAgKlxuICAgKiBXaGVuIHRoYXQgb2JqZWN0IG1vdmVkIHRvIHRoaXMgcGFja2FnZSwgaXQgaGFkIHRvIGJlIEpTSUkgY29tcGxpYW50LCB3aGljaCBtZWFudCB0aGUgcHJvcGVydHlcbiAgICogbmFtZXMgbXVzdCBiZSBgY2FtZWxDYXNlZGAsIGFuZCBub3QgYFBhc2NhbENhc2VkYC4gVGhpcyBtZWFudCBpdCBubyBsb25nZXIgbWF0Y2hlcyB0aGUgc3RydWN0dXJlIGluIHRoZSBgbWFuaWZlc3QuanNvbmAgZmlsZS5cbiAgICogSW4gb3JkZXIgdG8gc3VwcG9ydCBjdXJyZW50IG1hbmlmZXN0IGZpbGVzLCB3ZSBoYXZlIHRvIHRyYW5zbGF0ZSB0aGUgYFBhc2NhbENhc2VkYCByZXByZXNlbnRhdGlvbiB0byB0aGUgbmV3IGBjYW1lbENhc2VkYCBvbmUuXG4gICAqXG4gICAqIE5vdGUgdGhhdCB0aGUgc2VyaWFsaXphdGlvbiBpdHNlbGYgc3RpbGwgd3JpdGVzIGBQYXNjYWxDYXNlZGAgYmVjYXVzZSBpdCByZWxhdGVzIHRvIGhvdyBDbG91ZEZvcm1hdGlvbiBleHBlY3RzIGl0LlxuICAgKlxuICAgKiBJZGVhbGx5LCB3ZSB3b3VsZCBzdGFydCB3cml0aW5nIHRoZSBgY2FtZWxDYXNlZGAgYW5kIHRyYW5zbGF0ZSB0byBob3cgQ2xvdWRGb3JtYXRpb24gZXhwZWN0cyBpdCB3aGVuIG5lZWRlZC4gQnV0IHRoaXMgcmVxdWlyZXMgbmFzdHlcbiAgICogYmFja3dhcmRzLWNvbXBhdGliaWxpdHkgY29kZSBhbmQgaXQganVzdCBkb2Vzbid0IHNlZW0gdG8gYmUgd29ydGggdGhlIGVmZm9ydC5cbiAgICovXG4gIHByaXZhdGUgc3RhdGljIHBhdGNoU3RhY2tUYWdzKG1hbmlmZXN0OiBhc3NlbWJseS5Bc3NlbWJseU1hbmlmZXN0KSB7XG4gICAgZm9yIChjb25zdCBhcnRpZmFjdCBvZiBPYmplY3QudmFsdWVzKG1hbmlmZXN0LmFydGlmYWN0cyB8fCBbXSkpIHtcbiAgICAgIGlmIChhcnRpZmFjdC50eXBlID09PSBhc3NlbWJseS5BcnRpZmFjdFR5cGUuQVdTX0NMT1VERk9STUFUSU9OX1NUQUNLKSB7XG4gICAgICAgIGZvciAoY29uc3QgbWV0YWRhdGFFbnRyaWVzIG9mIE9iamVjdC52YWx1ZXMoYXJ0aWZhY3QubWV0YWRhdGEgfHwgW10pKSB7XG4gICAgICAgICAgZm9yIChjb25zdCBtZXRhZGF0YUVudHJ5IG9mIG1ldGFkYXRhRW50cmllcykge1xuICAgICAgICAgICAgaWYgKG1ldGFkYXRhRW50cnkudHlwZSA9PT0gQXJ0aWZhY3RNZXRhZGF0YUVudHJ5VHlwZS5TVEFDS19UQUdTICYmIG1ldGFkYXRhRW50cnkuZGF0YSkge1xuXG4gICAgICAgICAgICAgIGNvbnN0IG1ldGFkYXRhQW55ID0gbWV0YWRhdGFFbnRyeSBhcyBhbnk7XG5cbiAgICAgICAgICAgICAgbWV0YWRhdGFBbnkuZGF0YSA9IG1ldGFkYXRhQW55LmRhdGEubWFwKCh0OiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4geyBrZXk6IHQuS2V5LCB2YWx1ZTogdC5WYWx1ZSB9O1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge31cblxufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuaWZlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJtYW5pZmVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx5QkFBeUI7QUFDekIseUNBQXlDO0FBQ3pDLGlDQUFpQztBQUVqQyw2Q0FBNkM7QUFFN0Msa0VBQWtFO0FBQ2xFLGlFQUFpRTtBQUNqRSw2QkFBNkI7QUFDaEIsUUFBQSxnQkFBZ0IsR0FBVyx3Q0FBd0MsQ0FBQztBQUVqRixrQ0FBa0M7QUFFbEMsaUVBQWlFO0FBQ2pFLE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO0FBRTlELGlFQUFpRTtBQUNqRSxNQUFNLGVBQWUsR0FBRyxPQUFPLENBQUMsc0NBQXNDLENBQUMsQ0FBQztBQUV4RTs7R0FFRztBQUNILGlFQUFpRTtBQUNqRSxNQUFNLGNBQWMsR0FBRyxPQUFPLENBQUMsdUNBQXVDLENBQUMsQ0FBQyxPQUFPLENBQUM7QUFFaEYsaUNBQWlDO0FBRWpDOztHQUVHO0FBQ0gsTUFBYSxRQUFRO0lBQ25COzs7OztPQUtHO0lBQ0ksTUFBTSxDQUFDLG9CQUFvQixDQUFDLFFBQW1DLEVBQUUsUUFBZ0I7UUFDdEYsUUFBUSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLGVBQWUsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksTUFBTSxDQUFDLG9CQUFvQixDQUFDLFFBQWdCO1FBQ2pELE9BQU8sUUFBUSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsZUFBZSxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQy9GLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxRQUE4QixFQUFFLFFBQWdCO1FBQzlFLFFBQVEsQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxhQUFhLENBQUMsQ0FB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RSxNQUFNLENBQUMsQ0FBQztRQUMvQixPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7Ozs7T0FjRztJQUNLLE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBbUM7UUFDL0QsS0FBSyxNQUFNLFFBQVEsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxTQUFTLElBQUksRUFBRSxDQUFDLEVBQUU7WUFDOUQsSUFBSSxRQUFRLENBQUMsSUFBSSxLQUFLLFFBQVEsQ0FBQyxZQUFZLENBQUMsd0JBQXdCLEVBQUU7Z0JBQ3BFLEtBQUssTUFBTSxlQUFlLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQyxFQUFFO29CQUNwRSxLQUFLLE1BQU0sYUFBYSxJQUFJLGVBQWUsRUFBRTt3QkFDM0MsSUFBSSxhQUFhLENBQUMsSUFBSSxLQUFLLFFBQVEsQ0FBQyx5QkFBeUIsQ0FBQyxVQUFVLElBQUksYUFBYSxDQUFDLElBQUksRUFBRTs0QkFDOUYsTUFBTSxXQUFXLEdBQUcsYUFBb0IsQ0FBQzs0QkFDekMsV0FBVyxDQUFDLElBQUksR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO3lCQUN2RjtxQkFDRjtpQkFDRjthQUNGO1NBQ0Y7UUFFRCxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0lBRUQsZ0JBQXVCLENBQUM7Q0FFekI7QUEvSUQsNEJBK0lDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMnO1xuaW1wb3J0ICogYXMganNvbnNjaGVtYSBmcm9tICdqc29uc2NoZW1hJztcbmltcG9ydCAqIGFzIHNlbXZlciBmcm9tICdzZW12ZXInO1xuaW1wb3J0ICogYXMgYXNzZXRzIGZyb20gJy4vYXNzZXRzJztcbmltcG9ydCAqIGFzIGFzc2VtYmx5IGZyb20gJy4vY2xvdWQtYXNzZW1ibHknO1xuXG4vLyB0aGlzIHByZWZpeCBpcyB1c2VkIGJ5IHRoZSBDTEkgdG8gaWRlbnRpZnkgdGhpcyBzcGVjaWZpYyBlcnJvci5cbi8vIGluIHdoaWNoIGNhc2Ugd2Ugd2FudCB0byBpbnN0cnVjdCB0aGUgdXNlciB0byB1cGdyYWRlIGhpcyBDTEkuXG4vLyBzZWUgZXhlYy50cyNjcmVhdGVBc3NlbWJseVxuZXhwb3J0IGNvbnN0IFZFUlNJT05fTUlTTUFUQ0g6IHN0cmluZyA9ICdDbG91ZCBhc3NlbWJseSBzY2hlbWEgdmVyc2lvbiBtaXNtYXRjaCc7XG5cbi8vIHRzbGludDpkaXNhYmxlOiBuby12YXItcmVxdWlyZXNcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1yZXF1aXJlLWltcG9ydHNcbmNvbnN0IEFTU0VUU19TQ0hFTUEgPSByZXF1aXJlKCcuLi9zY2hlbWEvYXNzZXRzLnNjaGVtYS5qc29uJyk7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tcmVxdWlyZS1pbXBvcnRzXG5jb25zdCBBU1NFTUJMWV9TQ0hFTUEgPSByZXF1aXJlKCcuLi9zY2hlbWEvY2xvdWQtYXNzZW1ibHkuc2NoZW1hLmpzb24nKTtcblxuLyoqXG4gKiBWZXJzaW9uIGlzIHNoYXJlZCBmb3IgYm90aCBtYW5pZmVzdHNcbiAqL1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1yZXF1aXJlLWltcG9ydHNcbmNvbnN0IFNDSEVNQV9WRVJTSU9OID0gcmVxdWlyZSgnLi4vc2NoZW1hL2Nsb3VkLWFzc2VtYmx5LnZlcnNpb24uanNvbicpLnZlcnNpb247XG5cbi8vIHRzbGludDplbmFibGU6IG5vLXZhci1yZXF1aXJlc1xuXG4vKipcbiAqIFByb3RvY29sIHV0aWxpdHkgY2xhc3MuXG4gKi9cbmV4cG9ydCBjbGFzcyBNYW5pZmVzdCB7XG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgYW5kIHNhdmVzIHRoZSBjbG91ZCBhc3NlbWJseSBtYW5pZmVzdCB0byBmaWxlLlxuICAgKlxuICAgKiBAcGFyYW0gbWFuaWZlc3QgLSBtYW5pZmVzdC5cbiAgICogQHBhcmFtIGZpbGVQYXRoIC0gb3V0cHV0IGZpbGUgcGF0aC5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgc2F2ZUFzc2VtYmx5TWFuaWZlc3QobWFuaWZlc3Q6IGFzc2VtYmx5LkFzc2VtYmx5TWFuaWZlc3QsIGZpbGVQYXRoOiBzdHJpbmcpIHtcbiAgICBNYW5pZmVzdC5zYXZlTWFuaWZlc3QobWFuaWZlc3QsIGZpbGVQYXRoLCBBU1NFTUJMWV9TQ0hFTUEpO1xuICB9XG5cbiAgLyoqXG4gICAqIExvYWQgYW5kIHZhbGlkYXRlcyB0aGUgY2xvdWQgYXNzZW1ibHkgbWFuaWZlc3QgZnJvbSBmaWxlLlxuICAgKlxuICAgKiBAcGFyYW0gZmlsZVBhdGggLSBwYXRoIHRvIHRoZSBtYW5pZmVzdCBmaWxlLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBsb2FkQXNzZW1ibHlNYW5pZmVzdChmaWxlUGF0aDogc3RyaW5nKTogYXNzZW1ibHkuQXNzZW1ibHlNYW5pZmVzdCB7XG4gICAgcmV0dXJuIE1hbmlmZXN0LmxvYWRNYW5pZmVzdChmaWxlUGF0aCwgQVNTRU1CTFlfU0NIRU1BLCBvYmogPT4gTWFuaWZlc3QucGF0Y2hTdGFja1RhZ3Mob2JqKSk7XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIGFuZCBzYXZlcyB0aGUgYXNzZXQgbWFuaWZlc3QgdG8gZmlsZS5cbiAgICpcbiAgICogQHBhcmFtIG1hbmlmZXN0IC0gbWFuaWZlc3QuXG4gICAqIEBwYXJhbSBmaWxlUGF0aCAtIG91dHB1dCBmaWxlIHBhdGguXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHNhdmVBc3NldE1hbmlmZXN0KG1hbmlmZXN0OiBhc3NldHMuQXNzZXRNYW5pZmVzdCwgZmlsZVBhdGg6IHN0cmluZykge1xuICAgIE1hbmlmZXN0LnNhdmVNYW5pZmVzdChtYW5pZmVzdCwgZmlsZVBhdGgsIEFTU0VUU19TQ0hFTUEpO1xuICB9XG5cbiAgLyoqXG4gICAqIExvYWQgYW5kIHZhbGlkYXRlcyB0aGUgYXNzZXQgbWFuaWZlc3QgZnJvbSBmaWxlLlxuICAgKlxuICAgKiBAcGFyYW0gZmlsZVBhdGggLSBwYXRoIHRvIHRoZSBtYW5pZmVzdCBmaWxlLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBsb2FkQXNzZXRNYW5pZmVzdChmaWxlUGF0aDogc3RyaW5nKTogYXNzZXRzLkFzc2V0TWFuaWZlc3Qge1xuICAgIHJldHVybiB0aGlzLmxvYWRNYW5pZmVzdChmaWxlUGF0aCwgQVNTRVRTX1NDSEVNQSk7XG4gIH1cblxuICAvKipcbiAgICogRmV0Y2ggdGhlIGN1cnJlbnQgc2NoZW1hIHZlcnNpb24gbnVtYmVyLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyB2ZXJzaW9uKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIFNDSEVNQV9WRVJTSU9OO1xuICB9XG5cbiAgLyoqXG4gICAqIERlcHJlY2F0ZWRcbiAgICogQGRlcHJlY2F0ZWQgdXNlIGBzYXZlQXNzZW1ibHlNYW5pZmVzdCgpYFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBzYXZlKG1hbmlmZXN0OiBhc3NlbWJseS5Bc3NlbWJseU1hbmlmZXN0LCBmaWxlUGF0aDogc3RyaW5nKSB7IHJldHVybiB0aGlzLnNhdmVBc3NlbWJseU1hbmlmZXN0KG1hbmlmZXN0LCBmaWxlUGF0aCk7IH1cblxuICAvKipcbiAgICogRGVwcmVjYXRlZFxuICAgKiBAZGVwcmVjYXRlZCB1c2UgYGxvYWRBc3NlbWJseU1hbmlmZXN0KClgXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGxvYWQoZmlsZVBhdGg6IHN0cmluZyk6IGFzc2VtYmx5LkFzc2VtYmx5TWFuaWZlc3QgeyByZXR1cm4gdGhpcy5sb2FkQXNzZW1ibHlNYW5pZmVzdChmaWxlUGF0aCk7IH1cblxuICBwcml2YXRlIHN0YXRpYyB2YWxpZGF0ZShtYW5pZmVzdDogeyB2ZXJzaW9uOiBzdHJpbmcgfSwgc2NoZW1hOiBqc29uc2NoZW1hLlNjaGVtYSkge1xuXG4gICAgZnVuY3Rpb24gcGFyc2VWZXJzaW9uKHZlcnNpb246IHN0cmluZykge1xuICAgICAgY29uc3QgdmVyID0gc2VtdmVyLnZhbGlkKHZlcnNpb24pO1xuICAgICAgaWYgKCF2ZXIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHNlbXZlciBzdHJpbmc6IFwiJHt2ZXJzaW9ufVwiYCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdmVyO1xuICAgIH1cblxuICAgIGNvbnN0IG1heFN1cHBvcnRlZCA9IHBhcnNlVmVyc2lvbihNYW5pZmVzdC52ZXJzaW9uKCkpO1xuICAgIGNvbnN0IGFjdHVhbCA9IHBhcnNlVmVyc2lvbihtYW5pZmVzdC52ZXJzaW9uKTtcblxuICAgIC8vIGZpcnN0IHZhbGlkYXRlIHRoZSB2ZXJzaW9uIHNob3VsZCBiZSBhY2NlcHRlZC5cbiAgICBpZiAoc2VtdmVyLmd0KGFjdHVhbCwgbWF4U3VwcG9ydGVkKSkge1xuICAgICAgLy8gd2UgdXNlIGEgd2VsbCBrbm93biBlcnJvciBwcmVmaXggc28gdGhhdCB0aGUgQ0xJIGNhbiBpZGVudGlmeSB0aGlzIHNwZWNpZmljIGVycm9yXG4gICAgICAvLyBhbmQgcHJpbnQgc29tZSBtb3JlIGNvbnRleHQgdG8gdGhlIHVzZXIuXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7VkVSU0lPTl9NSVNNQVRDSH06IE1heGltdW0gc2NoZW1hIHZlcnNpb24gc3VwcG9ydGVkIGlzICR7bWF4U3VwcG9ydGVkfSwgYnV0IGZvdW5kICR7YWN0dWFsfWApO1xuICAgIH1cblxuICAgIC8vIG5vdyB2YWxpZGF0ZSB0aGUgZm9ybWF0IGlzIGdvb2QuXG4gICAgY29uc3QgdmFsaWRhdG9yID0gbmV3IGpzb25zY2hlbWEuVmFsaWRhdG9yKCk7XG4gICAgY29uc3QgcmVzdWx0ID0gdmFsaWRhdG9yLnZhbGlkYXRlKG1hbmlmZXN0LCBzY2hlbWEsIHtcblxuICAgICAgLy8gZG9lcyBleGlzdCBidXQgaXMgbm90IGluIHRoZSBUeXBlU2NyaXB0IGRlZmluaXRpb25zXG4gICAgICBuZXN0ZWRFcnJvcnM6IHRydWUsXG5cbiAgICAgIGFsbG93VW5rbm93bkF0dHJpYnV0ZXM6IGZhbHNlLFxuXG4gICAgfSBhcyBhbnkpO1xuICAgIGlmICghcmVzdWx0LnZhbGlkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgYXNzZW1ibHkgbWFuaWZlc3Q6XFxuJHtyZXN1bHR9YCk7XG4gICAgfVxuXG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBzYXZlTWFuaWZlc3QobWFuaWZlc3Q6IGFueSwgZmlsZVBhdGg6IHN0cmluZywgc2NoZW1hOiBqc29uc2NoZW1hLlNjaGVtYSkge1xuICAgIGNvbnN0IHdpdGhWZXJzaW9uID0geyAuLi5tYW5pZmVzdCwgdmVyc2lvbjogTWFuaWZlc3QudmVyc2lvbigpIH07XG4gICAgTWFuaWZlc3QudmFsaWRhdGUod2l0aFZlcnNpb24sIHNjaGVtYSk7XG4gICAgZnMud3JpdGVGaWxlU3luYyhmaWxlUGF0aCwgSlNPTi5zdHJpbmdpZnkod2l0aFZlcnNpb24sIHVuZGVmaW5lZCwgMikpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgbG9hZE1hbmlmZXN0KGZpbGVQYXRoOiBzdHJpbmcsIHNjaGVtYToganNvbnNjaGVtYS5TY2hlbWEsIHByZXByb2Nlc3M/OiAob2JqOiBhbnkpID0+IGFueSkge1xuICAgIGxldCBvYmogPSBKU09OLnBhcnNlKGZzLnJlYWRGaWxlU3luYyhmaWxlUGF0aCwgeyBlbmNvZGluZzogJ3V0Zi04JyB9KSk7XG4gICAgaWYgKHByZXByb2Nlc3MpIHtcbiAgICAgIG9iaiA9IHByZXByb2Nlc3Mob2JqKTtcbiAgICB9XG4gICAgTWFuaWZlc3QudmFsaWRhdGUob2JqLCBzY2hlbWEpO1xuICAgIHJldHVybiBvYmo7XG4gIH1cblxuICAvKipcbiAgICogVGhpcyByZXF1aXJlcyBzb21lIGV4cGxhaW5pbmcuLi5cbiAgICpcbiAgICogV2UgcHJldmlvdXNseSB1c2VkIGB7IEtleSwgVmFsdWUgfWAgZm9yIHRoZSBvYmplY3QgdGhhdCByZXByZXNlbnRzIGEgc3RhY2sgdGFnLiAoTm90aWNlIHRoZSBjYXNpbmcpXG4gICAqIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYXdzLWNkay9ibG9iL3YxLjI3LjAvcGFja2FnZXMvYXdzLWNkay9saWIvYXBpL2N4YXBwL3N0YWNrcy50cyNMNDI3LlxuICAgKlxuICAgKiBXaGVuIHRoYXQgb2JqZWN0IG1vdmVkIHRvIHRoaXMgcGFja2FnZSwgaXQgaGFkIHRvIGJlIEpTSUkgY29tcGxpYW50LCB3aGljaCBtZWFudCB0aGUgcHJvcGVydHlcbiAgICogbmFtZXMgbXVzdCBiZSBgY2FtZWxDYXNlZGAsIGFuZCBub3QgYFBhc2NhbENhc2VkYC4gVGhpcyBtZWFudCBpdCBubyBsb25nZXIgbWF0Y2hlcyB0aGUgc3RydWN0dXJlIGluIHRoZSBgbWFuaWZlc3QuanNvbmAgZmlsZS5cbiAgICogSW4gb3JkZXIgdG8gc3VwcG9ydCBjdXJyZW50IG1hbmlmZXN0IGZpbGVzLCB3ZSBoYXZlIHRvIHRyYW5zbGF0ZSB0aGUgYFBhc2NhbENhc2VkYCByZXByZXNlbnRhdGlvbiB0byB0aGUgbmV3IGBjYW1lbENhc2VkYCBvbmUuXG4gICAqXG4gICAqIE5vdGUgdGhhdCB0aGUgc2VyaWFsaXphdGlvbiBpdHNlbGYgc3RpbGwgd3JpdGVzIGBQYXNjYWxDYXNlZGAgYmVjYXVzZSBpdCByZWxhdGVzIHRvIGhvdyBDbG91ZEZvcm1hdGlvbiBleHBlY3RzIGl0LlxuICAgKlxuICAgKiBJZGVhbGx5LCB3ZSB3b3VsZCBzdGFydCB3cml0aW5nIHRoZSBgY2FtZWxDYXNlZGAgYW5kIHRyYW5zbGF0ZSB0byBob3cgQ2xvdWRGb3JtYXRpb24gZXhwZWN0cyBpdCB3aGVuIG5lZWRlZC4gQnV0IHRoaXMgcmVxdWlyZXMgbmFzdHlcbiAgICogYmFja3dhcmRzLWNvbXBhdGliaWxpdHkgY29kZSBhbmQgaXQganVzdCBkb2Vzbid0IHNlZW0gdG8gYmUgd29ydGggdGhlIGVmZm9ydC5cbiAgICovXG4gIHByaXZhdGUgc3RhdGljIHBhdGNoU3RhY2tUYWdzKG1hbmlmZXN0OiBhc3NlbWJseS5Bc3NlbWJseU1hbmlmZXN0KSB7XG4gICAgZm9yIChjb25zdCBhcnRpZmFjdCBvZiBPYmplY3QudmFsdWVzKG1hbmlmZXN0LmFydGlmYWN0cyB8fCBbXSkpIHtcbiAgICAgIGlmIChhcnRpZmFjdC50eXBlID09PSBhc3NlbWJseS5BcnRpZmFjdFR5cGUuQVdTX0NMT1VERk9STUFUSU9OX1NUQUNLKSB7XG4gICAgICAgIGZvciAoY29uc3QgbWV0YWRhdGFFbnRyaWVzIG9mIE9iamVjdC52YWx1ZXMoYXJ0aWZhY3QubWV0YWRhdGEgfHwgW10pKSB7XG4gICAgICAgICAgZm9yIChjb25zdCBtZXRhZGF0YUVudHJ5IG9mIG1ldGFkYXRhRW50cmllcykge1xuICAgICAgICAgICAgaWYgKG1ldGFkYXRhRW50cnkudHlwZSA9PT0gYXNzZW1ibHkuQXJ0aWZhY3RNZXRhZGF0YUVudHJ5VHlwZS5TVEFDS19UQUdTICYmIG1ldGFkYXRhRW50cnkuZGF0YSkge1xuICAgICAgICAgICAgICBjb25zdCBtZXRhZGF0YUFueSA9IG1ldGFkYXRhRW50cnkgYXMgYW55O1xuICAgICAgICAgICAgICBtZXRhZGF0YUFueS5kYXRhID0gbWV0YWRhdGFBbnkuZGF0YS5tYXAoKHQ6IGFueSkgPT4gKHsga2V5OiB0LktleSwgdmFsdWU6IHQuVmFsdWUgfSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBtYW5pZmVzdDtcbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7fVxuXG59XG4iXX0=
{
"name": "@aws-cdk/cloud-assembly-schema",
"version": "1.46.0",
"version": "1.47.0",
"description": "Cloud Assembly Schema",

@@ -52,6 +52,6 @@ "main": "lib/index.js",

"@types/mock-fs": "^4.10.0",
"cdk-build-tools": "1.46.0",
"cdk-build-tools": "1.47.0",
"jest": "^25.5.4",
"mock-fs": "^4.12.0",
"pkglint": "1.46.0",
"pkglint": "1.47.0",
"typescript-json-schema": "^0.42.0"

@@ -58,0 +58,0 @@ },

import * as tjs from 'typescript-json-schema';
export declare function generate(out: string, shouldBump: boolean): tjs.Definition | null;
export declare const SCHEMAS: string[];
export declare function update(): void;
export declare function bump(): void;
/**
* Generates a schema from typescript types.
* @returns JSON schema
* @param schemaName the schema to generate
* @param shouldBump writes a new version of the schema and bumps the major version
*/
export declare function generateSchema(schemaName: string, saveToFile?: boolean): tjs.Definition | null;
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.generate = void 0;
exports.generateSchema = exports.bump = exports.update = exports.SCHEMAS = void 0;
const fs = require("fs");

@@ -13,13 +13,37 @@ const path = require("path");

}
/**
* Where schemas are committed.
*/
const SCHEMA_DIR = path.resolve(__dirname, '../schema');
const SCHEMA_DEFINITIONS = {
'assets': { rootTypeName: 'AssetManifest' },
'cloud-assembly': { rootTypeName: 'AssemblyManifest' },
};
exports.SCHEMAS = Object.keys(SCHEMA_DEFINITIONS);
function update() {
for (const s of exports.SCHEMAS) {
generateSchema(s);
}
bump();
}
exports.update = update;
function bump() {
const metadataPath = '../schema/cloud-assembly.version.json';
const versionFile = path.join(SCHEMA_DIR, 'cloud-assembly.version.json');
// eslint-disable-next-line @typescript-eslint/no-require-imports
const metadata = require(metadataPath);
const metadata = require(versionFile);
const oldVersion = metadata.version;
const newVersion = semver.inc(oldVersion, 'major');
log(`Updating schema version: ${oldVersion} -> ${newVersion}`);
const out = path.join(__dirname, metadataPath);
fs.writeFileSync(out, JSON.stringify({ version: newVersion }));
fs.writeFileSync(versionFile, JSON.stringify({ version: newVersion }));
}
function generate(out, shouldBump) {
exports.bump = bump;
/**
* Generates a schema from typescript types.
* @returns JSON schema
* @param schemaName the schema to generate
* @param shouldBump writes a new version of the schema and bumps the major version
*/
function generateSchema(schemaName, saveToFile = true) {
const spec = SCHEMA_DEFINITIONS[schemaName];
const out = saveToFile ? path.join(SCHEMA_DIR, `${schemaName}.schema.json`) : '';
const settings = {

@@ -35,9 +59,6 @@ required: true,

};
const program = tjs.getProgramFromFiles([path.join(__dirname, '../lib/schema.d.ts')], compilerOptions);
const schema = tjs.generateSchema(program, 'AssemblyManifest', settings);
const program = tjs.getProgramFromFiles([path.join(__dirname, '../lib/index.d.ts')], compilerOptions);
const schema = tjs.generateSchema(program, spec.rootTypeName, settings);
augmentDescription(schema);
addAnyMetadataEntry(schema);
if (shouldBump) {
bump();
}
if (out) {

@@ -49,3 +70,3 @@ log(`Generating schema to ${out}`);

}
exports.generate = generate;
exports.generateSchema = generateSchema;
/**

@@ -88,4 +109,5 @@ * Remove 'default' from the schema since its generated

function addAnyMetadataEntry(schema) {
schema.definitions.MetadataEntry.properties.data.anyOf.push({ description: 'Free form data.' });
var _a;
(_a = schema.definitions.MetadataEntry) === null || _a === void 0 ? void 0 : _a.properties.data.anyOf.push({ description: 'Free form data.' });
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBkYXRlLXNjaGVtYS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInVwZGF0ZS1zY2hlbWEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseUJBQXlCO0FBQ3pCLDZCQUE2QjtBQUM3QixpQ0FBaUM7QUFDakMsNkRBQTZEO0FBQzdELDhDQUE4QztBQUU5QyxTQUFTLEdBQUcsQ0FBQyxPQUFlO0lBQzFCLHNDQUFzQztJQUN0QyxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ3ZCLENBQUM7QUFFRCxTQUFTLElBQUk7SUFFWCxNQUFNLFlBQVksR0FBRyx1Q0FBdUMsQ0FBQztJQUU3RCxpRUFBaUU7SUFDakUsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBRXZDLE1BQU0sVUFBVSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUM7SUFDcEMsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFFbkQsR0FBRyxDQUFDLDRCQUE0QixVQUFVLE9BQU8sVUFBVSxFQUFFLENBQUMsQ0FBQztJQUUvRCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxZQUFZLENBQUMsQ0FBQztJQUMvQyxFQUFFLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUMsT0FBTyxFQUFFLFVBQVUsRUFBQyxDQUFDLENBQUMsQ0FBQztBQUUvRCxDQUFDO0FBRUQsU0FBZ0IsUUFBUSxDQUFDLEdBQVcsRUFBRSxVQUFtQjtJQUV2RCxNQUFNLFFBQVEsR0FBRztRQUNmLFFBQVEsRUFBRSxJQUFJO1FBQ2QsR0FBRyxFQUFFLElBQUk7UUFDVCxNQUFNLEVBQUUsSUFBSTtRQUNaLFlBQVksRUFBRSxLQUFLO1FBQ25CLEdBQUc7S0FDSixDQUFDO0lBRUYsTUFBTSxlQUFlLEdBQUc7UUFDdEIsZ0JBQWdCLEVBQUUsSUFBSTtLQUN2QixDQUFDO0lBRUYsTUFBTSxPQUFPLEdBQUcsR0FBRyxDQUFDLG1CQUFtQixDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsb0JBQW9CLENBQUMsQ0FBQyxFQUFFLGVBQWUsQ0FBQyxDQUFDO0lBQ3ZHLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBRXpFLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzNCLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBRTVCLElBQUksVUFBVSxFQUFFO1FBQ2QsSUFBSSxFQUFFLENBQUM7S0FDUjtJQUVELElBQUksR0FBRyxFQUFFO1FBQ1AsR0FBRyxDQUFDLHdCQUF3QixHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQ25DLEVBQUUsQ0FBQyxhQUFhLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQ3hEO0lBRUQsT0FBTyxNQUFNLENBQUM7QUFFaEIsQ0FBQztBQS9CRCw0QkErQkM7QUFFRDs7Ozs7OztHQU9HO0FBQ0gsU0FBUyxrQkFBa0IsQ0FBQyxNQUFXO0lBRXJDLFNBQVMsUUFBUSxDQUFDLENBQU07UUFDdEIsS0FBSyxNQUFNLElBQUksSUFBSSxDQUFDLEVBQUU7WUFFcEIsSUFBSSxJQUFJLEtBQUssYUFBYSxJQUFJLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLFFBQVEsRUFBRTtnQkFFekQsTUFBTSxXQUFXLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUM1QixNQUFNLFlBQVksR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDO2dCQUUvQixJQUFJLENBQUMsWUFBWSxFQUFFO29CQUNqQix3Q0FBd0M7b0JBQ3hDLE9BQU87b0JBQ1AsU0FBUztpQkFDVjtnQkFFRCxNQUFNLHNCQUFzQixHQUFHLEdBQUcsV0FBVyxhQUFhLFlBQVksR0FBRyxDQUFDO2dCQUUxRSxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUM7Z0JBQ2pCLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxzQkFBc0IsQ0FBQzthQUVsQztpQkFBTSxJQUFJLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLFFBQVEsRUFBRTtnQkFDdEMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO2FBQ25CO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBRW5CLENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILFNBQVMsbUJBQW1CLENBQUMsTUFBVztJQUN0QyxNQUFNLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBQyxXQUFXLEVBQUUsaUJBQWlCLEVBQUMsQ0FBQyxDQUFDO0FBQ2hHLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBmcyBmcm9tICdmcyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0ICogYXMgc2VtdmVyIGZyb20gJ3NlbXZlcic7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzXG5pbXBvcnQgKiBhcyB0anMgZnJvbSAndHlwZXNjcmlwdC1qc29uLXNjaGVtYSc7XG5cbmZ1bmN0aW9uIGxvZyhtZXNzYWdlOiBzdHJpbmcpIHtcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWNvbnNvbGVcbiAgY29uc29sZS5sb2cobWVzc2FnZSk7XG59XG5cbmZ1bmN0aW9uIGJ1bXAoKSB7XG5cbiAgY29uc3QgbWV0YWRhdGFQYXRoID0gJy4uL3NjaGVtYS9jbG91ZC1hc3NlbWJseS52ZXJzaW9uLmpzb24nO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tcmVxdWlyZS1pbXBvcnRzXG4gIGNvbnN0IG1ldGFkYXRhID0gcmVxdWlyZShtZXRhZGF0YVBhdGgpO1xuXG4gIGNvbnN0IG9sZFZlcnNpb24gPSBtZXRhZGF0YS52ZXJzaW9uO1xuICBjb25zdCBuZXdWZXJzaW9uID0gc2VtdmVyLmluYyhvbGRWZXJzaW9uLCAnbWFqb3InKTtcblxuICBsb2coYFVwZGF0aW5nIHNjaGVtYSB2ZXJzaW9uOiAke29sZFZlcnNpb259IC0+ICR7bmV3VmVyc2lvbn1gKTtcblxuICBjb25zdCBvdXQgPSBwYXRoLmpvaW4oX19kaXJuYW1lLCBtZXRhZGF0YVBhdGgpO1xuICBmcy53cml0ZUZpbGVTeW5jKG91dCwgSlNPTi5zdHJpbmdpZnkoe3ZlcnNpb246IG5ld1ZlcnNpb259KSk7XG5cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlKG91dDogc3RyaW5nLCBzaG91bGRCdW1wOiBib29sZWFuKSB7XG5cbiAgY29uc3Qgc2V0dGluZ3MgPSB7XG4gICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgcmVmOiB0cnVlLFxuICAgIHRvcFJlZjogdHJ1ZSxcbiAgICBub0V4dHJhUHJvcHM6IGZhbHNlLFxuICAgIG91dCxcbiAgfTtcblxuICBjb25zdCBjb21waWxlck9wdGlvbnMgPSB7XG4gICAgc3RyaWN0TnVsbENoZWNrczogdHJ1ZSxcbiAgfTtcblxuICBjb25zdCBwcm9ncmFtID0gdGpzLmdldFByb2dyYW1Gcm9tRmlsZXMoW3BhdGguam9pbihfX2Rpcm5hbWUsICcuLi9saWIvc2NoZW1hLmQudHMnKV0sIGNvbXBpbGVyT3B0aW9ucyk7XG4gIGNvbnN0IHNjaGVtYSA9IHRqcy5nZW5lcmF0ZVNjaGVtYShwcm9ncmFtLCAnQXNzZW1ibHlNYW5pZmVzdCcsIHNldHRpbmdzKTtcblxuICBhdWdtZW50RGVzY3JpcHRpb24oc2NoZW1hKTtcbiAgYWRkQW55TWV0YWRhdGFFbnRyeShzY2hlbWEpO1xuXG4gIGlmIChzaG91bGRCdW1wKSB7XG4gICAgYnVtcCgpO1xuICB9XG5cbiAgaWYgKG91dCkge1xuICAgIGxvZyhgR2VuZXJhdGluZyBzY2hlbWEgdG8gJHtvdXR9YCk7XG4gICAgZnMud3JpdGVGaWxlU3luYyhvdXQsIEpTT04uc3RyaW5naWZ5KHNjaGVtYSwgbnVsbCwgNCkpO1xuICB9XG5cbiAgcmV0dXJuIHNjaGVtYTtcblxufVxuXG4vKipcbiAqIFJlbW92ZSAnZGVmYXVsdCcgZnJvbSB0aGUgc2NoZW1hIHNpbmNlIGl0cyBnZW5lcmF0ZWRcbiAqIGZyb20gdGhlIHRzZG9jcywgd2hpY2ggYXJlIG5vdCBuZWNlc3NhcmlseSBhY3R1YWwgdmFsdWVzLFxuICogYnV0IHJhdGhlciBkZXNjcmlwdGl2ZSBiZWhhdmlvci5cbiAqXG4gKiBUbyBrZWVwIHRoaXMgaW5mb3JhbXRpb24gaW4gdGhlIHNjaGVtYSwgd2UgYXBwZW5kIGl0IHRvIHRoZVxuICogJ2Rlc2NyaXB0aW9uJyBvZiB0aGUgcHJvcGVydHkuXG4gKi9cbmZ1bmN0aW9uIGF1Z21lbnREZXNjcmlwdGlvbihzY2hlbWE6IGFueSkge1xuXG4gIGZ1bmN0aW9uIF9yZWN1cnNlKG86IGFueSkge1xuICAgIGZvciAoY29uc3QgcHJvcCBpbiBvKSB7XG5cbiAgICAgIGlmIChwcm9wID09PSAnZGVzY3JpcHRpb24nICYmIHR5cGVvZiBvW3Byb3BdID09PSAnc3RyaW5nJykge1xuXG4gICAgICAgIGNvbnN0IGRlc2NyaXB0aW9uID0gb1twcm9wXTtcbiAgICAgICAgY29uc3QgZGVmYXVsdFZhbHVlID0gby5kZWZhdWx0O1xuXG4gICAgICAgIGlmICghZGVmYXVsdFZhbHVlKSB7XG4gICAgICAgICAgLy8gcHJvcGVydHkgZG9lc24ndCBoYXZlIGEgZGVmYXVsdCB2YWx1ZVxuICAgICAgICAgIC8vIHNraXBcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGRlc2NyaXB0aW9uV2l0aERlZmF1bHQgPSBgJHtkZXNjcmlwdGlvbn0gKERlZmF1bHQgJHtkZWZhdWx0VmFsdWV9KWA7XG5cbiAgICAgICAgZGVsZXRlIG8uZGVmYXVsdDtcbiAgICAgICAgb1twcm9wXSA9IGRlc2NyaXB0aW9uV2l0aERlZmF1bHQ7XG5cbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIG9bcHJvcF0gPT09ICdvYmplY3QnKSB7XG4gICAgICAgIF9yZWN1cnNlKG9bcHJvcF0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIF9yZWN1cnNlKHNjaGVtYSk7XG5cbn1cblxuLyoqXG4gKiBQYXRjaCB0aGUgcHJvcGVydGllcyBvZiBNZXRhZGF0YUVudHJ5IHRvIGFsbG93XG4gKiBzcGVjaWZ5aW5nIGFueSBmcmVlIGZvcm0gZGF0YS4gVGhpcyBpcyBuZWVkZWQgc2luY2Ugc291cmNlXG4gKiBjb2RlIGRvZXNuJ3QgYWxsb3cgdGhpcyBpbiBvcmRlciB0byBlbmZvcmNlIHN0cmljdGVyIGpzaWlcbiAqIGNvbXBhdGliaWxpdHkgY2hlY2tzLlxuICovXG5mdW5jdGlvbiBhZGRBbnlNZXRhZGF0YUVudHJ5KHNjaGVtYTogYW55KSB7XG4gIHNjaGVtYS5kZWZpbml0aW9ucy5NZXRhZGF0YUVudHJ5LnByb3BlcnRpZXMuZGF0YS5hbnlPZi5wdXNoKHtkZXNjcmlwdGlvbjogJ0ZyZWUgZm9ybSBkYXRhLid9KTtcbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBkYXRlLXNjaGVtYS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInVwZGF0ZS1zY2hlbWEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseUJBQXlCO0FBQ3pCLDZCQUE2QjtBQUM3QixpQ0FBaUM7QUFDakMsNkRBQTZEO0FBQzdELDhDQUE4QztBQUU5QyxTQUFTLEdBQUcsQ0FBQyxPQUFlO0lBQzFCLHNDQUFzQztJQUN0QyxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ3ZCLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0FBRXhELE1BQU0sa0JBQWtCLEdBQXVEO0lBQzdFLFFBQVEsRUFBRSxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUU7SUFDM0MsZ0JBQWdCLEVBQUUsRUFBRSxZQUFZLEVBQUUsa0JBQWtCLEVBQUU7Q0FDdkQsQ0FBQztBQUVXLFFBQUEsT0FBTyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztBQUV2RCxTQUFnQixNQUFNO0lBQ3BCLEtBQUssTUFBTSxDQUFDLElBQUksZUFBTyxFQUFFO1FBQ3ZCLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUNuQjtJQUVELElBQUksRUFBRSxDQUFDO0FBQ1QsQ0FBQztBQU5ELHdCQU1DO0FBRUQsU0FBZ0IsSUFBSTtJQUNsQixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSw2QkFBNkIsQ0FBQyxDQUFDO0lBRXpFLGlFQUFpRTtJQUNqRSxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7SUFFdEMsTUFBTSxVQUFVLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQztJQUNwQyxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FB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LEVBQUMsV0FBVyxFQUFFLGlCQUFpQixFQUFDLEVBQUU7QUFDakcsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgKiBhcyBzZW12ZXIgZnJvbSAnc2VtdmVyJztcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXNcbmltcG9ydCAqIGFzIHRqcyBmcm9tICd0eXBlc2NyaXB0LWpzb24tc2NoZW1hJztcblxuZnVuY3Rpb24gbG9nKG1lc3NhZ2U6IHN0cmluZykge1xuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tY29uc29sZVxuICBjb25zb2xlLmxvZyhtZXNzYWdlKTtcbn1cblxuLyoqXG4gKiBXaGVyZSBzY2hlbWFzIGFyZSBjb21taXR0ZWQuXG4gKi9cbmNvbnN0IFNDSEVNQV9ESVIgPSBwYXRoLnJlc29sdmUoX19kaXJuYW1lLCAnLi4vc2NoZW1hJyk7XG5cbmNvbnN0IFNDSEVNQV9ERUZJTklUSU9OUzogeyBbc2NoZW1hTmFtZTogc3RyaW5nXTogeyByb290VHlwZU5hbWU6IHN0cmluZyB9IH0gPSB7XG4gICdhc3NldHMnOiB7IHJvb3RUeXBlTmFtZTogJ0Fzc2V0TWFuaWZlc3QnIH0sXG4gICdjbG91ZC1hc3NlbWJseSc6IHsgcm9vdFR5cGVOYW1lOiAnQXNzZW1ibHlNYW5pZmVzdCcgfSxcbn07XG5cbmV4cG9ydCBjb25zdCBTQ0hFTUFTID0gT2JqZWN0LmtleXMoU0NIRU1BX0RFRklOSVRJT05TKTtcblxuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZSgpIHtcbiAgZm9yIChjb25zdCBzIG9mIFNDSEVNQVMpIHtcbiAgICBnZW5lcmF0ZVNjaGVtYShzKTtcbiAgfVxuXG4gIGJ1bXAoKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJ1bXAoKSB7XG4gIGNvbnN0IHZlcnNpb25GaWxlID0gcGF0aC5qb2luKFNDSEVNQV9ESVIsICdjbG91ZC1hc3NlbWJseS52ZXJzaW9uLmpzb24nKTtcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXJlcXVpcmUtaW1wb3J0c1xuICBjb25zdCBtZXRhZGF0YSA9IHJlcXVpcmUodmVyc2lvbkZpbGUpO1xuXG4gIGNvbnN0IG9sZFZlcnNpb24gPSBtZXRhZGF0YS52ZXJzaW9uO1xuICBjb25zdCBuZXdWZXJzaW9uID0gc2VtdmVyLmluYyhvbGRWZXJzaW9uLCAnbWFqb3InKTtcblxuICBsb2coYFVwZGF0aW5nIHNjaGVtYSB2ZXJzaW9uOiAke29sZFZlcnNpb259IC0+ICR7bmV3VmVyc2lvbn1gKTtcbiAgZnMud3JpdGVGaWxlU3luYyh2ZXJzaW9uRmlsZSwgSlNPTi5zdHJpbmdpZnkoe3ZlcnNpb246IG5ld1ZlcnNpb259KSk7XG59XG5cbi8qKlxuICogR2VuZXJhdGVzIGEgc2NoZW1hIGZyb20gdHlwZXNjcmlwdCB0eXBlcy5cbiAqIEByZXR1cm5zIEpTT04gc2NoZW1hXG4gKiBAcGFyYW0gc2NoZW1hTmFtZSB0aGUgc2NoZW1hIHRvIGdlbmVyYXRlXG4gKiBAcGFyYW0gc2hvdWxkQnVtcCB3cml0ZXMgYSBuZXcgdmVyc2lvbiBvZiB0aGUgc2NoZW1hIGFuZCBidW1wcyB0aGUgbWFqb3IgdmVyc2lvblxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVTY2hlbWEoc2NoZW1hTmFtZTogc3RyaW5nLCBzYXZlVG9GaWxlOiBib29sZWFuID0gdHJ1ZSkge1xuICBjb25zdCBzcGVjID0gU0NIRU1BX0RFRklOSVRJT05TW3NjaGVtYU5hbWVdO1xuICBjb25zdCBvdXQgPSBzYXZlVG9GaWxlID8gcGF0aC5qb2luKFNDSEVNQV9ESVIsIGAke3NjaGVtYU5hbWV9LnNjaGVtYS5qc29uYCkgOiAnJztcblxuICBjb25zdCBzZXR0aW5nczogUGFydGlhbDx0anMuQXJncz4gPSB7XG4gICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgcmVmOiB0cnVlLFxuICAgIHRvcFJlZjogdHJ1ZSxcbiAgICBub0V4dHJhUHJvcHM6IGZhbHNlLFxuICAgIG91dCxcbiAgfTtcblxuICBjb25zdCBjb21waWxlck9wdGlvbnMgPSB7XG4gICAgc3RyaWN0TnVsbENoZWNrczogdHJ1ZSxcbiAgfTtcblxuICBjb25zdCBwcm9ncmFtID0gdGpzLmdldFByb2dyYW1Gcm9tRmlsZXMoWyBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4vbGliL2luZGV4LmQudHMnKSBdLCBjb21waWxlck9wdGlvbnMpO1xuICBjb25zdCBzY2hlbWEgPSB0anMuZ2VuZXJhdGVTY2hlbWEocHJvZ3JhbSwgc3BlYy5yb290VHlwZU5hbWUsIHNldHRpbmdzKTtcblxuICBhdWdtZW50RGVzY3JpcHRpb24oc2NoZW1hKTtcbiAgYWRkQW55TWV0YWRhdGFFbnRyeShzY2hlbWEpO1xuXG4gIGlmIChvdXQpIHtcbiAgICBsb2coYEdlbmVyYXRpbmcgc2NoZW1hIHRvICR7b3V0fWApO1xuICAgIGZzLndyaXRlRmlsZVN5bmMob3V0LCBKU09OLnN0cmluZ2lmeShzY2hlbWEsIG51bGwsIDQpKTtcbiAgfVxuXG4gIHJldHVybiBzY2hlbWE7XG59XG5cbi8qKlxuICogUmVtb3ZlICdkZWZhdWx0JyBmcm9tIHRoZSBzY2hlbWEgc2luY2UgaXRzIGdlbmVyYXRlZFxuICogZnJvbSB0aGUgdHNkb2NzLCB3aGljaCBhcmUgbm90IG5lY2Vzc2FyaWx5IGFjdHVhbCB2YWx1ZXMsXG4gKiBidXQgcmF0aGVyIGRlc2NyaXB0aXZlIGJlaGF2aW9yLlxuICpcbiAqIFRvIGtlZXAgdGhpcyBpbmZvcmFtdGlvbiBpbiB0aGUgc2NoZW1hLCB3ZSBhcHBlbmQgaXQgdG8gdGhlXG4gKiAnZGVzY3JpcHRpb24nIG9mIHRoZSBwcm9wZXJ0eS5cbiAqL1xuZnVuY3Rpb24gYXVnbWVudERlc2NyaXB0aW9uKHNjaGVtYTogYW55KSB7XG5cbiAgZnVuY3Rpb24gX3JlY3Vyc2UobzogYW55KSB7XG4gICAgZm9yIChjb25zdCBwcm9wIGluIG8pIHtcblxuICAgICAgaWYgKHByb3AgPT09ICdkZXNjcmlwdGlvbicgJiYgdHlwZW9mIG9bcHJvcF0gPT09ICdzdHJpbmcnKSB7XG5cbiAgICAgICAgY29uc3QgZGVzY3JpcHRpb24gPSBvW3Byb3BdO1xuICAgICAgICBjb25zdCBkZWZhdWx0VmFsdWUgPSBvLmRlZmF1bHQ7XG5cbiAgICAgICAgaWYgKCFkZWZhdWx0VmFsdWUpIHtcbiAgICAgICAgICAvLyBwcm9wZXJ0eSBkb2Vzbid0IGhhdmUgYSBkZWZhdWx0IHZhbHVlXG4gICAgICAgICAgLy8gc2tpcFxuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZGVzY3JpcHRpb25XaXRoRGVmYXVsdCA9IGAke2Rlc2NyaXB0aW9ufSAoRGVmYXVsdCAke2RlZmF1bHRWYWx1ZX0pYDtcblxuICAgICAgICBkZWxldGUgby5kZWZhdWx0O1xuICAgICAgICBvW3Byb3BdID0gZGVzY3JpcHRpb25XaXRoRGVmYXVsdDtcblxuICAgICAgfSBlbHNlIGlmICh0eXBlb2Ygb1twcm9wXSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgX3JlY3Vyc2Uob1twcm9wXSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgX3JlY3Vyc2Uoc2NoZW1hKTtcblxufVxuXG4vKipcbiAqIFBhdGNoIHRoZSBwcm9wZXJ0aWVzIG9mIE1ldGFkYXRhRW50cnkgdG8gYWxsb3dcbiAqIHNwZWNpZnlpbmcgYW55IGZyZWUgZm9ybSBkYXRhLiBUaGlzIGlzIG5lZWRlZCBzaW5jZSBzb3VyY2VcbiAqIGNvZGUgZG9lc24ndCBhbGxvdyB0aGlzIGluIG9yZGVyIHRvIGVuZm9yY2Ugc3RyaWN0ZXIganNpaVxuICogY29tcGF0aWJpbGl0eSBjaGVja3MuXG4gKi9cbmZ1bmN0aW9uIGFkZEFueU1ldGFkYXRhRW50cnkoc2NoZW1hOiBhbnkpIHtcbiAgc2NoZW1hLmRlZmluaXRpb25zLk1ldGFkYXRhRW50cnk/LnByb3BlcnRpZXMuZGF0YS5hbnlPZi5wdXNoKHtkZXNjcmlwdGlvbjogJ0ZyZWUgZm9ybSBkYXRhLid9KTtcbn1cbiJdfQ==

@@ -12,20 +12,2 @@ "use strict";

}
function clone(obj) {
return JSON.parse(JSON.stringify(obj));
}
function removeStringKeys(obj, keys) {
function _recurse(o) {
for (const prop in o) {
if (keys.includes(prop) && typeof o[prop] === 'string') {
delete o[prop];
}
else if (typeof o[prop] === 'object') {
_recurse(o[prop]);
}
}
}
const cloned = clone(obj);
_recurse(cloned);
return cloned;
}
test('manifest save', () => {

@@ -36,40 +18,25 @@ const outdir = fs.mkdtempSync(path.join(os.tmpdir(), 'schema-tests'));

version: 'version',
runtime: {
libraries: { lib1: '1.2.3' },
},
};
lib_1.Manifest.save(assemblyManifest, manifestFile);
lib_1.Manifest.saveAssemblyManifest(assemblyManifest, manifestFile);
const saved = JSON.parse(fs.readFileSync(manifestFile, { encoding: 'utf-8' }));
expect(saved).toEqual(assemblyManifest);
expect(saved).toEqual({
...assemblyManifest,
version: lib_1.Manifest.version(),
});
});
test('if this test fails, run "yarn update-schema"', () => {
// when we compare schemas we ignore changes the
// description that is generated from the ts docstrings.
const docStringFields = [
'description',
];
// eslint-disable-next-line @typescript-eslint/no-require-imports
const schema = require('../scripts/update-schema.js');
const expected = removeStringKeys(schema.generate(), docStringFields);
// eslint-disable-next-line @typescript-eslint/no-require-imports
const actual = removeStringKeys(require('../schema/cloud-assembly.schema.json'), docStringFields);
try {
expect(actual).toEqual(expected);
}
catch (err) {
// I couldn't for the life of me figure out how to provide additional error message
// to jest...any ideas?
err.message = `Whoops, Looks like the schema has changed. Did you forget to run 'yarn update-schema'?\n\n${err.message}`;
throw err;
}
});
test('manifest load', () => {
const loaded = lib_1.Manifest.load(fixture('only-version'));
const loaded = lib_1.Manifest.loadAssemblyManifest(fixture('only-version'));
expect(loaded).toMatchSnapshot();
});
test('manifest load fails for invalid nested property', () => {
expect(() => lib_1.Manifest.load(fixture('invalid-nested-property'))).toThrow(/Invalid assembly manifest/);
expect(() => lib_1.Manifest.loadAssemblyManifest(fixture('invalid-nested-property'))).toThrow(/Invalid assembly manifest/);
});
test('manifest load fails for invalid artifact type', () => {
expect(() => lib_1.Manifest.load(fixture('invalid-artifact-type'))).toThrow(/Invalid assembly manifest/);
expect(() => lib_1.Manifest.loadAssemblyManifest(fixture('invalid-artifact-type'))).toThrow(/Invalid assembly manifest/);
});
test('manifest load fails on higher major version', () => {
expect(() => lib_1.Manifest.load(fixture('high-version'))).toThrow(/Cloud assembly schema version mismatch/);
expect(() => lib_1.Manifest.loadAssemblyManifest(fixture('high-version'))).toThrow(/Cloud assembly schema version mismatch/);
});

@@ -87,4 +54,5 @@ // once we start introducing minor version bumps that are considered

};
lib_1.Manifest.save(assemblyManifest, manifestFile);
expect(() => lib_1.Manifest.load(manifestFile)).toThrow(/Cloud assembly schema version mismatch/);
// can't use saveAssemblyManifest because it will force the correct version
fs.writeFileSync(manifestFile, JSON.stringify(assemblyManifest));
expect(() => lib_1.Manifest.loadAssemblyManifest(manifestFile)).toThrow(/Cloud assembly schema version mismatch/);
}

@@ -103,11 +71,12 @@ });

};
lib_1.Manifest.save(assemblyManifest, manifestFile);
expect(() => lib_1.Manifest.load(manifestFile)).toThrow(/Cloud assembly schema version mismatch/);
// can't use saveAssemblyManifest because it will force the correct version
fs.writeFileSync(manifestFile, JSON.stringify(assemblyManifest));
expect(() => lib_1.Manifest.loadAssemblyManifest(manifestFile)).toThrow(/Cloud assembly schema version mismatch/);
}
});
test('manifest load fails on invalid version', () => {
expect(() => lib_1.Manifest.load(fixture('invalid-version'))).toThrow(/Invalid semver string/);
expect(() => lib_1.Manifest.loadAssemblyManifest(fixture('invalid-version'))).toThrow(/Invalid semver string/);
});
test('manifest load succeeds on unknown properties', () => {
const manifest = lib_1.Manifest.load(fixture('unknown-property'));
const manifest = lib_1.Manifest.loadAssemblyManifest(fixture('unknown-property'));
expect(manifest.version).toEqual('0.0.0');

@@ -117,3 +86,3 @@ });

var _a, _b, _c;
const m = lib_1.Manifest.load(fixture('with-stack-tags'));
const m = lib_1.Manifest.loadAssemblyManifest(fixture('with-stack-tags'));
if ((_c = (_b = (_a = m.artifacts) === null || _a === void 0 ? void 0 : _a.stack) === null || _b === void 0 ? void 0 : _b.metadata) === null || _c === void 0 ? void 0 : _c.AwsCdkPlaygroundBatch[0].data) {

@@ -128,3 +97,3 @@ const entry = m.artifacts.stack.metadata.AwsCdkPlaygroundBatch[0].data;

var _a, _b, _c, _d, _e, _f;
const loaded = lib_1.Manifest.load(fixture('random-metadata'));
const loaded = lib_1.Manifest.loadAssemblyManifest(fixture('random-metadata'));
const randomArray = (_b = (_a = loaded.artifacts) === null || _a === void 0 ? void 0 : _a.stack.metadata) === null || _b === void 0 ? void 0 : _b.AwsCdkPlaygroundBatch[0].data;

@@ -143,2 +112,2 @@ const randomNumber = (_d = (_c = loaded.artifacts) === null || _c === void 0 ? void 0 : _c.stack.metadata) === null || _d === void 0 ? void 0 : _d.AwsCdkPlaygroundBatch[1].data;

});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuaWZlc3QudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIm1hbmlmZXN0LnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSx5QkFBeUI7QUFDekIseUJBQXlCO0FBQ3pCLDZCQUE2QjtBQUM3QixpQ0FBaUM7QUFDakMsZ0NBQTRFO0FBRTVFLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0FBRWxELFNBQVMsT0FBTyxDQUFDLElBQVk7SUFDM0IsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsZUFBZSxDQUFDLENBQUM7QUFDcEQsQ0FBQztBQUVELFNBQVMsS0FBSyxDQUFDLEdBQVE7SUFDckIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUN6QyxDQUFDO0FBRUQsU0FBUyxnQkFBZ0IsQ0FBQyxHQUFRLEVBQUUsSUFBYztJQUVoRCxTQUFTLFFBQVEsQ0FBQyxDQUFNO1FBQ3RCLEtBQUssTUFBTSxJQUFJLElBQUksQ0FBQyxFQUFFO1lBQ3BCLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxRQUFRLEVBQUU7Z0JBQ3RELE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ2hCO2lCQUFNLElBQUksT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssUUFBUSxFQUFFO2dCQUN0QyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7YUFDbkI7U0FDRjtJQUNILENBQUM7SUFFRCxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDMUIsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBRWpCLE9BQU8sTUFBTSxDQUFDO0FBRWhC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QU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUUvQixJQUFJLFNBQVMsRUFBRTtRQUNiLE1BQU0sQ0FBRSxTQUFpQixDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztLQUNqRDtBQUVILENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMnO1xuaW1wb3J0ICogYXMgb3MgZnJvbSAnb3MnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCAqIGFzIHNlbXZlciBmcm9tICdzZW12ZXInO1xuaW1wb3J0IHsgQXNzZW1ibHlNYW5pZmVzdCwgTWFuaWZlc3QsIFN0YWNrVGFnc01ldGFkYXRhRW50cnkgfSBmcm9tICcuLi9saWInO1xuXG5jb25zdCBGSVhUVVJFUyA9IHBhdGguam9pbihfX2Rpcm5hbWUsICdmaXh0dXJlcycpO1xuXG5mdW5jdGlvbiBmaXh0dXJlKG5hbWU6IHN0cmluZykge1xuICByZXR1cm4gcGF0aC5qb2luKEZJWFRVUkVTLCBuYW1lLCAnbWFuaWZlc3QuanNvbicpO1xufVxuXG5mdW5jdGlvbiBjbG9uZShvYmo6IGFueSkge1xuICByZXR1cm4gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShvYmopKTtcbn1cblxuZnVuY3Rpb24gcmVtb3ZlU3RyaW5nS2V5cyhvYmo6IGFueSwga2V5czogc3RyaW5nW10pIHtcblxuICBmdW5jdGlvbiBfcmVjdXJzZShvOiBhbnkpIHtcbiAgICBmb3IgKGNvbnN0IHByb3AgaW4gbykge1xuICAgICAgaWYgKGtleXMuaW5jbHVkZXMocHJvcCkgJiYgdHlwZW9mIG9bcHJvcF0gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGRlbGV0ZSBvW3Byb3BdO1xuICAgICAgfSBlbHNlIGlmICh0eXBlb2Ygb1twcm9wXSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgX3JlY3Vyc2Uob1twcm9wXSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3QgY2xvbmVkID0gY2xvbmUob2JqKTtcbiAgX3JlY3Vyc2UoY2xvbmVkKTtcblxuICByZXR1cm4gY2xvbmVkO1xuXG59XG5cbnRlc3QoJ21hbmlmZXN0IHNhdmUnLCAoKSA9PiB7XG5cbiAgY29uc3Qgb3V0ZGlyID0gZnMubWtkdGVtcFN5bmMocGF0aC5qb2luKG9zLnRtcGRpcigpLCAnc2NoZW1hLXRlc3RzJykpO1xuICBjb25zdCBtYW5pZmVzdEZpbGUgPSBwYXRoLmpvaW4ob3V0ZGlyLCAnbWFuaWZlc3QuanNvbicpO1xuXG4gIGNvbnN0IGFzc2VtYmx5TWFuaWZlc3Q6IEFzc2VtYmx5TWFuaWZlc3QgPSB7XG4gICAgdmVyc2lvbjogJ3ZlcnNpb24nLFxuICB9O1xuXG4gIE1hbmlmZXN0LnNhdmUoYXNzZW1ibHlNYW5pZmVzdCwgbWFuaWZlc3RGaWxlKTtcblxuICBjb25zdCBzYXZlZCA9IEpTT04ucGFyc2UoZnMucmVhZEZpbGVTeW5jKG1hbmlmZXN0RmlsZSwgeyBlbmNvZGluZzogJ3V0Zi04JyB9KSk7XG5cbiAgZXhwZWN0KHNhdmVkKS50b0VxdWFsKGFzc2VtYmx5TWFuaWZlc3QpO1xuXG59KTtcblxudGVzdCgnaWYgdGhpcyB0ZXN0IGZhaWxzLCBydW4gXCJ5YXJuIHVwZGF0ZS1zY2hlbWFcIicsICgpID0+IHtcblxuICAvLyB3aGVuIHdlIGNvbXBhcmUgc2NoZW1hcyB3ZSBpZ25vcmUgY2hhbmdlcyB0aGVcbiAgLy8gZGVzY3JpcHRpb24gdGhhdCBpcyBnZW5lcmF0ZWQgZnJvbSB0aGUgdHMgZG9jc3RyaW5ncy5cbiAgY29uc3QgZG9jU3RyaW5nRmllbGRzID0gW1xuICAgICdkZXNjcmlwdGlvbicsXG4gIF07XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1yZXF1aXJlLWltcG9ydHNcbiAgY29uc3Qgc2NoZW1hID0gcmVxdWlyZSgnLi4vc2NyaXB0cy91cGRhdGUtc2NoZW1hLmpzJyk7XG5cbiAgY29uc3QgZXhwZWN0ZWQgPSByZW1vdmVTdHJpbmdLZXlzKHNjaGVtYS5nZW5lcmF0ZSgpLCBkb2NTdHJpbmdGaWVsZHMpO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tcmVxdWlyZS1pbXBvcnRzXG4gIGNvbnN0IGFjdHVhbCA9IHJlbW92ZVN0cmluZ0tleXMocmVxdWlyZSgnLi4vc2NoZW1hL2Nsb3VkLWFzc2VtYmx5LnNjaGVtYS5qc29uJyksIGRvY1N0cmluZ0ZpZWxkcyk7XG5cbiAgdHJ5IHtcbiAgICBleHBlY3QoYWN0dWFsKS50b0VxdWFsKGV4cGVjdGVkKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgLy8gSSBjb3VsZG4ndCBmb3IgdGhlIGxpZmUgb2YgbWUgZmlndXJlIG91dCBob3cgdG8gcHJvdmlkZSBhZGRpdGlvbmFsIGVycm9yIG1lc3NhZ2VcbiAgICAvLyB0byBqZXN0Li4uYW55IGlkZWFzP1xuICAgIGVyci5tZXNzYWdlID0gYFdob29wcywgTG9va3MgbGlrZSB0aGUgc2NoZW1hIGhhcyBjaGFuZ2VkLiBEaWQgeW91IGZvcmdldCB0byBydW4gJ3lhcm4gdXBkYXRlLXNjaGVtYSc/XFxuXFxuJHtlcnIubWVzc2FnZX1gO1xuICAgIHRocm93IGVycjtcbiAgfVxufSk7XG5cbnRlc3QoJ21hbmlmZXN0IGxvYWQnLCAoKSA9PiB7XG4gIGNvbnN0IGxvYWRlZCA9IE1hbmlmZXN0LmxvYWQoZml4dHVyZSgnb25seS12ZXJzaW9uJykpO1xuICBleHBlY3QobG9hZGVkKS50b01hdGNoU25hcHNob3QoKTtcbn0pO1xuXG50ZXN0KCdtYW5pZmVzdCBsb2FkIGZhaWxzIGZvciBpbnZhbGlkIG5lc3RlZCBwcm9wZXJ0eScsICgpID0+IHtcbiAgZXhwZWN0KCgpID0+IE1hbmlmZXN0LmxvYWQoZml4dHVyZSgnaW52YWxpZC1uZXN0ZWQtcHJvcGVydHknKSkpLnRvVGhyb3coL0ludmFsaWQgYXNzZW1ibHkgbWFuaWZlc3QvKTtcbn0pO1xuXG50ZXN0KCdtYW5pZmVzdCBsb2FkIGZhaWxzIGZvciBpbnZhbGlkIGFydGlmYWN0IHR5cGUnLCAoKSA9PiB7XG4gIGV4cGVjdCgoKSA9PiBNYW5pZmVzdC5sb2FkKGZpeHR1cmUoJ2ludmFsaWQtYXJ0aWZhY3QtdHlwZScpKSkudG9UaHJvdygvSW52YWxpZCBhc3NlbWJseSBtYW5pZmVzdC8pO1xufSk7XG5cbnRlc3QoJ21hbmlmZXN0IGxvYWQgZmFpbHMgb24gaGlnaGVyIG1ham9yIHZlcnNpb24nLCAoKSA9PiB7XG4gIGV4cGVjdCgoKSA9PiBNYW5pZmVzdC5sb2FkKGZpeHR1cmUoJ2hpZ2gtdmVyc2lvbicpKSkudG9UaHJvdygvQ2xvdWQgYXNzZW1ibHkgc2NoZW1hIHZlcnNpb24gbWlzbWF0Y2gvKTtcbn0pO1xuXG4vLyBvbmNlIHdlIHN0YXJ0IGludHJvZHVjaW5nIG1pbm9yIHZlcnNpb24gYnVtcHMgdGhhdCBhcmUgY29uc2lkZXJlZFxuLy8gbm9uIGJyZWFraW5nLCB0aGlzIHRlc3QgY2FuIGJlIHJlbW92ZWQuXG50ZXN0KCdtYW5pZmVzdCBsb2FkIGZhaWxzIG9uIGhpZ2hlciBtaW5vciB2ZXJzaW9uJywgKCkgPT4ge1xuXG4gIGNvbnN0IG91dGRpciA9IGZzLm1rZHRlbXBTeW5jKHBhdGguam9pbihvcy50bXBkaXIoKSwgJ3NjaGVtYS10ZXN0cycpKTtcbiAgY29uc3QgbWFuaWZlc3RGaWxlID0gcGF0aC5qb2luKG91dGRpciwgJ21hbmlmZXN0Lmpzb24nKTtcblxuICBjb25zdCBuZXdWZXJzaW9uID0gc2VtdmVyLmluYyhNYW5pZmVzdC52ZXJzaW9uKCksICdtaW5vcicpO1xuICBleHBlY3QobmV3VmVyc2lvbikudG9CZVRydXRoeSgpO1xuXG4gIGlmIChuZXdWZXJzaW9uKSB7XG4gICAgY29uc3QgYXNzZW1ibHlNYW5pZmVzdDogQXNzZW1ibHlNYW5pZmVzdCA9IHtcbiAgICAgIHZlcnNpb246IG5ld1ZlcnNpb24sXG4gICAgfTtcblxuICAgIE1hbmlmZXN0LnNhdmUoYXNzZW1ibHlNYW5pZmVzdCwgbWFuaWZlc3RGaWxlKTtcblxuICAgIGV4cGVjdCgoKSA9PiBNYW5pZmVzdC5sb2FkKG1hbmlmZXN0RmlsZSkpLnRvVGhyb3coL0Nsb3VkIGFzc2VtYmx5IHNjaGVtYSB2ZXJzaW9uIG1pc21hdGNoLyk7XG4gIH1cbn0pO1xuXG4vLyBvbmNlIHdlIHN0YXJ0IGludHJvZHVjaW5nIHBhdGNoIHZlcnNpb24gYnVtcHMgdGhhdCBhcmUgY29uc2lkZXJlZFxuLy8gbm9uIGJyZWFraW5nLCB0aGlzIHRlc3QgY2FuIGJlIHJlbW92ZWQuXG50ZXN0KCdtYW5pZmVzdCBsb2FkIGZhaWxzIG9uIGhpZ2hlciBwYXRjaCB2ZXJzaW9uJywgKCkgPT4ge1xuXG4gIGNvbnN0IG91dGRpciA9IGZzLm1rZHRlbXBTeW5jKHBhdGguam9pbihvcy50bXBkaXIoKSwgJ3NjaGVtYS10ZXN0cycpKTtcbiAgY29uc3QgbWFuaWZlc3RGaWxlID0gcGF0aC5qb2luKG91dGRpciwgJ21hbmlmZXN0Lmpzb24nKTtcblxuICBjb25zdCBuZXdWZXJzaW9uID0gc2VtdmVyLmluYyhNYW5pZmVzdC52ZXJzaW9uKCksICdwYXRjaCcpO1xuICBleHBlY3QobmV3VmVyc2lvbikudG9CZVRydXRoeSgpO1xuXG4gIGlmIChuZXdWZXJzaW9uKSB7XG4gICAgY29uc3QgYXNzZW1ibHlNYW5pZmVzdDogQXNzZW1ibHlNYW5pZmVzdCA9IHtcbiAgICAgIHZlcnNpb246IG5ld1ZlcnNpb24sXG4gICAgfTtcblxuICAgIE1hbmlmZXN0LnNhdmUoYXNzZW1ibHlNYW5pZmVzdCwgbWFuaWZlc3RGaWxlKTtcblxuICAgIGV4cGVjdCgoKSA9PiBNYW5pZmVzdC5sb2FkKG1hbmlmZXN0RmlsZSkpLnRvVGhyb3coL0Nsb3VkIGFzc2VtYmx5IHNjaGVtYSB2ZXJzaW9uIG1pc21hdGNoLyk7XG4gIH1cbn0pO1xuXG50ZXN0KCdtYW5pZmVzdCBsb2FkIGZhaWxzIG9uIGludmFsaWQgdmVyc2lvbicsICgpID0+IHtcbiAgZXhwZWN0KCgpID0+IE1hbmlmZXN0LmxvYWQoZml4dHVyZSgnaW52YWxpZC12ZXJzaW9uJykpKS50b1Rocm93KC9JbnZhbGlkIHNlbXZlciBzdHJpbmcvKTtcbn0pO1xuXG50ZXN0KCdtYW5pZmVzdCBsb2FkIHN1Y2NlZWRzIG9uIHVua25vd24gcHJvcGVydGllcycsICgpID0+IHtcbiAgY29uc3QgbWFuaWZlc3QgPSBNYW5pZmVzdC5sb2FkKGZpeHR1cmUoJ3Vua25vd24tcHJvcGVydHknKSk7XG4gIGV4cGVjdChtYW5pZmVzdC52ZXJzaW9uKS50b0VxdWFsKCcwLjAuMCcpO1xufSk7XG5cbnRlc3QoJ3N0YWNrLXRhZ3MgYXJlIGRlc2VyaWFsaXplZCBwcm9wZXJseScsICgpID0+IHtcblxuICBjb25zdCBtOiBBc3NlbWJseU1hbmlmZXN0ID0gTWFuaWZlc3QubG9hZChmaXh0dXJlKCd3aXRoLXN0YWNrLXRhZ3MnKSk7XG5cbiAgaWYgKG0uYXJ0aWZhY3RzPy5zdGFjaz8ubWV0YWRhdGE/LkF3c0Nka1BsYXlncm91bmRCYXRjaFswXS5kYXRhKSB7XG4gICAgY29uc3QgZW50cnkgPSBtLmFydGlmYWN0cy5zdGFjay5tZXRhZGF0YS5Bd3NDZGtQbGF5Z3JvdW5kQmF0Y2hbMF0uZGF0YSBhcyBTdGFja1RhZ3NNZXRhZGF0YUVudHJ5O1xuICAgIGV4cGVjdChlbnRyeVswXS5rZXkpLnRvRXF1YWwoJ2hlbGxvJyk7XG4gICAgZXhwZWN0KGVudHJ5WzBdLnZhbHVlKS50b0VxdWFsKCd3b3JsZCcpO1xuICB9XG4gIGV4cGVjdChtLnZlcnNpb24pLnRvRXF1YWwoJzAuMC4wJyk7XG5cbn0pO1xuXG50ZXN0KCdjYW4gYWNjZXNzIHJhbmRvbSBtZXRhZGF0YScsICgpID0+IHtcblxuICBjb25zdCBsb2FkZWQgPSBNYW5pZmVzdC5sb2FkKGZpeHR1cmUoJ3JhbmRvbS1tZXRhZGF0YScpKTtcbiAgY29uc3QgcmFuZG9tQXJyYXkgPSBsb2FkZWQuYXJ0aWZhY3RzPy5zdGFjay5tZXRhZGF0YT8uQXdzQ2RrUGxheWdyb3VuZEJhdGNoWzBdLmRhdGE7XG4gIGNvbnN0IHJhbmRvbU51bWJlciA9IGxvYWRlZC5hcnRpZmFjdHM/LnN0YWNrLm1ldGFkYXRhPy5Bd3NDZGtQbGF5Z3JvdW5kQmF0Y2hbMV0uZGF0YTtcbiAgY29uc3QgcmFuZG9tTWFwID0gbG9hZGVkLmFydGlmYWN0cz8uc3RhY2subWV0YWRhdGE/LkF3c0Nka1BsYXlncm91bmRCYXRjaFsyXS5kYXRhO1xuXG4gIGV4cGVjdChyYW5kb21BcnJheSkudG9FcXVhbChbJzQyJ10pO1xuICBleHBlY3QocmFuZG9tTnVtYmVyKS50b0VxdWFsKDQyKTtcbiAgZXhwZWN0KHJhbmRvbU1hcCkudG9FcXVhbCh7XG4gICAga2V5OiAndmFsdWUnLFxuICB9KTtcblxuICBleHBlY3QocmFuZG9tTWFwKS50b0JlVHJ1dGh5KCk7XG5cbiAgaWYgKHJhbmRvbU1hcCkge1xuICAgIGV4cGVjdCgocmFuZG9tTWFwIGFzIGFueSkua2V5KS50b0VxdWFsKCd2YWx1ZScpO1xuICB9XG5cbn0pO1xuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuaWZlc3QudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIm1hbmlmZXN0LnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSx5QkFBeUI7QUFDekIseUJBQXlCO0FBQ3pCLDZCQUE2QjtBQUM3QixpQ0FBaUM7QUFDakMsZ0NBQTRFO0FBRTVFLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0FBRWxELFNBQVMsT0FBTyxDQUFDLElBQVk7SUFDM0IsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsZUFBZSxDQUFDLENBQUM7QUFDcEQsQ0FBQztBQUVELElBQUksQ0FBQyxlQUFlLEVBQUUsR0FBRyxFQUFFO0lBRXpCLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLEVBQUUsY0FBYyxDQUFDLENBQUMsQ0FBQztJQUN0RSxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxlQUFlLENBQUMsQ0FBQztJQUV4RCxNQUFNLGdCQUFnQixHQUFxQjtRQUN6QyxPQUFPLEVBQUUsU0FBUztRQUNsQixPQUFPLEVBQUU7WUFDUCxTQUFTLEVBQUUsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFO1NBQzdCO0tBQ0YsQ0FBQztJQUVGLGNBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxnQkFBZ0IsRUFBRSxZQUFZLENBQUMsQ0FBQztJQUU5RCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQztJQUUvRSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDO1FBQ3BCLEdBQUcsZ0JBQWdCO1FBQ25CLE9BQU8sRUFBRSxjQUFRLENBQUMsT0FBTyxFQUFFO0tBQzVCLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDO0FBRUgsSUFBSSxDQUFDLGVBQWUsRUFBRSxHQUFHLEVBQUU7SUFDekIsTUFBTSxNQUFNLEdBQUcsY0FBUSxDQUFDLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO0lBQ3RFLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxlQUFlLEVBQUUsQ0FBQztBQUNuQyxDQUFDLENBQUMsQ0FBQztBQUVILElBQUksQ0FBQyxpREFBaUQsRUFBRSxHQUFHLEVBQUU7SUFDM0QsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLGNBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMseUJBQXlCLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLDJCQUEyQixDQUFDLENBQUM7QUFDdkgsQ0FBQyxDQUFDLENBQUM7QUFFSCxJQUFJLENBQUMsK0NBQStDLEVBQUUsR0FBRyxFQUFFO0lBQ3pELE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxjQUFRLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLHVCQUF1QixDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO0FBQ3JILENBQUMsQ0FBQyxDQUFDO0FBRUgsSUFBSSxDQUFDLDZDQUE2QyxFQUFFLEdBQUcsRUFBRTtJQUN2RCxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsY0FBUSxDQUFDLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLHdDQUF3QyxDQUFDLENBQUM7QUFDekgsQ0FBQyxDQUFDLENBQUM7QUFFSCxvRUFBb0U7QUFDcEUsMENBQTBDO0FBQzFDLElBQUksQ0FBQyw2Q0FBNkMsRUFBRSxHQUFHLEVBQUU7SUFFdkQsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUFDO0lBQ3RFLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLGVBQWUsQ0FBQyxDQUFDO0lBRXhELE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsY0FBUSxDQUFDLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzNELE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUVoQyxJQUFJLFVBQVUsRUFBRTtRQUNkLE1BQU0sZ0JBQWdCLEdBQXFCO1lBQ3pDLE9BQU8sRUFBRSxVQUFVO1NBQ3BCLENBQUM7UUFFRiwyRUFBMkU7UUFDM0UsRUFBRSxDQUFDLGFBQWEsQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7UUFFakUsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLGNBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyx3Q0FBd0MsQ0FBQyxDQUFDO0tBQzdHO0FBQ0gsQ0FBQyxDQUFDLENBQUM7QUFFSCxvRUFBb0U7QUFDcEUsMENBQTBDO0FBQzFDLElBQUksQ0FBQyw2Q0FBNkMsRUFBRSxHQUFHLEVBQUU7SUFFdkQsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUFDO0lBQ3RFLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLGVBQWUsQ0FBQyxDQUFDO0lBRXhELE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsY0FBUSxDQUFDLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzNELE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUVoQyxJQUFJLFVBQVUsRUFBRTtRQUNkLE1BQU0sZ0JBQWdCLEdBQXFCO1lBQ3pDLE9BQU8sRUFBRSxVQUFVO1NBQ3BCLENBQUM7UUFFRiwyRUFBMkU7UUFDM0UsRUFBRSxDQUFDLGFBQWEsQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7UUFFakUsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLGNBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyx3Q0FBd0MsQ0FBQyxDQUFDO0tBQzdHO0FBQ0gsQ0FBQyxDQUFDLENBQUM7QUFFSCxJQUFJLENBQUMsd0NBQXdDLEVBQUUsR0FBRyxFQUFFO0lBQ2xELE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxjQUFRLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0FBQzNHLENBQUMsQ0FBQyxDQUFDO0FBRUgsSUFBSSxDQUFDLDhDQUE4QyxFQUFFLEdBQUcsRUFBRTtJQUN4RCxNQUFNLFFBQVEsR0FBRyxjQUFRLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQztJQUM1RSxNQUFNLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUM1QyxDQUFDLENBQUMsQ0FBQztBQUVILElBQUksQ0FBQyxzQ0FBc0MsRUFBRSxHQUFHLEVBQUU7O0lBRWhELE1BQU0sQ0FBQyxHQUFxQixjQUFRLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQztJQUV0RixzQkFBSSxDQUFDLENBQUMsU0FBUywwQ0FBRSxLQUFLLDBDQUFFLFFBQVEsMENBQUUscUJBQXFCLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRTtRQUMvRCxNQUFNLEtBQUssR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBOEIsQ0FBQztRQUNqRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN0QyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztLQUN6QztJQUNELE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBRXJDLENBQUMsQ0FBQyxDQUFDO0FBRUgsSUFBSSxDQUFDLDRCQUE0QixFQUFFLEdBQUcsRUFBRTs7SUFFdEMsTUFBTSxNQUFNLEdBQUcsY0FBUSxDQUFDLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7SUFDekUsTUFBTSxXQUFXLGVBQUcsTUFBTSxDQUFDLFNBQVMsMENBQUUsS0FBSyxDQUFDLFFBQVEsMENBQUUscUJBQXFCLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQztJQUNwRixNQUFNLFlBQVksZUFBRyxNQUFNLENBQUMsU0FBUywwQ0FBRSxLQUFLLENBQUMsUUFBUSwwQ0FBRSxxQkFBcUIsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDO0lBQ3JGLE1BQU0sU0FBUyxlQUFHLE1BQU0sQ0FBQyxTQUFTLDBDQUFFLEtBQUssQ0FBQyxRQUFRLDBDQUFFLHFCQUFxQixDQUFDLENBQUMsRUFBRSxJQUFJLENBQUM7SUFFbEYsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDcEMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNqQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxDQUFDO1FBQ3hCLEdBQUcsRUFBRSxPQUFPO0tBQ2IsQ0FBQyxDQUFDO0lBRUgsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBRS9CLElBQUksU0FBUyxFQUFFO1FBQ2IsTUFBTSxDQUFFLFNBQWlCLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0tBQ2pEO0FBRUgsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBmcyBmcm9tICdmcyc7XG5pbXBvcnQgKiBhcyBvcyBmcm9tICdvcyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0ICogYXMgc2VtdmVyIGZyb20gJ3NlbXZlcic7XG5pbXBvcnQgeyBBc3NlbWJseU1hbmlmZXN0LCBNYW5pZmVzdCwgU3RhY2tUYWdzTWV0YWRhdGFFbnRyeSB9IGZyb20gJy4uL2xpYic7XG5cbmNvbnN0IEZJWFRVUkVTID0gcGF0aC5qb2luKF9fZGlybmFtZSwgJ2ZpeHR1cmVzJyk7XG5cbmZ1bmN0aW9uIGZpeHR1cmUobmFtZTogc3RyaW5nKSB7XG4gIHJldHVybiBwYXRoLmpvaW4oRklYVFVSRVMsIG5hbWUsICdtYW5pZmVzdC5qc29uJyk7XG59XG5cbnRlc3QoJ21hbmlmZXN0IHNhdmUnLCAoKSA9PiB7XG5cbiAgY29uc3Qgb3V0ZGlyID0gZnMubWtkdGVtcFN5bmMocGF0aC5qb2luKG9zLnRtcGRpcigpLCAnc2NoZW1hLXRlc3RzJykpO1xuICBjb25zdCBtYW5pZmVzdEZpbGUgPSBwYXRoLmpvaW4ob3V0ZGlyLCAnbWFuaWZlc3QuanNvbicpO1xuXG4gIGNvbnN0IGFzc2VtYmx5TWFuaWZlc3Q6IEFzc2VtYmx5TWFuaWZlc3QgPSB7XG4gICAgdmVyc2lvbjogJ3ZlcnNpb24nLFxuICAgIHJ1bnRpbWU6IHtcbiAgICAgIGxpYnJhcmllczogeyBsaWIxOiAnMS4yLjMnIH0sXG4gICAgfSxcbiAgfTtcblxuICBNYW5pZmVzdC5zYXZlQXNzZW1ibHlNYW5pZmVzdChhc3NlbWJseU1hbmlmZXN0LCBtYW5pZmVzdEZpbGUpO1xuXG4gIGNvbnN0IHNhdmVkID0gSlNPTi5wYXJzZShmcy5yZWFkRmlsZVN5bmMobWFuaWZlc3RGaWxlLCB7IGVuY29kaW5nOiAndXRmLTgnIH0pKTtcblxuICBleHBlY3Qoc2F2ZWQpLnRvRXF1YWwoe1xuICAgIC4uLmFzc2VtYmx5TWFuaWZlc3QsXG4gICAgdmVyc2lvbjogTWFuaWZlc3QudmVyc2lvbigpLCAvLyB2ZXJzaW9uIGlzIGZvcmNlZFxuICB9KTtcbn0pO1xuXG50ZXN0KCdtYW5pZmVzdCBsb2FkJywgKCkgPT4ge1xuICBjb25zdCBsb2FkZWQgPSBNYW5pZmVzdC5sb2FkQXNzZW1ibHlNYW5pZmVzdChmaXh0dXJlKCdvbmx5LXZlcnNpb24nKSk7XG4gIGV4cGVjdChsb2FkZWQpLnRvTWF0Y2hTbmFwc2hvdCgpO1xufSk7XG5cbnRlc3QoJ21hbmlmZXN0IGxvYWQgZmFpbHMgZm9yIGludmFsaWQgbmVzdGVkIHByb3BlcnR5JywgKCkgPT4ge1xuICBleHBlY3QoKCkgPT4gTWFuaWZlc3QubG9hZEFzc2VtYmx5TWFuaWZlc3QoZml4dHVyZSgnaW52YWxpZC1uZXN0ZWQtcHJvcGVydHknKSkpLnRvVGhyb3coL0ludmFsaWQgYXNzZW1ibHkgbWFuaWZlc3QvKTtcbn0pO1xuXG50ZXN0KCdtYW5pZmVzdCBsb2FkIGZhaWxzIGZvciBpbnZhbGlkIGFydGlmYWN0IHR5cGUnLCAoKSA9PiB7XG4gIGV4cGVjdCgoKSA9PiBNYW5pZmVzdC5sb2FkQXNzZW1ibHlNYW5pZmVzdChmaXh0dXJlKCdpbnZhbGlkLWFydGlmYWN0LXR5cGUnKSkpLnRvVGhyb3coL0ludmFsaWQgYXNzZW1ibHkgbWFuaWZlc3QvKTtcbn0pO1xuXG50ZXN0KCdtYW5pZmVzdCBsb2FkIGZhaWxzIG9uIGhpZ2hlciBtYWpvciB2ZXJzaW9uJywgKCkgPT4ge1xuICBleHBlY3QoKCkgPT4gTWFuaWZlc3QubG9hZEFzc2VtYmx5TWFuaWZlc3QoZml4dHVyZSgnaGlnaC12ZXJzaW9uJykpKS50b1Rocm93KC9DbG91ZCBhc3NlbWJseSBzY2hlbWEgdmVyc2lvbiBtaXNtYXRjaC8pO1xufSk7XG5cbi8vIG9uY2Ugd2Ugc3RhcnQgaW50cm9kdWNpbmcgbWlub3IgdmVyc2lvbiBidW1wcyB0aGF0IGFyZSBjb25zaWRlcmVkXG4vLyBub24gYnJlYWtpbmcsIHRoaXMgdGVzdCBjYW4gYmUgcmVtb3ZlZC5cbnRlc3QoJ21hbmlmZXN0IGxvYWQgZmFpbHMgb24gaGlnaGVyIG1pbm9yIHZlcnNpb24nLCAoKSA9PiB7XG5cbiAgY29uc3Qgb3V0ZGlyID0gZnMubWtkdGVtcFN5bmMocGF0aC5qb2luKG9zLnRtcGRpcigpLCAnc2NoZW1hLXRlc3RzJykpO1xuICBjb25zdCBtYW5pZmVzdEZpbGUgPSBwYXRoLmpvaW4ob3V0ZGlyLCAnbWFuaWZlc3QuanNvbicpO1xuXG4gIGNvbnN0IG5ld1ZlcnNpb24gPSBzZW12ZXIuaW5jKE1hbmlmZXN0LnZlcnNpb24oKSwgJ21pbm9yJyk7XG4gIGV4cGVjdChuZXdWZXJzaW9uKS50b0JlVHJ1dGh5KCk7XG5cbiAgaWYgKG5ld1ZlcnNpb24pIHtcbiAgICBjb25zdCBhc3NlbWJseU1hbmlmZXN0OiBBc3NlbWJseU1hbmlmZXN0ID0ge1xuICAgICAgdmVyc2lvbjogbmV3VmVyc2lvbixcbiAgICB9O1xuXG4gICAgLy8gY2FuJ3QgdXNlIHNhdmVBc3NlbWJseU1hbmlmZXN0IGJlY2F1c2UgaXQgd2lsbCBmb3JjZSB0aGUgY29ycmVjdCB2ZXJzaW9uXG4gICAgZnMud3JpdGVGaWxlU3luYyhtYW5pZmVzdEZpbGUsIEpTT04uc3RyaW5naWZ5KGFzc2VtYmx5TWFuaWZlc3QpKTtcblxuICAgIGV4cGVjdCgoKSA9PiBNYW5pZmVzdC5sb2FkQXNzZW1ibHlNYW5pZmVzdChtYW5pZmVzdEZpbGUpKS50b1Rocm93KC9DbG91ZCBhc3NlbWJseSBzY2hlbWEgdmVyc2lvbiBtaXNtYXRjaC8pO1xuICB9XG59KTtcblxuLy8gb25jZSB3ZSBzdGFydCBpbnRyb2R1Y2luZyBwYXRjaCB2ZXJzaW9uIGJ1bXBzIHRoYXQgYXJlIGNvbnNpZGVyZWRcbi8vIG5vbiBicmVha2luZywgdGhpcyB0ZXN0IGNhbiBiZSByZW1vdmVkLlxudGVzdCgnbWFuaWZlc3QgbG9hZCBmYWlscyBvbiBoaWdoZXIgcGF0Y2ggdmVyc2lvbicsICgpID0+IHtcblxuICBjb25zdCBvdXRkaXIgPSBmcy5ta2R0ZW1wU3luYyhwYXRoLmpvaW4ob3MudG1wZGlyKCksICdzY2hlbWEtdGVzdHMnKSk7XG4gIGNvbnN0IG1hbmlmZXN0RmlsZSA9IHBhdGguam9pbihvdXRkaXIsICdtYW5pZmVzdC5qc29uJyk7XG5cbiAgY29uc3QgbmV3VmVyc2lvbiA9IHNlbXZlci5pbmMoTWFuaWZlc3QudmVyc2lvbigpLCAncGF0Y2gnKTtcbiAgZXhwZWN0KG5ld1ZlcnNpb24pLnRvQmVUcnV0aHkoKTtcblxuICBpZiAobmV3VmVyc2lvbikge1xuICAgIGNvbnN0IGFzc2VtYmx5TWFuaWZlc3Q6IEFzc2VtYmx5TWFuaWZlc3QgPSB7XG4gICAgICB2ZXJzaW9uOiBuZXdWZXJzaW9uLFxuICAgIH07XG5cbiAgICAvLyBjYW4ndCB1c2Ugc2F2ZUFzc2VtYmx5TWFuaWZlc3QgYmVjYXVzZSBpdCB3aWxsIGZvcmNlIHRoZSBjb3JyZWN0IHZlcnNpb25cbiAgICBmcy53cml0ZUZpbGVTeW5jKG1hbmlmZXN0RmlsZSwgSlNPTi5zdHJpbmdpZnkoYXNzZW1ibHlNYW5pZmVzdCkpO1xuXG4gICAgZXhwZWN0KCgpID0+IE1hbmlmZXN0LmxvYWRBc3NlbWJseU1hbmlmZXN0KG1hbmlmZXN0RmlsZSkpLnRvVGhyb3coL0Nsb3VkIGFzc2VtYmx5IHNjaGVtYSB2ZXJzaW9uIG1pc21hdGNoLyk7XG4gIH1cbn0pO1xuXG50ZXN0KCdtYW5pZmVzdCBsb2FkIGZhaWxzIG9uIGludmFsaWQgdmVyc2lvbicsICgpID0+IHtcbiAgZXhwZWN0KCgpID0+IE1hbmlmZXN0LmxvYWRBc3NlbWJseU1hbmlmZXN0KGZpeHR1cmUoJ2ludmFsaWQtdmVyc2lvbicpKSkudG9UaHJvdygvSW52YWxpZCBzZW12ZXIgc3RyaW5nLyk7XG59KTtcblxudGVzdCgnbWFuaWZlc3QgbG9hZCBzdWNjZWVkcyBvbiB1bmtub3duIHByb3BlcnRpZXMnLCAoKSA9PiB7XG4gIGNvbnN0IG1hbmlmZXN0ID0gTWFuaWZlc3QubG9hZEFzc2VtYmx5TWFuaWZlc3QoZml4dHVyZSgndW5rbm93bi1wcm9wZXJ0eScpKTtcbiAgZXhwZWN0KG1hbmlmZXN0LnZlcnNpb24pLnRvRXF1YWwoJzAuMC4wJyk7XG59KTtcblxudGVzdCgnc3RhY2stdGFncyBhcmUgZGVzZXJpYWxpemVkIHByb3Blcmx5JywgKCkgPT4ge1xuXG4gIGNvbnN0IG06IEFzc2VtYmx5TWFuaWZlc3QgPSBNYW5pZmVzdC5sb2FkQXNzZW1ibHlNYW5pZmVzdChmaXh0dXJlKCd3aXRoLXN0YWNrLXRhZ3MnKSk7XG5cbiAgaWYgKG0uYXJ0aWZhY3RzPy5zdGFjaz8ubWV0YWRhdGE/LkF3c0Nka1BsYXlncm91bmRCYXRjaFswXS5kYXRhKSB7XG4gICAgY29uc3QgZW50cnkgPSBtLmFydGlmYWN0cy5zdGFjay5tZXRhZGF0YS5Bd3NDZGtQbGF5Z3JvdW5kQmF0Y2hbMF0uZGF0YSBhcyBTdGFja1RhZ3NNZXRhZGF0YUVudHJ5O1xuICAgIGV4cGVjdChlbnRyeVswXS5rZXkpLnRvRXF1YWwoJ2hlbGxvJyk7XG4gICAgZXhwZWN0KGVudHJ5WzBdLnZhbHVlKS50b0VxdWFsKCd3b3JsZCcpO1xuICB9XG4gIGV4cGVjdChtLnZlcnNpb24pLnRvRXF1YWwoJzAuMC4wJyk7XG5cbn0pO1xuXG50ZXN0KCdjYW4gYWNjZXNzIHJhbmRvbSBtZXRhZGF0YScsICgpID0+IHtcblxuICBjb25zdCBsb2FkZWQgPSBNYW5pZmVzdC5sb2FkQXNzZW1ibHlNYW5pZmVzdChmaXh0dXJlKCdyYW5kb20tbWV0YWRhdGEnKSk7XG4gIGNvbnN0IHJhbmRvbUFycmF5ID0gbG9hZGVkLmFydGlmYWN0cz8uc3RhY2subWV0YWRhdGE/LkF3c0Nka1BsYXlncm91bmRCYXRjaFswXS5kYXRhO1xuICBjb25zdCByYW5kb21OdW1iZXIgPSBsb2FkZWQuYXJ0aWZhY3RzPy5zdGFjay5tZXRhZGF0YT8uQXdzQ2RrUGxheWdyb3VuZEJhdGNoWzFdLmRhdGE7XG4gIGNvbnN0IHJhbmRvbU1hcCA9IGxvYWRlZC5hcnRpZmFjdHM/LnN0YWNrLm1ldGFkYXRhPy5Bd3NDZGtQbGF5Z3JvdW5kQmF0Y2hbMl0uZGF0YTtcblxuICBleHBlY3QocmFuZG9tQXJyYXkpLnRvRXF1YWwoWyc0MiddKTtcbiAgZXhwZWN0KHJhbmRvbU51bWJlcikudG9FcXVhbCg0Mik7XG4gIGV4cGVjdChyYW5kb21NYXApLnRvRXF1YWwoe1xuICAgIGtleTogJ3ZhbHVlJyxcbiAgfSk7XG5cbiAgZXhwZWN0KHJhbmRvbU1hcCkudG9CZVRydXRoeSgpO1xuXG4gIGlmIChyYW5kb21NYXApIHtcbiAgICBleHBlY3QoKHJhbmRvbU1hcCBhcyBhbnkpLmtleSkudG9FcXVhbCgndmFsdWUnKTtcbiAgfVxuXG59KTtcbiJdfQ==

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc