@rio-cloud/cdk-v2-constructs 8.2.1 → 8.4.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.jsii +802 -145
- package/README.md +1 -0
- package/docs/AGENTS_DOCUMENTATION.md +64 -0
- package/docs/AGENTS_RIO_INFRASTRUCTURE_GUIDE.md +56 -0
- package/lib/backup/backup-policy.d.ts +7 -0
- package/lib/backup/backup-policy.js +8 -1
- package/lib/contributions/team-shipper-inbound-blue/pipeline/code-build-project.d.ts +64 -0
- package/lib/contributions/team-shipper-inbound-blue/pipeline/code-build-project.js +88 -0
- package/lib/contributions/team-shipper-inbound-blue/pipeline/index.d.ts +2 -0
- package/lib/contributions/team-shipper-inbound-blue/pipeline/index.js +19 -0
- package/lib/contributions/team-shipper-inbound-blue/pipeline/pipeline-build-stage-actions.d.ts +81 -0
- package/lib/contributions/team-shipper-inbound-blue/pipeline/pipeline-build-stage-actions.js +57 -0
- package/lib/datadogv2/datadog-slo.d.ts +7 -0
- package/lib/datadogv2/datadog-slo.js +8 -1
- package/lib/fargate/rio-fargate-service.d.ts +45 -0
- package/lib/fargate/rio-fargate-service.js +46 -1
- package/lib/index.d.ts +2 -3
- package/lib/index.js +3 -4
- package/lib/kafka/kafka-topic.d.ts +22 -1
- package/lib/kafka/kafka-topic.js +23 -2
- package/lib/pipeline/delivery-performance-monitoring-override.d.ts +36 -0
- package/lib/pipeline/delivery-performance-monitoring-override.js +49 -0
- package/lib/pipeline/index.d.ts +4 -0
- package/lib/pipeline/index.js +21 -0
- package/lib/pipeline/rio-pipeline-type.d.ts +5 -0
- package/lib/pipeline/rio-pipeline-type.js +6 -1
- package/lib/rio-landing-zone.d.ts +12 -1
- package/lib/rio-landing-zone.js +13 -2
- package/package.json +6 -3
- package/version.json +1 -1
package/README.md
CHANGED
|
@@ -21,6 +21,7 @@ $ npm install --save @rio-cloud/cdk-v2-constructs
|
|
|
21
21
|
* [How to contribute](./docs/contribution.md)
|
|
22
22
|
* [Changelog](./docs/changelog.md)
|
|
23
23
|
* [brief API description](./docs/API.md)
|
|
24
|
+
* [Agent documentation](./docs/AGENTS_DOCUMENTATION.md)
|
|
24
25
|
|
|
25
26
|
## Internal documentation for library devs
|
|
26
27
|
[Documentation](./docs/developers-readme.md)
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# Agents Documentation for `@rio-cloud/cdk-v2-constructs`
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
|
|
5
|
+
Use this document as the entry point when an agent needs to understand or apply the npm package `@rio-cloud/cdk-v2-constructs` from an installed project. Prefer package-owned documentation in `.d.ts` files and generated type artifacts over memory or guesses.
|
|
6
|
+
|
|
7
|
+
This package provides RIO-specific AWS CDK v2 constructs and helpers for:
|
|
8
|
+
|
|
9
|
+
- Watchful and Datadog monitoring for RIO-standard service alerting and observability
|
|
10
|
+
- ECS/Fargate services as the paved road for running backend workloads on RIO
|
|
11
|
+
- Kafka topics and event sources
|
|
12
|
+
- Codified AWS account defaults such as VPC properties and well-known SSM parameters
|
|
13
|
+
- Pipeline tagging and delivery monitoring
|
|
14
|
+
- Backup policy helpers
|
|
15
|
+
- SES observability
|
|
16
|
+
|
|
17
|
+
## Reference Order
|
|
18
|
+
|
|
19
|
+
After reaching this document, use these package artifacts as the primary references:
|
|
20
|
+
|
|
21
|
+
1. Read this file first.
|
|
22
|
+
2. Check the installed package's `package.json` exports before using any subpath import or package-local artifact.
|
|
23
|
+
3. Read `README.md` for the package-level overview and `docs/AGENTS_RIO_INFRASTRUCTURE_GUIDE.md` for infrastructure-specific project structure, pipeline guardrails, or pipeline-oriented work.
|
|
24
|
+
|
|
25
|
+
Use `lib/**/*.d.ts` for generated type information and JSDoc-derived annotations. When guidance in this document conflicts with generated package annotations such as `lib/**/*.d.ts`, or `.jsii`, trust the generated package annotations.
|
|
26
|
+
|
|
27
|
+
## Import And Edit Workflow
|
|
28
|
+
|
|
29
|
+
Prefer `import * as rio from '@rio-cloud/cdk-v2-constructs';` unless an exported subpath is explicitly available in the installed `package.json`.
|
|
30
|
+
|
|
31
|
+
Read the relevant declaration comments and examples before writing or changing infrastructure code.
|
|
32
|
+
|
|
33
|
+
## Usage Guidance
|
|
34
|
+
|
|
35
|
+
### General
|
|
36
|
+
|
|
37
|
+
Prefer RIO constructs over raw AWS CDK constructs when the use case matches. These constructs encode RIO infrastructure defaults, Datadog tags, shared secrets, team and account SSM parameters, and monitoring conventions.
|
|
38
|
+
|
|
39
|
+
Do not set construct attributes explicitly when the value you plan to set is already the construct default. Prefer relying on defaults unless you are intentionally changing behavior and that intent is clear in the code.
|
|
40
|
+
|
|
41
|
+
Preserve the target repository's existing stack boundaries and scripts when maintaining an existing project.
|
|
42
|
+
|
|
43
|
+
### Observability
|
|
44
|
+
|
|
45
|
+
Watchful is RIO's monitoring and alerting abstraction. Prefer `rio.watchfulv2.Watchful` and `rio.datadogv2`. Use legacy `watchful` or `datadog` only when maintaining existing code that already depends on those APIs.
|
|
46
|
+
|
|
47
|
+
Do not add raw CloudWatch metrics, alarms, or monitoring resources for agent-generated changes. Use RIO monitoring constructs and Datadog-based abstractions for observability.
|
|
48
|
+
|
|
49
|
+
Treat `rio.SesObservability` logs as PII. Do not forward those logs to third-party services and do not extend retention beyond the construct default.
|
|
50
|
+
|
|
51
|
+
### RIO Infrastructure Defaults
|
|
52
|
+
|
|
53
|
+
RIO infrastructure defaults are the baseline VPC, hosted zone, and team/account values provided by the RIO environment. Use `rio.RioLandingZone` helpers for default VPC, hosted zone, team name, team identifier, team email, team alert Slack channel, and account name. Avoid hard-coded VPC IDs, hosted-zone IDs, or parameter names when a helper exists.
|
|
54
|
+
|
|
55
|
+
### Services
|
|
56
|
+
|
|
57
|
+
Use `rio.RioFargateService` for ECS/Fargate services when possible.
|
|
58
|
+
### Kafka
|
|
59
|
+
|
|
60
|
+
Use `rio.KafkaTopicV4` for new Kafka topics. Set audience and recovery policy deliberately.
|
|
61
|
+
|
|
62
|
+
### Backup And Delivery
|
|
63
|
+
|
|
64
|
+
Use `rio.BackupPolicy`, `rio.ClassifyPipelineType`, and `rio.DeliveryPerformanceMonitoringOverride` for backup and pipeline metadata instead of manually adding equivalent tags. Branch pipelines validate contributions or Renovate updates; vulnerability pipelines run vulnerability-focused checks.
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# RIO Infrastructure Guide
|
|
2
|
+
|
|
3
|
+
Use this guide when consuming `@rio-cloud/cdk-v2-constructs` from RIO CDK v2
|
|
4
|
+
infrastructure projects.
|
|
5
|
+
|
|
6
|
+
This guide covers infrastructure-specific structure and pipeline conventions.
|
|
7
|
+
|
|
8
|
+
## Recommended Structure
|
|
9
|
+
|
|
10
|
+
A typical RIO infrastructure package often uses a structure like:
|
|
11
|
+
|
|
12
|
+
- `bin/infrastructure.ts`: CDK app entrypoint and deployment environment.
|
|
13
|
+
- `lib/app-stack.ts`: runtime service resources and service monitoring.
|
|
14
|
+
- `lib/data-stack.ts`: stateful or shared data resources.
|
|
15
|
+
- `lib/pipeline-stack.ts`: trigger bucket sources, CodePipeline definitions,
|
|
16
|
+
CodeBuild steps, deployment stages, and pipeline metadata.
|
|
17
|
+
- `test/`: synthesized template assertions.
|
|
18
|
+
|
|
19
|
+
## Infrastructure-Specific Usage
|
|
20
|
+
|
|
21
|
+
Use `rio.ClassifyPipelineType.apply(...)` with `rio.RioPipelineType.DEPLOY`,
|
|
22
|
+
`BRANCH`, or `VULNERABILITY` for pipeline metadata instead of manually
|
|
23
|
+
recreating equivalent tags.
|
|
24
|
+
|
|
25
|
+
Use `rio.TriggerKey.MASTER_REPO` and `rio.TriggerKey.BRANCH_REPO` for RIO
|
|
26
|
+
Bitbucket trigger bucket keys. Standard RIO pipelines use the imported
|
|
27
|
+
`bitbucket-integration-s3-bucket` trigger bucket and S3 source events.
|
|
28
|
+
|
|
29
|
+
## Pipeline Guardrails
|
|
30
|
+
|
|
31
|
+
Use the trigger bucket source pattern for standard RIO pipelines. Do not use
|
|
32
|
+
CodeStar Connections, GitHub source actions, `CodeStarConnectionsSourceAction`,
|
|
33
|
+
or `ConnectionArn` parameters unless the service intentionally needs a
|
|
34
|
+
non-standard pipeline.
|
|
35
|
+
|
|
36
|
+
Include the main deployment pipeline by default. Add branch and vulnerability
|
|
37
|
+
pipelines only when the project needs them or the user requests them.
|
|
38
|
+
|
|
39
|
+
Prefer the target project's current CodeBuild defaults for new pipeline code.
|
|
40
|
+
Fall back to another architecture or build image only when the project
|
|
41
|
+
toolchain requires it, and document that reason.
|
|
42
|
+
|
|
43
|
+
## Project Setup
|
|
44
|
+
|
|
45
|
+
When creating or extending a RIO infrastructure package, keep the project
|
|
46
|
+
layout intentional and replace any placeholder service names, account IDs,
|
|
47
|
+
build commands, and stack contents with project-specific values before
|
|
48
|
+
synthesis.
|
|
49
|
+
|
|
50
|
+
When using `node` or `npm` commands for this package, read the project's
|
|
51
|
+
`.nvmrc` or `package.json` to determine the expected Node.js version, and keep
|
|
52
|
+
`npm` aligned with the versions declared there. Align local development, CI,
|
|
53
|
+
and any generated pipeline steps with those project-specific settings.
|
|
54
|
+
|
|
55
|
+
If a project already has infrastructure, preserve its stack boundaries and
|
|
56
|
+
validation scripts unless the change explicitly updates them.
|
|
@@ -10,6 +10,13 @@ export declare enum Criticality {
|
|
|
10
10
|
/**
|
|
11
11
|
* Helper function to tag constructs with correct backup values to be picked
|
|
12
12
|
* up by the rio landing zone backup solution.
|
|
13
|
+
*
|
|
14
|
+
* Apply this to stateful resources that must be discovered by the RIO landing-zone backup solution.
|
|
15
|
+
*
|
|
16
|
+
* Example:
|
|
17
|
+
* ```ts
|
|
18
|
+
* BackupPolicy.apply(table, Criticality.HIGH);
|
|
19
|
+
* ```
|
|
13
20
|
*/
|
|
14
21
|
export declare class BackupPolicy {
|
|
15
22
|
static apply(target: IConstruct, criticality: Criticality): void;
|
|
@@ -16,6 +16,13 @@ var Criticality;
|
|
|
16
16
|
/**
|
|
17
17
|
* Helper function to tag constructs with correct backup values to be picked
|
|
18
18
|
* up by the rio landing zone backup solution.
|
|
19
|
+
*
|
|
20
|
+
* Apply this to stateful resources that must be discovered by the RIO landing-zone backup solution.
|
|
21
|
+
*
|
|
22
|
+
* Example:
|
|
23
|
+
* ```ts
|
|
24
|
+
* BackupPolicy.apply(table, Criticality.HIGH);
|
|
25
|
+
* ```
|
|
19
26
|
*/
|
|
20
27
|
class BackupPolicy {
|
|
21
28
|
static apply(target, criticality) {
|
|
@@ -25,4 +32,4 @@ class BackupPolicy {
|
|
|
25
32
|
exports.BackupPolicy = BackupPolicy;
|
|
26
33
|
_a = JSII_RTTI_SYMBOL_1;
|
|
27
34
|
BackupPolicy[_a] = { fqn: "@rio-cloud/cdk-v2-constructs.BackupPolicy", version: "0.0.0" };
|
|
28
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFja3VwLXBvbGljeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9iYWNrdXAvYmFja3VwLXBvbGljeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDZDQUFtQztBQUduQzs7R0FFRztBQUNILElBQVksV0FJWDtBQUpELFdBQVksV0FBVztJQUNyQiwwQkFBVyxDQUFBO0lBQ1gsZ0NBQWlCLENBQUE7SUFDakIsNEJBQWEsQ0FBQTtBQUNmLENBQUMsRUFKVyxXQUFXLDJCQUFYLFdBQVcsUUFJdEI7QUFFRDs7Ozs7Ozs7OztHQVVHO0FBQ0gsTUFBYSxZQUFZO0lBQ3ZCLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBa0IsRUFBRSxXQUF3QjtRQUN2RCxrQkFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsaUNBQWlDLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDdEUsQ0FBQzs7QUFISCxvQ0FJQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRhZ3MgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBJQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5cbi8qKlxuICogVGhlIGFsbG93ZWQgdmFsdWVzIGZvciBiYWNrdXAgY3JpdGljYWxpdHkgbGV2ZWxzXG4gKi9cbmV4cG9ydCBlbnVtIENyaXRpY2FsaXR5IHtcbiAgTE9XID0gJ2xvdycsXG4gIE1FRElVTSA9ICdtZWRpdW0nLFxuICBISUdIID0gJ2hpZ2gnLFxufVxuXG4vKipcbiAqIEhlbHBlciBmdW5jdGlvbiB0byB0YWcgY29uc3RydWN0cyB3aXRoIGNvcnJlY3QgYmFja3VwIHZhbHVlcyB0byBiZSBwaWNrZWRcbiAqIHVwIGJ5IHRoZSByaW8gbGFuZGluZyB6b25lIGJhY2t1cCBzb2x1dGlvbi5cbiAqXG4gKiBBcHBseSB0aGlzIHRvIHN0YXRlZnVsIHJlc291cmNlcyB0aGF0IG11c3QgYmUgZGlzY292ZXJlZCBieSB0aGUgUklPIGxhbmRpbmctem9uZSBiYWNrdXAgc29sdXRpb24uXG4gKlxuICogRXhhbXBsZTpcbiAqIGBgYHRzXG4gKiBCYWNrdXBQb2xpY3kuYXBwbHkodGFibGUsIENyaXRpY2FsaXR5LkhJR0gpO1xuICogYGBgXG4gKi9cbmV4cG9ydCBjbGFzcyBCYWNrdXBQb2xpY3kge1xuICBzdGF0aWMgYXBwbHkodGFyZ2V0OiBJQ29uc3RydWN0LCBjcml0aWNhbGl0eTogQ3JpdGljYWxpdHkpIHtcbiAgICBUYWdzLm9mKHRhcmdldCkuYWRkKCdyaW8tbHotYmFja3VwLWNyaXRpY2FsaXR5LWxldmVsJywgY3JpdGljYWxpdHkpO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import * as codebuild from 'aws-cdk-lib/aws-codebuild';
|
|
2
|
+
import type * as ecr from 'aws-cdk-lib/aws-ecr';
|
|
3
|
+
import type { Construct } from 'constructs';
|
|
4
|
+
/**
|
|
5
|
+
* Properties for a CodeBuild project that is injected as a parallel CodePipeline action.
|
|
6
|
+
*/
|
|
7
|
+
export interface ParallelBuildProjectProps {
|
|
8
|
+
/**
|
|
9
|
+
* Path to the buildspec yaml file, resolved from the consuming CDK app's current working directory.
|
|
10
|
+
*/
|
|
11
|
+
readonly buildSpecPath: string;
|
|
12
|
+
/**
|
|
13
|
+
* Name of the service.
|
|
14
|
+
*/
|
|
15
|
+
readonly serviceName: string;
|
|
16
|
+
/**
|
|
17
|
+
* Name of the hosted zone.
|
|
18
|
+
*/
|
|
19
|
+
readonly hostedZoneName: string;
|
|
20
|
+
/**
|
|
21
|
+
* Repository used by image build steps.
|
|
22
|
+
*
|
|
23
|
+
* When provided, its URI is exposed as `REPO_URI`.
|
|
24
|
+
*/
|
|
25
|
+
readonly repo?: ecr.IRepository;
|
|
26
|
+
/**
|
|
27
|
+
* Action-level environment values used when calculating `projectConfigHash`.
|
|
28
|
+
*/
|
|
29
|
+
readonly env?: Record<string, string>;
|
|
30
|
+
/**
|
|
31
|
+
* Caching strategy to use.
|
|
32
|
+
*/
|
|
33
|
+
readonly cache?: codebuild.Cache;
|
|
34
|
+
/**
|
|
35
|
+
* Build image for the project.
|
|
36
|
+
*
|
|
37
|
+
* Defaults to the ARM Amazon Linux 2023 standard image used by WebEDI-style services.
|
|
38
|
+
*/
|
|
39
|
+
readonly buildImage?: codebuild.IBuildImage;
|
|
40
|
+
/**
|
|
41
|
+
* Compute type for the project.
|
|
42
|
+
*
|
|
43
|
+
* Defaults to `BUILD_GENERAL1_LARGE`.
|
|
44
|
+
*/
|
|
45
|
+
readonly computeType?: codebuild.ComputeType;
|
|
46
|
+
/**
|
|
47
|
+
* Additional project-level environment variables.
|
|
48
|
+
*/
|
|
49
|
+
readonly additionalEnvironmentVariables?: Record<string, codebuild.BuildEnvironmentVariable>;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Converts action-level string environment values to CodeBuild action environment variables.
|
|
53
|
+
*/
|
|
54
|
+
export declare function getCodeBuildActionEnvironmentVariables(env?: Record<string, string>, projectConfigHash?: string): Record<string, codebuild.BuildEnvironmentVariable>;
|
|
55
|
+
/**
|
|
56
|
+
* CodeBuild project for parallel pipeline build work.
|
|
57
|
+
*/
|
|
58
|
+
export declare class ParallelBuildProject extends codebuild.PipelineProject {
|
|
59
|
+
/**
|
|
60
|
+
* Hash of buildspec, project environment, and action-level environment inputs.
|
|
61
|
+
*/
|
|
62
|
+
readonly projectConfigHash: string;
|
|
63
|
+
constructor(scope: Construct, id: string, props: ParallelBuildProjectProps);
|
|
64
|
+
}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var _a;
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.ParallelBuildProject = void 0;
|
|
5
|
+
exports.getCodeBuildActionEnvironmentVariables = getCodeBuildActionEnvironmentVariables;
|
|
6
|
+
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
7
|
+
const crypto = require("node:crypto");
|
|
8
|
+
const fs = require("node:fs");
|
|
9
|
+
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
10
|
+
const codebuild = require("aws-cdk-lib/aws-codebuild");
|
|
11
|
+
const codepipeline = require("aws-cdk-lib/aws-codepipeline");
|
|
12
|
+
const yaml = require("js-yaml");
|
|
13
|
+
const DEFAULT_BUILD_IMAGE = codebuild.LinuxArmBuildImage.AMAZON_LINUX_2023_STANDARD_3_0;
|
|
14
|
+
const DEFAULT_COMPUTE_TYPE = codebuild.ComputeType.LARGE;
|
|
15
|
+
const RESERVED_ACTION_ENVIRONMENT_NAMES = ['PIPELINE_EXECUTION_ID', '_PROJECT_CONFIG_HASH'];
|
|
16
|
+
function getProjectEnvironmentVariables(scope, props) {
|
|
17
|
+
const environmentVariables = {
|
|
18
|
+
AWS_ACCOUNT_ID: { value: aws_cdk_lib_1.Stack.of(scope).account },
|
|
19
|
+
SERVICE_NAME: { value: props.serviceName },
|
|
20
|
+
HOSTED_ZONE_NAME: { value: props.hostedZoneName },
|
|
21
|
+
};
|
|
22
|
+
if (props.repo?.repositoryUri) {
|
|
23
|
+
Object.assign(environmentVariables, { REPO_URI: { value: props.repo.repositoryUri } });
|
|
24
|
+
}
|
|
25
|
+
const additionalEnvironmentVariables = props.additionalEnvironmentVariables ?? {};
|
|
26
|
+
const overriddenStandardVariables = Object.keys(additionalEnvironmentVariables).filter(name => name in environmentVariables);
|
|
27
|
+
if (overriddenStandardVariables.length > 0) {
|
|
28
|
+
throw new Error(`additionalEnvironmentVariables must not override standard environment variables: ${overriddenStandardVariables.join(', ')}.`);
|
|
29
|
+
}
|
|
30
|
+
return {
|
|
31
|
+
...environmentVariables,
|
|
32
|
+
...additionalEnvironmentVariables,
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
function loadBuildSpec(buildSpecPath) {
|
|
36
|
+
const buildSpec = yaml.load(fs.readFileSync(buildSpecPath, { encoding: 'utf-8' }));
|
|
37
|
+
if (buildSpec === null || typeof buildSpec !== 'object' || Array.isArray(buildSpec)) {
|
|
38
|
+
throw new Error(`Buildspec at ${buildSpecPath} must contain a YAML object.`);
|
|
39
|
+
}
|
|
40
|
+
return buildSpec;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Converts action-level string environment values to CodeBuild action environment variables.
|
|
44
|
+
*/
|
|
45
|
+
function getCodeBuildActionEnvironmentVariables(env = {}, projectConfigHash) {
|
|
46
|
+
const overriddenReservedVariables = RESERVED_ACTION_ENVIRONMENT_NAMES.filter(name => name in env);
|
|
47
|
+
if (overriddenReservedVariables.length > 0) {
|
|
48
|
+
throw new Error(`Action environment variables must not override reserved variables: ${overriddenReservedVariables.join(', ')}.`);
|
|
49
|
+
}
|
|
50
|
+
return Object.fromEntries(Object.entries({
|
|
51
|
+
...env,
|
|
52
|
+
PIPELINE_EXECUTION_ID: codepipeline.GlobalVariables.executionId,
|
|
53
|
+
...(projectConfigHash ? { _PROJECT_CONFIG_HASH: projectConfigHash } : {}),
|
|
54
|
+
}).map(([name, value]) => [name, { value }]));
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* CodeBuild project for parallel pipeline build work.
|
|
58
|
+
*/
|
|
59
|
+
class ParallelBuildProject extends codebuild.PipelineProject {
|
|
60
|
+
constructor(scope, id, props) {
|
|
61
|
+
const buildSpec = loadBuildSpec(props.buildSpecPath);
|
|
62
|
+
const environmentVariables = getProjectEnvironmentVariables(scope, props);
|
|
63
|
+
const buildImage = props.buildImage ?? DEFAULT_BUILD_IMAGE;
|
|
64
|
+
const computeType = props.computeType ?? DEFAULT_COMPUTE_TYPE;
|
|
65
|
+
const environment = {
|
|
66
|
+
buildImage,
|
|
67
|
+
computeType,
|
|
68
|
+
environmentVariables,
|
|
69
|
+
};
|
|
70
|
+
super(scope, id, {
|
|
71
|
+
buildSpec: codebuild.BuildSpec.fromObject(buildSpec),
|
|
72
|
+
cache: props.cache,
|
|
73
|
+
environment,
|
|
74
|
+
});
|
|
75
|
+
this.projectConfigHash = crypto
|
|
76
|
+
.createHash('sha256')
|
|
77
|
+
.update(JSON.stringify(aws_cdk_lib_1.Stack.of(scope).resolve({
|
|
78
|
+
buildSpec,
|
|
79
|
+
projectEnvironment: environment,
|
|
80
|
+
actionEnvironment: props.env,
|
|
81
|
+
})))
|
|
82
|
+
.digest('hex');
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
exports.ParallelBuildProject = ParallelBuildProject;
|
|
86
|
+
_a = JSII_RTTI_SYMBOL_1;
|
|
87
|
+
ParallelBuildProject[_a] = { fqn: "@rio-cloud/cdk-v2-constructs.ParallelBuildProject", version: "0.0.0" };
|
|
88
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZS1idWlsZC1wcm9qZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbnRyaWJ1dGlvbnMvdGVhbS1zaGlwcGVyLWluYm91bmQtYmx1ZS9waXBlbGluZS9jb2RlLWJ1aWxkLXByb2plY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQWdIQSx3RkFrQkM7O0FBbElELHNDQUFzQztBQUN0Qyw4QkFBOEI7QUFDOUIsNkNBQW9DO0FBQ3BDLHVEQUF1RDtBQUN2RCw2REFBNkQ7QUFHN0QsZ0NBQWdDO0FBRWhDLE1BQU0sbUJBQW1CLEdBQUcsU0FBUyxDQUFDLGtCQUFrQixDQUFDLDhCQUE4QixDQUFDO0FBQ3hGLE1BQU0sb0JBQW9CLEdBQUcsU0FBUyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUM7QUFDekQsTUFBTSxpQ0FBaUMsR0FBRyxDQUFDLHVCQUF1QixFQUFFLHNCQUFzQixDQUFDLENBQUM7QUEwRDVGLFNBQVMsOEJBQThCLENBQ3JDLEtBQWdCLEVBQ2hCLEtBQWdDO0lBRWhDLE1BQU0sb0JBQW9CLEdBQXVEO1FBQy9FLGNBQWMsRUFBRSxFQUFFLEtBQUssRUFBRSxtQkFBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLEVBQUU7UUFDbEQsWUFBWSxFQUFFLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxXQUFXLEVBQUU7UUFDMUMsZ0JBQWdCLEVBQUUsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLGNBQWMsRUFBRTtLQUNsRCxDQUFDO0lBRUYsSUFBSSxLQUFLLENBQUMsSUFBSSxFQUFFLGFBQWEsRUFBRSxDQUFDO1FBQzlCLE1BQU0sQ0FBQyxNQUFNLENBQUMsb0JBQW9CLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDekYsQ0FBQztJQUVELE1BQU0sOEJBQThCLEdBQUcsS0FB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Q2xCLFdBQVc7U0FDWixDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsTUFBTTthQUM1QixVQUFVLENBQUMsUUFBUSxDQUFDO2FBQ3BCLE1BQU0sQ0FDTCxJQUFJLENBQUMsU0FBUyxDQUNaLG1CQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQztZQUN0QixTQUFTO1lBQ1Qsa0JBQWtCLEVBQUUsV0FBVztZQUMvQixpQkFBaUIsRUFBRSxLQUFLLENBQUMsR0FBRztTQUM3QixDQUFDLENBQ0gsQ0FDRjthQUNBLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNuQixDQUFDOztBQW5DSCxvREFvQ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjcnlwdG8gZnJvbSAnbm9kZTpjcnlwdG8nO1xuaW1wb3J0ICogYXMgZnMgZnJvbSAnbm9kZTpmcyc7XG5pbXBvcnQgeyBTdGFjayB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCAqIGFzIGNvZGVidWlsZCBmcm9tICdhd3MtY2RrLWxpYi9hd3MtY29kZWJ1aWxkJztcbmltcG9ydCAqIGFzIGNvZGVwaXBlbGluZSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtY29kZXBpcGVsaW5lJztcbmltcG9ydCB0eXBlICogYXMgZWNyIGZyb20gJ2F3cy1jZGstbGliL2F3cy1lY3InO1xuaW1wb3J0IHR5cGUgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCAqIGFzIHlhbWwgZnJvbSAnanMteWFtbCc7XG5cbmNvbnN0IERFRkFVTFRfQlVJTERfSU1BR0UgPSBjb2RlYnVpbGQuTGludXhBcm1CdWlsZEltYWdlLkFNQVpPTl9MSU5VWF8yMDIzX1NUQU5EQVJEXzNfMDtcbmNvbnN0IERFRkFVTFRfQ09NUFVURV9UWVBFID0gY29kZWJ1aWxkLkNvbXB1dGVUeXBlLkxBUkdFO1xuY29uc3QgUkVTRVJWRURfQUNUSU9OX0VOVklST05NRU5UX05BTUVTID0gWydQSVBFTElORV9FWEVDVVRJT05fSUQnLCAnX1BST0pFQ1RfQ09ORklHX0hBU0gnXTtcblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBhIENvZGVCdWlsZCBwcm9qZWN0IHRoYXQgaXMgaW5qZWN0ZWQgYXMgYSBwYXJhbGxlbCBDb2RlUGlwZWxpbmUgYWN0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBhcmFsbGVsQnVpbGRQcm9qZWN0UHJvcHMge1xuICAvKipcbiAgICogUGF0aCB0byB0aGUgYnVpbGRzcGVjIHlhbWwgZmlsZSwgcmVzb2x2ZWQgZnJvbSB0aGUgY29uc3VtaW5nIENESyBhcHAncyBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5LlxuICAgKi9cbiAgcmVhZG9ubHkgYnVpbGRTcGVjUGF0aDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoZSBzZXJ2aWNlLlxuICAgKi9cbiAgcmVhZG9ubHkgc2VydmljZU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogTmFtZSBvZiB0aGUgaG9zdGVkIHpvbmUuXG4gICAqL1xuICByZWFkb25seSBob3N0ZWRab25lTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBSZXBvc2l0b3J5IHVzZWQgYnkgaW1hZ2UgYnVpbGQgc3RlcHMuXG4gICAqXG4gICAqIFdoZW4gcHJvdmlkZWQsIGl0cyBVUkkgaXMgZXhwb3NlZCBhcyBgUkVQT19VUklgLlxuICAgKi9cbiAgcmVhZG9ubHkgcmVwbz86IGVjci5JUmVwb3NpdG9yeTtcblxuICAvKipcbiAgICogQWN0aW9uLWxldmVsIGVudmlyb25tZW50IHZhbHVlcyB1c2VkIHdoZW4gY2FsY3VsYXRpbmcgYHByb2plY3RDb25maWdIYXNoYC5cbiAgICovXG4gIHJlYWRvbmx5IGVudj86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG5cbiAgLyoqXG4gICAqIENhY2hpbmcgc3RyYXRlZ3kgdG8gdXNlLlxuICAgKi9cbiAgcmVhZG9ubHkgY2FjaGU/OiBjb2RlYnVpbGQuQ2FjaGU7XG5cbiAgLyoqXG4gICAqIEJ1aWxkIGltYWdlIGZvciB0aGUgcHJvamVjdC5cbiAgICpcbiAgICogRGVmYXVsdHMgdG8gdGhlIEFSTSBBbWF6b24gTGludXggMjAyMyBzdGFuZGFyZCBpbWFnZSB1c2VkIGJ5IFdlYkVESS1zdHlsZSBzZXJ2aWNlcy5cbiAgICovXG4gIHJlYWRvbmx5IGJ1aWxkSW1hZ2U/OiBjb2RlYnVpbGQuSUJ1aWxkSW1hZ2U7XG5cbiAgLyoqXG4gICAqIENvbXB1dGUgdHlwZSBmb3IgdGhlIHByb2plY3QuXG4gICAqXG4gICAqIERlZmF1bHRzIHRvIGBCVUlMRF9HRU5FUkFMMV9MQVJHRWAuXG4gICAqL1xuICByZWFkb25seSBjb21wdXRlVHlwZT86IGNvZGVidWlsZC5Db21wdXRlVHlwZTtcblxuICAvKipcbiAgICogQWRkaXRpb25hbCBwcm9qZWN0LWxldmVsIGVudmlyb25tZW50IHZhcmlhYmxlcy5cbiAgICovXG4gIHJlYWRvbmx5IGFkZGl0aW9uYWxFbnZpcm9ubWVudFZhcmlhYmxlcz86IFJlY29yZDxzdHJpbmcsIGNvZGVidWlsZC5CdWlsZEVudmlyb25tZW50VmFyaWFibGU+O1xufVxuXG5mdW5jdGlvbiBnZXRQcm9qZWN0RW52aXJvbm1lbnRWYXJpYWJsZXMoXG4gIHNjb3BlOiBDb25zdHJ1Y3QsXG4gIHByb3BzOiBQYXJhbGxlbEJ1aWxkUHJvamVjdFByb3BzXG4pOiBSZWNvcmQ8c3RyaW5nLCBjb2RlYnVpbGQuQnVpbGRFbnZpcm9ubWVudFZhcmlhYmxlPiB7XG4gIGNvbnN0IGVudmlyb25tZW50VmFyaWFibGVzOiBSZWNvcmQ8c3RyaW5nLCBjb2RlYnVpbGQuQnVpbGRFbnZpcm9ubWVudFZhcmlhYmxlPiA9IHtcbiAgICBBV1NfQUNDT1VOVF9JRDogeyB2YWx1ZTogU3RhY2sub2Yoc2NvcGUpLmFjY291bnQgfSxcbiAgICBTRVJWSUNFX05BTUU6IHsgdmFsdWU6IHByb3BzLnNlcnZpY2VOYW1lIH0sXG4gICAgSE9TVEVEX1pPTkVfTkFNRTogeyB2YWx1ZTogcHJvcHMuaG9zdGVkWm9uZU5hbWUgfSxcbiAgfTtcblxuICBpZiAocHJvcHMucmVwbz8ucmVwb3NpdG9yeVVyaSkge1xuICAgIE9iamVjdC5hc3NpZ24oZW52aXJvbm1lbnRWYXJpYWJsZXMsIHsgUkVQT19VUkk6IHsgdmFsdWU6IHByb3BzLnJlcG8ucmVwb3NpdG9yeVVyaSB9IH0pO1xuICB9XG5cbiAgY29uc3QgYWRkaXRpb25hbEVudmlyb25tZW50VmFyaWFibGVzID0gcHJvcHMuYWRkaXRpb25hbEVudmlyb25tZW50VmFyaWFibGVzID8/IHt9O1xuICBjb25zdCBvdmVycmlkZGVuU3RhbmRhcmRWYXJpYWJsZXMgPSBPYmplY3Qua2V5cyhhZGRpdGlvbmFsRW52aXJvbm1lbnRWYXJpYWJsZXMpLmZpbHRlcihcbiAgICBuYW1lID0+IG5hbWUgaW4gZW52aXJvbm1lbnRWYXJpYWJsZXNcbiAgKTtcbiAgaWYgKG92ZXJyaWRkZW5TdGFuZGFyZFZhcmlhYmxlcy5sZW5ndGggPiAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYGFkZGl0aW9uYWxFbnZpcm9ubWVudFZhcmlhYmxlcyBtdXN0IG5vdCBvdmVycmlkZSBzdGFuZGFyZCBlbnZpcm9ubWVudCB2YXJpYWJsZXM6ICR7b3ZlcnJpZGRlblN0YW5kYXJkVmFyaWFibGVzLmpvaW4oJywgJyl9LmBcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5lbnZpcm9ubWVudFZhcmlhYmxlcyxcbiAgICAuLi5hZGRpdGlvbmFsRW52aXJvbm1lbnRWYXJpYWJsZXMsXG4gIH07XG59XG5cbmZ1bmN0aW9uIGxvYWRCdWlsZFNwZWMoYnVpbGRTcGVjUGF0aDogc3RyaW5nKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4ge1xuICBjb25zdCBidWlsZFNwZWMgPSB5YW1sLmxvYWQoZnMucmVhZEZpbGVTeW5jKGJ1aWxkU3BlY1BhdGgsIHsgZW5jb2Rpbmc6ICd1dGYtOCcgfSkpO1xuXG4gIGlmIChidWlsZFNwZWMgPT09IG51bGwgfHwgdHlwZW9mIGJ1aWxkU3BlYyAhPT0gJ29iamVjdCcgfHwgQXJyYXkuaXNBcnJheShidWlsZFNwZWMpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBCdWlsZHNwZWMgYXQgJHtidWlsZFNwZWNQYXRofSBtdXN0IGNvbnRhaW4gYSBZQU1MIG9iamVjdC5gKTtcbiAgfVxuXG4gIHJldHVybiBidWlsZFNwZWMgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG59XG5cbi8qKlxuICogQ29udmVydHMgYWN0aW9uLWxldmVsIHN0cmluZyBlbnZpcm9ubWVudCB2YWx1ZXMgdG8gQ29kZUJ1aWxkIGFjdGlvbiBlbnZpcm9ubWVudCB2YXJpYWJsZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb2RlQnVpbGRBY3Rpb25FbnZpcm9ubWVudFZhcmlhYmxlcyhcbiAgZW52OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge30sXG4gIHByb2plY3RDb25maWdIYXNoPzogc3RyaW5nXG4pOiBSZWNvcmQ8c3RyaW5nLCBjb2RlYnVpbGQuQnVpbGRFbnZpcm9ubWVudFZhcmlhYmxlPiB7XG4gIGNvbnN0IG92ZXJyaWRkZW5SZXNlcnZlZFZhcmlhYmxlcyA9IFJFU0VSVkVEX0FDVElPTl9FTlZJUk9OTUVOVF9OQU1FUy5maWx0ZXIobmFtZSA9PiBuYW1lIGluIGVudik7XG4gIGlmIChvdmVycmlkZGVuUmVzZXJ2ZWRWYXJpYWJsZXMubGVuZ3RoID4gMCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBBY3Rpb24gZW52aXJvbm1lbnQgdmFyaWFibGVzIG11c3Qgbm90IG92ZXJyaWRlIHJlc2VydmVkIHZhcmlhYmxlczogJHtvdmVycmlkZGVuUmVzZXJ2ZWRWYXJpYWJsZXMuam9pbignLCAnKX0uYFxuICAgICk7XG4gIH1cblxuICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgIE9iamVjdC5lbnRyaWVzKHtcbiAgICAgIC4uLmVudixcbiAgICAgIFBJUEVMSU5FX0VYRUNVVElPTl9JRDogY29kZXBpcGVsaW5lLkdsb2JhbFZhcmlhYmxlcy5leGVjdXRpb25JZCxcbiAgICAgIC4uLihwcm9qZWN0Q29uZmlnSGFzaCA/IHsgX1BST0pFQ1RfQ09ORklHX0hBU0g6IHByb2plY3RDb25maWdIYXNoIH0gOiB7fSksXG4gICAgfSkubWFwKChbbmFtZSwgdmFsdWVdKSA9PiBbbmFtZSwgeyB2YWx1ZSB9XSlcbiAgKTtcbn1cblxuLyoqXG4gKiBDb2RlQnVpbGQgcHJvamVjdCBmb3IgcGFyYWxsZWwgcGlwZWxpbmUgYnVpbGQgd29yay5cbiAqL1xuZXhwb3J0IGNsYXNzIFBhcmFsbGVsQnVpbGRQcm9qZWN0IGV4dGVuZHMgY29kZWJ1aWxkLlBpcGVsaW5lUHJvamVjdCB7XG4gIC8qKlxuICAgKiBIYXNoIG9mIGJ1aWxkc3BlYywgcHJvamVjdCBlbnZpcm9ubWVudCwgYW5kIGFjdGlvbi1sZXZlbCBlbnZpcm9ubWVudCBpbnB1dHMuXG4gICAqL1xuICByZWFkb25seSBwcm9qZWN0Q29uZmlnSGFzaDogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBQYXJhbGxlbEJ1aWxkUHJvamVjdFByb3BzKSB7XG4gICAgY29uc3QgYnVpbGRTcGVjID0gbG9hZEJ1aWxkU3BlYyhwcm9wcy5idWlsZFNwZWNQYXRoKTtcbiAgICBjb25zdCBlbnZpcm9ubWVudFZhcmlhYmxlcyA9IGdldFByb2plY3RFbnZpcm9ubWVudFZhcmlhYmxlcyhzY29wZSwgcHJvcHMpO1xuICAgIGNvbnN0IGJ1aWxkSW1hZ2UgPSBwcm9wcy5idWlsZEltYWdlID8/IERFRkFVTFRfQlVJTERfSU1BR0U7XG4gICAgY29uc3QgY29tcHV0ZVR5cGUgPSBwcm9wcy5jb21wdXRlVHlwZSA/PyBERUZBVUxUX0NPTVBVVEVfVFlQRTtcbiAgICBjb25zdCBlbnZpcm9ubWVudDogY29kZWJ1aWxkLkJ1aWxkRW52aXJvbm1lbnQgPSB7XG4gICAgICBidWlsZEltYWdlLFxuICAgICAgY29tcHV0ZVR5cGUsXG4gICAgICBlbnZpcm9ubWVudFZhcmlhYmxlcyxcbiAgICB9O1xuXG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7XG4gICAgICBidWlsZFNwZWM6IGNvZGVidWlsZC5CdWlsZFNwZWMuZnJvbU9iamVjdChidWlsZFNwZWMpLFxuICAgICAgY2FjaGU6IHByb3BzLmNhY2hlLFxuICAgICAgZW52aXJvbm1lbnQsXG4gICAgfSk7XG5cbiAgICB0aGlzLnByb2plY3RDb25maWdIYXNoID0gY3J5cHRvXG4gICAgICAuY3JlYXRlSGFzaCgnc2hhMjU2JylcbiAgICAgIC51cGRhdGUoXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KFxuICAgICAgICAgIFN0YWNrLm9mKHNjb3BlKS5yZXNvbHZlKHtcbiAgICAgICAgICAgIGJ1aWxkU3BlYyxcbiAgICAgICAgICAgIHByb2plY3RFbnZpcm9ubWVudDogZW52aXJvbm1lbnQsXG4gICAgICAgICAgICBhY3Rpb25FbnZpcm9ubWVudDogcHJvcHMuZW52LFxuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgIClcbiAgICAgIC5kaWdlc3QoJ2hleCcpO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./code-build-project"), exports);
|
|
18
|
+
__exportStar(require("./pipeline-build-stage-actions"), exports);
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29udHJpYnV0aW9ucy90ZWFtLXNoaXBwZXItaW5ib3VuZC1ibHVlL3BpcGVsaW5lL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx1REFBcUM7QUFDckMsaUVBQStDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9jb2RlLWJ1aWxkLXByb2plY3QnO1xuZXhwb3J0ICogZnJvbSAnLi9waXBlbGluZS1idWlsZC1zdGFnZS1hY3Rpb25zJztcbiJdfQ==
|
package/lib/contributions/team-shipper-inbound-blue/pipeline/pipeline-build-stage-actions.d.ts
ADDED
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import * as codebuild from 'aws-cdk-lib/aws-codebuild';
|
|
2
|
+
import * as codepipeline from 'aws-cdk-lib/aws-codepipeline';
|
|
3
|
+
import * as codepipelineActions from 'aws-cdk-lib/aws-codepipeline-actions';
|
|
4
|
+
import { Construct } from 'constructs';
|
|
5
|
+
/**
|
|
6
|
+
* Properties for locating an existing generated CodePipeline action.
|
|
7
|
+
*/
|
|
8
|
+
export interface PipelineBuildStageActionsProps {
|
|
9
|
+
/**
|
|
10
|
+
* The underlying CodePipeline generated by `aws-cdk-lib/pipelines.CodePipeline`.
|
|
11
|
+
*/
|
|
12
|
+
readonly pipeline: codepipeline.Pipeline;
|
|
13
|
+
/**
|
|
14
|
+
* Name of the action whose input artifact should be reused.
|
|
15
|
+
*/
|
|
16
|
+
readonly actionName: string;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Properties for a CodeBuild action added by `PipelineBuildStageActions`.
|
|
20
|
+
*/
|
|
21
|
+
export interface PipelineBuildActionProps extends codepipeline.CommonAwsActionProps {
|
|
22
|
+
/**
|
|
23
|
+
* The list of additional input artifacts for this action.
|
|
24
|
+
*/
|
|
25
|
+
readonly extraInputs?: codepipeline.Artifact[];
|
|
26
|
+
/**
|
|
27
|
+
* The list of output artifacts for this action.
|
|
28
|
+
*/
|
|
29
|
+
readonly outputs?: codepipeline.Artifact[];
|
|
30
|
+
/**
|
|
31
|
+
* The action's CodeBuild project.
|
|
32
|
+
*/
|
|
33
|
+
readonly project: codebuild.IProject;
|
|
34
|
+
/**
|
|
35
|
+
* The type of CodeBuild action.
|
|
36
|
+
*
|
|
37
|
+
* @default CodeBuildActionType.BUILD
|
|
38
|
+
*/
|
|
39
|
+
readonly actionType?: codepipelineActions.CodeBuildActionType;
|
|
40
|
+
/**
|
|
41
|
+
* Environment variables to pass to the CodeBuild project when this action executes.
|
|
42
|
+
*/
|
|
43
|
+
readonly environmentVariables?: Record<string, codebuild.BuildEnvironmentVariable>;
|
|
44
|
+
/**
|
|
45
|
+
* Whether to check for secrets in plaintext environment variables.
|
|
46
|
+
*
|
|
47
|
+
* @default true
|
|
48
|
+
*/
|
|
49
|
+
readonly checkSecretsInPlainTextEnvVariables?: boolean;
|
|
50
|
+
/**
|
|
51
|
+
* Trigger a batch build.
|
|
52
|
+
*
|
|
53
|
+
* @default false
|
|
54
|
+
*/
|
|
55
|
+
readonly executeBatchBuild?: boolean;
|
|
56
|
+
/**
|
|
57
|
+
* Combine build artifacts for batch builds.
|
|
58
|
+
*
|
|
59
|
+
* @default false
|
|
60
|
+
*/
|
|
61
|
+
readonly combineBatchBuildArtifacts?: boolean;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Adds CodeBuild actions next to an existing action in the same pipeline stage.
|
|
65
|
+
*/
|
|
66
|
+
export declare class PipelineBuildStageActions extends Construct {
|
|
67
|
+
/**
|
|
68
|
+
* Stage that contains the located action.
|
|
69
|
+
*/
|
|
70
|
+
readonly stage: codepipeline.IStage;
|
|
71
|
+
/**
|
|
72
|
+
* First input artifact of the located action.
|
|
73
|
+
*/
|
|
74
|
+
readonly sourceArtifact: codepipeline.Artifact;
|
|
75
|
+
constructor(scope: Construct, id: string, props: PipelineBuildStageActionsProps);
|
|
76
|
+
/**
|
|
77
|
+
* Adds a CodeBuild action using the located action's first input artifact.
|
|
78
|
+
*/
|
|
79
|
+
addBuildAction(props: PipelineBuildActionProps): void;
|
|
80
|
+
private findPipelineActionContext;
|
|
81
|
+
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var _a;
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.PipelineBuildStageActions = void 0;
|
|
5
|
+
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
6
|
+
const codepipelineActions = require("aws-cdk-lib/aws-codepipeline-actions");
|
|
7
|
+
const constructs_1 = require("constructs");
|
|
8
|
+
const rio_claidometer_1 = require("../../../rio-claidometer");
|
|
9
|
+
/**
|
|
10
|
+
* Adds CodeBuild actions next to an existing action in the same pipeline stage.
|
|
11
|
+
*/
|
|
12
|
+
class PipelineBuildStageActions extends constructs_1.Construct {
|
|
13
|
+
constructor(scope, id, props) {
|
|
14
|
+
super(scope, id);
|
|
15
|
+
const context = this.findPipelineActionContext(props.pipeline, props.actionName);
|
|
16
|
+
this.stage = context.stage;
|
|
17
|
+
this.sourceArtifact = context.sourceArtifact;
|
|
18
|
+
new rio_claidometer_1.Claidometer(this, 'Claidometer', {
|
|
19
|
+
product: rio_claidometer_1.ClaidometerProduct.CDK_CONTRIBUTION,
|
|
20
|
+
packageName: 'team-shipper-inbound-blue',
|
|
21
|
+
feature: 'pipeline',
|
|
22
|
+
version: '0.0.1',
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Adds a CodeBuild action using the located action's first input artifact.
|
|
27
|
+
*/
|
|
28
|
+
addBuildAction(props) {
|
|
29
|
+
const { actionType, ...actionProps } = props;
|
|
30
|
+
this.stage.addAction(new codepipelineActions.CodeBuildAction({
|
|
31
|
+
...actionProps,
|
|
32
|
+
type: actionType,
|
|
33
|
+
input: this.sourceArtifact,
|
|
34
|
+
}));
|
|
35
|
+
}
|
|
36
|
+
findPipelineActionContext(pipeline, actionName) {
|
|
37
|
+
for (const stage of pipeline.stages) {
|
|
38
|
+
const action = stage.actions.find(candidate => candidate.actionProperties.actionName === actionName);
|
|
39
|
+
if (action === undefined) {
|
|
40
|
+
continue;
|
|
41
|
+
}
|
|
42
|
+
const sourceArtifact = action.actionProperties.inputs?.[0];
|
|
43
|
+
if (sourceArtifact === undefined) {
|
|
44
|
+
throw new Error(`Unable to locate the source artifact used by the ${actionName} action.`);
|
|
45
|
+
}
|
|
46
|
+
return {
|
|
47
|
+
stage,
|
|
48
|
+
sourceArtifact,
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
throw new Error(`Unable to locate the ${actionName} action in the generated pipeline.`);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
exports.PipelineBuildStageActions = PipelineBuildStageActions;
|
|
55
|
+
_a = JSII_RTTI_SYMBOL_1;
|
|
56
|
+
PipelineBuildStageActions[_a] = { fqn: "@rio-cloud/cdk-v2-constructs.PipelineBuildStageActions", version: "0.0.0" };
|
|
57
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZWxpbmUtYnVpbGQtc3RhZ2UtYWN0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb250cmlidXRpb25zL3RlYW0tc2hpcHBlci1pbmJvdW5kLWJsdWUvcGlwZWxpbmUvcGlwZWxpbmUtYnVpbGQtc3RhZ2UtYWN0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUVBLDRFQUE0RTtBQUM1RSwyQ0FBdUM7QUFDdkMsOERBQTJFO0FBc0UzRTs7R0FFRztBQUNILE1BQWEseUJBQTBCLFNBQVEsc0JBQVM7SUFXdEQsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFxQztRQUM3RSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNqRixJQUFJLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUM7UUFDM0IsSUFBSSxDQUFDLGNBQWMsR0FBRyxPQUFPLENBQUMsY0FBYyxDQUFDO1FBRTdDLElBQUksNkJBQVcsQ0FBQyxJQUFJLEVBQUUsYUFBYSxFQUFFO1lBQ25DLE9BQU8sRUFBRSxvQ0FBa0IsQ0FBQyxnQkFBZ0I7WUFDNUMsV0FBVyxFQUFFLDJCQUEyQjtZQUN4QyxPQUFPLEVBQUUsVUFBVTtZQUNuQixPQUFPLEVBQUUsT0FBTztTQUNqQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxjQUFjLENBQUMsS0FBK0I7UUFDNUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxHQUFHLFdBQVcsRUFBRSxHQUFHLEtBQUssQ0FBQztRQUU3QyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FDbEIsSUFBSSxtQkFBbUIsQ0FBQyxlQUFlLENBQUM7WUFDdEMsR0FBRyxXQUFXO1lBQ2QsSUFBSSxFQUFFLFVBQVU7WUFDaEIsS0FBSyxFQUFFLElBQUksQ0FBQyxjQUFjO1NBQzNCLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVPLHlCQUF5QixDQUMvQixRQUErQixFQUMvQixVQUFrQjtRQUtsQixLQUFLLE1BQU0sS0FBSyxJQUFJLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNwQyxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLEtBQUssVUFBVSxDQUFDLENBQUM7WUFDckcsSUFBSSxNQUFNLEtBQUssU0FBUyxFQUFFLENBQUM7Z0JBQ3pCLFNBQVM7WUFDWCxDQUFDO1lBRUQsTUFBTSxjQUFjLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzNELElBQUksY0FBYyxLQUFLLFNBQVMsRUFBRSxDQUFDO2dCQUNqQyxNQUFNLElBQUksS0FBSyxDQUFDLG9EQUFvRCxVQUFVLFVBQVUsQ0FBQyxDQUFDO1lBQzVGLENBQUM7WUFFRCxPQUFPO2dCQUNMLEtBQUs7Z0JBQ0wsY0FBYzthQUNmLENBQUM7UUFDSixDQUFDO1FBRUQsTUFBTSxJQUFJLEtBQUssQ0FBQyx3QkFBd0IsVUFBVSxvQ0FBb0MsQ0FBQyxDQUFDO0lBQzFGLENBQUM7O0FBbEVILDhEQW1FQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGNvZGVidWlsZCBmcm9tICdhd3MtY2RrLWxpYi9hd3MtY29kZWJ1aWxkJztcbmltcG9ydCAqIGFzIGNvZGVwaXBlbGluZSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtY29kZXBpcGVsaW5lJztcbmltcG9ydCAqIGFzIGNvZGVwaXBlbGluZUFjdGlvbnMgZnJvbSAnYXdzLWNkay1saWIvYXdzLWNvZGVwaXBlbGluZS1hY3Rpb25zJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgQ2xhaWRvbWV0ZXIsIENsYWlkb21ldGVyUHJvZHVjdCB9IGZyb20gJy4uLy4uLy4uL3Jpby1jbGFpZG9tZXRlcic7XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgbG9jYXRpbmcgYW4gZXhpc3RpbmcgZ2VuZXJhdGVkIENvZGVQaXBlbGluZSBhY3Rpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGlwZWxpbmVCdWlsZFN0YWdlQWN0aW9uc1Byb3BzIHtcbiAgLyoqXG4gICAqIFRoZSB1bmRlcmx5aW5nIENvZGVQaXBlbGluZSBnZW5lcmF0ZWQgYnkgYGF3cy1jZGstbGliL3BpcGVsaW5lcy5Db2RlUGlwZWxpbmVgLlxuICAgKi9cbiAgcmVhZG9ubHkgcGlwZWxpbmU6IGNvZGVwaXBlbGluZS5QaXBlbGluZTtcblxuICAvKipcbiAgICogTmFtZSBvZiB0aGUgYWN0aW9uIHdob3NlIGlucHV0IGFydGlmYWN0IHNob3VsZCBiZSByZXVzZWQuXG4gICAqL1xuICByZWFkb25seSBhY3Rpb25OYW1lOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgYSBDb2RlQnVpbGQgYWN0aW9uIGFkZGVkIGJ5IGBQaXBlbGluZUJ1aWxkU3RhZ2VBY3Rpb25zYC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQaXBlbGluZUJ1aWxkQWN0aW9uUHJvcHMgZXh0ZW5kcyBjb2RlcGlwZWxpbmUuQ29tbW9uQXdzQWN0aW9uUHJvcHMge1xuICAvKipcbiAgICogVGhlIGxpc3Qgb2YgYWRkaXRpb25hbCBpbnB1dCBhcnRpZmFjdHMgZm9yIHRoaXMgYWN0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgZXh0cmFJbnB1dHM/OiBjb2RlcGlwZWxpbmUuQXJ0aWZhY3RbXTtcblxuICAvKipcbiAgICogVGhlIGxpc3Qgb2Ygb3V0cHV0IGFydGlmYWN0cyBmb3IgdGhpcyBhY3Rpb24uXG4gICAqL1xuICByZWFkb25seSBvdXRwdXRzPzogY29kZXBpcGVsaW5lLkFydGlmYWN0W107XG5cbiAgLyoqXG4gICAqIFRoZSBhY3Rpb24ncyBDb2RlQnVpbGQgcHJvamVjdC5cbiAgICovXG4gIHJlYWRvbmx5IHByb2plY3Q6IGNvZGVidWlsZC5JUHJvamVjdDtcblxuICAvKipcbiAgICogVGhlIHR5cGUgb2YgQ29kZUJ1aWxkIGFjdGlvbi5cbiAgICpcbiAgICogQGRlZmF1bHQgQ29kZUJ1aWxkQWN0aW9uVHlwZS5CVUlMRFxuICAgKi9cbiAgcmVhZG9ubHkgYWN0aW9uVHlwZT86IGNvZGVwaXBlbGluZUFjdGlvbnMuQ29kZUJ1aWxkQWN0aW9uVHlwZTtcblxuICAvKipcbiAgICogRW52aXJvbm1lbnQgdmFyaWFibGVzIHRvIHBhc3MgdG8gdGhlIENvZGVCdWlsZCBwcm9qZWN0IHdoZW4gdGhpcyBhY3Rpb24gZXhlY3V0ZXMuXG4gICAqL1xuICByZWFkb25seSBlbnZpcm9ubWVudFZhcmlhYmxlcz86IFJlY29yZDxzdHJpbmcsIGNvZGVidWlsZC5CdWlsZEVudmlyb25tZW50VmFyaWFibGU+O1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGNoZWNrIGZvciBzZWNyZXRzIGluIHBsYWludGV4dCBlbnZpcm9ubWVudCB2YXJpYWJsZXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGNoZWNrU2VjcmV0c0luUGxhaW5UZXh0RW52VmFyaWFibGVzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVHJpZ2dlciBhIGJhdGNoIGJ1aWxkLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgZXhlY3V0ZUJhdGNoQnVpbGQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBDb21iaW5lIGJ1aWxkIGFydGlmYWN0cyBmb3IgYmF0Y2ggYnVpbGRzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgY29tYmluZUJhdGNoQnVpbGRBcnRpZmFjdHM/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIEFkZHMgQ29kZUJ1aWxkIGFjdGlvbnMgbmV4dCB0byBhbiBleGlzdGluZyBhY3Rpb24gaW4gdGhlIHNhbWUgcGlwZWxpbmUgc3RhZ2UuXG4gKi9cbmV4cG9ydCBjbGFzcyBQaXBlbGluZUJ1aWxkU3RhZ2VBY3Rpb25zIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgLyoqXG4gICAqIFN0YWdlIHRoYXQgY29udGFpbnMgdGhlIGxvY2F0ZWQgYWN0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgc3RhZ2U6IGNvZGVwaXBlbGluZS5JU3RhZ2U7XG5cbiAgLyoqXG4gICAqIEZpcnN0IGlucHV0IGFydGlmYWN0IG9mIHRoZSBsb2NhdGVkIGFjdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IHNvdXJjZUFydGlmYWN0OiBjb2RlcGlwZWxpbmUuQXJ0aWZhY3Q7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFBpcGVsaW5lQnVpbGRTdGFnZUFjdGlvbnNQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5maW5kUGlwZWxpbmVBY3Rpb25Db250ZXh0KHByb3BzLnBpcGVsaW5lLCBwcm9wcy5hY3Rpb25OYW1lKTtcbiAgICB0aGlzLnN0YWdlID0gY29udGV4dC5zdGFnZTtcbiAgICB0aGlzLnNvdXJjZUFydGlmYWN0ID0gY29udGV4dC5zb3VyY2VBcnRpZmFjdDtcblxuICAgIG5ldyBDbGFpZG9tZXRlcih0aGlzLCAnQ2xhaWRvbWV0ZXInLCB7XG4gICAgICBwcm9kdWN0OiBDbGFpZG9tZXRlclByb2R1Y3QuQ0RLX0NPTlRSSUJVVElPTixcbiAgICAgIHBhY2thZ2VOYW1lOiAndGVhbS1zaGlwcGVyLWluYm91bmQtYmx1ZScsXG4gICAgICBmZWF0dXJlOiAncGlwZWxpbmUnLFxuICAgICAgdmVyc2lvbjogJzAuMC4xJyxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEgQ29kZUJ1aWxkIGFjdGlvbiB1c2luZyB0aGUgbG9jYXRlZCBhY3Rpb24ncyBmaXJzdCBpbnB1dCBhcnRpZmFjdC5cbiAgICovXG4gIGFkZEJ1aWxkQWN0aW9uKHByb3BzOiBQaXBlbGluZUJ1aWxkQWN0aW9uUHJvcHMpOiB2b2lkIHtcbiAgICBjb25zdCB7IGFjdGlvblR5cGUsIC4uLmFjdGlvblByb3BzIH0gPSBwcm9wcztcblxuICAgIHRoaXMuc3RhZ2UuYWRkQWN0aW9uKFxuICAgICAgbmV3IGNvZGVwaXBlbGluZUFjdGlvbnMuQ29kZUJ1aWxkQWN0aW9uKHtcbiAgICAgICAgLi4uYWN0aW9uUHJvcHMsXG4gICAgICAgIHR5cGU6IGFjdGlvblR5cGUsXG4gICAgICAgIGlucHV0OiB0aGlzLnNvdXJjZUFydGlmYWN0LFxuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBmaW5kUGlwZWxpbmVBY3Rpb25Db250ZXh0KFxuICAgIHBpcGVsaW5lOiBjb2RlcGlwZWxpbmUuUGlwZWxpbmUsXG4gICAgYWN0aW9uTmFtZTogc3RyaW5nXG4gICk6IHtcbiAgICBzdGFnZTogY29kZXBpcGVsaW5lLklTdGFnZTtcbiAgICBzb3VyY2VBcnRpZmFjdDogY29kZXBpcGVsaW5lLkFydGlmYWN0O1xuICB9IHtcbiAgICBmb3IgKGNvbnN0IHN0YWdlIG9mIHBpcGVsaW5lLnN0YWdlcykge1xuICAgICAgY29uc3QgYWN0aW9uID0gc3RhZ2UuYWN0aW9ucy5maW5kKGNhbmRpZGF0ZSA9PiBjYW5kaWRhdGUuYWN0aW9uUHJvcGVydGllcy5hY3Rpb25OYW1lID09PSBhY3Rpb25OYW1lKTtcbiAgICAgIGlmIChhY3Rpb24gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgY29uc3Qgc291cmNlQXJ0aWZhY3QgPSBhY3Rpb24uYWN0aW9uUHJvcGVydGllcy5pbnB1dHM/LlswXTtcbiAgICAgIGlmIChzb3VyY2VBcnRpZmFjdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5hYmxlIHRvIGxvY2F0ZSB0aGUgc291cmNlIGFydGlmYWN0IHVzZWQgYnkgdGhlICR7YWN0aW9uTmFtZX0gYWN0aW9uLmApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBzdGFnZSxcbiAgICAgICAgc291cmNlQXJ0aWZhY3QsXG4gICAgICB9O1xuICAgIH1cblxuICAgIHRocm93IG5ldyBFcnJvcihgVW5hYmxlIHRvIGxvY2F0ZSB0aGUgJHthY3Rpb25OYW1lfSBhY3Rpb24gaW4gdGhlIGdlbmVyYXRlZCBwaXBlbGluZS5gKTtcbiAgfVxufVxuIl19
|
|
@@ -61,6 +61,13 @@ export declare const DATADOG_SLO_TIMEFRAMES: readonly ["7d", "30d", "90d"];
|
|
|
61
61
|
export type DatadogSloTimeframe = (typeof DATADOG_SLO_TIMEFRAMES)[number];
|
|
62
62
|
/**
|
|
63
63
|
* Generate default SLO thresholds for a given criticality level.
|
|
64
|
+
*
|
|
65
|
+
* Prefer this helper unless a specific target has been agreed for the service.
|
|
66
|
+
*
|
|
67
|
+
* Example:
|
|
68
|
+
* ```ts
|
|
69
|
+
* thresholds: defaultThresholds('medium')
|
|
70
|
+
* ```
|
|
64
71
|
*/
|
|
65
72
|
export declare function defaultThresholds(level: CriticalityLevel): DatadogSloThreshold[];
|
|
66
73
|
/**
|
|
@@ -10,6 +10,13 @@ const rio_landing_zone_1 = require("../rio-landing-zone");
|
|
|
10
10
|
exports.DATADOG_SLO_TIMEFRAMES = ['7d', '30d', '90d'];
|
|
11
11
|
/**
|
|
12
12
|
* Generate default SLO thresholds for a given criticality level.
|
|
13
|
+
*
|
|
14
|
+
* Prefer this helper unless a specific target has been agreed for the service.
|
|
15
|
+
*
|
|
16
|
+
* Example:
|
|
17
|
+
* ```ts
|
|
18
|
+
* thresholds: defaultThresholds('medium')
|
|
19
|
+
* ```
|
|
13
20
|
*/
|
|
14
21
|
function defaultThresholds(level) {
|
|
15
22
|
// [Capabilities - RIO Tech Platform Docs - MAN Confluence PRD](https://confluence.collaboration-man.com/x/nLUSEw)
|
|
@@ -106,4 +113,4 @@ function validateCustomTags(customTags) {
|
|
|
106
113
|
throw new Error('DatadogSlo customTags must follow the "key:value" format.');
|
|
107
114
|
}
|
|
108
115
|
}
|
|
109
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWRvZy1zbG8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZGF0YWRvZ3YyL2RhdGFkb2ctc2xvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFnRkEsOENBWUM7O0FBNUZELG1DQUFtQztBQUNuQywyQ0FBdUM7QUFDdkMsMERBQXFEO0FBdUV4QyxRQUFBLHNCQUFzQixHQUFHLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQVUsQ0FBQztBQUlwRTs7R0FFRztBQUNILFNBQWdCLGlCQUFpQixDQUFDLEtBQXVCO0lBQ3ZELGtIQUFrSDtJQUNsSCxNQUFNLE9BQU8sR0FBcUM7UUFDaEQsSUFBSSxFQUFFLElBQUk7UUFDVixNQUFNLEVBQUUsRUFBRTtRQUNWLEdBQUcsRUFBRSxFQUFFO0tBQ1IsQ0FBQztJQUVGLE9BQU8sOEJBQXNCLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM5QyxnQkFBZ0IsRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDO1FBQ2hDLFNBQVMsRUFBRSxTQUFTO0tBQ3JCLENBQUMsQ0FBQyxDQUFDO0FBQ04sQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFhLFVBQVcsU0FBUSxzQkFBUztJQUd2QyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQXNCO1FBQzlELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsWUFBWSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QixtQkFBbUIsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDdEMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3JDLFlBQVksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDNUIsa0JBQWtCLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRXBDLElBQUksQ0FBQyxzQ0FBc0MsQ0FBQyxLQUFL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LGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQy9DLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsS0FBSyxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQ3RFLENBQUM7QUFFRCxTQUFTLGtCQUFrQixDQUFDLFVBQXFCO0lBQy9DLElBQUksVUFBVSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUN6QyxNQUFNLElBQUksS0FBSyxDQUFDLHNEQUFzRCxDQUFDLENBQUM7SUFDMUUsQ0FBQztJQUNELElBQUksVUFBVSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDckQsTUFBTSxJQUFJLEtBQUssQ0FBQywyREFBMkQsQ0FBQyxDQUFDO0lBQy9FLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgY2RrIGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgUmlvTGFuZGluZ1pvbmUgfSBmcm9tICcuLi9yaW8tbGFuZGluZy16b25lJztcblxuLyoqXG4gKiBTTE8gY3JpdGljYWxpdHkgbGV2ZWxzIHVzZWQgdG8gc2VsZWN0IGRlZmF1bHQgdGhyZXNob2xkIHRhcmdldHMuXG4gKi9cbmV4cG9ydCB0eXBlIENyaXRpY2FsaXR5TGV2ZWwgPSAnaGlnaCcgfCAnbWVkaXVtJyB8ICdsb3cnO1xuXG4vKipcbiAqIFRoZSBwcm9kdWN0IHN0cmVhbXMuXG4gKi9cbmV4cG9ydCB0eXBlIFN0cmVhbSA9ICdwbGF0Zm9ybScgfCAnc2hpcHBlcicgfCAndHJhbnNwb3J0JztcblxuLyoqXG4gKiBQcm9wZXJ0aWVzIG9mIHtAbGluayBEYXRhZG9nU2xvfVxuICovXG5leHBvcnQgaW50ZXJmYWNlIERhdGFkb2dTbG9Qcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgU0xPIGluIERhdGFkb2cuXG4gICAqL1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBEYXRhZG9nIG1vbml0b3IgSURzIHVzZWQgdG8gY2FsY3VsYXRlIHRoZSBTTE8uXG4gICAqXG4gICAqIEVhY2ggZW50cnkgbXVzdCBiZSBhIG51bWVyaWMgc3RyaW5nIChmb3IgZXhhbXBsZSBcIjEyMzQ1NjdcIikuXG4gICAqL1xuICByZWFkb25seSBtb25pdG9ySWRzOiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogVGhlIHByb2R1Y3Qgc3RyZWFtIHRoYXQgdGhpcyBTTE8gYmVsb25ncyB0by4gVGhpcyBpcyB1c2VkIGZvciBmaWx0ZXJpbmcgU0xPcyBpbiBkYXNoYm9hcmRzLlxuICAgKi9cbiAgcmVhZG9ubHkgc3RyZWFtOiBTdHJlYW07XG5cbiAgLyoqXG4gICAqIFRoZSBjcml0aWNhbGl0eSBsZXZlbCBmb3IgdGhlIFNMTyBhcyBkZWZpbmVkIGF0IFtDYXBhYmlsaXRpZXMgLSBSSU8gVGVjaCBQbGF0Zm9ybSBEb2NzIC0gTUFOIENvbmZsdWVuY2UgUFJEXShodHRwczovL2NvbmZsdWVuY2UuY29sbGFib3JhdGlvbi1tYW4uY29tL3gvbkxVU0V3KS5cbiAgICovXG4gIHJlYWRvbmx5IGNyaXRpY2FsaXR5OiBDcml0aWNhbGl0eUxldmVsO1xuXG4gIC8qKlxuICAgKiBUaHJlc2hvbGQgZGVmaW5pdGlvbnMgYXBwbGllZCB0byB0aGUgU0xPLlxuICAgKlxuICAgKiBVbmxlc3MgeW91IGhhdmUgYSBzcGVjaWZpYyB1c2UgY2FzZSBpdCBpcyByZWNvbW1lbmRlZCB0byB1c2UgZGVmYXVsdFRocmVzaG9sZHMoLi4uKS5cbiAgICovXG4gIHJlYWRvbmx5IHRocmVzaG9sZHM6IERhdGFkb2dTbG9UaHJlc2hvbGRbXTtcblxuICAvKipcbiAgICogVGhlIFNMTyB0eXBlLiBPbmx5IFwibW9uaXRvclwiIGlzIHN1cHBvcnRlZCBmb3Igbm93LlxuICAgKiBTdGlsbCB0aGlzIHByb3BlcnR5IGlzIHJlcXVpcmVkIHRvIG1ha2UgZnV0dXJlIGV4dGVuc2lvbnMgbW9yZSBzZWFtbGVzcy5cbiAgICovXG4gIHJlYWRvbmx5IHNsb1R5cGU6ICdtb25pdG9yJztcblxuICAvKipcbiAgICogQWRkaXRpb25hbCB0YWdzIHRvIGFwcGx5IHRvIHRoZSBTTE8uXG4gICAqXG4gICAqIEVhY2ggZW50cnkgbXVzdCBmb2xsb3cgdGhlIFwia2V5OnZhbHVlXCIgZm9ybWF0LlxuICAgKi9cbiAgcmVhZG9ubHkgZXh0cmFUYWdzPzogc3RyaW5nW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YWRvZ1Nsb1RocmVzaG9sZCB7XG4gIC8qKlxuICAgKiBUaGUgdGFyZ2V0IHBlcmNlbnRhZ2UgZm9yIHRoZSBTTE8gKGZvciBleGFtcGxlIDk5LjUpLlxuICAgKi9cbiAgcmVhZG9ubHkgdGFyZ2V0UGVyY2VudGFnZTogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgdGltZWZyYW1lIGZvciB0aGUgdGFyZ2V0IChmb3IgZXhhbXBsZSBcIjdkXCIsIFwiMzBkXCIsIFwiOTBkXCIpLlxuICAgKi9cbiAgcmVhZG9ubHkgdGltZWZyYW1lOiBEYXRhZG9nU2xvVGltZWZyYW1lO1xufVxuXG5leHBvcnQgY29uc3QgREFUQURPR19TTE9fVElNRUZSQU1FUyA9IFsnN2QnLCAnMzBkJywgJzkwZCddIGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBEYXRhZG9nU2xvVGltZWZyYW1lID0gKHR5cGVvZiBEQVRBRE9HX1NMT19USU1FRlJBTUVTKVtudW1iZXJdO1xuXG4vKipcbiAqIEdlbmVyYXRlIGRlZmF1bHQgU0xPIHRocmVzaG9sZHMgZm9yIGEgZ2l2ZW4gY3JpdGljYWxpdHkgbGV2ZWwuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWZhdWx0VGhyZXNob2xkcyhsZXZlbDogQ3JpdGljYWxpdHlMZXZlbCk6IERhdGFkb2dTbG9UaHJlc2hvbGRbXSB7XG4gIC8vIFtDYXBhYmlsaXRpZXMgLSBSSU8gVGVjaCBQbGF0Zm9ybSBEb2NzIC0gTUFOIENvbmZsdWVuY2UgUFJEXShodHRwczovL2NvbmZsdWVuY2UuY29sbGFib3JhdGlvbi1tYW4uY29tL3gvbkxVU0V3KVxuICBjb25zdCB0YXJnZXRzOiBSZWNvcmQ8Q3JpdGljYWxpdHlMZXZlbCwgbnVtYmVyPiA9IHtcbiAgICBoaWdoOiA5OS41LFxuICAgIG1lZGl1bTogOTgsXG4gICAgbG93OiA5NSxcbiAgfTtcblxuICByZXR1cm4gREFUQURPR19TTE9fVElNRUZSQU1FUy5tYXAodGltZWZyYW1lID0+ICh7XG4gICAgdGFyZ2V0UGVyY2VudGFnZTogdGFyZ2V0c1tsZXZlbF0sXG4gICAgdGltZWZyYW1lOiB0aW1lZnJhbWUsXG4gIH0pKTtcbn1cblxuLyoqXG4gKiBXcmFwcGVyIGFyb3VuZCBEYXRhZG9nJ3MgQ2xvdWRGb3JtYXRpb24gYERhdGFkb2c6OlNMT3M6OlNMT2Agd2l0aCBzb21lIFJJTyBkZWZhdWx0cyBhcHBsaWVkLlxuICpcbiAqIEN1cnJlbnRseSBvbmx5IFNMT3Mgb2YgVHlwZSBNb25pdG9yIGFyZSBpbXBsZW1lbnRlZC5cbiAqL1xuZXhwb3J0IGNsYXNzIERhdGFkb2dTbG8gZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBwcml2YXRlIHJlYWRvbmx5IHNsbzogY2RrLkNmblJlc291cmNlO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBEYXRhZG9nU2xvUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgdmFsaWRhdGVOYW1lKHByb3BzLm5hbWUpO1xuICAgIHZhbGlkYXRlTW9uaXRvcnNJZHMocHJvcHMubW9uaXRvcklkcyk7XG4gICAgdmFsaWRhdGVUaHJlc2hvbGRzKHByb3BzLnRocmVzaG9sZHMpO1xuICAgIHZhbGlkYXRlVHlwZShwcm9wcy5zbG9UeXBlKTtcbiAgICB2YWxpZGF0ZUN1c3RvbVRhZ3MocHJvcHMuZXh0cmFUYWdzKTtcblxuICAgIGlmICghbWF0Y2hlc0RlZmF1bHRUaHJlc2hvbGRzRm9yQ3JpdGljYWxpdHkocHJvcHMuY3JpdGljYWxpdHksIHByb3BzLnRocmVzaG9sZHMpKSB7XG4gICAgICBjZGsuQW5ub3RhdGlvbnMub2YodGhpcykuYWRkV2FybmluZyhcbiAgICAgICAgJ0RhdGFkb2dTbG8gdGhyZXNob2xkcyBkbyBub3QgbWF0Y2ggdGhlIGRlZmF1bHRzIGZvciB0aGUgc3BlY2lmaWVkIGNyaXRpY2FsaXR5IGxldmVsLidcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgdGVhbU5hbWUgPSBSaW9MYW5kaW5nWm9uZS5nZXRUZWFtTmFtZVBhcmFtZXRlcih0aGlzKTtcbiAgICBjb25zdCB0ZWFtSWRlbnRpZmllciA9IFJpb0xhbmRpbmdab25lLmdldFRlYW1JZGVudGlmaWVyUGFyYW1ldGVyKHRoaXMpO1xuICAgIGNvbnN0IGFjY291bnROYW1lID0gUmlvTGFuZGluZ1pvbmUuZ2V0QWNjb3VudE5hbWVQYXJhbWV0ZXIodGhpcyk7XG5cbiAgICAvLyBDbG91ZGZvcm1hdGlvbiBleHBlY3RzIHVwcGVyY2FzZSBwcm9wZXJ0eSBrZXlzXG4gICAgY29uc3QgdGhyZXNob2xkc0ZvckNmbiA9IHByb3BzLnRocmVzaG9sZHMubWFwKCh7IHRhcmdldFBlcmNlbnRhZ2UsIHRpbWVmcmFtZSB9KSA9PiAoe1xuICAgICAgVGFyZ2V0OiB0YXJnZXRQZXJjZW50YWdlLFxuICAgICAgVGltZWZyYW1lOiB0aW1lZnJhbWUsXG4gICAgfSkpO1xuXG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL0RhdGFEb2cvZGF0YWRvZy1jbG91ZGZvcm1hdGlvbi1yZXNvdXJjZXMvdHJlZS9tYXN0ZXIvZGF0YWRvZy1zbG9zLXNsby1oYW5kbGVyXG4gICAgdGhpcy5zbG8gPSBuZXcgY2RrLkNmblJlc291cmNlKHRoaXMsICdTTE8nLCB7XG4gICAgICB0eXBlOiAnRGF0YWRvZzo6U0xPczo6U0xPJyxcbiAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgTmFtZTogcHJvcHMubmFtZSxcbiAgICAgICAgVHlwZTogcHJvcHMuc2xvVHlwZSxcbiAgICAgICAgTW9uaXRvcklkczogcHJvcHMubW9uaXRvcklkcyxcbiAgICAgICAgVGhyZXNob2xkczogdGhyZXNob2xkc0ZvckNmbixcbiAgICAgICAgVGFnczogW1xuICAgICAgICAgIC4uLihwcm9wcy5leHRyYVRhZ3MgPz8gW10pLFxuICAgICAgICAgIGBjcml0aWNhbGl0eToke3Byb3BzLmNyaXRpY2FsaXR5fWAsXG4gICAgICAgICAgYHN0cmVhbToke3Byb3BzLnN0cmVhbX1gLFxuICAgICAgICAgIGBhY2NvdW50X2lkOiR7Y2RrLlN0YWNrLm9mKHRoaXMpLmFjY291bnR9YCxcbiAgICAgICAgICBgYWNjb3VudF9uYW1lOiR7YWNjb3VudE5hbWUuc3RyaW5nVmFsdWV9YCxcbiAgICAgICAgICBgdGVhbToke3RlYW1OYW1lLnN0cmluZ1ZhbHVlfWAsXG4gICAgICAgICAgYHRlYW1faWRlbnRpZmllcjoke3RlYW1JZGVudGlmaWVyLnN0cmluZ1ZhbHVlfWAsXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgZ2V0IHNsb0lkKCkge1xuICAgIHJldHVybiBjZGsuRm4ucmVmKHRoaXMuc2xvLmxvZ2ljYWxJZCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gdmFsaWRhdGVOYW1lKG5hbWU6IHN0cmluZykge1xuICBpZiAoIW5hbWUudHJpbSgpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdEYXRhZG9nU2xvIG5hbWUgbXVzdCBiZSBub24tZW1wdHkuJyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gdmFsaWRhdGVNb25pdG9yc0lkcyhtb25pdG9yc0lkczogc3RyaW5nW10pIHtcbiAgaWYgKG1vbml0b3JzSWRzLmxlbmd0aCA9PT0gMCkge1xuICAgIHRocm93IG5ldyBFcnJvcignRGF0YWRvZ1NsbyBtb25pdG9yc0lkcyBtdXN0IGluY2x1ZGUgYXQgbGVhc3Qgb25lIG1vbml0b3IgSUQuJyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gdmFsaWRhdGVUaHJlc2hvbGRzKHRocmVzaG9sZHM6IERhdGFkb2dTbG9UaHJlc2hvbGRbXSkge1xuICBpZiAodGhyZXNob2xkcy5sZW5ndGggPT09IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0RhdGFkb2dTbG8gdGhyZXNob2xkcyBtdXN0IGluY2x1ZGUgYXQgbGVhc3Qgb25lIHRocmVzaG9sZC4nKTtcbiAgfVxufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZVR5cGUodHlwZT86ICdtb25pdG9yJykge1xuICBpZiAodHlwZSAhPT0gdW5kZWZpbmVkICYmIHR5cGUgIT09ICdtb25pdG9yJykge1xuICAgIHRocm93IG5ldyBFcnJvcignRGF0YWRvZ1NsbyB0eXBlIG11c3QgYmUgXCJtb25pdG9yXCIuJyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gbWF0Y2hlc0RlZmF1bHRUaHJlc2hvbGRzRm9yQ3JpdGljYWxpdHkobGV2ZWw6IENyaXRpY2FsaXR5TGV2ZWwsIHRocmVzaG9sZHM6IERhdGFkb2dTbG9UaHJlc2hvbGRbXSkge1xuICBjb25zdCBkZWZhdWx0VmFsdWVzID0gZGVmYXVsdFRocmVzaG9sZHMobGV2ZWwpO1xuICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoZGVmYXVsdFZhbHVlcykgPT09IEpTT04uc3RyaW5naWZ5KHRocmVzaG9sZHMpO1xufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZUN1c3RvbVRhZ3MoY3VzdG9tVGFncz86IHN0cmluZ1tdKSB7XG4gIGlmIChjdXN0b21UYWdzPy5zb21lKHRhZyA9PiAhdGFnLnRyaW0oKSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0RhdGFkb2dTbG8gY3VzdG9tVGFncyBtdXN0IG5vdCBjb250YWluIGVtcHR5IHZhbHVlcy4nKTtcbiAgfVxuICBpZiAoY3VzdG9tVGFncz8uc29tZSh0YWcgPT4gIS9eW146XSs6LiskLy50ZXN0KHRhZykpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdEYXRhZG9nU2xvIGN1c3RvbVRhZ3MgbXVzdCBmb2xsb3cgdGhlIFwia2V5OnZhbHVlXCIgZm9ybWF0LicpO1xuICB9XG59XG4iXX0=
|
|
116
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWRvZy1zbG8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZGF0YWRvZ3YyL2RhdGFkb2ctc2xvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUF1RkEsOENBWUM7O0FBbkdELG1DQUFtQztBQUNuQywyQ0FBdUM7QUFDdkMsMERBQXFEO0FBdUV4QyxRQUFBLHNCQUFzQixHQUFHLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQVUsQ0FBQztBQUlwRTs7Ozs7Ozs7O0dBU0c7QUFDSCxTQUFnQixpQkFBaUIsQ0FBQyxLQUF1QjtJQUN2RCxrSEFBa0g7SUFDbEgsTUFBTSxPQUFPLEdBQXFDO1FBQ2hELElBQUksRUFBRSxJQUFJO1FBQ1YsTUFBTSxFQUFFLEVBQUU7UUFDVixHQUFHLEVBQUUsRUFBRTtLQUNSLENBQUM7SUFFRixPQUFPLDhCQUFzQixDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDOUMsZ0JBQWdCLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQztRQUNoQyxTQUFTLEVBQUUsU0FBUztLQUNyQixDQUFDLENBQUMsQ0FBQztBQUNOLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBYSxVQUFXLFNBQVEsc0JBQVM7SUFHdkMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFzQjtRQUM5RCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLFlBQVksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekIsbUJBQW1CLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3RDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNyQyxZQUFZLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzVCLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUVwQyxJQUFJLENBQUMsc0NBQXNDLENB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QWEsR0FBRyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMvQyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLEtBQUssSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUN0RSxDQUFDO0FBRUQsU0FBUyxrQkFBa0IsQ0FBQyxVQUFxQjtJQUMvQyxJQUFJLFVBQVUsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFDekMsTUFBTSxJQUFJLEtBQUssQ0FBQyxzREFBc0QsQ0FBQyxDQUFDO0lBQzFFLENBQUM7SUFDRCxJQUFJLFVBQVUsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ3JELE1BQU0sSUFBSSxLQUFLLENBQUMsMkRBQTJELENBQUMsQ0FBQztJQUMvRSxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGNkayBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IFJpb0xhbmRpbmdab25lIH0gZnJvbSAnLi4vcmlvLWxhbmRpbmctem9uZSc7XG5cbi8qKlxuICogU0xPIGNyaXRpY2FsaXR5IGxldmVscyB1c2VkIHRvIHNlbGVjdCBkZWZhdWx0IHRocmVzaG9sZCB0YXJnZXRzLlxuICovXG5leHBvcnQgdHlwZSBDcml0aWNhbGl0eUxldmVsID0gJ2hpZ2gnIHwgJ21lZGl1bScgfCAnbG93JztcblxuLyoqXG4gKiBUaGUgcHJvZHVjdCBzdHJlYW1zLlxuICovXG5leHBvcnQgdHlwZSBTdHJlYW0gPSAncGxhdGZvcm0nIHwgJ3NoaXBwZXInIHwgJ3RyYW5zcG9ydCc7XG5cbi8qKlxuICogUHJvcGVydGllcyBvZiB7QGxpbmsgRGF0YWRvZ1Nsb31cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEYXRhZG9nU2xvUHJvcHMge1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIFNMTyBpbiBEYXRhZG9nLlxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgRGF0YWRvZyBtb25pdG9yIElEcyB1c2VkIHRvIGNhbGN1bGF0ZSB0aGUgU0xPLlxuICAgKlxuICAgKiBFYWNoIGVudHJ5IG11c3QgYmUgYSBudW1lcmljIHN0cmluZyAoZm9yIGV4YW1wbGUgXCIxMjM0NTY3XCIpLlxuICAgKi9cbiAgcmVhZG9ubHkgbW9uaXRvcklkczogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFRoZSBwcm9kdWN0IHN0cmVhbSB0aGF0IHRoaXMgU0xPIGJlbG9uZ3MgdG8uIFRoaXMgaXMgdXNlZCBmb3IgZmlsdGVyaW5nIFNMT3MgaW4gZGFzaGJvYXJkcy5cbiAgICovXG4gIHJlYWRvbmx5IHN0cmVhbTogU3RyZWFtO1xuXG4gIC8qKlxuICAgKiBUaGUgY3JpdGljYWxpdHkgbGV2ZWwgZm9yIHRoZSBTTE8gYXMgZGVmaW5lZCBhdCBbQ2FwYWJpbGl0aWVzIC0gUklPIFRlY2ggUGxhdGZvcm0gRG9jcyAtIE1BTiBDb25mbHVlbmNlIFBSRF0oaHR0cHM6Ly9jb25mbHVlbmNlLmNvbGxhYm9yYXRpb24tbWFuLmNvbS94L25MVVNFdykuXG4gICAqL1xuICByZWFkb25seSBjcml0aWNhbGl0eTogQ3JpdGljYWxpdHlMZXZlbDtcblxuICAvKipcbiAgICogVGhyZXNob2xkIGRlZmluaXRpb25zIGFwcGxpZWQgdG8gdGhlIFNMTy5cbiAgICpcbiAgICogVW5sZXNzIHlvdSBoYXZlIGEgc3BlY2lmaWMgdXNlIGNhc2UgaXQgaXMgcmVjb21tZW5kZWQgdG8gdXNlIGRlZmF1bHRUaHJlc2hvbGRzKC4uLikuXG4gICAqL1xuICByZWFkb25seSB0aHJlc2hvbGRzOiBEYXRhZG9nU2xvVGhyZXNob2xkW107XG5cbiAgLyoqXG4gICAqIFRoZSBTTE8gdHlwZS4gT25seSBcIm1vbml0b3JcIiBpcyBzdXBwb3J0ZWQgZm9yIG5vdy5cbiAgICogU3RpbGwgdGhpcyBwcm9wZXJ0eSBpcyByZXF1aXJlZCB0byBtYWtlIGZ1dHVyZSBleHRlbnNpb25zIG1vcmUgc2VhbWxlc3MuXG4gICAqL1xuICByZWFkb25seSBzbG9UeXBlOiAnbW9uaXRvcic7XG5cbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgdGFncyB0byBhcHBseSB0byB0aGUgU0xPLlxuICAgKlxuICAgKiBFYWNoIGVudHJ5IG11c3QgZm9sbG93IHRoZSBcImtleTp2YWx1ZVwiIGZvcm1hdC5cbiAgICovXG4gIHJlYWRvbmx5IGV4dHJhVGFncz86IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERhdGFkb2dTbG9UaHJlc2hvbGQge1xuICAvKipcbiAgICogVGhlIHRhcmdldCBwZXJjZW50YWdlIGZvciB0aGUgU0xPIChmb3IgZXhhbXBsZSA5OS41KS5cbiAgICovXG4gIHJlYWRvbmx5IHRhcmdldFBlcmNlbnRhZ2U6IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIHRpbWVmcmFtZSBmb3IgdGhlIHRhcmdldCAoZm9yIGV4YW1wbGUgXCI3ZFwiLCBcIjMwZFwiLCBcIjkwZFwiKS5cbiAgICovXG4gIHJlYWRvbmx5IHRpbWVmcmFtZTogRGF0YWRvZ1Nsb1RpbWVmcmFtZTtcbn1cblxuZXhwb3J0IGNvbnN0IERBVEFET0dfU0xPX1RJTUVGUkFNRVMgPSBbJzdkJywgJzMwZCcsICc5MGQnXSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgRGF0YWRvZ1Nsb1RpbWVmcmFtZSA9ICh0eXBlb2YgREFUQURPR19TTE9fVElNRUZSQU1FUylbbnVtYmVyXTtcblxuLyoqXG4gKiBHZW5lcmF0ZSBkZWZhdWx0IFNMTyB0aHJlc2hvbGRzIGZvciBhIGdpdmVuIGNyaXRpY2FsaXR5IGxldmVsLlxuICpcbiAqIFByZWZlciB0aGlzIGhlbHBlciB1bmxlc3MgYSBzcGVjaWZpYyB0YXJnZXQgaGFzIGJlZW4gYWdyZWVkIGZvciB0aGUgc2VydmljZS5cbiAqXG4gKiBFeGFtcGxlOlxuICogYGBgdHNcbiAqIHRocmVzaG9sZHM6IGRlZmF1bHRUaHJlc2hvbGRzKCdtZWRpdW0nKVxuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWZhdWx0VGhyZXNob2xkcyhsZXZlbDogQ3JpdGljYWxpdHlMZXZlbCk6IERhdGFkb2dTbG9UaHJlc2hvbGRbXSB7XG4gIC8vIFtDYXBhYmlsaXRpZXMgLSBSSU8gVGVjaCBQbGF0Zm9ybSBEb2NzIC0gTUFOIENvbmZsdWVuY2UgUFJEXShodHRwczovL2NvbmZsdWVuY2UuY29sbGFib3JhdGlvbi1tYW4uY29tL3gvbkxVU0V3KVxuICBjb25zdCB0YXJnZXRzOiBSZWNvcmQ8Q3JpdGljYWxpdHlMZXZlbCwgbnVtYmVyPiA9IHtcbiAgICBoaWdoOiA5OS41LFxuICAgIG1lZGl1bTogOTgsXG4gICAgbG93OiA5NSxcbiAgfTtcblxuICByZXR1cm4gREFUQURPR19TTE9fVElNRUZSQU1FUy5tYXAodGltZWZyYW1lID0+ICh7XG4gICAgdGFyZ2V0UGVyY2VudGFnZTogdGFyZ2V0c1tsZXZlbF0sXG4gICAgdGltZWZyYW1lOiB0aW1lZnJhbWUsXG4gIH0pKTtcbn1cblxuLyoqXG4gKiBXcmFwcGVyIGFyb3VuZCBEYXRhZG9nJ3MgQ2xvdWRGb3JtYXRpb24gYERhdGFkb2c6OlNMT3M6OlNMT2Agd2l0aCBzb21lIFJJTyBkZWZhdWx0cyBhcHBsaWVkLlxuICpcbiAqIEN1cnJlbnRseSBvbmx5IFNMT3Mgb2YgVHlwZSBNb25pdG9yIGFyZSBpbXBsZW1lbnRlZC5cbiAqL1xuZXhwb3J0IGNsYXNzIERhdGFkb2dTbG8gZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBwcml2YXRlIHJlYWRvbmx5IHNsbzogY2RrLkNmblJlc291cmNlO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBEYXRhZG9nU2xvUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgdmFsaWRhdGVOYW1lKHByb3BzLm5hbWUpO1xuICAgIHZhbGlkYXRlTW9uaXRvcnNJZHMocHJvcHMubW9uaXRvcklkcyk7XG4gICAgdmFsaWRhdGVUaHJlc2hvbGRzKHByb3BzLnRocmVzaG9sZHMpO1xuICAgIHZhbGlkYXRlVHlwZShwcm9wcy5zbG9UeXBlKTtcbiAgICB2YWxpZGF0ZUN1c3RvbVRhZ3MocHJvcHMuZXh0cmFUYWdzKTtcblxuICAgIGlmICghbWF0Y2hlc0RlZmF1bHRUaHJlc2hvbGRzRm9yQ3JpdGljYWxpdHkocHJvcHMuY3JpdGljYWxpdHksIHByb3BzLnRocmVzaG9sZHMpKSB7XG4gICAgICBjZGsuQW5ub3RhdGlvbnMub2YodGhpcykuYWRkV2FybmluZyhcbiAgICAgICAgJ0RhdGFkb2dTbG8gdGhyZXNob2xkcyBkbyBub3QgbWF0Y2ggdGhlIGRlZmF1bHRzIGZvciB0aGUgc3BlY2lmaWVkIGNyaXRpY2FsaXR5IGxldmVsLidcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgdGVhbU5hbWUgPSBSaW9MYW5kaW5nWm9uZS5nZXRUZWFtTmFtZVBhcmFtZXRlcih0aGlzKTtcbiAgICBjb25zdCB0ZWFtSWRlbnRpZmllciA9IFJpb0xhbmRpbmdab25lLmdldFRlYW1JZGVudGlmaWVyUGFyYW1ldGVyKHRoaXMpO1xuICAgIGNvbnN0IGFjY291bnROYW1lID0gUmlvTGFuZGluZ1pvbmUuZ2V0QWNjb3VudE5hbWVQYXJhbWV0ZXIodGhpcyk7XG5cbiAgICAvLyBDbG91ZGZvcm1hdGlvbiBleHBlY3RzIHVwcGVyY2FzZSBwcm9wZXJ0eSBrZXlzXG4gICAgY29uc3QgdGhyZXNob2xkc0ZvckNmbiA9IHByb3BzLnRocmVzaG9sZHMubWFwKCh7IHRhcmdldFBlcmNlbnRhZ2UsIHRpbWVmcmFtZSB9KSA9PiAoe1xuICAgICAgVGFyZ2V0OiB0YXJnZXRQZXJjZW50YWdlLFxuICAgICAgVGltZWZyYW1lOiB0aW1lZnJhbWUsXG4gICAgfSkpO1xuXG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL0RhdGFEb2cvZGF0YWRvZy1jbG91ZGZvcm1hdGlvbi1yZXNvdXJjZXMvdHJlZS9tYXN0ZXIvZGF0YWRvZy1zbG9zLXNsby1oYW5kbGVyXG4gICAgdGhpcy5zbG8gPSBuZXcgY2RrLkNmblJlc291cmNlKHRoaXMsICdTTE8nLCB7XG4gICAgICB0eXBlOiAnRGF0YWRvZzo6U0xPczo6U0xPJyxcbiAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgTmFtZTogcHJvcHMubmFtZSxcbiAgICAgICAgVHlwZTogcHJvcHMuc2xvVHlwZSxcbiAgICAgICAgTW9uaXRvcklkczogcHJvcHMubW9uaXRvcklkcyxcbiAgICAgICAgVGhyZXNob2xkczogdGhyZXNob2xkc0ZvckNmbixcbiAgICAgICAgVGFnczogW1xuICAgICAgICAgIC4uLihwcm9wcy5leHRyYVRhZ3MgPz8gW10pLFxuICAgICAgICAgIGBjcml0aWNhbGl0eToke3Byb3BzLmNyaXRpY2FsaXR5fWAsXG4gICAgICAgICAgYHN0cmVhbToke3Byb3BzLnN0cmVhbX1gLFxuICAgICAgICAgIGBhY2NvdW50X2lkOiR7Y2RrLlN0YWNrLm9mKHRoaXMpLmFjY291bnR9YCxcbiAgICAgICAgICBgYWNjb3VudF9uYW1lOiR7YWNjb3VudE5hbWUuc3RyaW5nVmFsdWV9YCxcbiAgICAgICAgICBgdGVhbToke3RlYW1OYW1lLnN0cmluZ1ZhbHVlfWAsXG4gICAgICAgICAgYHRlYW1faWRlbnRpZmllcjoke3RlYW1JZGVudGlmaWVyLnN0cmluZ1ZhbHVlfWAsXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgZ2V0IHNsb0lkKCkge1xuICAgIHJldHVybiBjZGsuRm4ucmVmKHRoaXMuc2xvLmxvZ2ljYWxJZCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gdmFsaWRhdGVOYW1lKG5hbWU6IHN0cmluZykge1xuICBpZiAoIW5hbWUudHJpbSgpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdEYXRhZG9nU2xvIG5hbWUgbXVzdCBiZSBub24tZW1wdHkuJyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gdmFsaWRhdGVNb25pdG9yc0lkcyhtb25pdG9yc0lkczogc3RyaW5nW10pIHtcbiAgaWYgKG1vbml0b3JzSWRzLmxlbmd0aCA9PT0gMCkge1xuICAgIHRocm93IG5ldyBFcnJvcignRGF0YWRvZ1NsbyBtb25pdG9yc0lkcyBtdXN0IGluY2x1ZGUgYXQgbGVhc3Qgb25lIG1vbml0b3IgSUQuJyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gdmFsaWRhdGVUaHJlc2hvbGRzKHRocmVzaG9sZHM6IERhdGFkb2dTbG9UaHJlc2hvbGRbXSkge1xuICBpZiAodGhyZXNob2xkcy5sZW5ndGggPT09IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0RhdGFkb2dTbG8gdGhyZXNob2xkcyBtdXN0IGluY2x1ZGUgYXQgbGVhc3Qgb25lIHRocmVzaG9sZC4nKTtcbiAgfVxufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZVR5cGUodHlwZT86ICdtb25pdG9yJykge1xuICBpZiAodHlwZSAhPT0gdW5kZWZpbmVkICYmIHR5cGUgIT09ICdtb25pdG9yJykge1xuICAgIHRocm93IG5ldyBFcnJvcignRGF0YWRvZ1NsbyB0eXBlIG11c3QgYmUgXCJtb25pdG9yXCIuJyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gbWF0Y2hlc0RlZmF1bHRUaHJlc2hvbGRzRm9yQ3JpdGljYWxpdHkobGV2ZWw6IENyaXRpY2FsaXR5TGV2ZWwsIHRocmVzaG9sZHM6IERhdGFkb2dTbG9UaHJlc2hvbGRbXSkge1xuICBjb25zdCBkZWZhdWx0VmFsdWVzID0gZGVmYXVsdFRocmVzaG9sZHMobGV2ZWwpO1xuICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoZGVmYXVsdFZhbHVlcykgPT09IEpTT04uc3RyaW5naWZ5KHRocmVzaG9sZHMpO1xufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZUN1c3RvbVRhZ3MoY3VzdG9tVGFncz86IHN0cmluZ1tdKSB7XG4gIGlmIChjdXN0b21UYWdzPy5zb21lKHRhZyA9PiAhdGFnLnRyaW0oKSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0RhdGFkb2dTbG8gY3VzdG9tVGFncyBtdXN0IG5vdCBjb250YWluIGVtcHR5IHZhbHVlcy4nKTtcbiAgfVxuICBpZiAoY3VzdG9tVGFncz8uc29tZSh0YWcgPT4gIS9eW146XSs6LiskLy50ZXN0KHRhZykpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdEYXRhZG9nU2xvIGN1c3RvbVRhZ3MgbXVzdCBmb2xsb3cgdGhlIFwia2V5OnZhbHVlXCIgZm9ybWF0LicpO1xuICB9XG59XG4iXX0=
|