@pipeline-builder/pipeline-core 3.1.1
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/LICENSE +202 -0
- package/README.md +32 -0
- package/lib/config/app-config.d.ts +81 -0
- package/lib/config/app-config.js +151 -0
- package/lib/config/billing-config.d.ts +17 -0
- package/lib/config/billing-config.js +95 -0
- package/lib/config/config-types.d.ts +213 -0
- package/lib/config/config-types.js +5 -0
- package/lib/config/infrastructure-config.d.ts +55 -0
- package/lib/config/infrastructure-config.js +200 -0
- package/lib/config/server-config.d.ts +53 -0
- package/lib/config/server-config.js +180 -0
- package/lib/core/artifact-manager.d.ts +62 -0
- package/lib/core/artifact-manager.js +86 -0
- package/lib/core/id-generator.d.ts +26 -0
- package/lib/core/id-generator.js +44 -0
- package/lib/core/metadata-builder.d.ts +13 -0
- package/lib/core/metadata-builder.js +81 -0
- package/lib/core/network-types.d.ts +200 -0
- package/lib/core/network-types.js +5 -0
- package/lib/core/network.d.ts +20 -0
- package/lib/core/network.js +84 -0
- package/lib/core/pipeline-helpers.d.ts +53 -0
- package/lib/core/pipeline-helpers.js +273 -0
- package/lib/core/pipeline-types.d.ts +136 -0
- package/lib/core/pipeline-types.js +140 -0
- package/lib/core/role-types.d.ts +254 -0
- package/lib/core/role-types.js +5 -0
- package/lib/core/role.d.ts +14 -0
- package/lib/core/role.js +118 -0
- package/lib/core/security-group-types.d.ts +84 -0
- package/lib/core/security-group-types.js +5 -0
- package/lib/core/security-group.d.ts +14 -0
- package/lib/core/security-group.js +34 -0
- package/lib/handlers/plugin-lookup-handler.d.ts +32 -0
- package/lib/handlers/plugin-lookup-handler.js +313 -0
- package/lib/handlers/pnpm-lock.yaml +12 -0
- package/lib/index.d.ts +54 -0
- package/lib/index.js +112 -0
- package/lib/pipeline/pipeline-builder.d.ts +82 -0
- package/lib/pipeline/pipeline-builder.js +292 -0
- package/lib/pipeline/pipeline-configuration.d.ts +72 -0
- package/lib/pipeline/pipeline-configuration.js +196 -0
- package/lib/pipeline/plugin-lookup.d.ts +100 -0
- package/lib/pipeline/plugin-lookup.js +247 -0
- package/lib/pipeline/source-builder.d.ts +47 -0
- package/lib/pipeline/source-builder.js +111 -0
- package/lib/pipeline/source-types.d.ts +191 -0
- package/lib/pipeline/source-types.js +5 -0
- package/lib/pipeline/stage-builder.d.ts +71 -0
- package/lib/pipeline/stage-builder.js +118 -0
- package/lib/pipeline/step-types.d.ts +307 -0
- package/lib/pipeline/step-types.js +5 -0
- package/package.json +137 -0
|
@@ -0,0 +1,307 @@
|
|
|
1
|
+
import type { PluginFilter, Plugin } from '@pipeline-builder/pipeline-data';
|
|
2
|
+
import type { ComputeType as CdkComputeType } from 'aws-cdk-lib/aws-codebuild';
|
|
3
|
+
import type { IFileSetProducer } from 'aws-cdk-lib/pipelines';
|
|
4
|
+
import type { Construct } from 'constructs';
|
|
5
|
+
import type { ArtifactKey, ArtifactManager } from '../core/artifact-manager';
|
|
6
|
+
import type { UniqueId } from '../core/id-generator';
|
|
7
|
+
import type { NetworkConfig } from '../core/network-types';
|
|
8
|
+
import type { ComputeType, PluginType, MetaDataType, SourceType } from '../core/pipeline-types';
|
|
9
|
+
/**
|
|
10
|
+
* Options for selecting and configuring a plugin
|
|
11
|
+
*/
|
|
12
|
+
export interface PluginOptions {
|
|
13
|
+
/**
|
|
14
|
+
* Name of the plugin to use
|
|
15
|
+
* Must match a registered plugin in the database
|
|
16
|
+
*/
|
|
17
|
+
readonly name: string;
|
|
18
|
+
/**
|
|
19
|
+
* Optional alias for the plugin instance
|
|
20
|
+
* Useful when using the same plugin multiple times with different configurations
|
|
21
|
+
*/
|
|
22
|
+
readonly alias?: string;
|
|
23
|
+
/**
|
|
24
|
+
* Optional filter criteria for plugin selection
|
|
25
|
+
* Can be used to select specific plugin versions or variants
|
|
26
|
+
*/
|
|
27
|
+
readonly filter?: PluginFilter;
|
|
28
|
+
/**
|
|
29
|
+
* Additional metadata to merge with plugin's default metadata
|
|
30
|
+
* This metadata will be available to the plugin during execution
|
|
31
|
+
*/
|
|
32
|
+
readonly metadata?: MetaDataType;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Synthesis step configuration combining source and plugin.
|
|
36
|
+
* Extends StepCustomization to support injecting custom commands and env vars
|
|
37
|
+
* into the synth CodeBuild step (same hooks available as stage steps).
|
|
38
|
+
*/
|
|
39
|
+
export interface SynthOptions extends StepCustomization {
|
|
40
|
+
/**
|
|
41
|
+
* Source configuration (S3, GitHub, or CodeStar)
|
|
42
|
+
*/
|
|
43
|
+
readonly source: SourceType;
|
|
44
|
+
/**
|
|
45
|
+
* Plugin to use for synthesis
|
|
46
|
+
*/
|
|
47
|
+
readonly plugin: PluginOptions;
|
|
48
|
+
/**
|
|
49
|
+
* Additional metadata for the synthesis step
|
|
50
|
+
* This will be merged with global metadata and plugin metadata
|
|
51
|
+
*/
|
|
52
|
+
readonly metadata?: MetaDataType;
|
|
53
|
+
/**
|
|
54
|
+
* Step-level network configuration applied only to the synth CodeBuild step.
|
|
55
|
+
* Overrides the pipeline-level `defaults.network` when both are provided.
|
|
56
|
+
*/
|
|
57
|
+
readonly network?: NetworkConfig;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Plugin spec defining plugin behavior and requirements.
|
|
61
|
+
* This is typically loaded from a plugin spec file (plugin-spec.yaml).
|
|
62
|
+
*/
|
|
63
|
+
export interface PluginSpec {
|
|
64
|
+
/**
|
|
65
|
+
* Unique identifier for the plugin
|
|
66
|
+
* @example 'nodejs-build'
|
|
67
|
+
*/
|
|
68
|
+
readonly name: string;
|
|
69
|
+
/**
|
|
70
|
+
* Human-readable description of what the plugin does
|
|
71
|
+
* @example 'Builds and tests Node.js applications'
|
|
72
|
+
*/
|
|
73
|
+
readonly description?: string;
|
|
74
|
+
/**
|
|
75
|
+
* Keywords for plugin discovery and categorization
|
|
76
|
+
* @example ['nodejs', 'typescript', 'build', 'test']
|
|
77
|
+
*/
|
|
78
|
+
readonly keywords?: string[];
|
|
79
|
+
/**
|
|
80
|
+
* Plugin category for AI-assisted selection and organization.
|
|
81
|
+
* One of: language, security, quality, testing, deploy, artifact,
|
|
82
|
+
* infrastructure, monitoring, notification, ai
|
|
83
|
+
*/
|
|
84
|
+
readonly category?: string;
|
|
85
|
+
/**
|
|
86
|
+
* Semantic version of the plugin
|
|
87
|
+
* @example '1.0.0'
|
|
88
|
+
*/
|
|
89
|
+
readonly version?: string;
|
|
90
|
+
/**
|
|
91
|
+
* Type of pipeline step this plugin creates
|
|
92
|
+
* @default PluginType.CODE_BUILD_STEP
|
|
93
|
+
*/
|
|
94
|
+
readonly pluginType?: PluginType;
|
|
95
|
+
/**
|
|
96
|
+
* CodeBuild compute resource size to use
|
|
97
|
+
* @default ComputeType.SMALL
|
|
98
|
+
*/
|
|
99
|
+
readonly computeType?: ComputeType;
|
|
100
|
+
/**
|
|
101
|
+
* Maximum execution time in minutes.
|
|
102
|
+
* Used as fallback when the pipeline step doesn't set timeout.
|
|
103
|
+
* @default 60 (AWS CodeBuild default)
|
|
104
|
+
*/
|
|
105
|
+
readonly timeout?: number;
|
|
106
|
+
/**
|
|
107
|
+
* What happens when this step fails.
|
|
108
|
+
* - 'fail': Stop the pipeline (default)
|
|
109
|
+
* - 'warn': Log a warning and continue
|
|
110
|
+
* - 'ignore': Silently continue
|
|
111
|
+
* @default 'fail'
|
|
112
|
+
*/
|
|
113
|
+
readonly failureBehavior?: 'fail' | 'warn' | 'ignore';
|
|
114
|
+
/**
|
|
115
|
+
* Secret requirements for this plugin.
|
|
116
|
+
* Declares named secrets the plugin expects at build time.
|
|
117
|
+
*/
|
|
118
|
+
readonly secrets?: Array<{
|
|
119
|
+
name: string;
|
|
120
|
+
required: boolean;
|
|
121
|
+
description?: string;
|
|
122
|
+
}>;
|
|
123
|
+
/**
|
|
124
|
+
* Directory containing the primary build output artifacts
|
|
125
|
+
* @example 'dist'
|
|
126
|
+
*/
|
|
127
|
+
readonly primaryOutputDirectory?: string;
|
|
128
|
+
/**
|
|
129
|
+
* Additional metadata that can be accessed during plugin execution
|
|
130
|
+
* Keys should use the format 'aws:cdk:{namespace}:{key}' (all lowercase)
|
|
131
|
+
*/
|
|
132
|
+
readonly metadata?: Record<string, string | number | boolean>;
|
|
133
|
+
/**
|
|
134
|
+
* Path to Dockerfile or Dockerfile content
|
|
135
|
+
* Used to build the container environment for this plugin
|
|
136
|
+
*/
|
|
137
|
+
readonly dockerfile?: string;
|
|
138
|
+
/**
|
|
139
|
+
* Commands to run during the install phase
|
|
140
|
+
* Typically used for installing dependencies
|
|
141
|
+
* @example ['npm ci', 'npm run build']
|
|
142
|
+
*/
|
|
143
|
+
readonly installCommands?: string[];
|
|
144
|
+
/**
|
|
145
|
+
* Commands to run during the build/execution phase
|
|
146
|
+
* These are the main commands that perform the plugin's work
|
|
147
|
+
* @example ['npm test', 'npm run deploy']
|
|
148
|
+
*/
|
|
149
|
+
readonly commands?: string[];
|
|
150
|
+
/**
|
|
151
|
+
* Environment variables to set in the build environment
|
|
152
|
+
* @example { API_URL: 'https://api.example.com', LOG_LEVEL: 'info' }
|
|
153
|
+
*/
|
|
154
|
+
readonly env?: Record<string, string>;
|
|
155
|
+
/**
|
|
156
|
+
* Docker build arguments passed via --build-arg at image build time.
|
|
157
|
+
* Used to parameterize Dockerfile ARG values when building the plugin image.
|
|
158
|
+
* @example { PYTHON_VERSION: '3.12', NODE_ENV: 'production' }
|
|
159
|
+
*/
|
|
160
|
+
readonly buildArgs?: Record<string, string>;
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Per-step customization options for commands and environment variables.
|
|
164
|
+
* Custom commands are injected before/after the plugin's commands.
|
|
165
|
+
* Custom env vars are merged on top of the plugin's defaults.
|
|
166
|
+
*/
|
|
167
|
+
export interface StepCustomization {
|
|
168
|
+
/** Commands to run before the plugin's install commands */
|
|
169
|
+
readonly preInstallCommands?: string[];
|
|
170
|
+
/** Commands to run after the plugin's install commands */
|
|
171
|
+
readonly postInstallCommands?: string[];
|
|
172
|
+
/** Commands to run before the plugin's build commands */
|
|
173
|
+
readonly preCommands?: string[];
|
|
174
|
+
/** Commands to run after the plugin's build commands */
|
|
175
|
+
readonly postCommands?: string[];
|
|
176
|
+
/** Custom environment variables merged on top of the plugin's env */
|
|
177
|
+
readonly env?: Record<string, string>;
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* An additional input artifact with an optional mount directory.
|
|
181
|
+
* When directory is omitted, defaults to the artifact's outputDirectory.
|
|
182
|
+
*/
|
|
183
|
+
export interface AdditionalInputArtifactConfig {
|
|
184
|
+
/** Artifact key identifying the source step's output */
|
|
185
|
+
readonly artifact: ArtifactKey;
|
|
186
|
+
/** Directory to mount the input at. Defaults to artifact.outputDirectory when omitted. */
|
|
187
|
+
readonly directory?: string;
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Configuration for a single step within a pipeline stage.
|
|
191
|
+
* Uses PluginOptions for name-based plugin selection (resolved at build time).
|
|
192
|
+
*/
|
|
193
|
+
export interface StageStepOptions extends StepCustomization {
|
|
194
|
+
/** Plugin to use for this step */
|
|
195
|
+
readonly plugin: PluginOptions;
|
|
196
|
+
/** Step-level metadata merged with stage and global metadata */
|
|
197
|
+
readonly metadata?: MetaDataType;
|
|
198
|
+
/** Optional network configuration for this step's CodeBuild action */
|
|
199
|
+
readonly network?: NetworkConfig;
|
|
200
|
+
/**
|
|
201
|
+
* CodeBuild timeout in minutes.
|
|
202
|
+
* @default 60 (AWS CodeBuild default)
|
|
203
|
+
*/
|
|
204
|
+
readonly timeout?: number;
|
|
205
|
+
/**
|
|
206
|
+
* Position of this step within the pipeline wave.
|
|
207
|
+
* - 'pre': Runs before the stage deployment (default)
|
|
208
|
+
* - 'post': Runs after the stage deployment
|
|
209
|
+
* @default 'pre'
|
|
210
|
+
*/
|
|
211
|
+
readonly position?: 'pre' | 'post';
|
|
212
|
+
/** Artifact key for this step's primary input (resolved via ArtifactManager) */
|
|
213
|
+
readonly inputArtifact?: ArtifactKey;
|
|
214
|
+
/** Additional input artifacts for this step. Each entry specifies an artifact and an optional mount directory. */
|
|
215
|
+
readonly additionalInputArtifacts?: AdditionalInputArtifactConfig[];
|
|
216
|
+
/** Override the plugin's failure behavior for this step. */
|
|
217
|
+
readonly failureBehavior?: 'fail' | 'warn' | 'ignore';
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* A pipeline stage containing one or more build steps.
|
|
221
|
+
* Each stage maps to a CDK Pipeline wave, with steps executing within the wave.
|
|
222
|
+
*/
|
|
223
|
+
export interface StageOptions {
|
|
224
|
+
/** Display name for this stage */
|
|
225
|
+
readonly stageName: string;
|
|
226
|
+
/** Optional alias used for wave/construct ID generation. Defaults to stageName. */
|
|
227
|
+
readonly alias?: string;
|
|
228
|
+
/** Build steps to execute within this stage */
|
|
229
|
+
readonly steps: StageStepOptions[];
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* Options for creating a CodeBuild step in the pipeline
|
|
233
|
+
*/
|
|
234
|
+
export interface CodeBuildStepOptions extends StepCustomization {
|
|
235
|
+
/**
|
|
236
|
+
* Unique identifier for this CodeBuild step
|
|
237
|
+
* Should be descriptive and unique within the pipeline
|
|
238
|
+
* @example 'my-org-my-project-synth'
|
|
239
|
+
*/
|
|
240
|
+
readonly id: string;
|
|
241
|
+
/**
|
|
242
|
+
* UniqueId instance for generating unique construct IDs
|
|
243
|
+
* Used for network resource lookups (VPC, subnets, security groups)
|
|
244
|
+
*/
|
|
245
|
+
readonly uniqueId: UniqueId;
|
|
246
|
+
/**
|
|
247
|
+
* Plugin configuration from the database
|
|
248
|
+
* Contains all the plugin's spec data and runtime information
|
|
249
|
+
*/
|
|
250
|
+
readonly plugin: Plugin;
|
|
251
|
+
/**
|
|
252
|
+
* CDK scope used to create constructs (VPC/subnet/security-group lookups).
|
|
253
|
+
*/
|
|
254
|
+
readonly scope: Construct;
|
|
255
|
+
/**
|
|
256
|
+
* Input source for this step
|
|
257
|
+
* Typically the output from a previous step or the pipeline source
|
|
258
|
+
*/
|
|
259
|
+
readonly input?: IFileSetProducer;
|
|
260
|
+
/**
|
|
261
|
+
* Additional metadata to merge with plugin metadata
|
|
262
|
+
* Will override conflicting keys from plugin metadata
|
|
263
|
+
*/
|
|
264
|
+
readonly metadata?: MetaDataType;
|
|
265
|
+
/**
|
|
266
|
+
* Optional network configuration for the CodeBuild step.
|
|
267
|
+
* When provided, resolves VPC, subnet selection, and security groups
|
|
268
|
+
* so the build runs inside the specified network.
|
|
269
|
+
*/
|
|
270
|
+
readonly network?: NetworkConfig;
|
|
271
|
+
/**
|
|
272
|
+
* Fallback CodeBuild compute type when the plugin doesn't specify one.
|
|
273
|
+
* @default ComputeType.SMALL
|
|
274
|
+
*/
|
|
275
|
+
readonly defaultComputeType?: CdkComputeType;
|
|
276
|
+
/**
|
|
277
|
+
* CodeBuild timeout in minutes.
|
|
278
|
+
* @default 60 (AWS CodeBuild default)
|
|
279
|
+
*/
|
|
280
|
+
readonly timeout?: number;
|
|
281
|
+
/** Additional inputs mapped by directory path (resolved FileSets) */
|
|
282
|
+
readonly additionalInputs?: Record<string, IFileSetProducer>;
|
|
283
|
+
/**
|
|
284
|
+
* Optional artifact manager for tracking build outputs
|
|
285
|
+
* When provided and primaryOutputDirectory is set, the step will be registered
|
|
286
|
+
*/
|
|
287
|
+
readonly artifactManager?: ArtifactManager;
|
|
288
|
+
/**
|
|
289
|
+
* Stage name for artifact key generation
|
|
290
|
+
*/
|
|
291
|
+
readonly stageName?: string;
|
|
292
|
+
/**
|
|
293
|
+
* Stage alias for artifact key generation
|
|
294
|
+
*/
|
|
295
|
+
readonly stageAlias?: string;
|
|
296
|
+
/**
|
|
297
|
+
* Plugin alias for artifact key generation
|
|
298
|
+
*/
|
|
299
|
+
readonly pluginAlias?: string;
|
|
300
|
+
/**
|
|
301
|
+
* Failure behavior for this step's build commands.
|
|
302
|
+
* Applied at shell level: 'fail' = default, 'warn' = log + continue, 'ignore' = || true.
|
|
303
|
+
*/
|
|
304
|
+
readonly failureBehavior?: 'fail' | 'warn' | 'ignore';
|
|
305
|
+
/** Tenant identifier for resolving per-org secrets from AWS Secrets Manager */
|
|
306
|
+
readonly orgId?: string;
|
|
307
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Copyright 2026 Pipeline Builder Contributors
|
|
3
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcC10eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9waXBlbGluZS9zdGVwLXR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCB0eXBlIHsgUGx1Z2luRmlsdGVyLCBQbHVnaW4gfSBmcm9tICdAcGlwZWxpbmUtYnVpbGRlci9waXBlbGluZS1kYXRhJztcbmltcG9ydCB0eXBlIHsgQ29tcHV0ZVR5cGUgYXMgQ2RrQ29tcHV0ZVR5cGUgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtY29kZWJ1aWxkJztcbmltcG9ydCB0eXBlIHsgSUZpbGVTZXRQcm9kdWNlciB9IGZyb20gJ2F3cy1jZGstbGliL3BpcGVsaW5lcyc7XG5pbXBvcnQgdHlwZSB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHR5cGUgeyBBcnRpZmFjdEtleSwgQXJ0aWZhY3RNYW5hZ2VyIH0gZnJvbSAnLi4vY29yZS9hcnRpZmFjdC1tYW5hZ2VyJztcbmltcG9ydCB0eXBlIHsgVW5pcXVlSWQgfSBmcm9tICcuLi9jb3JlL2lkLWdlbmVyYXRvcic7XG5pbXBvcnQgdHlwZSB7IE5ldHdvcmtDb25maWcgfSBmcm9tICcuLi9jb3JlL25ldHdvcmstdHlwZXMnO1xuaW1wb3J0IHR5cGUgeyBDb21wdXRlVHlwZSwgUGx1Z2luVHlwZSwgTWV0YURhdGFUeXBlLCBTb3VyY2VUeXBlIH0gZnJvbSAnLi4vY29yZS9waXBlbGluZS10eXBlcyc7XG5cbi8qKlxuICogT3B0aW9ucyBmb3Igc2VsZWN0aW5nIGFuZCBjb25maWd1cmluZyBhIHBsdWdpblxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBsdWdpbk9wdGlvbnMge1xuICAvKipcbiAgICogTmFtZSBvZiB0aGUgcGx1Z2luIHRvIHVzZVxuICAgKiBNdXN0IG1hdGNoIGEgcmVnaXN0ZXJlZCBwbHVnaW4gaW4gdGhlIGRhdGFiYXNlXG4gICAqL1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIGFsaWFzIGZvciB0aGUgcGx1Z2luIGluc3RhbmNlXG4gICAqIFVzZWZ1bCB3aGVuIHVzaW5nIHRoZSBzYW1lIHBsdWdpbiBtdWx0aXBsZSB0aW1lcyB3aXRoIGRpZmZlcmVudCBjb25maWd1cmF0aW9uc1xuICAgKi9cbiAgcmVhZG9ubHkgYWxpYXM/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIGZpbHRlciBjcml0ZXJpYSBmb3IgcGx1Z2luIHNlbGVjdGlvblxuICAgKiBDYW4gYmUgdXNlZCB0byBzZWxlY3Qgc3BlY2lmaWMgcGx1Z2luIHZlcnNpb25zIG9yIHZhcmlhbnRzXG4gICAqL1xuICByZWFkb25seSBmaWx0ZXI/OiBQbHVnaW5GaWx0ZXI7XG5cbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgbWV0YWRhdGEgdG8gbWVyZ2Ugd2l0aCBwbHVnaW4ncyBkZWZhdWx0IG1ldGFkYXRhXG4gICAqIFRoaXMgbWV0YWRhdGEgd2lsbCBiZSBhdmFpbGFibGUgdG8gdGhlIHBsdWdpbiBkdXJpbmcgZXhlY3V0aW9uXG4gICAqL1xuICByZWFkb25seSBtZXRhZGF0YT86IE1ldGFEYXRhVHlwZTtcbn1cblxuLyoqXG4gKiBTeW50aGVzaXMgc3RlcCBjb25maWd1cmF0aW9uIGNvbWJpbmluZyBzb3VyY2UgYW5kIHBsdWdpbi5cbiAqIEV4dGVuZHMgU3RlcEN1c3RvbWl6YXRpb24gdG8gc3VwcG9ydCBpbmplY3RpbmcgY3VzdG9tIGNvbW1hbmRzIGFuZCBlbnYgdmFyc1xuICogaW50byB0aGUgc3ludGggQ29kZUJ1aWxkIHN0ZXAgKHNhbWUgaG9va3MgYXZhaWxhYmxlIGFzIHN0YWdlIHN0ZXBzKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTeW50aE9wdGlvbnMgZXh0ZW5kcyBTdGVwQ3VzdG9taXphdGlvbiB7XG4gIC8qKlxuICAgKiBTb3VyY2UgY29uZmlndXJhdGlvbiAoUzMsIEdpdEh1Yiwgb3IgQ29kZVN0YXIpXG4gICAqL1xuICByZWFkb25seSBzb3VyY2U6IFNvdXJjZVR5cGU7XG5cbiAgLyoqXG4gICAqIFBsdWdpbiB0byB1c2UgZm9yIHN5bnRoZXNpc1xuICAgKi9cbiAgcmVhZG9ubHkgcGx1Z2luOiBQbHVnaW5PcHRpb25zO1xuXG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIG1ldGFkYXRhIGZvciB0aGUgc3ludGhlc2lzIHN0ZXBcbiAgICogVGhpcyB3aWxsIGJlIG1lcmdlZCB3aXRoIGdsb2JhbCBtZXRhZGF0YSBhbmQgcGx1Z2luIG1ldGFkYXRhXG4gICAqL1xuICByZWFkb25seSBtZXRhZGF0YT86IE1ldGFEYXRhVHlwZTtcblxuICAvKipcbiAgICogU3RlcC1sZXZlbCBuZXR3b3JrIGNvbmZpZ3VyYXRpb24gYXBwbGllZCBvbmx5IHRvIHRoZSBzeW50aCBDb2RlQnVpbGQgc3RlcC5cbiAgICogT3ZlcnJpZGVzIHRoZSBwaXBlbGluZS1sZXZlbCBgZGVmYXVsdHMubmV0d29ya2Agd2hlbiBib3RoIGFyZSBwcm92aWRlZC5cbiAgICovXG4gIHJlYWRvbmx5IG5ldHdvcms/OiBOZXR3b3JrQ29uZmlnO1xufVxuXG4vKipcbiAqIFBsdWdpbiBzcGVjIGRlZmluaW5nIHBsdWdpbiBiZWhhdmlvciBhbmQgcmVxdWlyZW1lbnRzLlxuICogVGhpcyBpcyB0eXBpY2FsbHkgbG9hZGVkIGZyb20gYSBwbHVnaW4gc3BlYyBmaWxlIChwbHVnaW4tc3BlYy55YW1sKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQbHVnaW5TcGVjIHtcbiAgLyoqXG4gICAqIFVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgcGx1Z2luXG4gICAqIEBleGFtcGxlICdub2RlanMtYnVpbGQnXG4gICAqL1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEh1bWFuLXJlYWRhYmxlIGRlc2NyaXB0aW9uIG9mIHdoYXQgdGhlIHBsdWdpbiBkb2VzXG4gICAqIEBleGFtcGxlICdCdWlsZHMgYW5kIHRlc3RzIE5vZGUuanMgYXBwbGljYXRpb25zJ1xuICAgKi9cbiAgcmVhZG9ubHkgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEtleXdvcmRzIGZvciBwbHVnaW4gZGlzY292ZXJ5IGFuZCBjYXRlZ29yaXphdGlvblxuICAgKiBAZXhhbXBsZSBbJ25vZGVqcycsICd0eXBlc2NyaXB0JywgJ2J1aWxkJywgJ3Rlc3QnXVxuICAgKi9cbiAgcmVhZG9ubHkga2V5d29yZHM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogUGx1Z2luIGNhdGVnb3J5IGZvciBBSS1hc3Npc3RlZCBzZWxlY3Rpb24gYW5kIG9yZ2FuaXphdGlvbi5cbiAgICogT25lIG9mOiBsYW5ndWFnZSwgc2VjdXJpdHksIHF1YWxpdHksIHRlc3RpbmcsIGRlcGxveSwgYXJ0aWZhY3QsXG4gICAqICAgICAgICAgaW5mcmFzdHJ1Y3R1cmUsIG1vbml0b3JpbmcsIG5vdGlmaWNhdGlvbiwgYWlcbiAgICovXG4gIHJlYWRvbmx5IGNhdGVnb3J5Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTZW1hbnRpYyB2ZXJzaW9uIG9mIHRoZSBwbHVnaW5cbiAgICogQGV4YW1wbGUgJzEuMC4wJ1xuICAgKi9cbiAgcmVhZG9ubHkgdmVyc2lvbj86IHN0cmluZztcblxuICAvKipcbiAgICogVHlwZSBvZiBwaXBlbGluZSBzdGVwIHRoaXMgcGx1Z2luIGNyZWF0ZXNcbiAgICogQGRlZmF1bHQgUGx1Z2luVHlwZS5DT0RFX0JVSUxEX1NURVBcbiAgICovXG4gIHJlYWRvbmx5IHBsdWdpblR5cGU/OiBQbHVnaW5UeXBlO1xuXG4gIC8qKlxuICAgKiBDb2RlQnVpbGQgY29tcHV0ZSByZXNvdXJjZSBzaXplIHRvIHVzZVxuICAgKiBAZGVmYXVsdCBDb21wdXRlVHlwZS5TTUFMTFxuICAgKi9cbiAgcmVhZG9ubHkgY29tcHV0ZVR5cGU/OiBDb21wdXRlVHlwZTtcblxuICAvKipcbiAgICogTWF4aW11bSBleGVjdXRpb24gdGltZSBpbiBtaW51dGVzLlxuICAgKiBVc2VkIGFzIGZhbGxiYWNrIHdoZW4gdGhlIHBpcGVsaW5lIHN0ZXAgZG9lc24ndCBzZXQgdGltZW91dC5cbiAgICogQGRlZmF1bHQgNjAgKEFXUyBDb2RlQnVpbGQgZGVmYXVsdClcbiAgICovXG4gIHJlYWRvbmx5IHRpbWVvdXQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFdoYXQgaGFwcGVucyB3aGVuIHRoaXMgc3RlcCBmYWlscy5cbiAgICogLSAnZmFpbCc6IFN0b3AgdGhlIHBpcGVsaW5lIChkZWZhdWx0KVxuICAgKiAtICd3YXJuJzogTG9nIGEgd2FybmluZyBhbmQgY29udGludWVcbiAgICogLSAnaWdub3JlJzogU2lsZW50bHkgY29udGludWVcbiAgICogQGRlZmF1bHQgJ2ZhaWwnXG4gICAqL1xuICByZWFkb25seSBmYWlsdXJlQmVoYXZpb3I/OiAnZmFpbCcgfCAnd2FybicgfCAnaWdub3JlJztcblxuICAvKipcbiAgICogU2VjcmV0IHJlcXVpcmVtZW50cyBmb3IgdGhpcyBwbHVnaW4uXG4gICAqIERlY2xhcmVzIG5hbWVkIHNlY3JldHMgdGhlIHBsdWdpbiBleHBlY3RzIGF0IGJ1aWxkIHRpbWUuXG4gICAqL1xuICByZWFkb25seSBzZWNyZXRzPzogQXJyYXk8eyBuYW1lOiBzdHJpbmc7IHJlcXVpcmVkOiBib29sZWFuOyBkZXNjcmlwdGlvbj86IHN0cmluZyB9PjtcblxuICAvKipcbiAgICogRGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlIHByaW1hcnkgYnVpbGQgb3V0cHV0IGFydGlmYWN0c1xuICAgKiBAZXhhbXBsZSAnZGlzdCdcbiAgICovXG4gIHJlYWRvbmx5IHByaW1hcnlPdXRwdXREaXJlY3Rvcnk/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIG1ldGFkYXRhIHRoYXQgY2FuIGJlIGFjY2Vzc2VkIGR1cmluZyBwbHVnaW4gZXhlY3V0aW9uXG4gICAqIEtleXMgc2hvdWxkIHVzZSB0aGUgZm9ybWF0ICdhd3M6Y2RrOntuYW1lc3BhY2V9OntrZXl9JyAoYWxsIGxvd2VyY2FzZSlcbiAgICovXG4gIHJlYWRvbmx5IG1ldGFkYXRhPzogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbj47XG5cbiAgLyoqXG4gICAqIFBhdGggdG8gRG9ja2VyZmlsZSBvciBEb2NrZXJmaWxlIGNvbnRlbnRcbiAgICogVXNlZCB0byBidWlsZCB0aGUgY29udGFpbmVyIGVudmlyb25tZW50IGZvciB0aGlzIHBsdWdpblxuICAgKi9cbiAgcmVhZG9ubHkgZG9ja2VyZmlsZT86IHN0cmluZztcblxuICAvKipcbiAgICogQ29tbWFuZHMgdG8gcnVuIGR1cmluZyB0aGUgaW5zdGFsbCBwaGFzZVxuICAgKiBUeXBpY2FsbHkgdXNlZCBmb3IgaW5zdGFsbGluZyBkZXBlbmRlbmNpZXNcbiAgICogQGV4YW1wbGUgWyducG0gY2knLCAnbnBtIHJ1biBidWlsZCddXG4gICAqL1xuICByZWFkb25seSBpbnN0YWxsQ29tbWFuZHM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogQ29tbWFuZHMgdG8gcnVuIGR1cmluZyB0aGUgYnVpbGQvZXhlY3V0aW9uIHBoYXNlXG4gICAqIFRoZXNlIGFyZSB0aGUgbWFpbiBjb21tYW5kcyB0aGF0IHBlcmZvcm0gdGhlIHBsdWdpbidzIHdvcmtcbiAgICogQGV4YW1wbGUgWyducG0gdGVzdCcsICducG0gcnVuIGRlcGxveSddXG4gICAqL1xuICByZWFkb25seSBjb21tYW5kcz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBFbnZpcm9ubWVudCB2YXJpYWJsZXMgdG8gc2V0IGluIHRoZSBidWlsZCBlbnZpcm9ubWVudFxuICAgKiBAZXhhbXBsZSB7IEFQSV9VUkw6ICdodHRwczovL2FwaS5leGFtcGxlLmNvbScsIExPR19MRVZFTDogJ2luZm8nIH1cbiAgICovXG4gIHJlYWRvbmx5IGVudj86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG5cbiAgLyoqXG4gICAqIERvY2tlciBidWlsZCBhcmd1bWVudHMgcGFzc2VkIHZpYSAtLWJ1aWxkLWFyZyBhdCBpbWFnZSBidWlsZCB0aW1lLlxuICAgKiBVc2VkIHRvIHBhcmFtZXRlcml6ZSBEb2NrZXJmaWxlIEFSRyB2YWx1ZXMgd2hlbiBidWlsZGluZyB0aGUgcGx1Z2luIGltYWdlLlxuICAgKiBAZXhhbXBsZSB7IFBZVEhPTl9WRVJTSU9OOiAnMy4xMicsIE5PREVfRU5WOiAncHJvZHVjdGlvbicgfVxuICAgKi9cbiAgcmVhZG9ubHkgYnVpbGRBcmdzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbn1cblxuLyoqXG4gKiBQZXItc3RlcCBjdXN0b21pemF0aW9uIG9wdGlvbnMgZm9yIGNvbW1hbmRzIGFuZCBlbnZpcm9ubWVudCB2YXJpYWJsZXMuXG4gKiBDdXN0b20gY29tbWFuZHMgYXJlIGluamVjdGVkIGJlZm9yZS9hZnRlciB0aGUgcGx1Z2luJ3MgY29tbWFuZHMuXG4gKiBDdXN0b20gZW52IHZhcnMgYXJlIG1lcmdlZCBvbiB0b3Agb2YgdGhlIHBsdWdpbidzIGRlZmF1bHRzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFN0ZXBDdXN0b21pemF0aW9uIHtcbiAgLyoqIENvbW1hbmRzIHRvIHJ1biBiZWZvcmUgdGhlIHBsdWdpbidzIGluc3RhbGwgY29tbWFuZHMgKi9cbiAgcmVhZG9ubHkgcHJlSW5zdGFsbENvbW1hbmRzPzogc3RyaW5nW107XG5cbiAgLyoqIENvbW1hbmRzIHRvIHJ1biBhZnRlciB0aGUgcGx1Z2luJ3MgaW5zdGFsbCBjb21tYW5kcyAqL1xuICByZWFkb25seSBwb3N0SW5zdGFsbENvbW1hbmRzPzogc3RyaW5nW107XG5cbiAgLyoqIENvbW1hbmRzIHRvIHJ1biBiZWZvcmUgdGhlIHBsdWdpbidzIGJ1aWxkIGNvbW1hbmRzICovXG4gIHJlYWRvbmx5IHByZUNvbW1hbmRzPzogc3RyaW5nW107XG5cbiAgLyoqIENvbW1hbmRzIHRvIHJ1biBhZnRlciB0aGUgcGx1Z2luJ3MgYnVpbGQgY29tbWFuZHMgKi9cbiAgcmVhZG9ubHkgcG9zdENvbW1hbmRzPzogc3RyaW5nW107XG5cbiAgLyoqIEN1c3RvbSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgbWVyZ2VkIG9uIHRvcCBvZiB0aGUgcGx1Z2luJ3MgZW52ICovXG4gIHJlYWRvbmx5IGVudj86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG59XG5cbi8qKlxuICogQW4gYWRkaXRpb25hbCBpbnB1dCBhcnRpZmFjdCB3aXRoIGFuIG9wdGlvbmFsIG1vdW50IGRpcmVjdG9yeS5cbiAqIFdoZW4gZGlyZWN0b3J5IGlzIG9taXR0ZWQsIGRlZmF1bHRzIHRvIHRoZSBhcnRpZmFjdCdzIG91dHB1dERpcmVjdG9yeS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBZGRpdGlvbmFsSW5wdXRBcnRpZmFjdENvbmZpZyB7XG4gIC8qKiBBcnRpZmFjdCBrZXkgaWRlbnRpZnlpbmcgdGhlIHNvdXJjZSBzdGVwJ3Mgb3V0cHV0ICovXG4gIHJlYWRvbmx5IGFydGlmYWN0OiBBcnRpZmFjdEtleTtcblxuICAvKiogRGlyZWN0b3J5IHRvIG1vdW50IHRoZSBpbnB1dCBhdC4gRGVmYXVsdHMgdG8gYXJ0aWZhY3Qub3V0cHV0RGlyZWN0b3J5IHdoZW4gb21pdHRlZC4gKi9cbiAgcmVhZG9ubHkgZGlyZWN0b3J5Pzogc3RyaW5nO1xufVxuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gZm9yIGEgc2luZ2xlIHN0ZXAgd2l0aGluIGEgcGlwZWxpbmUgc3RhZ2UuXG4gKiBVc2VzIFBsdWdpbk9wdGlvbnMgZm9yIG5hbWUtYmFzZWQgcGx1Z2luIHNlbGVjdGlvbiAocmVzb2x2ZWQgYXQgYnVpbGQgdGltZSkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3RhZ2VTdGVwT3B0aW9ucyBleHRlbmRzIFN0ZXBDdXN0b21pemF0aW9uIHtcbiAgLyoqIFBsdWdpbiB0byB1c2UgZm9yIHRoaXMgc3RlcCAqL1xuICByZWFkb25seSBwbHVnaW46IFBsdWdpbk9wdGlvbnM7XG5cbiAgLyoqIFN0ZXAtbGV2ZWwgbWV0YWRhdGEgbWVyZ2VkIHdpdGggc3RhZ2UgYW5kIGdsb2JhbCBtZXRhZGF0YSAqL1xuICByZWFkb25seSBtZXRhZGF0YT86IE1ldGFEYXRhVHlwZTtcblxuICAvKiogT3B0aW9uYWwgbmV0d29yayBjb25maWd1cmF0aW9uIGZvciB0aGlzIHN0ZXAncyBDb2RlQnVpbGQgYWN0aW9uICovXG4gIHJlYWRvbmx5IG5ldHdvcms/OiBOZXR3b3JrQ29uZmlnO1xuXG4gIC8qKlxuICAgKiBDb2RlQnVpbGQgdGltZW91dCBpbiBtaW51dGVzLlxuICAgKiBAZGVmYXVsdCA2MCAoQVdTIENvZGVCdWlsZCBkZWZhdWx0KVxuICAgKi9cbiAgcmVhZG9ubHkgdGltZW91dD86IG51bWJlcjtcblxuICAvKipcbiAgICogUG9zaXRpb24gb2YgdGhpcyBzdGVwIHdpdGhpbiB0aGUgcGlwZWxpbmUgd2F2ZS5cbiAgICogLSAncHJlJzogUnVucyBiZWZvcmUgdGhlIHN0YWdlIGRlcGxveW1lbnQgKGRlZmF1bHQpXG4gICAqIC0gJ3Bvc3QnOiBSdW5zIGFmdGVyIHRoZSBzdGFnZSBkZXBsb3ltZW50XG4gICAqIEBkZWZhdWx0ICdwcmUnXG4gICAqL1xuICByZWFkb25seSBwb3NpdGlvbj86ICdwcmUnIHwgJ3Bvc3QnO1xuXG4gIC8qKiBBcnRpZmFjdCBrZXkgZm9yIHRoaXMgc3RlcCdzIHByaW1hcnkgaW5wdXQgKHJlc29sdmVkIHZpYSBBcnRpZmFjdE1hbmFnZXIpICovXG4gIHJlYWRvbmx5IGlucHV0QXJ0aWZhY3Q/OiBBcnRpZmFjdEtleTtcblxuICAvKiogQWRkaXRpb25hbCBpbnB1dCBhcnRpZmFjdHMgZm9yIHRoaXMgc3RlcC4gRWFjaCBlbnRyeSBzcGVjaWZpZXMgYW4gYXJ0aWZhY3QgYW5kIGFuIG9wdGlvbmFsIG1vdW50IGRpcmVjdG9yeS4gKi9cbiAgcmVhZG9ubHkgYWRkaXRpb25hbElucHV0QXJ0aWZhY3RzPzogQWRkaXRpb25hbElucHV0QXJ0aWZhY3RDb25maWdbXTtcblxuICAvKiogT3ZlcnJpZGUgdGhlIHBsdWdpbidzIGZhaWx1cmUgYmVoYXZpb3IgZm9yIHRoaXMgc3RlcC4gKi9cbiAgcmVhZG9ubHkgZmFpbHVyZUJlaGF2aW9yPzogJ2ZhaWwnIHwgJ3dhcm4nIHwgJ2lnbm9yZSc7XG59XG5cbi8qKlxuICogQSBwaXBlbGluZSBzdGFnZSBjb250YWluaW5nIG9uZSBvciBtb3JlIGJ1aWxkIHN0ZXBzLlxuICogRWFjaCBzdGFnZSBtYXBzIHRvIGEgQ0RLIFBpcGVsaW5lIHdhdmUsIHdpdGggc3RlcHMgZXhlY3V0aW5nIHdpdGhpbiB0aGUgd2F2ZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTdGFnZU9wdGlvbnMge1xuICAvKiogRGlzcGxheSBuYW1lIGZvciB0aGlzIHN0YWdlICovXG4gIHJlYWRvbmx5IHN0YWdlTmFtZTogc3RyaW5nO1xuXG4gIC8qKiBPcHRpb25hbCBhbGlhcyB1c2VkIGZvciB3YXZlL2NvbnN0cnVjdCBJRCBnZW5lcmF0aW9uLiBEZWZhdWx0cyB0byBzdGFnZU5hbWUuICovXG4gIHJlYWRvbmx5IGFsaWFzPzogc3RyaW5nO1xuXG4gIC8qKiBCdWlsZCBzdGVwcyB0byBleGVjdXRlIHdpdGhpbiB0aGlzIHN0YWdlICovXG4gIHJlYWRvbmx5IHN0ZXBzOiBTdGFnZVN0ZXBPcHRpb25zW107XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgY3JlYXRpbmcgYSBDb2RlQnVpbGQgc3RlcCBpbiB0aGUgcGlwZWxpbmVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb2RlQnVpbGRTdGVwT3B0aW9ucyBleHRlbmRzIFN0ZXBDdXN0b21pemF0aW9uIHtcbiAgLyoqXG4gICAqIFVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGlzIENvZGVCdWlsZCBzdGVwXG4gICAqIFNob3VsZCBiZSBkZXNjcmlwdGl2ZSBhbmQgdW5pcXVlIHdpdGhpbiB0aGUgcGlwZWxpbmVcbiAgICogQGV4YW1wbGUgJ215LW9yZy1teS1wcm9qZWN0LXN5bnRoJ1xuICAgKi9cbiAgcmVhZG9ubHkgaWQ6IHN0cmluZztcblxuICAvKipcbiAgICogVW5pcXVlSWQgaW5zdGFuY2UgZm9yIGdlbmVyYXRpbmcgdW5pcXVlIGNvbnN0cnVjdCBJRHNcbiAgICogVXNlZCBmb3IgbmV0d29yayByZXNvdXJjZSBsb29rdXBzIChWUEMsIHN1Ym5ldHMsIHNlY3VyaXR5IGdyb3VwcylcbiAgICovXG4gIHJlYWRvbmx5IHVuaXF1ZUlkOiBVbmlxdWVJZDtcblxuICAvKipcbiAgICogUGx1Z2luIGNvbmZpZ3VyYXRpb24gZnJvbSB0aGUgZGF0YWJhc2VcbiAgICogQ29udGFpbnMgYWxsIHRoZSBwbHVnaW4ncyBzcGVjIGRhdGEgYW5kIHJ1bnRpbWUgaW5mb3JtYXRpb25cbiAgICovXG4gIHJlYWRvbmx5IHBsdWdpbjogUGx1Z2luO1xuXG4gIC8qKlxuICAgKiBDREsgc2NvcGUgdXNlZCB0byBjcmVhdGUgY29uc3RydWN0cyAoVlBDL3N1Ym5ldC9zZWN1cml0eS1ncm91cCBsb29rdXBzKS5cbiAgICovXG4gIHJlYWRvbmx5IHNjb3BlOiBDb25zdHJ1Y3Q7XG5cbiAgLyoqXG4gICAqIElucHV0IHNvdXJjZSBmb3IgdGhpcyBzdGVwXG4gICAqIFR5cGljYWxseSB0aGUgb3V0cHV0IGZyb20gYSBwcmV2aW91cyBzdGVwIG9yIHRoZSBwaXBlbGluZSBzb3VyY2VcbiAgICovXG4gIHJlYWRvbmx5IGlucHV0PzogSUZpbGVTZXRQcm9kdWNlcjtcblxuICAvKipcbiAgICogQWRkaXRpb25hbCBtZXRhZGF0YSB0byBtZXJnZSB3aXRoIHBsdWdpbiBtZXRhZGF0YVxuICAgKiBXaWxsIG92ZXJyaWRlIGNvbmZsaWN0aW5nIGtleXMgZnJvbSBwbHVnaW4gbWV0YWRhdGFcbiAgICovXG4gIHJlYWRvbmx5IG1ldGFkYXRhPzogTWV0YURhdGFUeXBlO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBuZXR3b3JrIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBDb2RlQnVpbGQgc3RlcC5cbiAgICogV2hlbiBwcm92aWRlZCwgcmVzb2x2ZXMgVlBDLCBzdWJuZXQgc2VsZWN0aW9uLCBhbmQgc2VjdXJpdHkgZ3JvdXBzXG4gICAqIHNvIHRoZSBidWlsZCBydW5zIGluc2lkZSB0aGUgc3BlY2lmaWVkIG5ldHdvcmsuXG4gICAqL1xuICByZWFkb25seSBuZXR3b3JrPzogTmV0d29ya0NvbmZpZztcblxuICAvKipcbiAgICogRmFsbGJhY2sgQ29kZUJ1aWxkIGNvbXB1dGUgdHlwZSB3aGVuIHRoZSBwbHVnaW4gZG9lc24ndCBzcGVjaWZ5IG9uZS5cbiAgICogQGRlZmF1bHQgQ29tcHV0ZVR5cGUuU01BTExcbiAgICovXG4gIHJlYWRvbmx5IGRlZmF1bHRDb21wdXRlVHlwZT86IENka0NvbXB1dGVUeXBlO1xuXG4gIC8qKlxuICAgKiBDb2RlQnVpbGQgdGltZW91dCBpbiBtaW51dGVzLlxuICAgKiBAZGVmYXVsdCA2MCAoQVdTIENvZGVCdWlsZCBkZWZhdWx0KVxuICAgKi9cbiAgcmVhZG9ubHkgdGltZW91dD86IG51bWJlcjtcblxuICAvKiogQWRkaXRpb25hbCBpbnB1dHMgbWFwcGVkIGJ5IGRpcmVjdG9yeSBwYXRoIChyZXNvbHZlZCBGaWxlU2V0cykgKi9cbiAgcmVhZG9ubHkgYWRkaXRpb25hbElucHV0cz86IFJlY29yZDxzdHJpbmcsIElGaWxlU2V0UHJvZHVjZXI+O1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBhcnRpZmFjdCBtYW5hZ2VyIGZvciB0cmFja2luZyBidWlsZCBvdXRwdXRzXG4gICAqIFdoZW4gcHJvdmlkZWQgYW5kIHByaW1hcnlPdXRwdXREaXJlY3RvcnkgaXMgc2V0LCB0aGUgc3RlcCB3aWxsIGJlIHJlZ2lzdGVyZWRcbiAgICovXG4gIHJlYWRvbmx5IGFydGlmYWN0TWFuYWdlcj86IEFydGlmYWN0TWFuYWdlcjtcblxuICAvKipcbiAgICogU3RhZ2UgbmFtZSBmb3IgYXJ0aWZhY3Qga2V5IGdlbmVyYXRpb25cbiAgICovXG4gIHJlYWRvbmx5IHN0YWdlTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogU3RhZ2UgYWxpYXMgZm9yIGFydGlmYWN0IGtleSBnZW5lcmF0aW9uXG4gICAqL1xuICByZWFkb25seSBzdGFnZUFsaWFzPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBQbHVnaW4gYWxpYXMgZm9yIGFydGlmYWN0IGtleSBnZW5lcmF0aW9uXG4gICAqL1xuICByZWFkb25seSBwbHVnaW5BbGlhcz86IHN0cmluZztcblxuICAvKipcbiAgICogRmFpbHVyZSBiZWhhdmlvciBmb3IgdGhpcyBzdGVwJ3MgYnVpbGQgY29tbWFuZHMuXG4gICAqIEFwcGxpZWQgYXQgc2hlbGwgbGV2ZWw6ICdmYWlsJyA9IGRlZmF1bHQsICd3YXJuJyA9IGxvZyArIGNvbnRpbnVlLCAnaWdub3JlJyA9IHx8IHRydWUuXG4gICAqL1xuICByZWFkb25seSBmYWlsdXJlQmVoYXZpb3I/OiAnZmFpbCcgfCAnd2FybicgfCAnaWdub3JlJztcblxuICAvKiogVGVuYW50IGlkZW50aWZpZXIgZm9yIHJlc29sdmluZyBwZXItb3JnIHNlY3JldHMgZnJvbSBBV1MgU2VjcmV0cyBNYW5hZ2VyICovXG4gIHJlYWRvbmx5IG9yZ0lkPzogc3RyaW5nO1xufVxuIl19
|
package/package.json
ADDED
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@pipeline-builder/pipeline-core",
|
|
3
|
+
"description": "AWS CDK construct library for Pipeline Builder: the Builder construct that assembles plugin specs into a CodePipeline stack, PluginLookup custom resource, pipeline/plugin domain types, and shared configuration.",
|
|
4
|
+
"repository": {
|
|
5
|
+
"type": "git",
|
|
6
|
+
"url": "git+https://github.com/mwashburn160/pipeline-builder.git"
|
|
7
|
+
},
|
|
8
|
+
"devDependencies": {
|
|
9
|
+
"@aws-sdk/client-secrets-manager": "3.997.0",
|
|
10
|
+
"@jest/globals": "30.2.0",
|
|
11
|
+
"@stylistic/eslint-plugin": "^2",
|
|
12
|
+
"@types/aws-lambda": "8.10.160",
|
|
13
|
+
"@types/jest": "^30.0.0",
|
|
14
|
+
"@types/jsonwebtoken": "9.0.10",
|
|
15
|
+
"@types/node": "25.3.0",
|
|
16
|
+
"@typescript-eslint/eslint-plugin": "^8",
|
|
17
|
+
"@typescript-eslint/parser": "^8",
|
|
18
|
+
"copyfiles": "2.4.1",
|
|
19
|
+
"eslint": "^9",
|
|
20
|
+
"eslint-import-resolver-typescript": "^4.4.4",
|
|
21
|
+
"eslint-plugin-import": "^2.32.0",
|
|
22
|
+
"jest": "^30.2.0",
|
|
23
|
+
"jest-junit": "^16",
|
|
24
|
+
"ts-jest": "^29.4.6",
|
|
25
|
+
"typescript": "5.9.3"
|
|
26
|
+
},
|
|
27
|
+
"dependencies": {
|
|
28
|
+
"@pipeline-builder/api-core": "3.1.0",
|
|
29
|
+
"aws-cdk-lib": "2.240.0",
|
|
30
|
+
"axios": "1.13.5",
|
|
31
|
+
"constructs": "10.5.1",
|
|
32
|
+
"jsonwebtoken": "9.0.3",
|
|
33
|
+
"uuid": "13.0.0",
|
|
34
|
+
"@pipeline-builder/pipeline-data": "3.1.1"
|
|
35
|
+
},
|
|
36
|
+
"keywords": [
|
|
37
|
+
"aws",
|
|
38
|
+
"codepipeline",
|
|
39
|
+
"codebuild",
|
|
40
|
+
"cicd",
|
|
41
|
+
"ci-cd",
|
|
42
|
+
"devops",
|
|
43
|
+
"cdk",
|
|
44
|
+
"aws-cdk",
|
|
45
|
+
"cloudformation",
|
|
46
|
+
"pipeline",
|
|
47
|
+
"pipeline-as-code",
|
|
48
|
+
"containerized",
|
|
49
|
+
"docker",
|
|
50
|
+
"kubernetes",
|
|
51
|
+
"plugins",
|
|
52
|
+
"typescript",
|
|
53
|
+
"self-service",
|
|
54
|
+
"multi-tenant",
|
|
55
|
+
"compliance",
|
|
56
|
+
"automation",
|
|
57
|
+
"infrastructure-as-code",
|
|
58
|
+
"iac",
|
|
59
|
+
"cli"
|
|
60
|
+
],
|
|
61
|
+
"engines": {
|
|
62
|
+
"node": ">= 24.14.0"
|
|
63
|
+
},
|
|
64
|
+
"main": "lib/index.js",
|
|
65
|
+
"license": "Apache-2.0",
|
|
66
|
+
"homepage": "https://mwashburn160.github.io/pipeline-builder/",
|
|
67
|
+
"publishConfig": {
|
|
68
|
+
"access": "public",
|
|
69
|
+
"registry": "https://registry.npmjs.org/"
|
|
70
|
+
},
|
|
71
|
+
"version": "3.1.1",
|
|
72
|
+
"bugs": {
|
|
73
|
+
"url": "https://github.com/mwashburn160/pipeline-builder/issues"
|
|
74
|
+
},
|
|
75
|
+
"jest": {
|
|
76
|
+
"coverageProvider": "v8",
|
|
77
|
+
"testMatch": [
|
|
78
|
+
"<rootDir>/@(src|test)/**/*(*.)@(spec|test).ts?(x)",
|
|
79
|
+
"<rootDir>/@(src|test)/**/__tests__/**/*.ts?(x)"
|
|
80
|
+
],
|
|
81
|
+
"clearMocks": true,
|
|
82
|
+
"collectCoverage": true,
|
|
83
|
+
"coverageReporters": [
|
|
84
|
+
"json",
|
|
85
|
+
"lcov",
|
|
86
|
+
"clover",
|
|
87
|
+
"cobertura",
|
|
88
|
+
"text"
|
|
89
|
+
],
|
|
90
|
+
"coverageDirectory": "coverage",
|
|
91
|
+
"coveragePathIgnorePatterns": [
|
|
92
|
+
"/node_modules/"
|
|
93
|
+
],
|
|
94
|
+
"testPathIgnorePatterns": [
|
|
95
|
+
"/node_modules/"
|
|
96
|
+
],
|
|
97
|
+
"watchPathIgnorePatterns": [
|
|
98
|
+
"/node_modules/"
|
|
99
|
+
],
|
|
100
|
+
"reporters": [
|
|
101
|
+
"default",
|
|
102
|
+
[
|
|
103
|
+
"jest-junit",
|
|
104
|
+
{
|
|
105
|
+
"outputDirectory": "test-reports"
|
|
106
|
+
}
|
|
107
|
+
]
|
|
108
|
+
],
|
|
109
|
+
"transform": {
|
|
110
|
+
"^.+\\.[t]sx?$": [
|
|
111
|
+
"ts-jest",
|
|
112
|
+
{
|
|
113
|
+
"tsconfig": "tsconfig.dev.json"
|
|
114
|
+
}
|
|
115
|
+
]
|
|
116
|
+
},
|
|
117
|
+
"moduleNameMapper": {
|
|
118
|
+
"^uuid$": "<rootDir>/../../jest-uuid-stub.js"
|
|
119
|
+
},
|
|
120
|
+
"maxWorkers": 1
|
|
121
|
+
},
|
|
122
|
+
"types": "lib/index.d.ts",
|
|
123
|
+
"//": "~~ Generated by projen. To modify, edit .projenrc.js and run \"pnpm dlx projen\".",
|
|
124
|
+
"scripts": {
|
|
125
|
+
"build": "pnpm dlx projen build",
|
|
126
|
+
"compile": "pnpm dlx projen compile",
|
|
127
|
+
"default": "pnpm dlx projen default",
|
|
128
|
+
"eslint": "pnpm dlx projen eslint",
|
|
129
|
+
"package": "pnpm dlx projen package",
|
|
130
|
+
"post-compile": "pnpm dlx projen post-compile",
|
|
131
|
+
"pre-compile": "pnpm dlx projen pre-compile",
|
|
132
|
+
"test": "pnpm dlx projen test",
|
|
133
|
+
"test:watch": "pnpm dlx projen test:watch",
|
|
134
|
+
"watch": "pnpm dlx projen watch",
|
|
135
|
+
"projen": "pnpm dlx projen"
|
|
136
|
+
}
|
|
137
|
+
}
|