@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.
Files changed (54) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +32 -0
  3. package/lib/config/app-config.d.ts +81 -0
  4. package/lib/config/app-config.js +151 -0
  5. package/lib/config/billing-config.d.ts +17 -0
  6. package/lib/config/billing-config.js +95 -0
  7. package/lib/config/config-types.d.ts +213 -0
  8. package/lib/config/config-types.js +5 -0
  9. package/lib/config/infrastructure-config.d.ts +55 -0
  10. package/lib/config/infrastructure-config.js +200 -0
  11. package/lib/config/server-config.d.ts +53 -0
  12. package/lib/config/server-config.js +180 -0
  13. package/lib/core/artifact-manager.d.ts +62 -0
  14. package/lib/core/artifact-manager.js +86 -0
  15. package/lib/core/id-generator.d.ts +26 -0
  16. package/lib/core/id-generator.js +44 -0
  17. package/lib/core/metadata-builder.d.ts +13 -0
  18. package/lib/core/metadata-builder.js +81 -0
  19. package/lib/core/network-types.d.ts +200 -0
  20. package/lib/core/network-types.js +5 -0
  21. package/lib/core/network.d.ts +20 -0
  22. package/lib/core/network.js +84 -0
  23. package/lib/core/pipeline-helpers.d.ts +53 -0
  24. package/lib/core/pipeline-helpers.js +273 -0
  25. package/lib/core/pipeline-types.d.ts +136 -0
  26. package/lib/core/pipeline-types.js +140 -0
  27. package/lib/core/role-types.d.ts +254 -0
  28. package/lib/core/role-types.js +5 -0
  29. package/lib/core/role.d.ts +14 -0
  30. package/lib/core/role.js +118 -0
  31. package/lib/core/security-group-types.d.ts +84 -0
  32. package/lib/core/security-group-types.js +5 -0
  33. package/lib/core/security-group.d.ts +14 -0
  34. package/lib/core/security-group.js +34 -0
  35. package/lib/handlers/plugin-lookup-handler.d.ts +32 -0
  36. package/lib/handlers/plugin-lookup-handler.js +313 -0
  37. package/lib/handlers/pnpm-lock.yaml +12 -0
  38. package/lib/index.d.ts +54 -0
  39. package/lib/index.js +112 -0
  40. package/lib/pipeline/pipeline-builder.d.ts +82 -0
  41. package/lib/pipeline/pipeline-builder.js +292 -0
  42. package/lib/pipeline/pipeline-configuration.d.ts +72 -0
  43. package/lib/pipeline/pipeline-configuration.js +196 -0
  44. package/lib/pipeline/plugin-lookup.d.ts +100 -0
  45. package/lib/pipeline/plugin-lookup.js +247 -0
  46. package/lib/pipeline/source-builder.d.ts +47 -0
  47. package/lib/pipeline/source-builder.js +111 -0
  48. package/lib/pipeline/source-types.d.ts +191 -0
  49. package/lib/pipeline/source-types.js +5 -0
  50. package/lib/pipeline/stage-builder.d.ts +71 -0
  51. package/lib/pipeline/stage-builder.js +118 -0
  52. package/lib/pipeline/step-types.d.ts +307 -0
  53. package/lib/pipeline/step-types.js +5 -0
  54. 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
+ }