UNPKG

@aws-cdk/aws-amplify-alpha

Version:

The CDK Construct Library for AWS::Amplify

195 lines 27.4 kB
"use strict"; var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) { var useValue = arguments.length > 2; for (var i = 0; i < initializers.length; i++) { value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg); } return useValue ? value : void 0; }; var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) { function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; } var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value"; var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null; var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {}); var _, done = false; for (var i = decorators.length - 1; i >= 0; i--) { var context = {}; for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p]; for (var p in contextIn.access) context.access[p] = contextIn.access[p]; context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); }; var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context); if (kind === "accessor") { if (result === void 0) continue; if (result === null || typeof result !== "object") throw new TypeError("Object expected"); if (_ = accept(result.get)) descriptor.get = _; if (_ = accept(result.set)) descriptor.set = _; if (_ = accept(result.init)) initializers.unshift(_); } else if (_ = accept(result)) { if (kind === "field") initializers.unshift(_); else descriptor[key] = _; } } if (target) Object.defineProperty(target, contextIn.name, descriptor); done = true; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.Branch = void 0; const jsiiDeprecationWarnings = require("../.warnings.jsii.js"); const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti"); const aws_amplify_1 = require("aws-cdk-lib/aws-amplify"); const iam = require("aws-cdk-lib/aws-iam"); const core_1 = require("aws-cdk-lib/core"); const helpers_internal_1 = require("aws-cdk-lib/core/lib/helpers-internal"); const metadata_resource_1 = require("aws-cdk-lib/core/lib/metadata-resource"); const prop_injectable_1 = require("aws-cdk-lib/core/lib/prop-injectable"); const custom_resources_1 = require("aws-cdk-lib/custom-resources"); const app_1 = require("./app"); const utils_1 = require("./utils"); const asset_deployment_provider_generated_1 = require("../custom-resource-handlers/dist/aws-amplify-alpha/asset-deployment-provider.generated"); /** * An Amplify Console branch */ let Branch = (() => { let _classDecorators = [prop_injectable_1.propertyInjectable]; let _classDescriptor; let _classExtraInitializers = []; let _classThis; let _classSuper = core_1.Resource; let _instanceExtraInitializers = []; let _addEnvironment_decorators; var Branch = class extends _classSuper { static { _classThis = this; } static { const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0; _addEnvironment_decorators = [(0, metadata_resource_1.MethodMetadata)()]; __esDecorate(this, null, _addEnvironment_decorators, { kind: "method", name: "addEnvironment", static: false, private: false, access: { has: obj => "addEnvironment" in obj, get: obj => obj.addEnvironment }, metadata: _metadata }, null, _instanceExtraInitializers); __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers); Branch = _classThis = _classDescriptor.value; if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata }); } static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-amplify-alpha.Branch", version: "2.257.0-alpha.0" }; /** Uniquely identifies this class. */ static PROPERTY_INJECTION_ID = '@aws-cdk.aws-amplify-alpha.Branch'; /** * Import an existing branch */ static fromBranchName(scope, id, branchName) { class Import extends core_1.Resource { branchName = branchName; } return new Import(scope, id); } /** * The ARN of the branch * * @attribute */ arn = __runInitializers(this, _instanceExtraInitializers); branchName; environmentVariables; constructor(scope, id, props) { super(scope, id); try { jsiiDeprecationWarnings._aws_cdk_aws_amplify_alpha_BranchProps(props); } catch (error) { if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") { Error.captureStackTrace(error, Branch); } throw error; } // Enhanced CDK Analytics Telemetry (0, metadata_resource_1.addConstructMetadata)(this, props); if (props.app instanceof app_1.App) { const platform = props.app.platform; const isSSR = (0, utils_1.isServerSideRendered)(platform); if (props.computeRole && !isSSR) { throw new core_1.ValidationError((0, helpers_internal_1.lit) `InvalidBranchComputeRolePlatform`, '`computeRole` can only be specified for branches of apps with `Platform.WEB_COMPUTE` or `Platform.WEB_DYNAMIC`.', this); } } this.environmentVariables = props.environmentVariables || {}; const branchName = props.branchName || id; const branch = new aws_amplify_1.CfnBranch(this, 'Resource', { appId: props.app.appId, basicAuthConfig: props.basicAuth && props.basicAuth.bind(this, `${branchName}BasicAuth`), branchName, buildSpec: props.buildSpec && props.buildSpec.toBuildSpec(), description: props.description, enableAutoBuild: props.autoBuild ?? true, enablePullRequestPreview: props.pullRequestPreview ?? true, environmentVariables: core_1.Lazy.any({ produce: () => (0, utils_1.renderEnvironmentVariables)(this.environmentVariables) }, { omitEmptyArray: true }), pullRequestEnvironmentName: props.pullRequestEnvironmentName, stage: props.stage, enablePerformanceMode: props.performanceMode, enableSkewProtection: props.skewProtection, computeRoleArn: props.computeRole?.roleArn, }); this.arn = branch.attrArn; this.branchName = branch.attrBranchName; if (props.asset) { new core_1.CustomResource(this, 'DeploymentResource', { serviceToken: AmplifyAssetDeploymentProvider.getOrCreate(this), resourceType: 'Custom::AmplifyAssetDeployment', properties: { AppId: props.app.appId, BranchName: branchName, S3ObjectKey: props.asset.s3ObjectKey, S3BucketName: props.asset.s3BucketName, }, }); } } /** * Adds an environment variable to this branch. * * All environment variables that you add are encrypted to prevent rogue * access so you can use them to store secret information. */ addEnvironment(name, value) { this.environmentVariables[name] = value; return this; } static { __runInitializers(_classThis, _classExtraInitializers); } }; return Branch = _classThis; })(); exports.Branch = Branch; class AmplifyAssetDeploymentProvider extends core_1.NestedStack { /** * Returns the singleton provider. */ static getOrCreate(scope) { const providerId = 'com.amazonaws.cdk.custom-resources.amplify-asset-deployment-provider'; const stack = core_1.Stack.of(scope); const group = stack.node.tryFindChild(providerId) ?? new AmplifyAssetDeploymentProvider(stack, providerId); return group.provider.serviceToken; } provider; constructor(scope, id) { super(scope, id); const onEvent = new asset_deployment_provider_generated_1.AssetDeploymentOnEventFunction(this, 'amplify-asset-deployment-on-event'); onEvent.addToRolePolicy(new iam.PolicyStatement({ resources: ['*'], actions: [ 's3:GetObject', 's3:GetSignedUrl', 'amplify:ListJobs', 'amplify:StartDeployment', ], })); const isComplete = new asset_deployment_provider_generated_1.AssetDeploymentIsCompleteFunction(this, 'amplify-asset-deployment-is-complete'); isComplete.addToRolePolicy(new iam.PolicyStatement({ resources: ['*'], actions: ['amplify:GetJob*'], })); this.provider = new custom_resources_1.Provider(this, 'amplify-asset-deployment-handler-provider', { onEventHandler: onEvent, isCompleteHandler: isComplete, totalTimeout: core_1.Duration.minutes(5), }); } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJhbmNoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYnJhbmNoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHlEQUFvRDtBQUVwRCwyQ0FBMkM7QUFHM0MsMkNBUTBCO0FBQzFCLDRFQUE0RDtBQUM1RCw4RUFBOEY7QUFDOUYsMEVBQTBFO0FBQzFFLG1FQUF3RDtBQUd4RCwrQkFBNEI7QUFFNUIsbUNBQTJFO0FBQzNFLGdKQUEySztBQTZJM0s7O0dBRUc7SUFFVSxNQUFNOzRCQURsQixvQ0FBa0I7Ozs7c0JBQ1MsZUFBUTs7O3NCQUFoQixTQUFRLFdBQVE7Ozs7MENBaUZqQyxJQUFBLGtDQUFjLEdBQUU7WUFDakIsNkxBQU8sY0FBYyw2REFHcEI7WUFyRkgsNktBc0ZDOzs7OztRQXJGQyxzQ0FBc0M7UUFDL0IsTUFBTSxDQUFVLHFCQUFxQixHQUFXLG1DQUFtQyxDQUFDO1FBRTNGOztXQUVHO1FBQ0ksTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFnQixFQUFFLEVBQVUsRUFBRSxVQUFrQjtZQUMzRSxNQUFNLE1BQU8sU0FBUSxlQUFRO2dCQUNYLFVBQVUsR0FBRyxVQUFVLENBQUM7YUFDekM7WUFDRCxPQUFPLElBQUksTUFBTSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztTQUM5QjtRQUVEOzs7O1dBSUc7UUFDYSxHQUFHLEdBbkJSLG1EQUFNLENBbUJXO1FBRVosVUFBVSxDQUFTO1FBRWxCLG9CQUFvQixDQUE2QjtRQUVsRSxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQWtCO1lBQzFELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7Ozs7OzttREExQlIsTUFBTTs7OztZQTJCZixtQ0FBbUM7WUFDbkMsSUFBQSx3Q0FBb0IsRUFBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFFbEMsSUFBSSxLQUFLLENBQUMsR0FBRyxZQUFZLFNBQUcsRUFBRSxDQUFDO2dCQUM3QixNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQztnQkFDcEMsTUFBTSxLQUFLLEdBQUcsSUFBQSw0QkFBb0IsRUFBQyxRQUFRLENBQUMsQ0FBQztnQkFFN0MsSUFBSSxLQUFLLENBQUMsV0FBVyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7b0JBQ2hDLE1BQU0sSUFBSSxzQkFBZSxDQUFDLElBQUEsc0JBQUcsRUFBQSxrQ0FBa0MsRUFBRSxpSEFBaUgsRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDNUwsQ0FBQztZQUNILENBQUM7WUFFRCxJQUFJLENBQUMsb0JBQW9CLEdBQUcsS0FBSyxDQUFDLG9CQUFvQixJQUFJLEVBQUUsQ0FBQztZQUU3RCxNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsVUFBVSxJQUFJLEVBQUUsQ0FBQztZQUMxQyxNQUFNLE1BQU0sR0FBRyxJQUFJLHVCQUFTLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRTtnQkFDN0MsS0FBSyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSztnQkFDdEIsZUFBZSxFQUFFLEtBQUssQ0FBQyxTQUFTLElBQUksS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEdBQUcsVUFBVSxXQUFXLENBQUM7Z0JBQ3hGLFVBQVU7Z0JBQ1YsU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTLElBQUksS0FBSyxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUU7Z0JBQzNELFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVztnQkFDOUIsZUFBZSxFQUFFLEtBQUssQ0FBQyxTQUFTLElBQUksSUFBSTtnQkFDeEMsd0JBQXdCLEVBQUUsS0FBSyxDQUFDLGtCQUFrQixJQUFJLElBQUk7Z0JBQzFELG9CQUFvQixFQUFFLFdBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBQSxrQ0FBMEIsRUFBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsRUFBRSxFQUFFLEVBQUUsY0FBYyxFQUFFLElBQUksRUFBRSxDQUFDO2dCQUNsSSwwQkFBMEIsRUFBRSxLQUFLLENBQUMsMEJBQTBCO2dCQUM1RCxLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUs7Z0JBQ2xCLHFCQUFxQixFQUFFLEtBQUssQ0FBQyxlQUFlO2dCQUM1QyxvQkFBb0IsRUFBRSxLQUFLLENBQUMsY0FBYztnQkFDMUMsY0FBYyxFQUFFLEtBQUssQ0FBQyxXQUFXLEVBQUUsT0FBTzthQUMzQyxDQUFDLENBQUM7WUFFSCxJQUFJLENBQUMsR0FBRyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUM7WUFDMUIsSUFBSSxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDO1lBRXhDLElBQUksS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUNoQixJQUFJLHFCQUFjLENBQUMsSUFBSSxFQUFFLG9CQUFvQixFQUFFO29CQUM3QyxZQUFZLEVBQUUsOEJBQThCLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztvQkFDOUQsWUFBWSxFQUFFLGdDQUFnQztvQkFDOUMsVUFBVSxFQUFFO3dCQUNWLEtBQUssRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUs7d0JBQ3RCLFVBQVUsRUFBRSxVQUFVO3dCQUN0QixXQUFXLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxXQUFXO3dCQUNwQyxZQUFZLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxZQUFZO3FCQUN2QztpQkFDRixDQUFDLENBQUM7WUFDTCxDQUFDO1NBQ0Y7UUFFRDs7Ozs7V0FLRztRQUVJLGNBQWMsQ0FBQyxJQUFZLEVBQUUsS0FBYTtZQUMvQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDO1lBQ3hDLE9BQU8sSUFBSSxDQUFDO1NBQ2I7O1lBckZVLHVEQUFNOzs7OztBQUFOLHdCQUFNO0FBd0ZuQixNQUFNLDhCQUErQixTQUFRLGtCQUFXO0lBQ3REOztPQUVHO0lBQ0ksTUFBTSxDQUFDLFdBQVcsQ0FBQyxLQUFnQjtRQUN4QyxNQUFNLFVBQVUsR0FDZCxzRUFBc0UsQ0FBQztRQUN6RSxNQUFNLEtBQUssR0FBRyxZQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzlCLE1BQU0sS0FBSyxHQUNSLEtBQUssQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBb0MsSUFBSSxJQUFJLDhCQUE4QixDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsQ0FBQztRQUNuSSxPQUFPLEtBQUssQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDO0tBQ3BDO0lBRWdCLFFBQVEsQ0FBVztJQUVwQyxZQUFZLEtBQWdCLEVBQUUsRUFBVTtRQUN0QyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLE1BQU0sT0FBTyxHQUFHLElBQUksb0VBQThCLENBQUMsSUFBSSxFQUFFLG1DQUFtQyxDQUFDLENBQUM7UUFDOUYsT0FBTyxDQUFDLGVBQWUsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxlQUFlLENBQUM7WUFDOUMsU0FBUyxFQUFFLENBQUMsR0FBRyxDQUFDO1lBQ2hCLE9BQU8sRUFBRTtnQkFDUCxjQUFjO2dCQUNkLGlCQUFpQjtnQkFDakIsa0JBQWtCO2dCQUNsQix5QkFBeUI7YUFDMUI7U0FDRixDQUFDLENBQUMsQ0FBQztRQUVKLE1BQU0sVUFBVSxHQUFHLElBQUksdUVBQWlDLENBQUMsSUFBSSxFQUFFLHNDQUFzQyxDQUFDLENBQUM7UUFDdkcsVUFBVSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxlQUFlLENBQUM7WUFDakQsU0FBUyxFQUFFLENBQUMsR0FBRyxDQUFDO1lBQ2hCLE9BQU8sRUFBRSxDQUFDLGlCQUFpQixDQUFDO1NBQzdCLENBQUMsQ0FBQyxDQUFDO1FBRUosSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLDJCQUFRLENBQzFCLElBQUksRUFDSiwyQ0FBMkMsRUFDM0M7WUFDRSxjQUFjLEVBQUUsT0FBTztZQUN2QixpQkFBaUIsRUFBRSxVQUFVO1lBQzdCLFlBQVksRUFBRSxlQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztTQUNsQyxDQUNGLENBQUM7S0FDSDtDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2ZuQnJhbmNoIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWFtcGxpZnknO1xuaW1wb3J0IHR5cGUgKiBhcyBjb2RlYnVpbGQgZnJvbSAnYXdzLWNkay1saWIvYXdzLWNvZGVidWlsZCc7XG5pbXBvcnQgKiBhcyBpYW0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWlhbSc7XG5pbXBvcnQgdHlwZSB7IEFzc2V0IH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLXMzLWFzc2V0cyc7XG5pbXBvcnQgdHlwZSB7IElSZXNvdXJjZSB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUnO1xuaW1wb3J0IHtcbiAgQ3VzdG9tUmVzb3VyY2UsXG4gIExhenksXG4gIFJlc291cmNlLFxuICBEdXJhdGlvbixcbiAgTmVzdGVkU3RhY2ssXG4gIFN0YWNrLFxuICBWYWxpZGF0aW9uRXJyb3IsXG59IGZyb20gJ2F3cy1jZGstbGliL2NvcmUnO1xuaW1wb3J0IHsgbGl0IH0gZnJvbSAnYXdzLWNkay1saWIvY29yZS9saWIvaGVscGVycy1pbnRlcm5hbCc7XG5pbXBvcnQgeyBhZGRDb25zdHJ1Y3RNZXRhZGF0YSwgTWV0aG9kTWV0YWRhdGEgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9tZXRhZGF0YS1yZXNvdXJjZSc7XG5pbXBvcnQgeyBwcm9wZXJ0eUluamVjdGFibGUgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9wcm9wLWluamVjdGFibGUnO1xuaW1wb3J0IHsgUHJvdmlkZXIgfSBmcm9tICdhd3MtY2RrLWxpYi9jdXN0b20tcmVzb3VyY2VzJztcbmltcG9ydCB0eXBlIHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgdHlwZSB7IElBcHAgfSBmcm9tICcuL2FwcCc7XG5pbXBvcnQgeyBBcHAgfSBmcm9tICcuL2FwcCc7XG5pbXBvcnQgdHlwZSB7IEJhc2ljQXV0aCB9IGZyb20gJy4vYmFzaWMtYXV0aCc7XG5pbXBvcnQgeyByZW5kZXJFbnZpcm9ubWVudFZhcmlhYmxlcywgaXNTZXJ2ZXJTaWRlUmVuZGVyZWQgfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IEFzc2V0RGVwbG95bWVudElzQ29tcGxldGVGdW5jdGlvbiwgQXNzZXREZXBsb3ltZW50T25FdmVudEZ1bmN0aW9uIH0gZnJvbSAnLi4vY3VzdG9tLXJlc291cmNlLWhhbmRsZXJzL2Rpc3QvYXdzLWFtcGxpZnktYWxwaGEvYXNzZXQtZGVwbG95bWVudC1wcm92aWRlci5nZW5lcmF0ZWQnO1xuXG4vKipcbiAqIEEgYnJhbmNoXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUJyYW5jaCBleHRlbmRzIElSZXNvdXJjZSB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgYnJhbmNoXG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IGJyYW5jaE5hbWU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBPcHRpb25zIHRvIGFkZCBhIGJyYW5jaCB0byBhbiBhcHBsaWNhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIEJyYW5jaE9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIEJhc2ljIEF1dGggY29uZmlndXJhdGlvbi4gVXNlIHRoaXMgdG8gc2V0IHBhc3N3b3JkIHByb3RlY3Rpb24gZm9yXG4gICAqIHRoZSBicmFuY2hcbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBwYXNzd29yZCBwcm90ZWN0aW9uXG4gICAqL1xuICByZWFkb25seSBiYXNpY0F1dGg/OiBCYXNpY0F1dGg7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBicmFuY2hcbiAgICpcbiAgICogQGRlZmF1bHQgLSB0aGUgY29uc3RydWN0J3MgaWRcbiAgICovXG4gIHJlYWRvbmx5IGJyYW5jaE5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEJ1aWxkU3BlYyBmb3IgdGhlIGJyYW5jaFxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hbXBsaWZ5L2xhdGVzdC91c2VyZ3VpZGUvYnVpbGQtc2V0dGluZ3MuaHRtbFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIGJ1aWxkIHNwZWNcbiAgICovXG4gIHJlYWRvbmx5IGJ1aWxkU3BlYz86IGNvZGVidWlsZC5CdWlsZFNwZWM7XG5cbiAgLyoqXG4gICAqIEEgZGVzY3JpcHRpb24gZm9yIHRoZSBicmFuY2hcbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBkZXNjcmlwdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gZW5hYmxlIGF1dG8gYnVpbGRpbmcgZm9yIHRoZSBicmFuY2hcbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgYXV0b0J1aWxkPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0byBlbmFibGUgcHVsbCByZXF1ZXN0IHByZXZpZXcgZm9yIHRoZSBicmFuY2guXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IHB1bGxSZXF1ZXN0UHJldmlldz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEVudmlyb25tZW50IHZhcmlhYmxlcyBmb3IgdGhlIGJyYW5jaC5cbiAgICpcbiAgICogQWxsIGVudmlyb25tZW50IHZhcmlhYmxlcyB0aGF0IHlvdSBhZGQgYXJlIGVuY3J5cHRlZCB0byBwcmV2ZW50IHJvZ3VlXG4gICAqIGFjY2VzcyBzbyB5b3UgY2FuIHVzZSB0aGVtIHRvIHN0b3JlIHNlY3JldCBpbmZvcm1hdGlvbi5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBhcHBsaWNhdGlvbiBlbnZpcm9ubWVudCB2YXJpYWJsZXNcbiAgICovXG4gIHJlYWRvbmx5IGVudmlyb25tZW50VmFyaWFibGVzPzogeyBbbmFtZTogc3RyaW5nXTogc3RyaW5nIH07XG5cbiAgLyoqXG4gICAqIFRoZSBkZWRpY2F0ZWQgYmFja2VuZCBlbnZpcm9ubWVudCBmb3IgdGhlIHB1bGwgcmVxdWVzdCBwcmV2aWV3c1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIGF1dG9tYXRpY2FsbHkgcHJvdmlzaW9uIGEgdGVtcG9yYXJ5IGJhY2tlbmRcbiAgICovXG4gIHJlYWRvbmx5IHB1bGxSZXF1ZXN0RW52aXJvbm1lbnROYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTdGFnZSBmb3IgdGhlIGJyYW5jaFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIHN0YWdlXG4gICAqL1xuICByZWFkb25seSBzdGFnZT86IHN0cmluZztcblxuICAvKipcbiAgICogQXNzZXQgZm9yIGRlcGxveW1lbnQuXG4gICAqXG4gICAqIFRoZSBBbXBsaWZ5IGFwcCBtdXN0IG5vdCBoYXZlIGEgc291cmNlQ29kZVByb3ZpZGVyIGNvbmZpZ3VyZWQgYXMgdGhpcyByZXNvdXJjZSB1c2VzIEFtcGxpZnknc1xuICAgKiBzdGFydERlcGxveW1lbnQgQVBJIHRvIGluaXRpYXRlIGFuZCBkZXBsb3kgYSBTMyBhc3NldCBvbnRvIHRoZSBBcHAuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gYXNzZXRcbiAgICovXG4gIHJlYWRvbmx5IGFzc2V0PzogQXNzZXQ7XG5cbiAgLyoqXG4gICAqIEVuYWJsZXMgcGVyZm9ybWFuY2UgbW9kZSBmb3IgdGhlIGJyYW5jaC5cbiAgICpcbiAgICogUGVyZm9ybWFuY2UgbW9kZSBvcHRpbWl6ZXMgZm9yIGZhc3RlciBob3N0aW5nIHBlcmZvcm1hbmNlIGJ5IGtlZXBpbmcgY29udGVudCBjYWNoZWQgYXQgdGhlIGVkZ2VcbiAgICogZm9yIGEgbG9uZ2VyIGludGVydmFsLiBXaGVuIHBlcmZvcm1hbmNlIG1vZGUgaXMgZW5hYmxlZCwgaG9zdGluZyBjb25maWd1cmF0aW9uIG9yIGNvZGUgY2hhbmdlc1xuICAgKiBjYW4gdGFrZSB1cCB0byAxMCBtaW51dGVzIHRvIHJvbGwgb3V0LlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgcGVyZm9ybWFuY2VNb2RlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogU3BlY2lmaWVzIHdoZXRoZXIgdGhlIHNrZXcgcHJvdGVjdGlvbiBmZWF0dXJlIGlzIGVuYWJsZWQgZm9yIHRoZSBicmFuY2guXG4gICAqXG4gICAqIERlcGxveW1lbnQgc2tldyBwcm90ZWN0aW9uIGlzIGF2YWlsYWJsZSB0byBBbXBsaWZ5IGFwcGxpY2F0aW9ucyB0byBlbGltaW5hdGUgdmVyc2lvbiBza2V3IGlzc3Vlc1xuICAgKiBiZXR3ZWVuIGNsaWVudCBhbmQgc2VydmVycyBpbiB3ZWIgYXBwbGljYXRpb25zLlxuICAgKiBXaGVuIHlvdSBhcHBseSBza2V3IHByb3RlY3Rpb24gdG8gYSBicmFuY2gsIHlvdSBjYW4gZW5zdXJlIHRoYXQgeW91ciBjbGllbnRzIGFsd2F5cyBpbnRlcmFjdFxuICAgKiB3aXRoIHRoZSBjb3JyZWN0IHZlcnNpb24gb2Ygc2VydmVyLXNpZGUgYXNzZXRzLCByZWdhcmRsZXNzIG9mIHdoZW4gYSBkZXBsb3ltZW50IG9jY3Vycy5cbiAgICpcbiAgICogQGRlZmF1bHQgTm9uZSAtIERlZmF1bHQgc2V0dGluZyBpcyBubyBza2V3IHByb3RlY3Rpb24uXG4gICAqL1xuICByZWFkb25seSBza2V3UHJvdGVjdGlvbj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBJQU0gcm9sZSB0byBhc3NpZ24gdG8gYSBicmFuY2ggb2YgYW4gU1NSIGFwcC5cbiAgICogVGhlIFNTUiBDb21wdXRlIHJvbGUgYWxsb3dzIHRoZSBBbXBsaWZ5IEhvc3RpbmcgY29tcHV0ZSBzZXJ2aWNlIHRvIHNlY3VyZWx5IGFjY2VzcyBzcGVjaWZpYyBBV1MgcmVzb3VyY2VzIGJhc2VkIG9uIHRoZSByb2xlJ3MgcGVybWlzc2lvbnMuXG4gICAqXG4gICAqIFRoaXMgcm9sZSBvdmVycmlkZXMgdGhlIGFwcC1sZXZlbCBjb21wdXRlIHJvbGUuXG4gICAqXG4gICAqIEBkZWZhdWx0IHVuZGVmaW5lZCAtIE5vIHNwZWNpZmljIHJvbGUgZm9yIHRoZSBicmFuY2guIElmIHRoZSBhcHAgaGFzIGEgY29tcHV0ZSByb2xlLCBpdCB3aWxsIGJlIGluaGVyaXRlZC5cbiAgICovXG4gIHJlYWRvbmx5IGNvbXB1dGVSb2xlPzogaWFtLklSb2xlO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGEgQnJhbmNoXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQnJhbmNoUHJvcHMgZXh0ZW5kcyBCcmFuY2hPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBhcHBsaWNhdGlvbiB3aXRoaW4gd2hpY2ggdGhlIGJyYW5jaCBtdXN0IGJlIGNyZWF0ZWRcbiAgICovXG4gIHJlYWRvbmx5IGFwcDogSUFwcDtcbn1cblxuLyoqXG4gKiBBbiBBbXBsaWZ5IENvbnNvbGUgYnJhbmNoXG4gKi9cbkBwcm9wZXJ0eUluamVjdGFibGVcbmV4cG9ydCBjbGFzcyBCcmFuY2ggZXh0ZW5kcyBSZXNvdXJjZSBpbXBsZW1lbnRzIElCcmFuY2gge1xuICAvKiogVW5pcXVlbHkgaWRlbnRpZmllcyB0aGlzIGNsYXNzLiAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFBST1BFUlRZX0lOSkVDVElPTl9JRDogc3RyaW5nID0gJ0Bhd3MtY2RrLmF3cy1hbXBsaWZ5LWFscGhhLkJyYW5jaCc7XG5cbiAgLyoqXG4gICAqIEltcG9ydCBhbiBleGlzdGluZyBicmFuY2hcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUJyYW5jaE5hbWUoc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgYnJhbmNoTmFtZTogc3RyaW5nKTogSUJyYW5jaCB7XG4gICAgY2xhc3MgSW1wb3J0IGV4dGVuZHMgUmVzb3VyY2UgaW1wbGVtZW50cyBJQnJhbmNoIHtcbiAgICAgIHB1YmxpYyByZWFkb25seSBicmFuY2hOYW1lID0gYnJhbmNoTmFtZTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBJbXBvcnQoc2NvcGUsIGlkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSBicmFuY2hcbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGFybjogc3RyaW5nO1xuXG4gIHB1YmxpYyByZWFkb25seSBicmFuY2hOYW1lOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBlbnZpcm9ubWVudFZhcmlhYmxlczogeyBbbmFtZTogc3RyaW5nXTogc3RyaW5nIH07XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IEJyYW5jaFByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcbiAgICAvLyBFbmhhbmNlZCBDREsgQW5hbHl0aWNzIFRlbGVtZXRyeVxuICAgIGFkZENvbnN0cnVjdE1ldGFkYXRhKHRoaXMsIHByb3BzKTtcblxuICAgIGlmIChwcm9wcy5hcHAgaW5zdGFuY2VvZiBBcHApIHtcbiAgICAgIGNvbnN0IHBsYXRmb3JtID0gcHJvcHMuYXBwLnBsYXRmb3JtO1xuICAgICAgY29uc3QgaXNTU1IgPSBpc1NlcnZlclNpZGVSZW5kZXJlZChwbGF0Zm9ybSk7XG5cbiAgICAgIGlmIChwcm9wcy5jb21wdXRlUm9sZSAmJiAhaXNTU1IpIHtcbiAgICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihsaXRgSW52YWxpZEJyYW5jaENvbXB1dGVSb2xlUGxhdGZvcm1gLCAnYGNvbXB1dGVSb2xlYCBjYW4gb25seSBiZSBzcGVjaWZpZWQgZm9yIGJyYW5jaGVzIG9mIGFwcHMgd2l0aCBgUGxhdGZvcm0uV0VCX0NPTVBVVEVgIG9yIGBQbGF0Zm9ybS5XRUJfRFlOQU1JQ2AuJywgdGhpcyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5lbnZpcm9ubWVudFZhcmlhYmxlcyA9IHByb3BzLmVudmlyb25tZW50VmFyaWFibGVzIHx8IHt9O1xuXG4gICAgY29uc3QgYnJhbmNoTmFtZSA9IHByb3BzLmJyYW5jaE5hbWUgfHwgaWQ7XG4gICAgY29uc3QgYnJhbmNoID0gbmV3IENmbkJyYW5jaCh0aGlzLCAnUmVzb3VyY2UnLCB7XG4gICAgICBhcHBJZDogcHJvcHMuYXBwLmFwcElkLFxuICAgICAgYmFzaWNBdXRoQ29uZmlnOiBwcm9wcy5iYXNpY0F1dGggJiYgcHJvcHMuYmFzaWNBdXRoLmJpbmQodGhpcywgYCR7YnJhbmNoTmFtZX1CYXNpY0F1dGhgKSxcbiAgICAgIGJyYW5jaE5hbWUsXG4gICAgICBidWlsZFNwZWM6IHByb3BzLmJ1aWxkU3BlYyAmJiBwcm9wcy5idWlsZFNwZWMudG9CdWlsZFNwZWMoKSxcbiAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcy5kZXNjcmlwdGlvbixcbiAgICAgIGVuYWJsZUF1dG9CdWlsZDogcHJvcHMuYXV0b0J1aWxkID8/IHRydWUsXG4gICAgICBlbmFibGVQdWxsUmVxdWVzdFByZXZpZXc6IHByb3BzLnB1bGxSZXF1ZXN0UHJldmlldyA/PyB0cnVlLFxuICAgICAgZW52aXJvbm1lbnRWYXJpYWJsZXM6IExhenkuYW55KHsgcHJvZHVjZTogKCkgPT4gcmVuZGVyRW52aXJvbm1lbnRWYXJpYWJsZXModGhpcy5lbnZpcm9ubWVudFZhcmlhYmxlcykgfSwgeyBvbWl0RW1wdHlBcnJheTogdHJ1ZSB9KSxcbiAgICAgIHB1bGxSZXF1ZXN0RW52aXJvbm1lbnROYW1lOiBwcm9wcy5wdWxsUmVxdWVzdEVudmlyb25tZW50TmFtZSxcbiAgICAgIHN0YWdlOiBwcm9wcy5zdGFnZSxcbiAgICAgIGVuYWJsZVBlcmZvcm1hbmNlTW9kZTogcHJvcHMucGVyZm9ybWFuY2VNb2RlLFxuICAgICAgZW5hYmxlU2tld1Byb3RlY3Rpb246IHByb3BzLnNrZXdQcm90ZWN0aW9uLFxuICAgICAgY29tcHV0ZVJvbGVBcm46IHByb3BzLmNvbXB1dGVSb2xlPy5yb2xlQXJuLFxuICAgIH0pO1xuXG4gICAgdGhpcy5hcm4gPSBicmFuY2guYXR0ckFybjtcbiAgICB0aGlzLmJyYW5jaE5hbWUgPSBicmFuY2guYXR0ckJyYW5jaE5hbWU7XG5cbiAgICBpZiAocHJvcHMuYXNzZXQpIHtcbiAgICAgIG5ldyBDdXN0b21SZXNvdXJjZSh0aGlzLCAnRGVwbG95bWVudFJlc291cmNlJywge1xuICAgICAgICBzZXJ2aWNlVG9rZW46IEFtcGxpZnlBc3NldERlcGxveW1lbnRQcm92aWRlci5nZXRPckNyZWF0ZSh0aGlzKSxcbiAgICAgICAgcmVzb3VyY2VUeXBlOiAnQ3VzdG9tOjpBbXBsaWZ5QXNzZXREZXBsb3ltZW50JyxcbiAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgIEFwcElkOiBwcm9wcy5hcHAuYXBwSWQsXG4gICAgICAgICAgQnJhbmNoTmFtZTogYnJhbmNoTmFtZSxcbiAgICAgICAgICBTM09iamVjdEtleTogcHJvcHMuYXNzZXQuczNPYmplY3RLZXksXG4gICAgICAgICAgUzNCdWNrZXROYW1lOiBwcm9wcy5hc3NldC5zM0J1Y2tldE5hbWUsXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byB0aGlzIGJyYW5jaC5cbiAgICpcbiAgICogQWxsIGVudmlyb25tZW50IHZhcmlhYmxlcyB0aGF0IHlvdSBhZGQgYXJlIGVuY3J5cHRlZCB0byBwcmV2ZW50IHJvZ3VlXG4gICAqIGFjY2VzcyBzbyB5b3UgY2FuIHVzZSB0aGVtIHRvIHN0b3JlIHNlY3JldCBpbmZvcm1hdGlvbi5cbiAgICovXG4gIEBNZXRob2RNZXRhZGF0YSgpXG4gIHB1YmxpYyBhZGRFbnZpcm9ubWVudChuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLmVudmlyb25tZW50VmFyaWFibGVzW25hbWVdID0gdmFsdWU7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbn1cblxuY2xhc3MgQW1wbGlmeUFzc2V0RGVwbG95bWVudFByb3ZpZGVyIGV4dGVuZHMgTmVzdGVkU3RhY2sge1xuICAvKipcbiAgICogUmV0dXJucyB0aGUgc2luZ2xldG9uIHByb3ZpZGVyLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBnZXRPckNyZWF0ZShzY29wZTogQ29uc3RydWN0KSB7XG4gICAgY29uc3QgcHJvdmlkZXJJZCA9XG4gICAgICAnY29tLmFtYXpvbmF3cy5jZGsuY3VzdG9tLXJlc291cmNlcy5hbXBsaWZ5LWFzc2V0LWRlcGxveW1lbnQtcHJvdmlkZXInO1xuICAgIGNvbnN0IHN0YWNrID0gU3RhY2sub2Yoc2NvcGUpO1xuICAgIGNvbnN0IGdyb3VwID1cbiAgICAgIChzdGFjay5ub2RlLnRyeUZpbmRDaGlsZChwcm92aWRlcklkKSBhcyBBbXBsaWZ5QXNzZXREZXBsb3ltZW50UHJvdmlkZXIpID8/IG5ldyBBbXBsaWZ5QXNzZXREZXBsb3ltZW50UHJvdmlkZXIoc3RhY2ssIHByb3ZpZGVySWQpO1xuICAgIHJldHVybiBncm91cC5wcm92aWRlci5zZXJ2aWNlVG9rZW47XG4gIH1cblxuICBwcml2YXRlIHJlYWRvbmx5IHByb3ZpZGVyOiBQcm92aWRlcjtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIGNvbnN0IG9uRXZlbnQgPSBuZXcgQXNzZXREZXBsb3ltZW50T25FdmVudEZ1bmN0aW9uKHRoaXMsICdhbXBsaWZ5LWFzc2V0LWRlcGxveW1lbnQtb24tZXZlbnQnKTtcbiAgICBvbkV2ZW50LmFkZFRvUm9sZVBvbGljeShuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICByZXNvdXJjZXM6IFsnKiddLFxuICAgICAgYWN0aW9uczogW1xuICAgICAgICAnczM6R2V0T2JqZWN0JyxcbiAgICAgICAgJ3MzOkdldFNpZ25lZFVybCcsXG4gICAgICAgICdhbXBsaWZ5Okxpc3RKb2JzJyxcbiAgICAgICAgJ2FtcGxpZnk6U3RhcnREZXBsb3ltZW50JyxcbiAgICAgIF0sXG4gICAgfSkpO1xuXG4gICAgY29uc3QgaXNDb21wbGV0ZSA9IG5ldyBBc3NldERlcGxveW1lbnRJc0NvbXBsZXRlRnVuY3Rpb24odGhpcywgJ2FtcGxpZnktYXNzZXQtZGVwbG95bWVudC1pcy1jb21wbGV0ZScpO1xuICAgIGlzQ29tcGxldGUuYWRkVG9Sb2xlUG9saWN5KG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgIHJlc291cmNlczogWycqJ10sXG4gICAgICBhY3Rpb25zOiBbJ2FtcGxpZnk6R2V0Sm9iKiddLFxuICAgIH0pKTtcblxuICAgIHRoaXMucHJvdmlkZXIgPSBuZXcgUHJvdmlkZXIoXG4gICAgICB0aGlzLFxuICAgICAgJ2FtcGxpZnktYXNzZXQtZGVwbG95bWVudC1oYW5kbGVyLXByb3ZpZGVyJyxcbiAgICAgIHtcbiAgICAgICAgb25FdmVudEhhbmRsZXI6IG9uRXZlbnQsXG4gICAgICAgIGlzQ29tcGxldGVIYW5kbGVyOiBpc0NvbXBsZXRlLFxuICAgICAgICB0b3RhbFRpbWVvdXQ6IER1cmF0aW9uLm1pbnV0ZXMoNSksXG4gICAgICB9LFxuICAgICk7XG4gIH1cbn1cbiJdfQ==