Socket
Socket
Sign inDemoInstall

@pinegraph/react-website-cdk-constructs

Package Overview
Dependencies
42
Maintainers
2
Versions
7
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 0.0.4 to 0.0.5

7

lib/index.d.ts

@@ -35,1 +35,8 @@ import { RemovalPolicy } from "aws-cdk-lib";

}
/**
* @Deprecated
*
* This function is not meant to be used by others. For Pinegraph, reorganizing
* resources into constructs causes the logical ids to change. See https://github.com/aws/aws-cdk-rfcs/issues/162
*/
export declare function constructConstructsFromProps(self: Construct, props: ReactWebsiteProps): void;

251

lib/index.js
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.ReactWebsiteConstruct = void 0;
exports.constructConstructsFromProps = exports.ReactWebsiteConstruct = void 0;
const aws_cdk_lib_1 = require("aws-cdk-lib");

@@ -20,128 +20,139 @@ const aws_certificatemanager_1 = require("aws-cdk-lib/aws-certificatemanager");

super(scope, id);
const domain = props.domainName;
const allDomainNames = [domain];
const zones = {};
for (const d of allDomainNames) {
const resourceId = getResourceId(d, "Zone");
zones[d] = aws_route53_1.HostedZone.fromLookup(this, resourceId, {
domainName: domain,
});
}
const cloudfrontOAI = new aws_cloudfront_1.OriginAccessIdentity(this, "cloudfront-OAI", {
comment: `OAI for ${domain}`,
});
new aws_cdk_lib_1.CfnOutput(this, "Site", { value: "https://" + domain });
// Content bucket
const siteBucket = new aws_s3_1.Bucket(this, "SiteBucket", {
publicReadAccess: false,
blockPublicAccess: aws_s3_1.BlockPublicAccess.BLOCK_ALL,
removalPolicy: props.removalPolicy,
autoDeleteObjects: props.removalPolicy === aws_cdk_lib_1.RemovalPolicy.DESTROY,
});
// Grant access to cloudfront
siteBucket.addToResourcePolicy(new aws_iam_1.PolicyStatement({
actions: ["s3:GetObject"],
resources: [siteBucket.arnForObjects("*")],
principals: [
new aws_iam_1.CanonicalUserPrincipal(cloudfrontOAI.cloudFrontOriginAccessIdentityS3CanonicalUserId),
],
}));
new aws_cdk_lib_1.CfnOutput(this, "Bucket", { value: siteBucket.bucketName });
// TLS certificate
const certificate = new aws_certificatemanager_1.DnsValidatedCertificate(this, "SiteCertificate", {
constructConstructsFromProps(this, props);
}
}
exports.ReactWebsiteConstruct = ReactWebsiteConstruct;
/**
* @Deprecated
*
* This function is not meant to be used by others. For Pinegraph, reorganizing
* resources into constructs causes the logical ids to change. See https://github.com/aws/aws-cdk-rfcs/issues/162
*/
function constructConstructsFromProps(self, props) {
const domain = props.domainName;
const allDomainNames = [domain];
const zones = {};
for (const d of allDomainNames) {
const resourceId = getResourceId(d, "Zone");
zones[d] = aws_route53_1.HostedZone.fromLookup(self, resourceId, {
domainName: domain,
subjectAlternativeNames: allDomainNames,
hostedZone: zones[domain],
region: "us-east-1", // Cloudfront only checks this region for certificates.
});
new aws_cdk_lib_1.CfnOutput(this, "Certificate", { value: certificate.certificateArn });
const responseHeaderPolicy = props.responseHeaderPolicy ||
new aws_cloudfront_1.ResponseHeadersPolicy(this, "SecurityHeadersResponsePolicy", {
comment: "Security headers response policy",
securityHeadersBehavior: {
contentSecurityPolicy: {
override: true,
contentSecurityPolicy: `default-src 'self';`,
},
strictTransportSecurity: {
override: true,
accessControlMaxAge: aws_cdk_lib_1.Duration.days(365),
includeSubdomains: true,
preload: true,
},
contentTypeOptions: {
override: true,
},
referrerPolicy: {
override: true,
referrerPolicy: aws_cloudfront_1.HeadersReferrerPolicy.STRICT_ORIGIN_WHEN_CROSS_ORIGIN,
},
xssProtection: {
override: true,
protection: true,
modeBlock: true,
},
frameOptions: {
override: true,
frameOption: aws_cloudfront_1.HeadersFrameOption.DENY,
},
}
const cloudfrontOAI = new aws_cloudfront_1.OriginAccessIdentity(self, "cloudfront-OAI", {
comment: `OAI for ${domain}`,
});
new aws_cdk_lib_1.CfnOutput(self, "Site", { value: "https://" + domain });
// Content bucket
const siteBucket = new aws_s3_1.Bucket(self, "SiteBucket", {
bucketName: domain,
publicReadAccess: false,
blockPublicAccess: aws_s3_1.BlockPublicAccess.BLOCK_ALL,
removalPolicy: props.removalPolicy,
autoDeleteObjects: props.removalPolicy === aws_cdk_lib_1.RemovalPolicy.DESTROY,
});
// Grant access to cloudfront
siteBucket.addToResourcePolicy(new aws_iam_1.PolicyStatement({
actions: ["s3:GetObject"],
resources: [siteBucket.arnForObjects("*")],
principals: [
new aws_iam_1.CanonicalUserPrincipal(cloudfrontOAI.cloudFrontOriginAccessIdentityS3CanonicalUserId),
],
}));
new aws_cdk_lib_1.CfnOutput(self, "Bucket", { value: siteBucket.bucketName });
// TLS certificate
const certificate = new aws_certificatemanager_1.DnsValidatedCertificate(self, "SiteCertificate", {
domainName: domain,
subjectAlternativeNames: allDomainNames,
hostedZone: zones[domain],
region: "us-east-1", // Cloudfront only checks this region for certificates.
});
new aws_cdk_lib_1.CfnOutput(self, "Certificate", { value: certificate.certificateArn });
const responseHeaderPolicy = props.responseHeaderPolicy ||
new aws_cloudfront_1.ResponseHeadersPolicy(self, "SecurityHeadersResponsePolicy", {
comment: "Security headers response policy",
securityHeadersBehavior: {
contentSecurityPolicy: {
override: true,
contentSecurityPolicy: `default-src 'self';`,
},
});
// CloudFront distribution
const distribution = new aws_cloudfront_1.Distribution(this, "SiteDistribution", {
certificate: certificate,
domainNames: allDomainNames,
comment: props.domainName,
minimumProtocolVersion: aws_cloudfront_1.SecurityPolicyProtocol.TLS_V1_2016,
defaultBehavior: {
origin: new aws_cloudfront_origins_1.S3Origin(siteBucket, {
originAccessIdentity: cloudfrontOAI,
}),
edgeLambdas: props.edgeOriginRequestFunction
? [
{
functionVersion: props.edgeOriginRequestFunction.currentVersion,
eventType: aws_cloudfront_1.LambdaEdgeEventType.ORIGIN_REQUEST,
},
]
: [],
compress: true,
allowedMethods: aws_cloudfront_1.AllowedMethods.ALLOW_GET_HEAD_OPTIONS,
viewerProtocolPolicy: aws_cloudfront_1.ViewerProtocolPolicy.REDIRECT_TO_HTTPS,
responseHeadersPolicy: responseHeaderPolicy,
strictTransportSecurity: {
override: true,
accessControlMaxAge: aws_cdk_lib_1.Duration.days(365),
includeSubdomains: true,
preload: true,
},
contentTypeOptions: {
override: true,
},
referrerPolicy: {
override: true,
referrerPolicy: aws_cloudfront_1.HeadersReferrerPolicy.STRICT_ORIGIN_WHEN_CROSS_ORIGIN,
},
xssProtection: {
override: true,
protection: true,
modeBlock: true,
},
frameOptions: {
override: true,
frameOption: aws_cloudfront_1.HeadersFrameOption.DENY,
},
},
/**
* This ensures that all routes end up using index.html for client side rendering.
*/
errorResponses: [
{
httpStatus: 403,
responseHttpStatus: 200,
responsePagePath: "/index.html",
},
],
defaultRootObject: "index.html",
});
new aws_cdk_lib_1.CfnOutput(this, "DistributionId", {
value: distribution.distributionId,
// CloudFront distribution
const distribution = new aws_cloudfront_1.Distribution(self, "SiteDistribution", {
certificate: certificate,
domainNames: allDomainNames,
comment: props.domainName,
minimumProtocolVersion: aws_cloudfront_1.SecurityPolicyProtocol.TLS_V1_2016,
defaultBehavior: {
origin: new aws_cloudfront_origins_1.S3Origin(siteBucket, {
originAccessIdentity: cloudfrontOAI,
}),
edgeLambdas: props.edgeOriginRequestFunction
? [
{
functionVersion: props.edgeOriginRequestFunction.currentVersion,
eventType: aws_cloudfront_1.LambdaEdgeEventType.ORIGIN_REQUEST,
},
]
: [],
compress: true,
allowedMethods: aws_cloudfront_1.AllowedMethods.ALLOW_GET_HEAD_OPTIONS,
viewerProtocolPolicy: aws_cloudfront_1.ViewerProtocolPolicy.REDIRECT_TO_HTTPS,
responseHeadersPolicy: responseHeaderPolicy,
},
/**
* This ensures that all routes end up using index.html for client side rendering.
*/
errorResponses: [
{
httpStatus: 403,
responseHttpStatus: 200,
responsePagePath: "/index.html",
},
],
defaultRootObject: "index.html",
});
new aws_cdk_lib_1.CfnOutput(self, "DistributionId", {
value: distribution.distributionId,
});
// Route53 alias record for the CloudFront distribution]
for (const d of allDomainNames) {
const resourceId = getResourceId(d, "SiteAliasRecord");
new aws_route53_1.ARecord(self, resourceId, {
recordName: d,
target: aws_route53_1.RecordTarget.fromAlias(new aws_route53_targets_1.CloudFrontTarget(distribution)),
zone: zones[d],
});
// Route53 alias record for the CloudFront distribution]
for (const d of allDomainNames) {
const resourceId = getResourceId(d, "SiteAliasRecord");
new aws_route53_1.ARecord(this, resourceId, {
recordName: d,
target: aws_route53_1.RecordTarget.fromAlias(new aws_route53_targets_1.CloudFrontTarget(distribution)),
zone: zones[d],
});
}
// Deploy site contents to S3 bucket
new aws_s3_deployment_1.BucketDeployment(this, "DeployWithInvalidation", {
sources: [props.sourceAsset],
destinationBucket: siteBucket,
distribution,
distributionPaths: ["/*"],
});
}
// Deploy site contents to S3 bucket
new aws_s3_deployment_1.BucketDeployment(self, "DeployWithInvalidation", {
sources: [props.sourceAsset],
destinationBucket: siteBucket,
distribution,
distributionPaths: ["/*"],
});
}
exports.ReactWebsiteConstruct = ReactWebsiteConstruct;
exports.constructConstructsFromProps = constructConstructsFromProps;
function capitalizeFirstLetter(str) {

@@ -159,2 +170,2 @@ return str.charAt(0).toUpperCase() + str.slice(1);

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkNBQWlFO0FBQ2pFLCtFQUE2RTtBQUM3RSwrREFXb0M7QUFDcEMsK0VBQThEO0FBQzlELGlEQUE4RTtBQUM5RSx5REFLaUM7QUFDakMseUVBQW1FO0FBQ25FLCtDQUErRDtBQUMvRCxxRUFBMEU7QUFDMUUsMkNBQXVDO0FBOEJ2Qzs7R0FFRztBQUNILE1BQWEscUJBQXNCLFNBQVEsc0JBQVM7SUFDbEQsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUF3QjtRQUNoRSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2pCLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUM7UUFDaEMsTUFBTSxjQUFjLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUVoQyxNQUFNLEtBQUssR0FBb0MsRUFBRSxDQUFDO1FBQ2xELEtBQUssTUFBTSxDQUFDLElBQUksY0FBYyxFQUFFO1lBQzlCLE1BQU0sVUFBVSxHQUFHLGFBQWEsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDNUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLHdCQUFVLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBQ2pELFVBQVUsRUFBRSxNQUFNO2FBQ25CLENBQUMsQ0FBQztTQUNKO1FBQ0QsTUFBTSxhQUFhLEdBQUcsSUFBSSxxQ0FBb0IsQ0FBQyxJQUFJLEVBQUUsZ0JBQWdCLEVBQUU7WUFDckUsT0FBTyxFQUFFLFdBQVcsTUFBTSxFQUFFO1NBQzdCLENBQUMsQ0FBQztRQUVILElBQUksdUJBQVMsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLEVBQUUsS0FBSyxFQUFFLFVBQVUsR0FBRyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBRTVELGlCQUFpQjtRQUNqQixNQUFNLFVBQVUsR0FBRyxJ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RSxDQUFDLElBQUksQ0FBQztTQUMxQixDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUE5SUQsc0RBOElDO0FBRUQsU0FBUyxxQkFBcUIsQ0FBQyxHQUFXO0lBQ3hDLE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3BELENBQUM7QUFFRDs7R0FFRztBQUNILFNBQVMsYUFBYSxDQUFDLE1BQWMsRUFBRSxZQUFvQjtJQUN6RCxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRTtRQUN6QixPQUFPLFlBQVksQ0FBQztLQUNyQjtJQUNELE9BQU8scUJBQXFCLENBQUMsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFlBQVksRUFBRSxDQUFDLENBQUM7QUFDekUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENmbk91dHB1dCwgRHVyYXRpb24sIFJlbW92YWxQb2xpY3kgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7IERuc1ZhbGlkYXRlZENlcnRpZmljYXRlIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1jZXJ0aWZpY2F0ZW1hbmFnZXJcIjtcbmltcG9ydCB7XG4gIEFsbG93ZWRNZXRob2RzLFxuICBEaXN0cmlidXRpb24sXG4gIGV4cGVyaW1lbnRhbCxcbiAgSGVhZGVyc0ZyYW1lT3B0aW9uLFxuICBIZWFkZXJzUmVmZXJyZXJQb2xpY3ksXG4gIExhbWJkYUVkZ2VFdmVudFR5cGUsXG4gIE9yaWdpbkFjY2Vzc0lkZW50aXR5LFxuICBSZXNwb25zZUhlYWRlcnNQb2xpY3ksXG4gIFNlY3VyaXR5UG9saWN5UHJvdG9jb2wsXG4gIFZpZXdlclByb3RvY29sUG9saWN5LFxufSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWNsb3VkZnJvbnRcIjtcbmltcG9ydCB7IFMzT3JpZ2luIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1jbG91ZGZyb250LW9yaWdpbnNcIjtcbmltcG9ydCB7IENhbm9uaWNhbFVzZXJQcmluY2lwYWwsIFBvbGljeVN0YXRlbWVudCB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtaWFtXCI7XG5pbXBvcnQge1xuICBBUmVjb3JkLFxuICBIb3N0ZWRab25lLFxuICBJSG9zdGVkWm9uZSxcbiAgUmVjb3JkVGFyZ2V0LFxufSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXJvdXRlNTNcIjtcbmltcG9ydCB7IENsb3VkRnJvbnRUYXJnZXQgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXJvdXRlNTMtdGFyZ2V0c1wiO1xuaW1wb3J0IHsgQmxvY2tQdWJsaWNBY2Nlc3MsIEJ1Y2tldCB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtczNcIjtcbmltcG9ydCB7IEJ1Y2tldERlcGxveW1lbnQsIElTb3VyY2UgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXMzLWRlcGxveW1lbnRcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5leHBvcnQgaW50ZXJmYWNlIFJlYWN0V2Vic2l0ZVByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBkb21haW4gbmFtZSBvZiB0aGUgd2Vic2l0ZS5cbiAgICovXG4gIHJlYWRvbmx5IGRvbWFpbk5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGJ1aWx0IHJlYWN0IHNvdXJjZSBjb2RlIHRvIGRlcGxveS5cbiAgICovXG4gIHJlYWRvbmx5IHNvdXJjZUFzc2V0OiBJU291cmNlO1xuXG4gIC8qKlxuICAgKiBJZiBub3Qgc3BlY2lmaWVkLCBpdCB3aWxsIGRlZmF1bHQgdG8gYSBzdHJpY3QgYW5kIHNlY3VyZSBDU1AgdGhhdCB3aWxsIHNjb3JlXG4gICAqIHdlbGwgb24gaHR0cHM6Ly9vYnNlcnZhdG9yeS5tb3ppbGxhLm9yZy8uXG4gICAqL1xuICByZWFkb25seSByZXNwb25zZUhlYWRlclBvbGljeT86IFJlc3BvbnNlSGVhZGVyc1BvbGljeTtcblxuICAvKipcbiAgICogQW4gb3B0aW9uYWwgZWRnZSBmdW5jdGlvbiB0byB0cmFuc2Zvcm0gUzMgcmVzcG9uc2VzLiBUaGlzIGlzIHVzZWZ1bFxuICAgKiBmb3IgZG9pbmcgdGhpbmdzIGxpa2UgaW5qZWN0aW5nIG1ldGF0YWdzIGZvciBzZWFyY2ggb3B0aW1pemF0aW9ucy5cbiAgICovXG4gIHJlYWRvbmx5IGVkZ2VPcmlnaW5SZXF1ZXN0RnVuY3Rpb24/OiBleHBlcmltZW50YWwuRWRnZUZ1bmN0aW9uO1xuXG4gIC8qKlxuICAgKiBQb2xpY3kgZm9yIGRlbGV0aW5nIHJlc291cmNlcy4gRGVmYXVsdHMgdG8gZGVzdHJveS5cbiAgICovXG4gIHJlYWRvbmx5IHJlbW92YWxQb2xpY3k/OiBSZW1vdmFsUG9saWN5O1xufVxuXG4vKipcbiAqIEEgY29uc3RydWN0IHRvIGNyZWF0ZSBhIHNlY3VyZSBzaW5nbGUgcGFnZSBhcHBsaWNhdGlvbiByZWFjdCB3ZWJzaXRlLlxuICovXG5leHBvcnQgY2xhc3MgUmVhY3RXZWJzaXRlQ29uc3RydWN0IGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFJlYWN0V2Vic2l0ZVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcbiAgICBjb25zdCBkb21haW4gPSBwcm9wcy5kb21haW5OYW1lO1xuICAgIGNvbnN0IGFsbERvbWFpbk5hbWVzID0gW2RvbWFpbl07XG5cbiAgICBjb25zdCB6b25lczogeyBbbmFtZTogc3RyaW5nXTogSUhvc3RlZFpvbmUgfSA9IHt9O1xuICAgIGZvciAoY29uc3QgZCBvZiBhbGxEb21haW5OYW1lcykge1xuICAgICAgY29uc3QgcmVzb3VyY2VJZCA9IGdldFJlc291cmNlSWQoZCwgXCJab25lXCIpO1xuICAgICAgem9uZXNbZF0gPSBIb3N0ZWRab25lLmZyb21Mb29rdXAodGhpcywgcmVzb3VyY2VJZCwge1xuICAgICAgICBkb21haW5OYW1lOiBkb21haW4sXG4gICAgICB9KTtcbiAgICB9XG4gICAgY29uc3QgY2xvdWRmcm9udE9BSSA9IG5ldyBPcmlnaW5BY2Nlc3NJZGVudGl0eSh0aGlzLCBcImNsb3VkZnJvbnQtT0FJXCIsIHtcbiAgICAgIGNvbW1lbnQ6IGBPQUkgZm9yICR7ZG9tYWlufWAsXG4gICAgfSk7XG5cbiAgICBuZXcgQ2ZuT3V0cHV0KHRoaXMsIFwiU2l0ZVwiLCB7IHZhbHVlOiBcImh0dHBzOi8vXCIgKyBkb21haW4gfSk7XG5cbiAgICAvLyBDb250ZW50IGJ1Y2tldFxuICAgIGNvbnN0IHNpdGVCdWNrZXQgPSBuZXcgQnVja2V0KHRoaXMsIFwiU2l0ZUJ1Y2tldFwiLCB7XG4gICAgICBwdWJsaWNSZWFkQWNjZXNzOiBmYWxzZSxcbiAgICAgIGJsb2NrUHVibGljQWNjZXNzOiBCbG9ja1B1YmxpY0FjY2Vzcy5CTE9DS19BTEwsXG4gICAgICByZW1vdmFsUG9saWN5OiBwcm9wcy5yZW1vdmFsUG9saWN5LFxuICAgICAgYXV0b0RlbGV0ZU9iamVjdHM6IHByb3BzLnJlbW92YWxQb2xpY3kgPT09IFJlbW92YWxQb2xpY3kuREVTVFJPWSxcbiAgICB9KTtcbiAgICAvLyBHcmFudCBhY2Nlc3MgdG8gY2xvdWRmcm9udFxuICAgIHNpdGVCdWNrZXQuYWRkVG9SZXNvdXJjZVBvbGljeShcbiAgICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICBhY3Rpb25zOiBbXCJzMzpHZXRPYmplY3RcIl0sXG4gICAgICAgIHJlc291cmNlczogW3NpdGVCdWNrZXQuYXJuRm9yT2JqZWN0cyhcIipcIildLFxuICAgICAgICBwcmluY2lwYWxzOiBbXG4gICAgICAgICAgbmV3IENhbm9uaWNhbFVzZXJQcmluY2lwYWwoXG4gICAgICAgICAgICBjbG91ZGZyb250T0FJLmNsb3VkRnJvbnRPcmlnaW5BY2Nlc3NJZGVudGl0eVMzQ2Fub25pY2FsVXNlcklkXG4gICAgICAgICAgKSxcbiAgICAgICAgXSxcbiAgICAgIH0pXG4gICAgKTtcbiAgICBuZXcgQ2ZuT3V0cHV0KHRoaXMsIFwiQnVja2V0XCIsIHsgdmFsdWU6IHNpdGVCdWNrZXQuYnVja2V0TmFtZSB9KTtcblxuICAgIC8vIFRMUyBjZXJ0aWZpY2F0ZVxuICAgIGNvbnN0IGNlcnRpZmljYXRlID0gbmV3IERuc1ZhbGlkYXRlZENlcnRpZmljYXRlKHRoaXMsIFwiU2l0ZUNlcnRpZmljYXRlXCIsIHtcbiAgICAgIGRvbWFpbk5hbWU6IGRvbWFpbixcbiAgICAgIHN1YmplY3RBbHRlcm5hdGl2ZU5hbWVzOiBhbGxEb21haW5OYW1lcyxcbiAgICAgIGhvc3RlZFpvbmU6IHpvbmVzW2RvbWFpbl0sXG4gICAgICByZWdpb246IFwidXMtZWFzdC0xXCIsIC8vIENsb3VkZnJvbnQgb25seSBjaGVja3MgdGhpcyByZWdpb24gZm9yIGNlcnRpZmljYXRlcy5cbiAgICB9KTtcbiAgICBuZXcgQ2ZuT3V0cHV0KHRoaXMsIFwiQ2VydGlmaWNhdGVcIiwgeyB2YWx1ZTogY2VydGlmaWNhdGUuY2VydGlmaWNhdGVBcm4gfSk7XG4gICAgY29uc3QgcmVzcG9uc2VIZWFkZXJQb2xpY3kgPVxuICAgICAgcHJvcHMucmVzcG9uc2VIZWFkZXJQb2xpY3kgfHxcbiAgICAgIG5ldyBSZXNwb25zZUhlYWRlcnNQb2xpY3kodGhpcywgXCJTZWN1cml0eUhlYWRlcnNSZXNwb25zZVBvbGljeVwiLCB7XG4gICAgICAgIGNvbW1lbnQ6IFwiU2VjdXJpdHkgaGVhZGVycyByZXNwb25zZSBwb2xpY3lcIixcbiAgICAgICAgc2VjdXJpdHlIZWFkZXJzQmVoYXZpb3I6IHtcbiAgICAgICAgICBjb250ZW50U2VjdXJpdHlQb2xpY3k6IHtcbiAgICAgICAgICAgIG92ZXJyaWRlOiB0cnVlLFxuICAgICAgICAgICAgY29udGVudFNlY3VyaXR5UG9saWN5OiBgZGVmYXVsdC1zcmMgJ3NlbGYnO2AsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBzdHJpY3RUcmFuc3BvcnRTZWN1cml0eToge1xuICAgICAgICAgICAgb3ZlcnJpZGU6IHRydWUsXG4gICAgICAgICAgICBhY2Nlc3NDb250cm9sTWF4QWdlOiBEdXJhdGlvbi5kYXlzKDM2NSksXG4gICAgICAgICAgICBpbmNsdWRlU3ViZG9tYWluczogdHJ1ZSxcbiAgICAgICAgICAgIHByZWxvYWQ6IHRydWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBjb250ZW50VHlwZU9wdGlvbnM6IHtcbiAgICAgICAgICAgIG92ZXJyaWRlOiB0cnVlLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgcmVmZXJyZXJQb2xpY3k6IHtcbiAgICAgICAgICAgIG92ZXJyaWRlOiB0cnVlLFxuICAgICAgICAgICAgcmVmZXJyZXJQb2xpY3k6XG4gICAgICAgICAgICAgIEhlYWRlcnNSZWZlcnJlclBvbGljeS5TVFJJQ1RfT1JJR0lOX1dIRU5fQ1JPU1NfT1JJR0lOLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgeHNzUHJvdGVjdGlvbjoge1xuICAgICAgICAgICAgb3ZlcnJpZGU6IHRydWUsXG4gICAgICAgICAgICBwcm90ZWN0aW9uOiB0cnVlLFxuICAgICAgICAgICAgbW9kZUJsb2NrOiB0cnVlLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgZnJhbWVPcHRpb25zOiB7XG4gICAgICAgICAgICBvdmVycmlkZTogdHJ1ZSxcbiAgICAgICAgICAgIGZyYW1lT3B0aW9uOiBIZWFkZXJzRnJhbWVPcHRpb24uREVOWSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSk7XG5cbiAgICAvLyBDbG91ZEZyb250IGRpc3RyaWJ1dGlvblxuICAgIGNvbnN0IGRpc3RyaWJ1dGlvbiA9IG5ldyBEaXN0cmlidXRpb24odGhpcywgXCJTaXRlRGlzdHJpYnV0aW9uXCIsIHtcbiAgICAgIGNlcnRpZmljYXRlOiBjZXJ0aWZpY2F0ZSxcbiAgICAgIGRvbWFpbk5hbWVzOiBhbGxEb21haW5OYW1lcyxcbiAgICAgIGNvbW1lbnQ6IHByb3BzLmRvbWFpbk5hbWUsXG4gICAgICBtaW5pbXVtUHJvdG9jb2xWZXJzaW9uOiBTZWN1cml0eVBvbGljeVByb3RvY29sLlRMU19WMV8yMDE2LFxuICAgICAgZGVmYXVsdEJlaGF2aW9yOiB7XG4gICAgICAgIG9yaWdpbjogbmV3IFMzT3JpZ2luKHNpdGVCdWNrZXQsIHtcbiAgICAgICAgICBvcmlnaW5BY2Nlc3NJZGVudGl0eTogY2xvdWRmcm9udE9BSSxcbiAgICAgICAgfSksXG4gICAgICAgIGVkZ2VMYW1iZGFzOiBwcm9wcy5lZGdlT3JpZ2luUmVxdWVzdEZ1bmN0aW9uXG4gICAgICAgICAgPyBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBmdW5jdGlvblZlcnNpb246IHByb3BzLmVkZ2VPcmlnaW5SZXF1ZXN0RnVuY3Rpb24uY3VycmVudFZlcnNpb24sXG4gICAgICAgICAgICAgICAgZXZlbnRUeXBlOiBMYW1iZGFFZGdlRXZlbnRUeXBlLk9SSUdJTl9SRVFVRVNULFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXVxuICAgICAgICAgIDogW10sXG4gICAgICAgIGNvbXByZXNzOiB0cnVlLFxuICAgICAgICBhbGxvd2VkTWV0aG9kczogQWxsb3dlZE1ldGhvZHMuQUxMT1dfR0VUX0hFQURfT1BUSU9OUyxcbiAgICAgICAgdmlld2VyUHJvdG9jb2xQb2xpY3k6IFZpZXdlclByb3RvY29sUG9saWN5LlJFRElSRUNUX1RPX0hUVFBTLFxuICAgICAgICByZXNwb25zZUhlYWRlcnNQb2xpY3k6IHJlc3BvbnNlSGVhZGVyUG9saWN5LFxuICAgICAgfSxcblxuICAgICAgLyoqXG4gICAgICAgKiBUaGlzIGVuc3VyZXMgdGhhdCBhbGwgcm91dGVzIGVuZCB1cCB1c2luZyBpbmRleC5odG1sIGZvciBjbGllbnQgc2lkZSByZW5kZXJpbmcuXG4gICAgICAgKi9cbiAgICAgIGVycm9yUmVzcG9uc2VzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBodHRwU3RhdHVzOiA0MDMsXG4gICAgICAgICAgcmVzcG9uc2VIdHRwU3RhdHVzOiAyMDAsXG4gICAgICAgICAgcmVzcG9uc2VQYWdlUGF0aDogXCIvaW5kZXguaHRtbFwiLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIGRlZmF1bHRSb290T2JqZWN0OiBcImluZGV4Lmh0bWxcIixcbiAgICB9KTtcblxuICAgIG5ldyBDZm5PdXRwdXQodGhpcywgXCJEaXN0cmlidXRpb25JZFwiLCB7XG4gICAgICB2YWx1ZTogZGlzdHJpYnV0aW9uLmRpc3RyaWJ1dGlvbklkLFxuICAgIH0pO1xuXG4gICAgLy8gUm91dGU1MyBhbGlhcyByZWNvcmQgZm9yIHRoZSBDbG91ZEZyb250IGRpc3RyaWJ1dGlvbl1cbiAgICBmb3IgKGNvbnN0IGQgb2YgYWxsRG9tYWluTmFtZXMpIHtcbiAgICAgIGNvbnN0IHJlc291cmNlSWQgPSBnZXRSZXNvdXJjZUlkKGQsIFwiU2l0ZUFsaWFzUmVjb3JkXCIpO1xuICAgICAgbmV3IEFSZWNvcmQodGhpcywgcmVzb3VyY2VJZCwge1xuICAgICAgICByZWNvcmROYW1lOiBkLFxuICAgICAgICB0YXJnZXQ6IFJlY29yZFRhcmdldC5mcm9tQWxpYXMobmV3IENsb3VkRnJvbnRUYXJnZXQoZGlzdHJpYnV0aW9uKSksXG4gICAgICAgIHpvbmU6IHpvbmVzW2RdLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gRGVwbG95IHNpdGUgY29udGVudHMgdG8gUzMgYnVja2V0XG4gICAgbmV3IEJ1Y2tldERlcGxveW1lbnQodGhpcywgXCJEZXBsb3lXaXRoSW52YWxpZGF0aW9uXCIsIHtcbiAgICAgIHNvdXJjZXM6IFtwcm9wcy5zb3VyY2VBc3NldF0sXG4gICAgICBkZXN0aW5hdGlvbkJ1Y2tldDogc2l0ZUJ1Y2tldCxcbiAgICAgIGRpc3RyaWJ1dGlvbixcbiAgICAgIGRpc3RyaWJ1dGlvblBhdGhzOiBbXCIvKlwiXSxcbiAgICB9KTtcbiAgfVxufVxuXG5mdW5jdGlvbiBjYXBpdGFsaXplRmlyc3RMZXR0ZXIoc3RyOiBzdHJpbmcpIHtcbiAgcmV0dXJuIHN0ci5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHN0ci5zbGljZSgxKTtcbn1cblxuLyoqXG4gKiBBIHNpbXBsZSBmdW5jdGlvbiB0byBtYWtlIHRoZSByZXNvdXJjZSBpZCBodW1hbiByZWFkYWJsZS5cbiAqL1xuZnVuY3Rpb24gZ2V0UmVzb3VyY2VJZChkb21haW46IHN0cmluZywgcmVzb3VyY2VUeXBlOiBzdHJpbmcpIHtcbiAgaWYgKCFkb21haW4uaW5jbHVkZXMoXCIuXCIpKSB7XG4gICAgcmV0dXJuIHJlc291cmNlVHlwZTtcbiAgfVxuICByZXR1cm4gY2FwaXRhbGl6ZUZpcnN0TGV0dGVyKGAke2RvbWFpbi5zcGxpdChcIi5cIilbMF19JHtyZXNvdXJjZVR5cGV9YCk7XG59XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkNBQWlFO0FBQ2pFLCtFQUE2RTtBQUM3RSwrREFXb0M7QUFDcEMsK0VBQThEO0FBQzlELGlEQUE4RTtBQUM5RSx5REFLaUM7QUFDakMseUVBQW1FO0FBQ25FLCtDQUErRDtBQUMvRCxxRUFBMEU7QUFDMUUsMkNBQXVDO0FBOEJ2Qzs7R0FFRztBQUNILE1BQWEscUJBQXNCLFNBQVEsc0JBQVM7SUFDbEQsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUF3QjtRQUNoRSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2pCLDRCQUE0QixDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUM1QyxDQUFDO0NBQ0Y7QUFMRCxzREFLQztBQUVEOzs7OztHQUtHO0FBQ0gsU0FBZ0IsNEJBQTRCLENBQzFDLElBQWUsRUFDZixLQUF3QjtJQUV4QixNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDO0lBQ2hDLE1BQU0sY0FBYyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFaEMsTUFBTSxLQUFLLEdBQW9DLEVBQUUsQ0FBQztJQUNsRCxLQUFLLE1BQU0sQ0FBQyxJQUFJLGNBQWMsRUFBRTtRQUM5QixNQUFNLFVBQVUsR0FBRyxhQUFhLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQzVDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyx3QkFBVSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFO1lBQ2pELFVBQVUsRUFBRSxNQUFNO1NBQ25CLENBQUMsQ0FBQztLQUNKO0lBQ0QsTUFBTSxhQUFhLEdBQUcsSUFBSSxxQ0FBb0IsQ0FBQyxJQUFJLEVBQUUsZ0JBQWdCLEVBQUU7UUFDckUsT0FBTyxFQUFFLFdBQVcsTUFBTSxFQUFFO0tBQzdCLENBQUMsQ0FB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QUFJLG9DQUFnQixDQUFDLElBQUksRUFBRSx3QkFBd0IsRUFBRTtRQUNuRCxPQUFPLEVBQUUsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDO1FBQzVCLGlCQUFpQixFQUFFLFVBQVU7UUFDN0IsWUFBWTtRQUNaLGlCQUFpQixFQUFFLENBQUMsSUFBSSxDQUFDO0tBQzFCLENBQUMsQ0FBQztBQUNMLENBQUM7QUE5SUQsb0VBOElDO0FBRUQsU0FBUyxxQkFBcUIsQ0FBQyxHQUFXO0lBQ3hDLE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3BELENBQUM7QUFFRDs7R0FFRztBQUNILFNBQVMsYUFBYSxDQUFDLE1BQWMsRUFBRSxZQUFvQjtJQUN6RCxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRTtRQUN6QixPQUFPLFlBQVksQ0FBQztLQUNyQjtJQUNELE9BQU8scUJBQXFCLENBQUMsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFlBQVksRUFBRSxDQUFDLENBQUM7QUFDekUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENmbk91dHB1dCwgRHVyYXRpb24sIFJlbW92YWxQb2xpY3kgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7IERuc1ZhbGlkYXRlZENlcnRpZmljYXRlIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1jZXJ0aWZpY2F0ZW1hbmFnZXJcIjtcbmltcG9ydCB7XG4gIEFsbG93ZWRNZXRob2RzLFxuICBEaXN0cmlidXRpb24sXG4gIGV4cGVyaW1lbnRhbCxcbiAgSGVhZGVyc0ZyYW1lT3B0aW9uLFxuICBIZWFkZXJzUmVmZXJyZXJQb2xpY3ksXG4gIExhbWJkYUVkZ2VFdmVudFR5cGUsXG4gIE9yaWdpbkFjY2Vzc0lkZW50aXR5LFxuICBSZXNwb25zZUhlYWRlcnNQb2xpY3ksXG4gIFNlY3VyaXR5UG9saWN5UHJvdG9jb2wsXG4gIFZpZXdlclByb3RvY29sUG9saWN5LFxufSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWNsb3VkZnJvbnRcIjtcbmltcG9ydCB7IFMzT3JpZ2luIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1jbG91ZGZyb250LW9yaWdpbnNcIjtcbmltcG9ydCB7IENhbm9uaWNhbFVzZXJQcmluY2lwYWwsIFBvbGljeVN0YXRlbWVudCB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtaWFtXCI7XG5pbXBvcnQge1xuICBBUmVjb3JkLFxuICBIb3N0ZWRab25lLFxuICBJSG9zdGVkWm9uZSxcbiAgUmVjb3JkVGFyZ2V0LFxufSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXJvdXRlNTNcIjtcbmltcG9ydCB7IENsb3VkRnJvbnRUYXJnZXQgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXJvdXRlNTMtdGFyZ2V0c1wiO1xuaW1wb3J0IHsgQmxvY2tQdWJsaWNBY2Nlc3MsIEJ1Y2tldCB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtczNcIjtcbmltcG9ydCB7IEJ1Y2tldERlcGxveW1lbnQsIElTb3VyY2UgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXMzLWRlcGxveW1lbnRcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5leHBvcnQgaW50ZXJmYWNlIFJlYWN0V2Vic2l0ZVByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBkb21haW4gbmFtZSBvZiB0aGUgd2Vic2l0ZS5cbiAgICovXG4gIHJlYWRvbmx5IGRvbWFpbk5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGJ1aWx0IHJlYWN0IHNvdXJjZSBjb2RlIHRvIGRlcGxveS5cbiAgICovXG4gIHJlYWRvbmx5IHNvdXJjZUFzc2V0OiBJU291cmNlO1xuXG4gIC8qKlxuICAgKiBJZiBub3Qgc3BlY2lmaWVkLCBpdCB3aWxsIGRlZmF1bHQgdG8gYSBzdHJpY3QgYW5kIHNlY3VyZSBDU1AgdGhhdCB3aWxsIHNjb3JlXG4gICAqIHdlbGwgb24gaHR0cHM6Ly9vYnNlcnZhdG9yeS5tb3ppbGxhLm9yZy8uXG4gICAqL1xuICByZWFkb25seSByZXNwb25zZUhlYWRlclBvbGljeT86IFJlc3BvbnNlSGVhZGVyc1BvbGljeTtcblxuICAvKipcbiAgICogQW4gb3B0aW9uYWwgZWRnZSBmdW5jdGlvbiB0byB0cmFuc2Zvcm0gUzMgcmVzcG9uc2VzLiBUaGlzIGlzIHVzZWZ1bFxuICAgKiBmb3IgZG9pbmcgdGhpbmdzIGxpa2UgaW5qZWN0aW5nIG1ldGF0YWdzIGZvciBzZWFyY2ggb3B0aW1pemF0aW9ucy5cbiAgICovXG4gIHJlYWRvbmx5IGVkZ2VPcmlnaW5SZXF1ZXN0RnVuY3Rpb24/OiBleHBlcmltZW50YWwuRWRnZUZ1bmN0aW9uO1xuXG4gIC8qKlxuICAgKiBQb2xpY3kgZm9yIGRlbGV0aW5nIHJlc291cmNlcy4gRGVmYXVsdHMgdG8gZGVzdHJveS5cbiAgICovXG4gIHJlYWRvbmx5IHJlbW92YWxQb2xpY3k/OiBSZW1vdmFsUG9saWN5O1xufVxuXG4vKipcbiAqIEEgY29uc3RydWN0IHRvIGNyZWF0ZSBhIHNlY3VyZSBzaW5nbGUgcGFnZSBhcHBsaWNhdGlvbiByZWFjdCB3ZWJzaXRlLlxuICovXG5leHBvcnQgY2xhc3MgUmVhY3RXZWJzaXRlQ29uc3RydWN0IGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFJlYWN0V2Vic2l0ZVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcbiAgICBjb25zdHJ1Y3RDb25zdHJ1Y3RzRnJvbVByb3BzKHRoaXMsIHByb3BzKTtcbiAgfVxufVxuXG4vKipcbiAqIEBEZXByZWNhdGVkXG4gKlxuICogVGhpcyBmdW5jdGlvbiBpcyBub3QgbWVhbnQgdG8gYmUgdXNlZCBieSBvdGhlcnMuIEZvciBQaW5lZ3JhcGgsIHJlb3JnYW5pemluZ1xuICogcmVzb3VyY2VzIGludG8gY29uc3RydWN0cyBjYXVzZXMgdGhlIGxvZ2ljYWwgaWRzIHRvIGNoYW5nZS4gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYXdzLWNkay1yZmNzL2lzc3Vlcy8xNjJcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbnN0cnVjdENvbnN0cnVjdHNGcm9tUHJvcHMoXG4gIHNlbGY6IENvbnN0cnVjdCxcbiAgcHJvcHM6IFJlYWN0V2Vic2l0ZVByb3BzXG4pIHtcbiAgY29uc3QgZG9tYWluID0gcHJvcHMuZG9tYWluTmFtZTtcbiAgY29uc3QgYWxsRG9tYWluTmFtZXMgPSBbZG9tYWluXTtcblxuICBjb25zdCB6b25lczogeyBbbmFtZTogc3RyaW5nXTogSUhvc3RlZFpvbmUgfSA9IHt9O1xuICBmb3IgKGNvbnN0IGQgb2YgYWxsRG9tYWluTmFtZXMpIHtcbiAgICBjb25zdCByZXNvdXJjZUlkID0gZ2V0UmVzb3VyY2VJZChkLCBcIlpvbmVcIik7XG4gICAgem9uZXNbZF0gPSBIb3N0ZWRab25lLmZyb21Mb29rdXAoc2VsZiwgcmVzb3VyY2VJZCwge1xuICAgICAgZG9tYWluTmFtZTogZG9tYWluLFxuICAgIH0pO1xuICB9XG4gIGNvbnN0IGNsb3VkZnJvbnRPQUkgPSBuZXcgT3JpZ2luQWNjZXNzSWRlbnRpdHkoc2VsZiwgXCJjbG91ZGZyb250LU9BSVwiLCB7XG4gICAgY29tbWVudDogYE9BSSBmb3IgJHtkb21haW59YCxcbiAgfSk7XG5cbiAgbmV3IENmbk91dHB1dChzZWxmLCBcIlNpdGVcIiwgeyB2YWx1ZTogXCJodHRwczovL1wiICsgZG9tYWluIH0pO1xuXG4gIC8vIENvbnRlbnQgYnVja2V0XG4gIGNvbnN0IHNpdGVCdWNrZXQgPSBuZXcgQnVja2V0KHNlbGYsIFwiU2l0ZUJ1Y2tldFwiLCB7XG4gICAgYnVja2V0TmFtZTogZG9tYWluLFxuICAgIHB1YmxpY1JlYWRBY2Nlc3M6IGZhbHNlLFxuICAgIGJsb2NrUHVibGljQWNjZXNzOiBCbG9ja1B1YmxpY0FjY2Vzcy5CTE9DS19BTEwsXG4gICAgcmVtb3ZhbFBvbGljeTogcHJvcHMucmVtb3ZhbFBvbGljeSxcbiAgICBhdXRvRGVsZXRlT2JqZWN0czogcHJvcHMucmVtb3ZhbFBvbGljeSA9PT0gUmVtb3ZhbFBvbGljeS5ERVNUUk9ZLFxuICB9KTtcbiAgLy8gR3JhbnQgYWNjZXNzIHRvIGNsb3VkZnJvbnRcbiAgc2l0ZUJ1Y2tldC5hZGRUb1Jlc291cmNlUG9saWN5KFxuICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgYWN0aW9uczogW1wiczM6R2V0T2JqZWN0XCJdLFxuICAgICAgcmVzb3VyY2VzOiBbc2l0ZUJ1Y2tldC5hcm5Gb3JPYmplY3RzKFwiKlwiKV0sXG4gICAgICBwcmluY2lwYWxzOiBbXG4gICAgICAgIG5ldyBDYW5vbmljYWxVc2VyUHJpbmNpcGFsKFxuICAgICAgICAgIGNsb3VkZnJvbnRPQUkuY2xvdWRGcm9udE9yaWdpbkFjY2Vzc0lkZW50aXR5UzNDYW5vbmljYWxVc2VySWRcbiAgICAgICAgKSxcbiAgICAgIF0sXG4gICAgfSlcbiAgKTtcbiAgbmV3IENmbk91dHB1dChzZWxmLCBcIkJ1Y2tldFwiLCB7IHZhbHVlOiBzaXRlQnVja2V0LmJ1Y2tldE5hbWUgfSk7XG5cbiAgLy8gVExTIGNlcnRpZmljYXRlXG4gIGNvbnN0IGNlcnRpZmljYXRlID0gbmV3IERuc1ZhbGlkYXRlZENlcnRpZmljYXRlKHNlbGYsIFwiU2l0ZUNlcnRpZmljYXRlXCIsIHtcbiAgICBkb21haW5OYW1lOiBkb21haW4sXG4gICAgc3ViamVjdEFsdGVybmF0aXZlTmFtZXM6IGFsbERvbWFpbk5hbWVzLFxuICAgIGhvc3RlZFpvbmU6IHpvbmVzW2RvbWFpbl0sXG4gICAgcmVnaW9uOiBcInVzLWVhc3QtMVwiLCAvLyBDbG91ZGZyb250IG9ubHkgY2hlY2tzIHRoaXMgcmVnaW9uIGZvciBjZXJ0aWZpY2F0ZXMuXG4gIH0pO1xuICBuZXcgQ2ZuT3V0cHV0KHNlbGYsIFwiQ2VydGlmaWNhdGVcIiwgeyB2YWx1ZTogY2VydGlmaWNhdGUuY2VydGlmaWNhdGVBcm4gfSk7XG4gIGNvbnN0IHJlc3BvbnNlSGVhZGVyUG9saWN5ID1cbiAgICBwcm9wcy5yZXNwb25zZUhlYWRlclBvbGljeSB8fFxuICAgIG5ldyBSZXNwb25zZUhlYWRlcnNQb2xpY3koc2VsZiwgXCJTZWN1cml0eUhlYWRlcnNSZXNwb25zZVBvbGljeVwiLCB7XG4gICAgICBjb21tZW50OiBcIlNlY3VyaXR5IGhlYWRlcnMgcmVzcG9uc2UgcG9saWN5XCIsXG4gICAgICBzZWN1cml0eUhlYWRlcnNCZWhhdmlvcjoge1xuICAgICAgICBjb250ZW50U2VjdXJpdHlQb2xpY3k6IHtcbiAgICAgICAgICBvdmVycmlkZTogdHJ1ZSxcbiAgICAgICAgICBjb250ZW50U2VjdXJpdHlQb2xpY3k6IGBkZWZhdWx0LXNyYyAnc2VsZic7YCxcbiAgICAgICAgfSxcbiAgICAgICAgc3RyaWN0VHJhbnNwb3J0U2VjdXJpdHk6IHtcbiAgICAgICAgICBvdmVycmlkZTogdHJ1ZSxcbiAgICAgICAgICBhY2Nlc3NDb250cm9sTWF4QWdlOiBEdXJhdGlvbi5kYXlzKDM2NSksXG4gICAgICAgICAgaW5jbHVkZVN1YmRvbWFpbnM6IHRydWUsXG4gICAgICAgICAgcHJlbG9hZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgY29udGVudFR5cGVPcHRpb25zOiB7XG4gICAgICAgICAgb3ZlcnJpZGU6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHJlZmVycmVyUG9saWN5OiB7XG4gICAgICAgICAgb3ZlcnJpZGU6IHRydWUsXG4gICAgICAgICAgcmVmZXJyZXJQb2xpY3k6IEhlYWRlcnNSZWZlcnJlclBvbGljeS5TVFJJQ1RfT1JJR0lOX1dIRU5fQ1JPU1NfT1JJR0lOLFxuICAgICAgICB9LFxuICAgICAgICB4c3NQcm90ZWN0aW9uOiB7XG4gICAgICAgICAgb3ZlcnJpZGU6IHRydWUsXG4gICAgICAgICAgcHJvdGVjdGlvbjogdHJ1ZSxcbiAgICAgICAgICBtb2RlQmxvY2s6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGZyYW1lT3B0aW9uczoge1xuICAgICAgICAgIG92ZXJyaWRlOiB0cnVlLFxuICAgICAgICAgIGZyYW1lT3B0aW9uOiBIZWFkZXJzRnJhbWVPcHRpb24uREVOWSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgLy8gQ2xvdWRGcm9udCBkaXN0cmlidXRpb25cbiAgY29uc3QgZGlzdHJpYnV0aW9uID0gbmV3IERpc3RyaWJ1dGlvbihzZWxmLCBcIlNpdGVEaXN0cmlidXRpb25cIiwge1xuICAgIGNlcnRpZmljYXRlOiBjZXJ0aWZpY2F0ZSxcbiAgICBkb21haW5OYW1lczogYWxsRG9tYWluTmFtZXMsXG4gICAgY29tbWVudDogcHJvcHMuZG9tYWluTmFtZSxcbiAgICBtaW5pbXVtUHJvdG9jb2xWZXJzaW9uOiBTZWN1cml0eVBvbGljeVByb3RvY29sLlRMU19WMV8yMDE2LFxuICAgIGRlZmF1bHRCZWhhdmlvcjoge1xuICAgICAgb3JpZ2luOiBuZXcgUzNPcmlnaW4oc2l0ZUJ1Y2tldCwge1xuICAgICAgICBvcmlnaW5BY2Nlc3NJZGVudGl0eTogY2xvdWRmcm9udE9BSSxcbiAgICAgIH0pLFxuICAgICAgZWRnZUxhbWJkYXM6IHByb3BzLmVkZ2VPcmlnaW5SZXF1ZXN0RnVuY3Rpb25cbiAgICAgICAgPyBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGZ1bmN0aW9uVmVyc2lvbjogcHJvcHMuZWRnZU9yaWdpblJlcXVlc3RGdW5jdGlvbi5jdXJyZW50VmVyc2lvbixcbiAgICAgICAgICAgICAgZXZlbnRUeXBlOiBMYW1iZGFFZGdlRXZlbnRUeXBlLk9SSUdJTl9SRVFVRVNULFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdXG4gICAgICAgIDogW10sXG4gICAgICBjb21wcmVzczogdHJ1ZSxcbiAgICAgIGFsbG93ZWRNZXRob2RzOiBBbGxvd2VkTWV0aG9kcy5BTExPV19HRVRfSEVBRF9PUFRJT05TLFxuICAgICAgdmlld2VyUHJvdG9jb2xQb2xpY3k6IFZpZXdlclByb3RvY29sUG9saWN5LlJFRElSRUNUX1RPX0hUVFBTLFxuICAgICAgcmVzcG9uc2VIZWFkZXJzUG9saWN5OiByZXNwb25zZUhlYWRlclBvbGljeSxcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogVGhpcyBlbnN1cmVzIHRoYXQgYWxsIHJvdXRlcyBlbmQgdXAgdXNpbmcgaW5kZXguaHRtbCBmb3IgY2xpZW50IHNpZGUgcmVuZGVyaW5nLlxuICAgICAqL1xuICAgIGVycm9yUmVzcG9uc2VzOiBbXG4gICAgICB7XG4gICAgICAgIGh0dHBTdGF0dXM6IDQwMyxcbiAgICAgICAgcmVzcG9uc2VIdHRwU3RhdHVzOiAyMDAsXG4gICAgICAgIHJlc3BvbnNlUGFnZVBhdGg6IFwiL2luZGV4Lmh0bWxcIixcbiAgICAgIH0sXG4gICAgXSxcbiAgICBkZWZhdWx0Um9vdE9iamVjdDogXCJpbmRleC5odG1sXCIsXG4gIH0pO1xuXG4gIG5ldyBDZm5PdXRwdXQoc2VsZiwgXCJEaXN0cmlidXRpb25JZFwiLCB7XG4gICAgdmFsdWU6IGRpc3RyaWJ1dGlvbi5kaXN0cmlidXRpb25JZCxcbiAgfSk7XG5cbiAgLy8gUm91dGU1MyBhbGlhcyByZWNvcmQgZm9yIHRoZSBDbG91ZEZyb250IGRpc3RyaWJ1dGlvbl1cbiAgZm9yIChjb25zdCBkIG9mIGFsbERvbWFpbk5hbWVzKSB7XG4gICAgY29uc3QgcmVzb3VyY2VJZCA9IGdldFJlc291cmNlSWQoZCwgXCJTaXRlQWxpYXNSZWNvcmRcIik7XG4gICAgbmV3IEFSZWNvcmQoc2VsZiwgcmVzb3VyY2VJZCwge1xuICAgICAgcmVjb3JkTmFtZTogZCxcbiAgICAgIHRhcmdldDogUmVjb3JkVGFyZ2V0LmZyb21BbGlhcyhuZXcgQ2xvdWRGcm9udFRhcmdldChkaXN0cmlidXRpb24pKSxcbiAgICAgIHpvbmU6IHpvbmVzW2RdLFxuICAgIH0pO1xuICB9XG5cbiAgLy8gRGVwbG95IHNpdGUgY29udGVudHMgdG8gUzMgYnVja2V0XG4gIG5ldyBCdWNrZXREZXBsb3ltZW50KHNlbGYsIFwiRGVwbG95V2l0aEludmFsaWRhdGlvblwiLCB7XG4gICAgc291cmNlczogW3Byb3BzLnNvdXJjZUFzc2V0XSxcbiAgICBkZXN0aW5hdGlvbkJ1Y2tldDogc2l0ZUJ1Y2tldCxcbiAgICBkaXN0cmlidXRpb24sXG4gICAgZGlzdHJpYnV0aW9uUGF0aHM6IFtcIi8qXCJdLFxuICB9KTtcbn1cblxuZnVuY3Rpb24gY2FwaXRhbGl6ZUZpcnN0TGV0dGVyKHN0cjogc3RyaW5nKSB7XG4gIHJldHVybiBzdHIuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBzdHIuc2xpY2UoMSk7XG59XG5cbi8qKlxuICogQSBzaW1wbGUgZnVuY3Rpb24gdG8gbWFrZSB0aGUgcmVzb3VyY2UgaWQgaHVtYW4gcmVhZGFibGUuXG4gKi9cbmZ1bmN0aW9uIGdldFJlc291cmNlSWQoZG9tYWluOiBzdHJpbmcsIHJlc291cmNlVHlwZTogc3RyaW5nKSB7XG4gIGlmICghZG9tYWluLmluY2x1ZGVzKFwiLlwiKSkge1xuICAgIHJldHVybiByZXNvdXJjZVR5cGU7XG4gIH1cbiAgcmV0dXJuIGNhcGl0YWxpemVGaXJzdExldHRlcihgJHtkb21haW4uc3BsaXQoXCIuXCIpWzBdfSR7cmVzb3VyY2VUeXBlfWApO1xufVxuIl19

@@ -21,3 +21,3 @@ {

"license": "Apache-2.0",
"version": "0.0.4",
"version": "0.0.5",
"jest": {

@@ -24,0 +24,0 @@ "testMatch": [

SocketSocket SOC 2 Logo

Product

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

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc