@pipeline-builder/pipeline-core 0.0.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 (84) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +69 -0
  3. package/lib/cdk.d.ts +38 -0
  4. package/lib/cdk.js +44 -0
  5. package/lib/config/app-config.d.ts +109 -0
  6. package/lib/config/app-config.js +197 -0
  7. package/lib/config/aws-config-cdk.d.ts +49 -0
  8. package/lib/config/aws-config-cdk.js +65 -0
  9. package/lib/config/billing-config.d.ts +24 -0
  10. package/lib/config/billing-config.js +497 -0
  11. package/lib/config/config-types.d.ts +346 -0
  12. package/lib/config/config-types.js +4 -0
  13. package/lib/config/entitlements.d.ts +23 -0
  14. package/lib/config/entitlements.js +46 -0
  15. package/lib/config/handler-constants.d.ts +10 -0
  16. package/lib/config/handler-constants.js +39 -0
  17. package/lib/config/infrastructure-config.d.ts +66 -0
  18. package/lib/config/infrastructure-config.js +197 -0
  19. package/lib/config/server-config.d.ts +53 -0
  20. package/lib/config/server-config.js +175 -0
  21. package/lib/config/service-client.d.ts +13 -0
  22. package/lib/config/service-client.js +20 -0
  23. package/lib/core/artifact-manager.d.ts +62 -0
  24. package/lib/core/artifact-manager.js +83 -0
  25. package/lib/core/id-generator.d.ts +50 -0
  26. package/lib/core/id-generator.js +50 -0
  27. package/lib/core/metadata-builder.d.ts +48 -0
  28. package/lib/core/metadata-builder.js +278 -0
  29. package/lib/core/metadata-helpers.d.ts +31 -0
  30. package/lib/core/metadata-helpers.js +55 -0
  31. package/lib/core/network-types.d.ts +200 -0
  32. package/lib/core/network-types.js +4 -0
  33. package/lib/core/network.d.ts +33 -0
  34. package/lib/core/network.js +112 -0
  35. package/lib/core/pipeline-helpers.d.ts +61 -0
  36. package/lib/core/pipeline-helpers.js +563 -0
  37. package/lib/core/pipeline-types.d.ts +118 -0
  38. package/lib/core/pipeline-types.js +131 -0
  39. package/lib/core/role-types.d.ts +254 -0
  40. package/lib/core/role-types.js +4 -0
  41. package/lib/core/role.d.ts +14 -0
  42. package/lib/core/role.js +117 -0
  43. package/lib/core/security-group-types.d.ts +84 -0
  44. package/lib/core/security-group-types.js +4 -0
  45. package/lib/core/security-group.d.ts +14 -0
  46. package/lib/core/security-group.js +33 -0
  47. package/lib/handlers/plugin-lookup-handler.d.ts +32 -0
  48. package/lib/handlers/plugin-lookup-handler.js +292 -0
  49. package/lib/handlers/pnpm-lock.yaml +12 -0
  50. package/lib/index.d.ts +45 -0
  51. package/lib/index.js +53 -0
  52. package/lib/pipeline/pipeline-builder.d.ts +123 -0
  53. package/lib/pipeline/pipeline-builder.js +476 -0
  54. package/lib/pipeline/pipeline-configuration.d.ts +81 -0
  55. package/lib/pipeline/pipeline-configuration.js +214 -0
  56. package/lib/pipeline/plugin-lookup.d.ts +131 -0
  57. package/lib/pipeline/plugin-lookup.js +316 -0
  58. package/lib/pipeline/plugin-spec.d.ts +138 -0
  59. package/lib/pipeline/plugin-spec.js +4 -0
  60. package/lib/pipeline/source-builder.d.ts +62 -0
  61. package/lib/pipeline/source-builder.js +164 -0
  62. package/lib/pipeline/source-types.d.ts +221 -0
  63. package/lib/pipeline/source-types.js +4 -0
  64. package/lib/pipeline/stage-builder.d.ts +78 -0
  65. package/lib/pipeline/stage-builder.js +129 -0
  66. package/lib/pipeline/step-types.d.ts +222 -0
  67. package/lib/pipeline/step-types.js +4 -0
  68. package/lib/template/evaluator.d.ts +42 -0
  69. package/lib/template/evaluator.js +164 -0
  70. package/lib/template/index.d.ts +34 -0
  71. package/lib/template/index.js +118 -0
  72. package/lib/template/metrics.d.ts +10 -0
  73. package/lib/template/metrics.js +43 -0
  74. package/lib/template/plugin-resolver.d.ts +8 -0
  75. package/lib/template/plugin-resolver.js +48 -0
  76. package/lib/template/tokenizer.d.ts +49 -0
  77. package/lib/template/tokenizer.js +233 -0
  78. package/lib/template/topo-sort.d.ts +17 -0
  79. package/lib/template/topo-sort.js +88 -0
  80. package/lib/template/validate.d.ts +45 -0
  81. package/lib/template/validate.js +96 -0
  82. package/lib/template/walker.d.ts +34 -0
  83. package/lib/template/walker.js +83 -0
  84. package/package.json +184 -0
@@ -0,0 +1,118 @@
1
+ export { ComputeType, PluginType, type MetaDataType, type Visibility } from '@pipeline-builder/api-core';
2
+ /**
3
+ * Pipeline trigger behavior.
4
+ *
5
+ * @property NONE - Manual trigger only, pipeline does not start automatically
6
+ * @property AUTO - Automatic trigger on source changes (S3/GitHub: polling, CodeStar: push-based webhook)
7
+ */
8
+ export declare const TriggerType: {
9
+ readonly NONE: 'NONE';
10
+ /** Automatic trigger on source changes. Uses polling for S3/GitHub, push-based webhook for CodeStar. */
11
+ readonly AUTO: 'AUTO';
12
+ /** Scheduled trigger via EventBridge rule. Requires a cron expression in the source options. */
13
+ readonly SCHEDULE: 'SCHEDULE';
14
+ };
15
+ export type TriggerType = (typeof TriggerType)[keyof typeof TriggerType];
16
+ /**
17
+ * Constants for metadata keys to avoid string typos.
18
+ *
19
+ * Key format: `aws:cdk:{namespace}:{property}` (all lowercase).
20
+ * These match the keys produced by `getCustomKey(namespace, property)`
21
+ * and looked up by `buildConfigFromMetadata`.
22
+ *
23
+ * @example
24
+ * ```typescript
25
+ * const metadata = {
26
+ * [MetadataKeys.SELF_MUTATION]: true,
27
+ * [MetadataKeys.PUBLISH_ASSETS_IN_PARALLEL]: true
28
+ * };
29
+ * ```
30
+ */
31
+ export declare const MetadataKeys: {
32
+ readonly SELF_MUTATION: 'aws:cdk:pipelines:codepipeline:selfmutation';
33
+ readonly CROSS_ACCOUNT_KEYS: 'aws:cdk:pipelines:codepipeline:crossaccountkeys';
34
+ readonly DOCKER_ENABLED_FOR_SELF_MUTATION: 'aws:cdk:pipelines:codepipeline:dockerenabledforselfmutation';
35
+ readonly DOCKER_ENABLED_FOR_SYNTH: 'aws:cdk:pipelines:codepipeline:dockerenabledforsynth';
36
+ readonly ENABLE_KEY_ROTATION: 'aws:cdk:pipelines:codepipeline:enablekeyrotation';
37
+ readonly PUBLISH_ASSETS_IN_PARALLEL: 'aws:cdk:pipelines:codepipeline:publishassetsinparallel';
38
+ readonly REUSE_CROSS_REGION_SUPPORT_STACKS: 'aws:cdk:pipelines:codepipeline:reusecrossregionsupportstacks';
39
+ readonly USE_CHANGE_SETS: 'aws:cdk:pipelines:codepipeline:usechangesets';
40
+ readonly USE_PIPELINE_ROLE_FOR_ACTIONS: 'aws:cdk:pipelines:codepipeline:usepipelineroleforactions';
41
+ readonly ARTIFACT_BUCKET: 'aws:cdk:pipelines:codepipeline:artifactbucket';
42
+ readonly ASSET_PUBLISHING_CODE_BUILD_DEFAULTS: 'aws:cdk:pipelines:codepipeline:assetpublishingcodebuilddefaults';
43
+ readonly CDK_ASSETS_CLI_VERSION: 'aws:cdk:pipelines:codepipeline:cdkassetscliversion';
44
+ readonly CLI_VERSION: 'aws:cdk:pipelines:codepipeline:cliversion';
45
+ readonly CODE_BUILD_DEFAULTS: 'aws:cdk:pipelines:codepipeline:codebuilddefaults';
46
+ readonly CODE_PIPELINE: 'aws:cdk:pipelines:codepipeline:codepipeline';
47
+ readonly CROSS_REGION_REPLICATION_BUCKETS: 'aws:cdk:pipelines:codepipeline:crossregionreplicationbuckets';
48
+ readonly DOCKER_CREDENTIALS: 'aws:cdk:pipelines:codepipeline:dockercredentials';
49
+ readonly PIPELINE_NAME: 'aws:cdk:pipelines:codepipeline:pipelinename';
50
+ readonly PIPELINE_TYPE: 'aws:cdk:pipelines:codepipeline:pipelinetype';
51
+ readonly PIPELINE_ROLE: 'aws:cdk:pipelines:codepipeline:role';
52
+ readonly SELF_MUTATION_CODE_BUILD_DEFAULTS: 'aws:cdk:pipelines:codepipeline:selfmutationcodebuilddefaults';
53
+ readonly SYNTH: 'aws:cdk:pipelines:codepipeline:synth';
54
+ readonly SYNTH_CODE_BUILD_DEFAULTS: 'aws:cdk:pipelines:codepipeline:synthcodebuilddefaults';
55
+ readonly ACTION_ROLE: 'aws:cdk:pipelines:codebuildstep:actionrole';
56
+ readonly ADDITIONAL_INPUTS: 'aws:cdk:pipelines:codebuildstep:additionalinputs';
57
+ readonly BUILD_ENVIRONMENT: 'aws:cdk:pipelines:codebuildstep:buildenvironment';
58
+ readonly CACHE: 'aws:cdk:pipelines:codebuildstep:cache';
59
+ readonly COMMANDS: 'aws:cdk:pipelines:codebuildstep:commands';
60
+ readonly CODE_BUILD_ENV: 'aws:cdk:pipelines:codebuildstep:env';
61
+ readonly ENV_FROM_CFN_OUTPUTS: 'aws:cdk:pipelines:codebuildstep:envfromcfnoutputs';
62
+ readonly FILE_SYSTEM_LOCATIONS: 'aws:cdk:pipelines:codebuildstep:filesystemlocations';
63
+ readonly INPUT: 'aws:cdk:pipelines:codebuildstep:input';
64
+ readonly INSTALL_COMMANDS: 'aws:cdk:pipelines:codebuildstep:installcommands';
65
+ readonly LOGGING: 'aws:cdk:pipelines:codebuildstep:logging';
66
+ readonly PARTIAL_BUILD_SPEC: 'aws:cdk:pipelines:codebuildstep:partialbuildspec';
67
+ readonly PRIMARY_OUTPUT_DIRECTORY: 'aws:cdk:pipelines:codebuildstep:primaryoutputdirectory';
68
+ readonly PROJECT_NAME: 'aws:cdk:pipelines:codebuildstep:projectname';
69
+ readonly STEP_ROLE: 'aws:cdk:pipelines:codebuildstep:role';
70
+ readonly ROLE_POLICY_STATEMENTS: 'aws:cdk:pipelines:codebuildstep:rolepolicystatements';
71
+ readonly TIMEOUT: 'aws:cdk:pipelines:codebuildstep:timeout';
72
+ readonly SHELL_ADDITIONAL_INPUTS: 'aws:cdk:pipelines:shellstep:additionalinputs';
73
+ readonly SHELL_COMMANDS: 'aws:cdk:pipelines:shellstep:commands';
74
+ readonly SHELL_ENV: 'aws:cdk:pipelines:shellstep:env';
75
+ readonly SHELL_ENV_FROM_CFN_OUTPUTS: 'aws:cdk:pipelines:shellstep:envfromcfnoutputs';
76
+ readonly SHELL_INPUT: 'aws:cdk:pipelines:shellstep:input';
77
+ readonly SHELL_INSTALL_COMMANDS: 'aws:cdk:pipelines:shellstep:installcommands';
78
+ readonly SHELL_PRIMARY_OUTPUT_DIRECTORY: 'aws:cdk:pipelines:shellstep:primaryoutputdirectory';
79
+ readonly PRIVILEGED: 'aws:cdk:codebuild:buildenvironment:privileged';
80
+ readonly BUILD_IMAGE: 'aws:cdk:codebuild:buildenvironment:buildimage';
81
+ readonly CERTIFICATE: 'aws:cdk:codebuild:buildenvironment:certificate';
82
+ readonly COMPUTE_TYPE: 'aws:cdk:codebuild:buildenvironment:computetype';
83
+ readonly DOCKER_SERVER: 'aws:cdk:codebuild:buildenvironment:dockerserver';
84
+ readonly ENVIRONMENT_VARIABLES: 'aws:cdk:codebuild:buildenvironment:environmentvariables';
85
+ readonly FLEET: 'aws:cdk:codebuild:buildenvironment:fleet';
86
+ readonly NETWORK_TYPE: 'aws:cdk:ec2:network:type';
87
+ readonly NETWORK_VPC_ID: 'aws:cdk:ec2:network:vpcid';
88
+ readonly NETWORK_SUBNET_IDS: 'aws:cdk:ec2:network:subnetids';
89
+ readonly NETWORK_SUBNET_TYPE: 'aws:cdk:ec2:network:subnettype';
90
+ readonly NETWORK_AVAILABILITY_ZONES: 'aws:cdk:ec2:network:availabilityzones';
91
+ readonly NETWORK_SUBNET_GROUP_NAME: 'aws:cdk:ec2:network:subnetgroupname';
92
+ readonly NETWORK_SECURITY_GROUP_IDS: 'aws:cdk:ec2:network:securitygroupids';
93
+ readonly NETWORK_TAGS: 'aws:cdk:ec2:network:tags';
94
+ readonly NETWORK_VPC_NAME: 'aws:cdk:ec2:network:vpcname';
95
+ readonly NETWORK_REGION: 'aws:cdk:ec2:network:region';
96
+ readonly ROLE_TYPE: 'aws:cdk:iam:role:type';
97
+ readonly ROLE_ARN: 'aws:cdk:iam:role:rolearn';
98
+ readonly ROLE_NAME: 'aws:cdk:iam:role:rolename';
99
+ readonly ROLE_MUTABLE: 'aws:cdk:iam:role:mutable';
100
+ readonly SECURITY_GROUP_TYPE: 'aws:cdk:ec2:securitygroup:type';
101
+ readonly SECURITY_GROUP_IDS: 'aws:cdk:ec2:securitygroup:securitygroupids';
102
+ readonly SECURITY_GROUP_MUTABLE: 'aws:cdk:ec2:securitygroup:mutable';
103
+ readonly SECURITY_GROUP_NAME: 'aws:cdk:ec2:securitygroup:securitygroupname';
104
+ readonly SECURITY_GROUP_VPC_ID: 'aws:cdk:ec2:securitygroup:vpcid';
105
+ readonly NOTIFICATION_TOPIC_ARN: 'aws:cdk:notifications:topic:arn';
106
+ readonly NOTIFICATION_EVENTS: 'aws:cdk:notifications:events';
107
+ readonly ENABLE_EXECUTION_EVENTS: 'aws:cdk:operations:executionevents';
108
+ readonly ENABLE_METRICS: 'aws:cdk:operations:metrics';
109
+ readonly ARTIFACT_RETENTION_DAYS: 'aws:cdk:operations:artifactretentiondays';
110
+ readonly PIPELINE_VARIABLES: 'aws:cdk:operations:variables';
111
+ readonly KMS_KEY_ARN: 'aws:cdk:encryption:kmskeyarn';
112
+ };
113
+ /**
114
+ * Prefix for AWS CDK metadata keys.
115
+ * Keys with this prefix are handled by the metadata extraction functions
116
+ * (metadataForCodePipeline, etc.) and should NOT be passed as CodeBuild environment variables.
117
+ */
118
+ export declare const CDK_METADATA_PREFIX = "aws:cdk:";
@@ -0,0 +1,131 @@
1
+ // Copyright 2026 Pipeline Builder Contributors
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ // Re-export shared types from api-core for convenience
4
+ export { ComputeType, PluginType } from '@pipeline-builder/api-core';
5
+ /**
6
+ * Pipeline trigger behavior.
7
+ *
8
+ * @property NONE - Manual trigger only, pipeline does not start automatically
9
+ * @property AUTO - Automatic trigger on source changes (S3/GitHub: polling, CodeStar: push-based webhook)
10
+ */
11
+ export const TriggerType = {
12
+ NONE: 'NONE',
13
+ /** Automatic trigger on source changes. Uses polling for S3/GitHub, push-based webhook for CodeStar. */
14
+ AUTO: 'AUTO',
15
+ /** Scheduled trigger via EventBridge rule. Requires a cron expression in the source options. */
16
+ SCHEDULE: 'SCHEDULE',
17
+ };
18
+ /**
19
+ * Constants for metadata keys to avoid string typos.
20
+ *
21
+ * Key format: `aws:cdk:{namespace}:{property}` (all lowercase).
22
+ * These match the keys produced by `getCustomKey(namespace, property)`
23
+ * and looked up by `buildConfigFromMetadata`.
24
+ *
25
+ * @example
26
+ * ```typescript
27
+ * const metadata = {
28
+ * [MetadataKeys.SELF_MUTATION]: true,
29
+ * [MetadataKeys.PUBLISH_ASSETS_IN_PARALLEL]: true
30
+ * };
31
+ * ```
32
+ */
33
+ export const MetadataKeys = {
34
+ // ── CodePipeline (namespace: pipelines:codepipeline) ──
35
+ SELF_MUTATION: 'aws:cdk:pipelines:codepipeline:selfmutation',
36
+ CROSS_ACCOUNT_KEYS: 'aws:cdk:pipelines:codepipeline:crossaccountkeys',
37
+ DOCKER_ENABLED_FOR_SELF_MUTATION: 'aws:cdk:pipelines:codepipeline:dockerenabledforselfmutation',
38
+ DOCKER_ENABLED_FOR_SYNTH: 'aws:cdk:pipelines:codepipeline:dockerenabledforsynth',
39
+ ENABLE_KEY_ROTATION: 'aws:cdk:pipelines:codepipeline:enablekeyrotation',
40
+ PUBLISH_ASSETS_IN_PARALLEL: 'aws:cdk:pipelines:codepipeline:publishassetsinparallel',
41
+ REUSE_CROSS_REGION_SUPPORT_STACKS: 'aws:cdk:pipelines:codepipeline:reusecrossregionsupportstacks',
42
+ USE_CHANGE_SETS: 'aws:cdk:pipelines:codepipeline:usechangesets',
43
+ USE_PIPELINE_ROLE_FOR_ACTIONS: 'aws:cdk:pipelines:codepipeline:usepipelineroleforactions',
44
+ ARTIFACT_BUCKET: 'aws:cdk:pipelines:codepipeline:artifactbucket',
45
+ ASSET_PUBLISHING_CODE_BUILD_DEFAULTS: 'aws:cdk:pipelines:codepipeline:assetpublishingcodebuilddefaults',
46
+ CDK_ASSETS_CLI_VERSION: 'aws:cdk:pipelines:codepipeline:cdkassetscliversion',
47
+ CLI_VERSION: 'aws:cdk:pipelines:codepipeline:cliversion',
48
+ CODE_BUILD_DEFAULTS: 'aws:cdk:pipelines:codepipeline:codebuilddefaults',
49
+ CODE_PIPELINE: 'aws:cdk:pipelines:codepipeline:codepipeline',
50
+ CROSS_REGION_REPLICATION_BUCKETS: 'aws:cdk:pipelines:codepipeline:crossregionreplicationbuckets',
51
+ DOCKER_CREDENTIALS: 'aws:cdk:pipelines:codepipeline:dockercredentials',
52
+ PIPELINE_NAME: 'aws:cdk:pipelines:codepipeline:pipelinename',
53
+ PIPELINE_TYPE: 'aws:cdk:pipelines:codepipeline:pipelinetype',
54
+ PIPELINE_ROLE: 'aws:cdk:pipelines:codepipeline:role',
55
+ SELF_MUTATION_CODE_BUILD_DEFAULTS: 'aws:cdk:pipelines:codepipeline:selfmutationcodebuilddefaults',
56
+ SYNTH: 'aws:cdk:pipelines:codepipeline:synth',
57
+ SYNTH_CODE_BUILD_DEFAULTS: 'aws:cdk:pipelines:codepipeline:synthcodebuilddefaults',
58
+ // ── CodeBuildStep (namespace: pipelines:codebuildstep) ──
59
+ ACTION_ROLE: 'aws:cdk:pipelines:codebuildstep:actionrole',
60
+ ADDITIONAL_INPUTS: 'aws:cdk:pipelines:codebuildstep:additionalinputs',
61
+ BUILD_ENVIRONMENT: 'aws:cdk:pipelines:codebuildstep:buildenvironment',
62
+ CACHE: 'aws:cdk:pipelines:codebuildstep:cache',
63
+ COMMANDS: 'aws:cdk:pipelines:codebuildstep:commands',
64
+ CODE_BUILD_ENV: 'aws:cdk:pipelines:codebuildstep:env',
65
+ ENV_FROM_CFN_OUTPUTS: 'aws:cdk:pipelines:codebuildstep:envfromcfnoutputs',
66
+ FILE_SYSTEM_LOCATIONS: 'aws:cdk:pipelines:codebuildstep:filesystemlocations',
67
+ INPUT: 'aws:cdk:pipelines:codebuildstep:input',
68
+ INSTALL_COMMANDS: 'aws:cdk:pipelines:codebuildstep:installcommands',
69
+ LOGGING: 'aws:cdk:pipelines:codebuildstep:logging',
70
+ PARTIAL_BUILD_SPEC: 'aws:cdk:pipelines:codebuildstep:partialbuildspec',
71
+ PRIMARY_OUTPUT_DIRECTORY: 'aws:cdk:pipelines:codebuildstep:primaryoutputdirectory',
72
+ PROJECT_NAME: 'aws:cdk:pipelines:codebuildstep:projectname',
73
+ STEP_ROLE: 'aws:cdk:pipelines:codebuildstep:role',
74
+ ROLE_POLICY_STATEMENTS: 'aws:cdk:pipelines:codebuildstep:rolepolicystatements',
75
+ TIMEOUT: 'aws:cdk:pipelines:codebuildstep:timeout',
76
+ // ── ShellStep (namespace: pipelines:shellstep) ──
77
+ SHELL_ADDITIONAL_INPUTS: 'aws:cdk:pipelines:shellstep:additionalinputs',
78
+ SHELL_COMMANDS: 'aws:cdk:pipelines:shellstep:commands',
79
+ SHELL_ENV: 'aws:cdk:pipelines:shellstep:env',
80
+ SHELL_ENV_FROM_CFN_OUTPUTS: 'aws:cdk:pipelines:shellstep:envfromcfnoutputs',
81
+ SHELL_INPUT: 'aws:cdk:pipelines:shellstep:input',
82
+ SHELL_INSTALL_COMMANDS: 'aws:cdk:pipelines:shellstep:installcommands',
83
+ SHELL_PRIMARY_OUTPUT_DIRECTORY: 'aws:cdk:pipelines:shellstep:primaryoutputdirectory',
84
+ // ── BuildEnvironment (namespace: codebuild:buildenvironment) ──
85
+ PRIVILEGED: 'aws:cdk:codebuild:buildenvironment:privileged',
86
+ BUILD_IMAGE: 'aws:cdk:codebuild:buildenvironment:buildimage',
87
+ CERTIFICATE: 'aws:cdk:codebuild:buildenvironment:certificate',
88
+ COMPUTE_TYPE: 'aws:cdk:codebuild:buildenvironment:computetype',
89
+ DOCKER_SERVER: 'aws:cdk:codebuild:buildenvironment:dockerserver',
90
+ ENVIRONMENT_VARIABLES: 'aws:cdk:codebuild:buildenvironment:environmentvariables',
91
+ FLEET: 'aws:cdk:codebuild:buildenvironment:fleet',
92
+ // ── Network configuration (namespace: ec2:network) ──
93
+ NETWORK_TYPE: 'aws:cdk:ec2:network:type',
94
+ NETWORK_VPC_ID: 'aws:cdk:ec2:network:vpcid',
95
+ NETWORK_SUBNET_IDS: 'aws:cdk:ec2:network:subnetids',
96
+ NETWORK_SUBNET_TYPE: 'aws:cdk:ec2:network:subnettype',
97
+ NETWORK_AVAILABILITY_ZONES: 'aws:cdk:ec2:network:availabilityzones',
98
+ NETWORK_SUBNET_GROUP_NAME: 'aws:cdk:ec2:network:subnetgroupname',
99
+ NETWORK_SECURITY_GROUP_IDS: 'aws:cdk:ec2:network:securitygroupids',
100
+ NETWORK_TAGS: 'aws:cdk:ec2:network:tags',
101
+ NETWORK_VPC_NAME: 'aws:cdk:ec2:network:vpcname',
102
+ NETWORK_REGION: 'aws:cdk:ec2:network:region',
103
+ // ── IAM role configuration (namespace: iam:role) ──
104
+ ROLE_TYPE: 'aws:cdk:iam:role:type',
105
+ ROLE_ARN: 'aws:cdk:iam:role:rolearn',
106
+ ROLE_NAME: 'aws:cdk:iam:role:rolename',
107
+ ROLE_MUTABLE: 'aws:cdk:iam:role:mutable',
108
+ // ── Security group configuration (namespace: ec2:securitygroup) ──
109
+ SECURITY_GROUP_TYPE: 'aws:cdk:ec2:securitygroup:type',
110
+ SECURITY_GROUP_IDS: 'aws:cdk:ec2:securitygroup:securitygroupids',
111
+ SECURITY_GROUP_MUTABLE: 'aws:cdk:ec2:securitygroup:mutable',
112
+ SECURITY_GROUP_NAME: 'aws:cdk:ec2:securitygroup:securitygroupname',
113
+ SECURITY_GROUP_VPC_ID: 'aws:cdk:ec2:securitygroup:vpcid',
114
+ // ── Notifications (namespace: notifications) ──
115
+ NOTIFICATION_TOPIC_ARN: 'aws:cdk:notifications:topic:arn',
116
+ NOTIFICATION_EVENTS: 'aws:cdk:notifications:events',
117
+ // ── Pipeline operations (namespace: operations — custom synth in PipelineBuilder) ──
118
+ ENABLE_EXECUTION_EVENTS: 'aws:cdk:operations:executionevents',
119
+ ENABLE_METRICS: 'aws:cdk:operations:metrics',
120
+ ARTIFACT_RETENTION_DAYS: 'aws:cdk:operations:artifactretentiondays',
121
+ PIPELINE_VARIABLES: 'aws:cdk:operations:variables',
122
+ // ── Encryption (namespace: encryption — custom synth in PipelineBuilder) ──
123
+ KMS_KEY_ARN: 'aws:cdk:encryption:kmskeyarn',
124
+ };
125
+ /**
126
+ * Prefix for AWS CDK metadata keys.
127
+ * Keys with this prefix are handled by the metadata extraction functions
128
+ * (metadataForCodePipeline, etc.) and should NOT be passed as CodeBuild environment variables.
129
+ */
130
+ export const CDK_METADATA_PREFIX = 'aws:cdk:';
131
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZWxpbmUtdHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29yZS9waXBlbGluZS10eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBR3RDLHVEQUF1RDtBQUN2RCxPQUFPLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBc0MsTUFBTSw0QkFBNEIsQ0FBQztBQUV6Rzs7Ozs7R0FLRztBQUNILE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRztJQUN6QixJQUFJLEVBQUUsTUFBTTtJQUNaLHdHQUF3RztJQUN4RyxJQUFJLEVBQUUsTUFBTTtJQUNaLGdHQUFnRztJQUNoRyxRQUFRLEVBQUUsVUFBVTtDQUNaLENBQUM7QUFJWDs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUNILE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRztJQUMxQix5REFBeUQ7SUFDekQsYUFBYSxFQUFFLDZDQUE2QztJQUM1RCxrQkFBa0IsRUFBRSxpREFBaUQ7SUFDckUsZ0NBQWdDLEVBQUUsNkRBQTZEO0lBQy9GLHdCQUF3QixFQUFFLHNEQUFzRDtJQUNoRixtQkFBbUIsRUFBRSxrREFBa0Q7SUFDdkUsMEJBQTBCLEVBQUUsd0RBQXdEO0lBQ3BGLGlDQUFpQyxFQUFFLDhEQUE4RDtJQUNqRyxlQUFlLEVBQUUsOENBQThDO0lBQy9ELDZCQUE2QixFQUFFLDBEQUEwRDtJQUN6RixlQUFlLEVBQUUsK0NBQStDO0lBQ2hFLG9DQUFvQyxFQUFFLGlFQUFpRTtJQUN2RyxzQkFBc0IsRUFBRSxvREFBb0Q7SUFDNUUsV0FBVyxFQUFFLDJDQUEyQztJQUN4RCxtQkFBbUIsRUFBRSxrREFBa0Q7SUFDdkUsYUFBYSxFQUFFLDZDQUE2QztJQUM1RCxnQ0FBZ0MsRUFBRSw4REFBOEQ7SUFDaEcsa0JBQWtCLEVBQUUsa0RBQWtEO0lBQ3RFLGFBQWEsRUFBRSw2Q0FBNkM7SUFDNUQsYUFBYSxFQUFFLDZDQUE2QztJQUM1RCxhQUFhLEVBQUUscUNBQXFDO0lBQ3BELGlDQUFpQyxFQUFFLDhEQUE4RDtJQUNqRyxLQUFLLEVBQUUsc0NBQXNDO0lBQzdDLHlCQUF5QixFQUFFLHVEQUF1RDtJQUVsRiwyREFBMkQ7SUFDM0QsV0FBVyxFQUFFLDRDQUE0QztJQUN6RCxpQkFBaUIsRUFBRSxrREFBa0Q7SUFDckUsaUJBQWlCLEVBQUUsa0RBQWtEO0lBQ3JFLEtBQUssRUFBRSx1Q0FBdUM7SUFDOUMsUUFBUSxFQUFFLDBDQUEwQztJQUNwRCxjQUFjLEVBQUUscUNBQXFDO0lBQ3JELG9CQUFvQixFQUFFLG1EQUFtRDtJQUN6RSxxQkFBcUIsRUFBRSxxREFBcUQ7SUFDNUUsS0FBSyxFQUFFLHVDQUF1QztJQUM5QyxnQkFBZ0IsRUFBRSxpREFBaUQ7SUFDbkUsT0FBTyxFQUFFLHlDQUF5QztJQUNsRCxrQkFBa0IsRUFBRSxrREFBa0Q7SUFDdEUsd0JBQXdCLEVBQUUsd0RBQXdEO0lBQ2xGLFlBQVksRUFBRSw2Q0FBNkM7SUFDM0QsU0FBUyxFQUFFLHNDQUFzQztJQUNqRCxzQkFBc0IsRUFBRSxzREFBc0Q7SUFDOUUsT0FBTyxFQUFFLHlDQUF5QztJQUVsRCxtREFBbUQ7SUFDbkQsdUJBQXVCLEVBQUUsOENBQThDO0lBQ3ZFLGNBQWMsRUFBRSxzQ0FBc0M7SUFDdEQsU0FBUyxFQUFFLGlDQUFpQztJQUM1QywwQkFBMEIsRUFBRSwrQ0FBK0M7SUFDM0UsV0FBVyxFQUFFLG1DQUFtQztJQUNoRCxzQkFBc0IsRUFBRSw2Q0FBNkM7SUFDckUsOEJBQThCLEVBQUUsb0RBQW9EO0lBRXBGLGlFQUFpRTtJQUNqRSxVQUFVLEVBQUUsK0NBQStDO0lBQzNELFdBQVcsRUFBRSwrQ0FBK0M7SUFDNUQsV0FBVyxFQUFFLGdEQUFnRDtJQUM3RCxZQUFZLEVBQUUsZ0RBQWdEO0lBQzlELGFBQWEsRUFBRSxpREFBaUQ7SUFDaEUscUJBQXFCLEVBQUUseURBQXlEO0lBQ2hGLEtBQUssRUFBRSwwQ0FBMEM7SUFFakQsdURBQXVEO0lBQ3ZELFlBQVksRUFBRSwwQkFBMEI7SUFDeEMsY0FBYyxFQUFFLDJCQUEyQjtJQUMzQyxrQkFBa0IsRUFBRSwrQkFBK0I7SUFDbkQsbUJBQW1CLEVBQUUsZ0NBQWdDO0lBQ3JELDBCQUEwQixFQUFFLHVDQUF1QztJQUNuRSx5QkFBeUIsRUFBRSxxQ0FBcUM7SUFDaEUsMEJBQTBCLEVBQUUsc0NBQXNDO0lBQ2xFLFlBQVksRUFBRSwwQkFBMEI7SUFDeEMsZ0JBQWdCLEVBQUUsNkJBQTZCO0lBQy9DLGNBQWMsRUFBRSw0QkFBNEI7SUFFNUMscURBQXFEO0lBQ3JELFNBQVMsRUFBRSx1QkFBdUI7SUFDbEMsUUFBUSxFQUFFLDBCQUEwQjtJQUNwQyxTQUFTLEVBQUUsMkJBQTJCO0lBQ3RDLFlBQVksRUFBRSwwQkFBMEI7SUFFeEMsb0VBQW9FO0lBQ3BFLG1CQUFtQixFQUFFLGdDQUFnQztJQUNyRCxrQkFBa0IsRUFBRSw0Q0FBNEM7SUFDaEUsc0JBQXNCLEVBQUUsbUNBQW1DO0lBQzNELG1CQUFtQixFQUFFLDZDQUE2QztJQUNsRSxxQkFBcUIsRUFBRSxpQ0FBaUM7SUFFeEQsaURBQWlEO0lBQ2pELHNCQUFzQixFQUFFLGlDQUFpQztJQUN6RCxtQkFBbUIsRUFBRSw4QkFBOEI7SUFFbkQsc0ZBQXNGO0lBQ3RGLHVCQUF1QixFQUFFLG9DQUFvQztJQUM3RCxjQUFjLEVBQUUsNEJBQTRCO0lBQzVDLHVCQUF1QixFQUFFLDBDQUEwQztJQUNuRSxrQkFBa0IsRUFBRSw4QkFBOEI7SUFFbEQsNkVBQTZFO0lBQzdFLFdBQVcsRUFBRSw4QkFBOEI7Q0FDbkMsQ0FBQztBQUVYOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxVQUFVLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuXG4vLyBSZS1leHBvcnQgc2hhcmVkIHR5cGVzIGZyb20gYXBpLWNvcmUgZm9yIGNvbnZlbmllbmNlXG5leHBvcnQgeyBDb21wdXRlVHlwZSwgUGx1Z2luVHlwZSwgdHlwZSBNZXRhRGF0YVR5cGUsIHR5cGUgVmlzaWJpbGl0eSB9IGZyb20gJ0BwaXBlbGluZS1idWlsZGVyL2FwaS1jb3JlJztcblxuLyoqXG4gKiBQaXBlbGluZSB0cmlnZ2VyIGJlaGF2aW9yLlxuICpcbiAqIEBwcm9wZXJ0eSBOT05FIC0gTWFudWFsIHRyaWdnZXIgb25seSwgcGlwZWxpbmUgZG9lcyBub3Qgc3RhcnQgYXV0b21hdGljYWxseVxuICogQHByb3BlcnR5IEFVVE8gLSBBdXRvbWF0aWMgdHJpZ2dlciBvbiBzb3VyY2UgY2hhbmdlcyAoUzMvR2l0SHViOiBwb2xsaW5nLCBDb2RlU3RhcjogcHVzaC1iYXNlZCB3ZWJob29rKVxuICovXG5leHBvcnQgY29uc3QgVHJpZ2dlclR5cGUgPSB7XG4gIE5PTkU6ICdOT05FJyxcbiAgLyoqIEF1dG9tYXRpYyB0cmlnZ2VyIG9uIHNvdXJjZSBjaGFuZ2VzLiBVc2VzIHBvbGxpbmcgZm9yIFMzL0dpdEh1YiwgcHVzaC1iYXNlZCB3ZWJob29rIGZvciBDb2RlU3Rhci4gKi9cbiAgQVVUTzogJ0FVVE8nLFxuICAvKiogU2NoZWR1bGVkIHRyaWdnZXIgdmlhIEV2ZW50QnJpZGdlIHJ1bGUuIFJlcXVpcmVzIGEgY3JvbiBleHByZXNzaW9uIGluIHRoZSBzb3VyY2Ugb3B0aW9ucy4gKi9cbiAgU0NIRURVTEU6ICdTQ0hFRFVMRScsXG59IGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgVHJpZ2dlclR5cGUgPSAodHlwZW9mIFRyaWdnZXJUeXBlKVtrZXlvZiB0eXBlb2YgVHJpZ2dlclR5cGVdO1xuXG5cbi8qKlxuICogQ29uc3RhbnRzIGZvciBtZXRhZGF0YSBrZXlzIHRvIGF2b2lkIHN0cmluZyB0eXBvcy5cbiAqXG4gKiBLZXkgZm9ybWF0OiBgYXdzOmNkazp7bmFtZXNwYWNlfTp7cHJvcGVydHl9YCAoYWxsIGxvd2VyY2FzZSkuXG4gKiBUaGVzZSBtYXRjaCB0aGUga2V5cyBwcm9kdWNlZCBieSBgZ2V0Q3VzdG9tS2V5KG5hbWVzcGFjZSwgcHJvcGVydHkpYFxuICogYW5kIGxvb2tlZCB1cCBieSBgYnVpbGRDb25maWdGcm9tTWV0YWRhdGFgLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBtZXRhZGF0YSA9IHtcbiAqICAgW01ldGFkYXRhS2V5cy5TRUxGX01VVEFUSU9OXTogdHJ1ZSxcbiAqICAgW01ldGFkYXRhS2V5cy5QVUJMSVNIX0FTU0VUU19JTl9QQVJBTExFTF06IHRydWVcbiAqIH07XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNvbnN0IE1ldGFkYXRhS2V5cyA9IHtcbiAgLy8g4pSA4pSAIENvZGVQaXBlbGluZSAobmFtZXNwYWNlOiBwaXBlbGluZXM6Y29kZXBpcGVsaW5lKSDilIDilIBcbiAgU0VMRl9NVVRBVElPTjogJ2F3czpjZGs6cGlwZWxpbmVzOmNvZGVwaXBlbGluZTpzZWxmbXV0YXRpb24nLFxuICBDUk9TU19BQ0NPVU5UX0tFWVM6ICdhd3M6Y2RrOnBpcGVsaW5lczpjb2RlcGlwZWxpbmU6Y3Jvc3NhY2NvdW50a2V5cycsXG4gIERPQ0tFUl9FTkFCTEVEX0ZPUl9TRUxGX01VVEFUSU9OOiAnYXdzOmNkazpwaXBlbGluZXM6Y29kZXBpcGVsaW5lOmRvY2tlcmVuYWJsZWRmb3JzZWxmbXV0YXRpb24nLFxuICBET0NLRVJfRU5BQkxFRF9GT1JfU1lOVEg6ICdhd3M6Y2RrOnBpcGVsaW5lczpjb2RlcGlwZWxpbmU6ZG9ja2VyZW5hYmxlZGZvcnN5bnRoJyxcbiAgRU5BQkxFX0tFWV9ST1RBVElPTjogJ2F3czpjZGs6cGlwZWxpbmVzOmNvZGVwaXBlbGluZTplbmFibGVrZXlyb3RhdGlvbicsXG4gIFBVQkxJU0hfQVNTRVRTX0lOX1BBUkFMTEVMOiAnYXdzOmNkazpwaXBlbGluZXM6Y29kZXBpcGVsaW5lOnB1Ymxpc2hhc3NldHNpbnBhcmFsbGVsJyxcbiAgUkVVU0VfQ1JPU1NfUkVHSU9OX1NVUFBPUlRfU1RBQ0tTOiAnYXdzOmNkazpwaXBlbGluZXM6Y29kZXBpcGVsaW5lOnJldXNlY3Jvc3NyZWdpb25zdXBwb3J0c3RhY2tzJyxcbiAgVVNFX0NIQU5HRV9TRVRTOiAnYXdzOmNkazpwaXBlbGluZXM6Y29kZXBpcGVsaW5lOnVzZWNoYW5nZXNldHMnLFxuICBVU0VfUElQRUxJTkVfUk9MRV9GT1JfQUNUSU9OUzogJ2F3czpjZGs6cGlwZWxpbmVzOmNvZGVwaXBlbGluZTp1c2VwaXBlbGluZXJvbGVmb3JhY3Rpb25zJyxcbiAgQVJUSUZBQ1RfQlVDS0VUOiAnYXdzOmNkazpwaXBlbGluZXM6Y29kZXBpcGVsaW5lOmFydGlmYWN0YnVja2V0JyxcbiAgQVNTRVRfUFVCTElTSElOR19DT0RFX0JVSUxEX0RFRkFVTFRTOiAnYXdzOmNkazpwaXBlbGluZXM6Y29kZXBpcGVsaW5lOmFzc2V0cHVibGlzaGluZ2NvZGVidWlsZGRlZmF1bHRzJyxcbiAgQ0RLX0FTU0VUU19DTElfVkVSU0lPTjogJ2F3czpjZGs6cGlwZWxpbmVzOmNvZGVwaXBlbGluZTpjZGthc3NldHNjbGl2ZXJzaW9uJyxcbiAgQ0xJX1ZFUlNJT046ICdhd3M6Y2RrOnBpcGVsaW5lczpjb2RlcGlwZWxpbmU6Y2xpdmVyc2lvbicsXG4gIENPREVfQlVJTERfREVGQVVMVFM6ICdhd3M6Y2RrOnBpcGVsaW5lczpjb2RlcGlwZWxpbmU6Y29kZWJ1aWxkZGVmYXVsdHMnLFxuICBDT0RFX1BJUEVMSU5FOiAnYXdzOmNkazpwaXBlbGluZXM6Y29kZXBpcGVsaW5lOmNvZGVwaXBlbGluZScsXG4gIENST1NTX1JFR0lPTl9SRVBMSUNBVElPTl9CVUNLRVRTOiAnYXdzOmNkazpwaXBlbGluZXM6Y29kZXBpcGVsaW5lOmNyb3NzcmVnaW9ucmVwbGljYXRpb25idWNrZXRzJyxcbiAgRE9DS0VSX0NSRURFTlRJQUxTOiAnYXdzOmNkazpwaXBlbGluZXM6Y29kZXBpcGVsaW5lOmRvY2tlcmNyZWRlbnRpYWxzJyxcbiAgUElQRUxJTkVfTkFNRTogJ2F3czpjZGs6cGlwZWxpbmVzOmNvZGVwaXBlbGluZTpwaXBlbGluZW5hbWUnLFxuICBQSVBFTElORV9UWVBFOiAnYXdzOmNkazpwaXBlbGluZXM6Y29kZXBpcGVsaW5lOnBpcGVsaW5ldHlwZScsXG4gIFBJUEVMSU5FX1JPTEU6ICdhd3M6Y2RrOnBpcGVsaW5lczpjb2RlcGlwZWxpbmU6cm9sZScsXG4gIFNFTEZfTVVUQVRJT05fQ09ERV9CVUlMRF9ERUZBVUxUUzogJ2F3czpjZGs6cGlwZWxpbmVzOmNvZGVwaXBlbGluZTpzZWxmbXV0YXRpb25jb2RlYnVpbGRkZWZhdWx0cycsXG4gIFNZTlRIOiAnYXdzOmNkazpwaXBlbGluZXM6Y29kZXBpcGVsaW5lOnN5bnRoJyxcbiAgU1lOVEhfQ09ERV9CVUlMRF9ERUZBVUxUUzogJ2F3czpjZGs6cGlwZWxpbmVzOmNvZGVwaXBlbGluZTpzeW50aGNvZGVidWlsZGRlZmF1bHRzJyxcblxuICAvLyDilIDilIAgQ29kZUJ1aWxkU3RlcCAobmFtZXNwYWNlOiBwaXBlbGluZXM6Y29kZWJ1aWxkc3RlcCkg4pSA4pSAXG4gIEFDVElPTl9ST0xFOiAnYXdzOmNkazpwaXBlbGluZXM6Y29kZWJ1aWxkc3RlcDphY3Rpb25yb2xlJyxcbiAgQURESVRJT05BTF9JTlBVVFM6ICdhd3M6Y2RrOnBpcGVsaW5lczpjb2RlYnVpbGRzdGVwOmFkZGl0aW9uYWxpbnB1dHMnLFxuICBCVUlMRF9FTlZJUk9OTUVOVDogJ2F3czpjZGs6cGlwZWxpbmVzOmNvZGVidWlsZHN0ZXA6YnVpbGRlbnZpcm9ubWVudCcsXG4gIENBQ0hFOiAnYXdzOmNkazpwaXBlbGluZXM6Y29kZWJ1aWxkc3RlcDpjYWNoZScsXG4gIENPTU1BTkRTOiAnYXdzOmNkazpwaXBlbGluZXM6Y29kZWJ1aWxkc3RlcDpjb21tYW5kcycsXG4gIENPREVfQlVJTERfRU5WOiAnYXdzOmNkazpwaXBlbGluZXM6Y29kZWJ1aWxkc3RlcDplbnYnLFxuICBFTlZfRlJPTV9DRk5fT1VUUFVUUzogJ2F3czpjZGs6cGlwZWxpbmVzOmNvZGVidWlsZHN0ZXA6ZW52ZnJvbWNmbm91dHB1dHMnLFxuICBGSUxFX1NZU1RFTV9MT0NBVElPTlM6ICdhd3M6Y2RrOnBpcGVsaW5lczpjb2RlYnVpbGRzdGVwOmZpbGVzeXN0ZW1sb2NhdGlvbnMnLFxuICBJTlBVVDogJ2F3czpjZGs6cGlwZWxpbmVzOmNvZGVidWlsZHN0ZXA6aW5wdXQnLFxuICBJTlNUQUxMX0NPTU1BTkRTOiAnYXdzOmNkazpwaXBlbGluZXM6Y29kZWJ1aWxkc3RlcDppbnN0YWxsY29tbWFuZHMnLFxuICBMT0dHSU5HOiAnYXdzOmNkazpwaXBlbGluZXM6Y29kZWJ1aWxkc3RlcDpsb2dnaW5nJyxcbiAgUEFSVElBTF9CVUlMRF9TUEVDOiAnYXdzOmNkazpwaXBlbGluZXM6Y29kZWJ1aWxkc3RlcDpwYXJ0aWFsYnVpbGRzcGVjJyxcbiAgUFJJTUFSWV9PVVRQVVRfRElSRUNUT1JZOiAnYXdzOmNkazpwaXBlbGluZXM6Y29kZWJ1aWxkc3RlcDpwcmltYXJ5b3V0cHV0ZGlyZWN0b3J5JyxcbiAgUFJPSkVDVF9OQU1FOiAnYXdzOmNkazpwaXBlbGluZXM6Y29kZWJ1aWxkc3RlcDpwcm9qZWN0bmFtZScsXG4gIFNURVBfUk9MRTogJ2F3czpjZGs6cGlwZWxpbmVzOmNvZGVidWlsZHN0ZXA6cm9sZScsXG4gIFJPTEVfUE9MSUNZX1NUQVRFTUVOVFM6ICdhd3M6Y2RrOnBpcGVsaW5lczpjb2RlYnVpbGRzdGVwOnJvbGVwb2xpY3lzdGF0ZW1lbnRzJyxcbiAgVElNRU9VVDogJ2F3czpjZGs6cGlwZWxpbmVzOmNvZGVidWlsZHN0ZXA6dGltZW91dCcsXG5cbiAgLy8g4pSA4pSAIFNoZWxsU3RlcCAobmFtZXNwYWNlOiBwaXBlbGluZXM6c2hlbGxzdGVwKSDilIDilIBcbiAgU0hFTExfQURESVRJT05BTF9JTlBVVFM6ICdhd3M6Y2RrOnBpcGVsaW5lczpzaGVsbHN0ZXA6YWRkaXRpb25hbGlucHV0cycsXG4gIFNIRUxMX0NPTU1BTkRTOiAnYXdzOmNkazpwaXBlbGluZXM6c2hlbGxzdGVwOmNvbW1hbmRzJyxcbiAgU0hFTExfRU5WOiAnYXdzOmNkazpwaXBlbGluZXM6c2hlbGxzdGVwOmVudicsXG4gIFNIRUxMX0VOVl9GUk9NX0NGTl9PVVRQVVRTOiAnYXdzOmNkazpwaXBlbGluZXM6c2hlbGxzdGVwOmVudmZyb21jZm5vdXRwdXRzJyxcbiAgU0hFTExfSU5QVVQ6ICdhd3M6Y2RrOnBpcGVsaW5lczpzaGVsbHN0ZXA6aW5wdXQnLFxuICBTSEVMTF9JTlNUQUxMX0NPTU1BTkRTOiAnYXdzOmNkazpwaXBlbGluZXM6c2hlbGxzdGVwOmluc3RhbGxjb21tYW5kcycsXG4gIFNIRUxMX1BSSU1BUllfT1VUUFVUX0RJUkVDVE9SWTogJ2F3czpjZGs6cGlwZWxpbmVzOnNoZWxsc3RlcDpwcmltYXJ5b3V0cHV0ZGlyZWN0b3J5JyxcblxuICAvLyDilIDilIAgQnVpbGRFbnZpcm9ubWVudCAobmFtZXNwYWNlOiBjb2RlYnVpbGQ6YnVpbGRlbnZpcm9ubWVudCkg4pSA4pSAXG4gIFBSSVZJTEVHRUQ6ICdhd3M6Y2RrOmNvZGVidWlsZDpidWlsZGVudmlyb25tZW50OnByaXZpbGVnZWQnLFxuICBCVUlMRF9JTUFHRTogJ2F3czpjZGs6Y29kZWJ1aWxkOmJ1aWxkZW52aXJvbm1lbnQ6YnVpbGRpbWFnZScsXG4gIENFUlRJRklDQVRFOiAnYXdzOmNkazpjb2RlYnVpbGQ6YnVpbGRlbnZpcm9ubWVudDpjZXJ0aWZpY2F0ZScsXG4gIENPTVBVVEVfVFlQRTogJ2F3czpjZGs6Y29kZWJ1aWxkOmJ1aWxkZW52aXJvbm1lbnQ6Y29tcHV0ZXR5cGUnLFxuICBET0NLRVJfU0VSVkVSOiAnYXdzOmNkazpjb2RlYnVpbGQ6YnVpbGRlbnZpcm9ubWVudDpkb2NrZXJzZXJ2ZXInLFxuICBFTlZJUk9OTUVOVF9WQVJJQUJMRVM6ICdhd3M6Y2RrOmNvZGVidWlsZDpidWlsZGVudmlyb25tZW50OmVudmlyb25tZW50dmFyaWFibGVzJyxcbiAgRkxFRVQ6ICdhd3M6Y2RrOmNvZGVidWlsZDpidWlsZGVudmlyb25tZW50OmZsZWV0JyxcblxuICAvLyDilIDilIAgTmV0d29yayBjb25maWd1cmF0aW9uIChuYW1lc3BhY2U6IGVjMjpuZXR3b3JrKSDilIDilIBcbiAgTkVUV09SS19UWVBFOiAnYXdzOmNkazplYzI6bmV0d29yazp0eXBlJyxcbiAgTkVUV09SS19WUENfSUQ6ICdhd3M6Y2RrOmVjMjpuZXR3b3JrOnZwY2lkJyxcbiAgTkVUV09SS19TVUJORVRfSURTOiAnYXdzOmNkazplYzI6bmV0d29yazpzdWJuZXRpZHMnLFxuICBORVRXT1JLX1NVQk5FVF9UWVBFOiAnYXdzOmNkazplYzI6bmV0d29yazpzdWJuZXR0eXBlJyxcbiAgTkVUV09SS19BVkFJTEFCSUxJVFlfWk9ORVM6ICdhd3M6Y2RrOmVjMjpuZXR3b3JrOmF2YWlsYWJpbGl0eXpvbmVzJyxcbiAgTkVUV09SS19TVUJORVRfR1JPVVBfTkFNRTogJ2F3czpjZGs6ZWMyOm5ldHdvcms6c3VibmV0Z3JvdXBuYW1lJyxcbiAgTkVUV09SS19TRUNVUklUWV9HUk9VUF9JRFM6ICdhd3M6Y2RrOmVjMjpuZXR3b3JrOnNlY3VyaXR5Z3JvdXBpZHMnLFxuICBORVRXT1JLX1RBR1M6ICdhd3M6Y2RrOmVjMjpuZXR3b3JrOnRhZ3MnLFxuICBORVRXT1JLX1ZQQ19OQU1FOiAnYXdzOmNkazplYzI6bmV0d29yazp2cGNuYW1lJyxcbiAgTkVUV09SS19SRUdJT046ICdhd3M6Y2RrOmVjMjpuZXR3b3JrOnJlZ2lvbicsXG5cbiAgLy8g4pSA4pSAIElBTSByb2xlIGNvbmZpZ3VyYXRpb24gKG5hbWVzcGFjZTogaWFtOnJvbGUpIOKUgOKUgFxuICBST0xFX1RZUEU6ICdhd3M6Y2RrOmlhbTpyb2xlOnR5cGUnLFxuICBST0xFX0FSTjogJ2F3czpjZGs6aWFtOnJvbGU6cm9sZWFybicsXG4gIFJPTEVfTkFNRTogJ2F3czpjZGs6aWFtOnJvbGU6cm9sZW5hbWUnLFxuICBST0xFX01VVEFCTEU6ICdhd3M6Y2RrOmlhbTpyb2xlOm11dGFibGUnLFxuXG4gIC8vIOKUgOKUgCBTZWN1cml0eSBncm91cCBjb25maWd1cmF0aW9uIChuYW1lc3BhY2U6IGVjMjpzZWN1cml0eWdyb3VwKSDilIDilIBcbiAgU0VDVVJJVFlfR1JPVVBfVFlQRTogJ2F3czpjZGs6ZWMyOnNlY3VyaXR5Z3JvdXA6dHlwZScsXG4gIFNFQ1VSSVRZX0dST1VQX0lEUzogJ2F3czpjZGs6ZWMyOnNlY3VyaXR5Z3JvdXA6c2VjdXJpdHlncm91cGlkcycsXG4gIFNFQ1VSSVRZX0dST1VQX01VVEFCTEU6ICdhd3M6Y2RrOmVjMjpzZWN1cml0eWdyb3VwOm11dGFibGUnLFxuICBTRUNVUklUWV9HUk9VUF9OQU1FOiAnYXdzOmNkazplYzI6c2VjdXJpdHlncm91cDpzZWN1cml0eWdyb3VwbmFtZScsXG4gIFNFQ1VSSVRZX0dST1VQX1ZQQ19JRDogJ2F3czpjZGs6ZWMyOnNlY3VyaXR5Z3JvdXA6dnBjaWQnLFxuXG4gIC8vIOKUgOKUgCBOb3RpZmljYXRpb25zIChuYW1lc3BhY2U6IG5vdGlmaWNhdGlvbnMpIOKUgOKUgFxuICBOT1RJRklDQVRJT05fVE9QSUNfQVJOOiAnYXdzOmNkazpub3RpZmljYXRpb25zOnRvcGljOmFybicsXG4gIE5PVElGSUNBVElPTl9FVkVOVFM6ICdhd3M6Y2RrOm5vdGlmaWNhdGlvbnM6ZXZlbnRzJyxcblxuICAvLyDilIDilIAgUGlwZWxpbmUgb3BlcmF0aW9ucyAobmFtZXNwYWNlOiBvcGVyYXRpb25zIOKAlCBjdXN0b20gc3ludGggaW4gUGlwZWxpbmVCdWlsZGVyKSDilIDilIBcbiAgRU5BQkxFX0VYRUNVVElPTl9FVkVOVFM6ICdhd3M6Y2RrOm9wZXJhdGlvbnM6ZXhlY3V0aW9uZXZlbnRzJyxcbiAgRU5BQkxFX01FVFJJQ1M6ICdhd3M6Y2RrOm9wZXJhdGlvbnM6bWV0cmljcycsXG4gIEFSVElGQUNUX1JFVEVOVElPTl9EQVlTOiAnYXdzOmNkazpvcGVyYXRpb25zOmFydGlmYWN0cmV0ZW50aW9uZGF5cycsXG4gIFBJUEVMSU5FX1ZBUklBQkxFUzogJ2F3czpjZGs6b3BlcmF0aW9uczp2YXJpYWJsZXMnLFxuXG4gIC8vIOKUgOKUgCBFbmNyeXB0aW9uIChuYW1lc3BhY2U6IGVuY3J5cHRpb24g4oCUIGN1c3RvbSBzeW50aCBpbiBQaXBlbGluZUJ1aWxkZXIpIOKUgOKUgFxuICBLTVNfS0VZX0FSTjogJ2F3czpjZGs6ZW5jcnlwdGlvbjprbXNrZXlhcm4nLFxufSBhcyBjb25zdDtcblxuLyoqXG4gKiBQcmVmaXggZm9yIEFXUyBDREsgbWV0YWRhdGEga2V5cy5cbiAqIEtleXMgd2l0aCB0aGlzIHByZWZpeCBhcmUgaGFuZGxlZCBieSB0aGUgbWV0YWRhdGEgZXh0cmFjdGlvbiBmdW5jdGlvbnNcbiAqIChtZXRhZGF0YUZvckNvZGVQaXBlbGluZSwgZXRjLikgYW5kIHNob3VsZCBOT1QgYmUgcGFzc2VkIGFzIENvZGVCdWlsZCBlbnZpcm9ubWVudCB2YXJpYWJsZXMuXG4gKi9cbmV4cG9ydCBjb25zdCBDREtfTUVUQURBVEFfUFJFRklYID0gJ2F3czpjZGs6JzsiXX0=
@@ -0,0 +1,254 @@
1
+ /**
2
+ * Role configuration using an IAM role ARN
3
+ *
4
+ * Looks up an existing IAM role by its ARN via `Role.fromRoleArn`.
5
+ *
6
+ * @example
7
+ * ```typescript
8
+ * const role: RoleArnConfig = {
9
+ * type: 'roleArn',
10
+ * options: {
11
+ * roleArn: 'arn:aws:iam::123456789012:role/MyPipelineRole',
12
+ * }
13
+ * };
14
+ * ```
15
+ */
16
+ export interface RoleArnConfig {
17
+ readonly type: 'roleArn';
18
+ readonly options: RoleArnOptions;
19
+ }
20
+ /**
21
+ * Role configuration using an IAM role name
22
+ *
23
+ * Looks up an existing IAM role by its name via `Role.fromRoleName`.
24
+ *
25
+ * @example
26
+ * ```typescript
27
+ * const role: RoleNameConfig = {
28
+ * type: 'roleName',
29
+ * options: {
30
+ * roleName: 'MyPipelineRole',
31
+ * }
32
+ * };
33
+ * ```
34
+ */
35
+ export interface RoleNameConfig {
36
+ readonly type: 'roleName';
37
+ readonly options: RoleNameOptions;
38
+ }
39
+ /**
40
+ * Configuration options for role lookup by ARN
41
+ */
42
+ export interface RoleArnOptions {
43
+ /**
44
+ * Full ARN of the IAM role
45
+ * @example 'arn:aws:iam::123456789012:role/MyPipelineRole'
46
+ */
47
+ readonly roleArn: string;
48
+ /**
49
+ * Whether the imported role can be modified by attaching policy resources to it.
50
+ * Set to false if you know the role is already configured correctly and
51
+ * want to avoid additional API calls during synthesis.
52
+ * @default true
53
+ */
54
+ readonly mutable?: boolean;
55
+ }
56
+ /**
57
+ * Configuration options for role lookup by name
58
+ */
59
+ export interface RoleNameOptions {
60
+ /**
61
+ * Name of the IAM role
62
+ * @example 'MyPipelineRole'
63
+ */
64
+ readonly roleName: string;
65
+ /**
66
+ * Whether the imported role can be modified by attaching policy resources to it.
67
+ * Set to false if you know the role is already configured correctly and
68
+ * want to avoid additional API calls during synthesis.
69
+ * @default true
70
+ */
71
+ readonly mutable?: boolean;
72
+ }
73
+ /**
74
+ * Role configuration that creates a new IAM role with CodeBuild service principal
75
+ * and minimal CloudWatch Logs permissions.
76
+ *
77
+ * **Important:** This role type uses `codebuild.amazonaws.com` as the trust principal.
78
+ * It is intended for CodeBuild project roles only — do NOT use it as the pipeline-level
79
+ * role (`BuilderProps.role`), which requires `codepipeline.amazonaws.com`. For the
80
+ * pipeline role, use `roleArn` or `roleName` to reference a pre-configured role,
81
+ * or omit `role` entirely to let CDK auto-create one with the correct principal.
82
+ *
83
+ * @example
84
+ * ```typescript
85
+ * const role: CodeBuildDefaultRoleConfig = {
86
+ * type: 'codeBuildDefault',
87
+ * options: {},
88
+ * };
89
+ * ```
90
+ */
91
+ export interface CodeBuildDefaultRoleConfig {
92
+ readonly type: 'codeBuildDefault';
93
+ readonly options: CodeBuildDefaultRoleOptions;
94
+ }
95
+ /**
96
+ * Configuration options for creating a CodeBuild service role
97
+ */
98
+ export interface CodeBuildDefaultRoleOptions {
99
+ /**
100
+ * Optional custom role name.
101
+ * When omitted, CDK generates a unique name.
102
+ */
103
+ readonly roleName?: string;
104
+ }
105
+ /**
106
+ * Role configuration using an OIDC identity provider for federated role assumption.
107
+ *
108
+ * Creates a new IAM role that trusts an OpenID Connect provider (e.g. GitHub Actions,
109
+ * GitLab CI, Bitbucket Pipelines) instead of requiring a static role ARN.
110
+ *
111
+ * Provide either `providerArn` to reference an existing OIDC provider,
112
+ * or `issuer` + `clientIds` to create a new one.
113
+ *
114
+ * @example
115
+ * ```typescript
116
+ * // Reference an existing OIDC provider
117
+ * const role: OidcRoleConfig = {
118
+ * type: 'oidc',
119
+ * options: {
120
+ * providerArn: 'arn:aws:iam::123456789012:oidc-provider/token.actions.githubusercontent.com',
121
+ * conditions: {
122
+ * 'token.actions.githubusercontent.com:sub': 'repo:my-org/my-repo:ref:refs/heads/main',
123
+ * },
124
+ * },
125
+ * };
126
+ *
127
+ * // Create a new OIDC provider inline (GitHub Actions)
128
+ * const role: OidcRoleConfig = {
129
+ * type: 'oidc',
130
+ * options: {
131
+ * issuer: 'https://token.actions.githubusercontent.com',
132
+ * clientIds: ['sts.amazonaws.com'],
133
+ * thumbprints: ['6938fd4d98bab03faadb97b34396831e3780aea1'],
134
+ * conditions: {
135
+ * 'token.actions.githubusercontent.com:sub': 'repo:my-org/my-repo:ref:refs/heads/main',
136
+ * },
137
+ * },
138
+ * };
139
+ * ```
140
+ */
141
+ export interface OidcRoleConfig {
142
+ readonly type: 'oidc';
143
+ readonly options: OidcRoleOptions;
144
+ }
145
+ /**
146
+ * Configuration options for OIDC federated role assumption.
147
+ */
148
+ export interface OidcRoleOptions {
149
+ /**
150
+ * ARN of an existing IAM OIDC identity provider.
151
+ * Mutually exclusive with `issuer`.
152
+ * @example 'arn:aws:iam::123456789012:oidc-provider/token.actions.githubusercontent.com'
153
+ */
154
+ readonly providerArn?: string;
155
+ /**
156
+ * OIDC issuer URL for creating a new provider.
157
+ * Mutually exclusive with `providerArn`.
158
+ * @example 'https://token.actions.githubusercontent.com'
159
+ */
160
+ readonly issuer?: string;
161
+ /**
162
+ * Client IDs (audiences) trusted by the OIDC provider.
163
+ * Required when using `issuer` to create a new provider.
164
+ * @example ['sts.amazonaws.com']
165
+ */
166
+ readonly clientIds?: string[];
167
+ /**
168
+ * TLS certificate thumbprints for the OIDC provider.
169
+ * Required when using `issuer` to create a new provider.
170
+ */
171
+ readonly thumbprints?: string[];
172
+ /**
173
+ * StringEquals conditions for the assume-role trust policy.
174
+ * Keys are the condition claim, values are the expected claim value(s).
175
+ * @example { 'token.actions.githubusercontent.com:sub': 'repo:my-org/my-repo:ref:refs/heads/main' }
176
+ */
177
+ readonly conditions?: Record<string, string | string[]>;
178
+ /**
179
+ * StringLike conditions for wildcard matching in the trust policy.
180
+ * @example { 'token.actions.githubusercontent.com:sub': 'repo:my-org/*' }
181
+ */
182
+ readonly conditionsLike?: Record<string, string | string[]>;
183
+ /**
184
+ * Optional custom role name.
185
+ * When omitted, CDK generates a unique name.
186
+ */
187
+ readonly roleName?: string;
188
+ /**
189
+ * Optional description for the IAM role.
190
+ * Appears in the AWS console and API responses.
191
+ * @example 'OIDC role for GitHub Actions CI/CD pipeline'
192
+ */
193
+ readonly description?: string;
194
+ /**
195
+ * Maximum session duration in seconds for the assumed role.
196
+ * Controls how long the temporary credentials remain valid.
197
+ * Must be between 3600 (1 hour) and 43200 (12 hours).
198
+ * @default 3600 (1 hour, AWS default)
199
+ */
200
+ readonly maxSessionDuration?: number;
201
+ /**
202
+ * ARN of an IAM permissions boundary to attach to the role.
203
+ * Required in many enterprise AWS environments to limit maximum permissions.
204
+ * @example 'arn:aws:iam::123456789012:policy/DeveloperBoundary'
205
+ */
206
+ readonly permissionsBoundaryArn?: string;
207
+ /**
208
+ * Optional managed policy ARNs to attach to the role.
209
+ */
210
+ readonly managedPolicyArns?: string[];
211
+ /**
212
+ * Inline IAM policy statements to attach to the role.
213
+ * Each entry defines an IAM policy statement with effect, actions, and resources.
214
+ *
215
+ * @example
216
+ * ```typescript
217
+ * policyStatements: [
218
+ * { actions: ['s3:GetObject'], resources: ['arn:aws:s3:::my-bucket/*'] },
219
+ * { actions: ['logs:CreateLogGroup', 'logs:PutLogEvents'], resources: ['*'] },
220
+ * ]
221
+ * ```
222
+ */
223
+ readonly policyStatements?: OidcPolicyStatement[];
224
+ }
225
+ /**
226
+ * An inline IAM policy statement for OIDC roles.
227
+ */
228
+ export interface OidcPolicyStatement {
229
+ /**
230
+ * IAM effect. Defaults to 'Allow'.
231
+ */
232
+ readonly effect?: 'Allow' | 'Deny';
233
+ /**
234
+ * IAM actions (e.g. 's3:GetObject', 'logs:*').
235
+ */
236
+ readonly actions: string[];
237
+ /**
238
+ * IAM resource ARNs this statement applies to.
239
+ */
240
+ readonly resources: string[];
241
+ }
242
+ /**
243
+ * Union type of all supported role configurations.
244
+ *
245
+ * Used at the pipeline level (`BuilderProps.role`) to specify the IAM role
246
+ * for the CodePipeline construct.
247
+ *
248
+ * Each variant resolves to a CDK `IRole`:
249
+ * - RoleArnConfig: Role looked up by ARN
250
+ * - RoleNameConfig: Role looked up by name
251
+ * - CodeBuildDefaultRoleConfig: Creates a new role with CodeBuild trust + CloudWatch Logs
252
+ * - OidcRoleConfig: Creates a new role with OIDC federated trust (no static ARN needed)
253
+ */
254
+ export type RoleConfig = RoleArnConfig | RoleNameConfig | CodeBuildDefaultRoleConfig | OidcRoleConfig;
@@ -0,0 +1,4 @@
1
+ // Copyright 2026 Pipeline Builder Contributors
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ export {};
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9sZS10eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb3JlL3JvbGUtdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG4vKipcbiAqIFJvbGUgY29uZmlndXJhdGlvbiB1c2luZyBhbiBJQU0gcm9sZSBBUk5cbiAqXG4gKiBMb29rcyB1cCBhbiBleGlzdGluZyBJQU0gcm9sZSBieSBpdHMgQVJOIHZpYSBgUm9sZS5mcm9tUm9sZUFybmAuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IHJvbGU6IFJvbGVBcm5Db25maWcgPSB7XG4gKiAgIHR5cGU6ICdyb2xlQXJuJyxcbiAqICAgb3B0aW9uczoge1xuICogICAgIHJvbGVBcm46ICdhcm46YXdzOmlhbTo6MTIzNDU2Nzg5MDEyOnJvbGUvTXlQaXBlbGluZVJvbGUnLFxuICogICB9XG4gKiB9O1xuICogYGBgXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUm9sZUFybkNvbmZpZyB7XG4gIHJlYWRvbmx5IHR5cGU6ICdyb2xlQXJuJztcbiAgcmVhZG9ubHkgb3B0aW9uczogUm9sZUFybk9wdGlvbnM7XG59XG5cbi8qKlxuICogUm9sZSBjb25maWd1cmF0aW9uIHVzaW5nIGFuIElBTSByb2xlIG5hbWVcbiAqXG4gKiBMb29rcyB1cCBhbiBleGlzdGluZyBJQU0gcm9sZSBieSBpdHMgbmFtZSB2aWEgYFJvbGUuZnJvbVJvbGVOYW1lYC5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3Qgcm9sZTogUm9sZU5hbWVDb25maWcgPSB7XG4gKiAgIHR5cGU6ICdyb2xlTmFtZScsXG4gKiAgIG9wdGlvbnM6IHtcbiAqICAgICByb2xlTmFtZTogJ015UGlwZWxpbmVSb2xlJyxcbiAqICAgfVxuICogfTtcbiAqIGBgYFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJvbGVOYW1lQ29uZmlnIHtcbiAgcmVhZG9ubHkgdHlwZTogJ3JvbGVOYW1lJztcbiAgcmVhZG9ubHkgb3B0aW9uczogUm9sZU5hbWVPcHRpb25zO1xufVxuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3Igcm9sZSBsb29rdXAgYnkgQVJOXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUm9sZUFybk9wdGlvbnMge1xuICAvKipcbiAgICogRnVsbCBBUk4gb2YgdGhlIElBTSByb2xlXG4gICAqIEBleGFtcGxlICdhcm46YXdzOmlhbTo6MTIzNDU2Nzg5MDEyOnJvbGUvTXlQaXBlbGluZVJvbGUnXG4gICAqL1xuICByZWFkb25seSByb2xlQXJuOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGltcG9ydGVkIHJvbGUgY2FuIGJlIG1vZGlmaWVkIGJ5IGF0dGFjaGluZyBwb2xpY3kgcmVzb3VyY2VzIHRvIGl0LlxuICAgKiBTZXQgdG8gZmFsc2UgaWYgeW91IGtub3cgdGhlIHJvbGUgaXMgYWxyZWFkeSBjb25maWd1cmVkIGNvcnJlY3RseSBhbmRcbiAgICogd2FudCB0byBhdm9pZCBhZGRpdGlvbmFsIEFQSSBjYWxscyBkdXJpbmcgc3ludGhlc2lzLlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBtdXRhYmxlPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHJvbGUgbG9va3VwIGJ5IG5hbWVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSb2xlTmFtZU9wdGlvbnMge1xuICAvKipcbiAgICogTmFtZSBvZiB0aGUgSUFNIHJvbGVcbiAgICogQGV4YW1wbGUgJ015UGlwZWxpbmVSb2xlJ1xuICAgKi9cbiAgcmVhZG9ubHkgcm9sZU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgaW1wb3J0ZWQgcm9sZSBjYW4gYmUgbW9kaWZpZWQgYnkgYXR0YWNoaW5nIHBvbGljeSByZXNvdXJjZXMgdG8gaXQuXG4gICAqIFNldCB0byBmYWxzZSBpZiB5b3Uga25vdyB0aGUgcm9sZSBpcyBhbHJlYWR5IGNvbmZpZ3VyZWQgY29ycmVjdGx5IGFuZFxuICAgKiB3YW50IHRvIGF2b2lkIGFkZGl0aW9uYWwgQVBJIGNhbGxzIGR1cmluZyBzeW50aGVzaXMuXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IG11dGFibGU/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFJvbGUgY29uZmlndXJhdGlvbiB0aGF0IGNyZWF0ZXMgYSBuZXcgSUFNIHJvbGUgd2l0aCBDb2RlQnVpbGQgc2VydmljZSBwcmluY2lwYWxcbiAqIGFuZCBtaW5pbWFsIENsb3VkV2F0Y2ggTG9ncyBwZXJtaXNzaW9ucy5cbiAqXG4gKiAqKkltcG9ydGFudDoqKiBUaGlzIHJvbGUgdHlwZSB1c2VzIGBjb2RlYnVpbGQuYW1hem9uYXdzLmNvbWAgYXMgdGhlIHRydXN0IHByaW5jaXBhbC5cbiAqIEl0IGlzIGludGVuZGVkIGZvciBDb2RlQnVpbGQgcHJvamVjdCByb2xlcyBvbmx5IOKAlCBkbyBOT1QgdXNlIGl0IGFzIHRoZSBwaXBlbGluZS1sZXZlbFxuICogcm9sZSAoYEJ1aWxkZXJQcm9wcy5yb2xlYCksIHdoaWNoIHJlcXVpcmVzIGBjb2RlcGlwZWxpbmUuYW1hem9uYXdzLmNvbWAuIEZvciB0aGVcbiAqIHBpcGVsaW5lIHJvbGUsIHVzZSBgcm9sZUFybmAgb3IgYHJvbGVOYW1lYCB0byByZWZlcmVuY2UgYSBwcmUtY29uZmlndXJlZCByb2xlLFxuICogb3Igb21pdCBgcm9sZWAgZW50aXJlbHkgdG8gbGV0IENESyBhdXRvLWNyZWF0ZSBvbmUgd2l0aCB0aGUgY29ycmVjdCBwcmluY2lwYWwuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IHJvbGU6IENvZGVCdWlsZERlZmF1bHRSb2xlQ29uZmlnID0ge1xuICogICB0eXBlOiAnY29kZUJ1aWxkRGVmYXVsdCcsXG4gKiAgIG9wdGlvbnM6IHt9LFxuICogfTtcbiAqIGBgYFxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvZGVCdWlsZERlZmF1bHRSb2xlQ29uZmlnIHtcbiAgcmVhZG9ubHkgdHlwZTogJ2NvZGVCdWlsZERlZmF1bHQnO1xuICByZWFkb25seSBvcHRpb25zOiBDb2RlQnVpbGREZWZhdWx0Um9sZU9wdGlvbnM7XG59XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBjcmVhdGluZyBhIENvZGVCdWlsZCBzZXJ2aWNlIHJvbGVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb2RlQnVpbGREZWZhdWx0Um9sZU9wdGlvbnMge1xuICAvKipcbiAgICogT3B0aW9uYWwgY3VzdG9tIHJvbGUgbmFtZS5cbiAgICogV2hlbiBvbWl0dGVkLCBDREsgZ2VuZXJhdGVzIGEgdW5pcXVlIG5hbWUuXG4gICAqL1xuICByZWFkb25seSByb2xlTmFtZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBSb2xlIGNvbmZpZ3VyYXRpb24gdXNpbmcgYW4gT0lEQyBpZGVudGl0eSBwcm92aWRlciBmb3IgZmVkZXJhdGVkIHJvbGUgYXNzdW1wdGlvbi5cbiAqXG4gKiBDcmVhdGVzIGEgbmV3IElBTSByb2xlIHRoYXQgdHJ1c3RzIGFuIE9wZW5JRCBDb25uZWN0IHByb3ZpZGVyIChlLmcuIEdpdEh1YiBBY3Rpb25zLFxuICogR2l0TGFiIENJLCBCaXRidWNrZXQgUGlwZWxpbmVzKSBpbnN0ZWFkIG9mIHJlcXVpcmluZyBhIHN0YXRpYyByb2xlIEFSTi5cbiAqXG4gKiBQcm92aWRlIGVpdGhlciBgcHJvdmlkZXJBcm5gIHRvIHJlZmVyZW5jZSBhbiBleGlzdGluZyBPSURDIHByb3ZpZGVyLFxuICogb3IgYGlzc3VlcmAgKyBgY2xpZW50SWRzYCB0byBjcmVhdGUgYSBuZXcgb25lLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiAvLyBSZWZlcmVuY2UgYW4gZXhpc3RpbmcgT0lEQyBwcm92aWRlclxuICogY29uc3Qgcm9sZTogT2lkY1JvbGVDb25maWcgPSB7XG4gKiAgIHR5cGU6ICdvaWRjJyxcbiAqICAgb3B0aW9uczoge1xuICogICAgIHByb3ZpZGVyQXJuOiAnYXJuOmF3czppYW06OjEyMzQ1Njc4OTAxMjpvaWRjLXByb3ZpZGVyL3Rva2VuLmFjdGlvbnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tJyxcbiAqICAgICBjb25kaXRpb25zOiB7XG4gKiAgICAgICAndG9rZW4uYWN0aW9ucy5naXRodWJ1c2VyY29udGVudC5jb206c3ViJzogJ3JlcG86bXktb3JnL215LXJlcG86cmVmOnJlZnMvaGVhZHMvbWFpbicsXG4gKiAgICAgfSxcbiAqICAgfSxcbiAqIH07XG4gKlxuICogLy8gQ3JlYXRlIGEgbmV3IE9JREMgcHJvdmlkZXIgaW5saW5lIChHaXRIdWIgQWN0aW9ucylcbiAqIGNvbnN0IHJvbGU6IE9pZGNSb2xlQ29uZmlnID0ge1xuICogICB0eXBlOiAnb2lkYycsXG4gKiAgIG9wdGlvbnM6IHtcbiAqICAgICBpc3N1ZXI6ICdodHRwczovL3Rva2VuLmFjdGlvbnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tJyxcbiAqICAgICBjbGllbnRJZHM6IFsnc3RzLmFtYXpvbmF3cy5jb20nXSxcbiAqICAgICB0aHVtYnByaW50czogWyc2OTM4ZmQ0ZDk4YmFiMDNmYWFkYjk3YjM0Mzk2ODMxZTM3ODBhZWExJ10sXG4gKiAgICAgY29uZGl0aW9uczoge1xuICogICAgICAgJ3Rva2VuLmFjdGlvbnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tOnN1Yic6ICdyZXBvOm15LW9yZy9teS1yZXBvOnJlZjpyZWZzL2hlYWRzL21haW4nLFxuICogICAgIH0sXG4gKiAgIH0sXG4gKiB9O1xuICogYGBgXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT2lkY1JvbGVDb25maWcge1xuICByZWFkb25seSB0eXBlOiAnb2lkYyc7XG4gIHJlYWRvbmx5IG9wdGlvbnM6IE9pZGNSb2xlT3B0aW9ucztcbn1cblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIE9JREMgZmVkZXJhdGVkIHJvbGUgYXNzdW1wdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPaWRjUm9sZU9wdGlvbnMge1xuICAvKipcbiAgICogQVJOIG9mIGFuIGV4aXN0aW5nIElBTSBPSURDIGlkZW50aXR5IHByb3ZpZGVyLlxuICAgKiBNdXR1YWxseSBleGNsdXNpdmUgd2l0aCBgaXNzdWVyYC5cbiAgICogQGV4YW1wbGUgJ2Fybjphd3M6aWFtOjoxMjM0NTY3ODkwMTI6b2lkYy1wcm92aWRlci90b2tlbi5hY3Rpb25zLmdpdGh1YnVzZXJjb250ZW50LmNvbSdcbiAgICovXG4gIHJlYWRvbmx5IHByb3ZpZGVyQXJuPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBPSURDIGlzc3VlciBVUkwgZm9yIGNyZWF0aW5nIGEgbmV3IHByb3ZpZGVyLlxuICAgKiBNdXR1YWxseSBleGNsdXNpdmUgd2l0aCBgcHJvdmlkZXJBcm5gLlxuICAgKiBAZXhhbXBsZSAnaHR0cHM6Ly90b2tlbi5hY3Rpb25zLmdpdGh1YnVzZXJjb250ZW50LmNvbSdcbiAgICovXG4gIHJlYWRvbmx5IGlzc3Vlcj86IHN0cmluZztcblxuICAvKipcbiAgICogQ2xpZW50IElEcyAoYXVkaWVuY2VzKSB0cnVzdGVkIGJ5IHRoZSBPSURDIHByb3ZpZGVyLlxuICAgKiBSZXF1aXJlZCB3aGVuIHVzaW5nIGBpc3N1ZXJgIHRvIGNyZWF0ZSBhIG5ldyBwcm92aWRlci5cbiAgICogQGV4YW1wbGUgWydzdHMuYW1hem9uYXdzLmNvbSddXG4gICAqL1xuICByZWFkb25seSBjbGllbnRJZHM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogVExTIGNlcnRpZmljYXRlIHRodW1icHJpbnRzIGZvciB0aGUgT0lEQyBwcm92aWRlci5cbiAgICogUmVxdWlyZWQgd2hlbiB1c2luZyBgaXNzdWVyYCB0byBjcmVhdGUgYSBuZXcgcHJvdmlkZXIuXG4gICAqL1xuICByZWFkb25seSB0aHVtYnByaW50cz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBTdHJpbmdFcXVhbHMgY29uZGl0aW9ucyBmb3IgdGhlIGFzc3VtZS1yb2xlIHRydXN0IHBvbGljeS5cbiAgICogS2V5cyBhcmUgdGhlIGNvbmRpdGlvbiBjbGFpbSwgdmFsdWVzIGFyZSB0aGUgZXhwZWN0ZWQgY2xhaW0gdmFsdWUocykuXG4gICAqIEBleGFtcGxlIHsgJ3Rva2VuLmFjdGlvbnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tOnN1Yic6ICdyZXBvOm15LW9yZy9teS1yZXBvOnJlZjpyZWZzL2hlYWRzL21haW4nIH1cbiAgICovXG4gIHJlYWRvbmx5IGNvbmRpdGlvbnM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBzdHJpbmdbXT47XG5cbiAgLyoqXG4gICAqIFN0cmluZ0xpa2UgY29uZGl0aW9ucyBmb3Igd2lsZGNhcmQgbWF0Y2hpbmcgaW4gdGhlIHRydXN0IHBvbGljeS5cbiAgICogQGV4YW1wbGUgeyAndG9rZW4uYWN0aW9ucy5naXRodWJ1c2VyY29udGVudC5jb206c3ViJzogJ3JlcG86bXktb3JnLyonIH1cbiAgICovXG4gIHJlYWRvbmx5IGNvbmRpdGlvbnNMaWtlPzogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgc3RyaW5nW10+O1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBjdXN0b20gcm9sZSBuYW1lLlxuICAgKiBXaGVuIG9taXR0ZWQsIENESyBnZW5lcmF0ZXMgYSB1bmlxdWUgbmFtZS5cbiAgICovXG4gIHJlYWRvbmx5IHJvbGVOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBkZXNjcmlwdGlvbiBmb3IgdGhlIElBTSByb2xlLlxuICAgKiBBcHBlYXJzIGluIHRoZSBBV1MgY29uc29sZSBhbmQgQVBJIHJlc3BvbnNlcy5cbiAgICogQGV4YW1wbGUgJ09JREMgcm9sZSBmb3IgR2l0SHViIEFjdGlvbnMgQ0kvQ0QgcGlwZWxpbmUnXG4gICAqL1xuICByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogTWF4aW11bSBzZXNzaW9uIGR1cmF0aW9uIGluIHNlY29uZHMgZm9yIHRoZSBhc3N1bWVkIHJvbGUuXG4gICAqIENvbnRyb2xzIGhvdyBsb25nIHRoZSB0ZW1wb3JhcnkgY3JlZGVudGlhbHMgcmVtYWluIHZhbGlkLlxuICAgKiBNdXN0IGJlIGJldHdlZW4gMzYwMCAoMSBob3VyKSBhbmQgNDMyMDAgKDEyIGhvdXJzKS5cbiAgICogQGRlZmF1bHQgMzYwMCAoMSBob3VyLCBBV1MgZGVmYXVsdClcbiAgICovXG4gIHJlYWRvbmx5IG1heFNlc3Npb25EdXJhdGlvbj86IG51bWJlcjtcblxuICAvKipcbiAgICogQVJOIG9mIGFuIElBTSBwZXJtaXNzaW9ucyBib3VuZGFyeSB0byBhdHRhY2ggdG8gdGhlIHJvbGUuXG4gICAqIFJlcXVpcmVkIGluIG1hbnkgZW50ZXJwcmlzZSBBV1MgZW52aXJvbm1lbnRzIHRvIGxpbWl0IG1heGltdW0gcGVybWlzc2lvbnMuXG4gICAqIEBleGFtcGxlICdhcm46YXdzOmlhbTo6MTIzNDU2Nzg5MDEyOnBvbGljeS9EZXZlbG9wZXJCb3VuZGFyeSdcbiAgICovXG4gIHJlYWRvbmx5IHBlcm1pc3Npb25zQm91bmRhcnlBcm4/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIG1hbmFnZWQgcG9saWN5IEFSTnMgdG8gYXR0YWNoIHRvIHRoZSByb2xlLlxuICAgKi9cbiAgcmVhZG9ubHkgbWFuYWdlZFBvbGljeUFybnM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogSW5saW5lIElBTSBwb2xpY3kgc3RhdGVtZW50cyB0byBhdHRhY2ggdG8gdGhlIHJvbGUuXG4gICAqIEVhY2ggZW50cnkgZGVmaW5lcyBhbiBJQU0gcG9saWN5IHN0YXRlbWVudCB3aXRoIGVmZmVjdCwgYWN0aW9ucywgYW5kIHJlc291cmNlcy5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBwb2xpY3lTdGF0ZW1lbnRzOiBbXG4gICAqICAgeyBhY3Rpb25zOiBbJ3MzOkdldE9iamVjdCddLCByZXNvdXJjZXM6IFsnYXJuOmF3czpzMzo6Om15LWJ1Y2tldC8qJ10gfSxcbiAgICogICB7IGFjdGlvbnM6IFsnbG9nczpDcmVhdGVMb2dHcm91cCcsICdsb2dzOlB1dExvZ0V2ZW50cyddLCByZXNvdXJjZXM6IFsnKiddIH0sXG4gICAqIF1cbiAgICogYGBgXG4gICAqL1xuICByZWFkb25seSBwb2xpY3lTdGF0ZW1lbnRzPzogT2lkY1BvbGljeVN0YXRlbWVudFtdO1xufVxuXG4vKipcbiAqIEFuIGlubGluZSBJQU0gcG9saWN5IHN0YXRlbWVudCBmb3IgT0lEQyByb2xlcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPaWRjUG9saWN5U3RhdGVtZW50IHtcbiAgLyoqXG4gICAqIElBTSBlZmZlY3QuIERlZmF1bHRzIHRvICdBbGxvdycuXG4gICAqL1xuICByZWFkb25seSBlZmZlY3Q/OiAnQWxsb3cnIHwgJ0RlbnknO1xuXG4gIC8qKlxuICAgKiBJQU0gYWN0aW9ucyAoZS5nLiAnczM6R2V0T2JqZWN0JywgJ2xvZ3M6KicpLlxuICAgKi9cbiAgcmVhZG9ubHkgYWN0aW9uczogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIElBTSByZXNvdXJjZSBBUk5zIHRoaXMgc3RhdGVtZW50IGFwcGxpZXMgdG8uXG4gICAqL1xuICByZWFkb25seSByZXNvdXJjZXM6IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIFVuaW9uIHR5cGUgb2YgYWxsIHN1cHBvcnRlZCByb2xlIGNvbmZpZ3VyYXRpb25zLlxuICpcbiAqIFVzZWQgYXQgdGhlIHBpcGVsaW5lIGxldmVsIChgQnVpbGRlclByb3BzLnJvbGVgKSB0byBzcGVjaWZ5IHRoZSBJQU0gcm9sZVxuICogZm9yIHRoZSBDb2RlUGlwZWxpbmUgY29uc3RydWN0LlxuICpcbiAqIEVhY2ggdmFyaWFudCByZXNvbHZlcyB0byBhIENESyBgSVJvbGVgOlxuICogLSBSb2xlQXJuQ29uZmlnOiBSb2xlIGxvb2tlZCB1cCBieSBBUk5cbiAqIC0gUm9sZU5hbWVDb25maWc6IFJvbGUgbG9va2VkIHVwIGJ5IG5hbWVcbiAqIC0gQ29kZUJ1aWxkRGVmYXVsdFJvbGVDb25maWc6IENyZWF0ZXMgYSBuZXcgcm9sZSB3aXRoIENvZGVCdWlsZCB0cnVzdCArIENsb3VkV2F0Y2ggTG9nc1xuICogLSBPaWRjUm9sZUNvbmZpZzogQ3JlYXRlcyBhIG5ldyByb2xlIHdpdGggT0lEQyBmZWRlcmF0ZWQgdHJ1c3QgKG5vIHN0YXRpYyBBUk4gbmVlZGVkKVxuICovXG5leHBvcnQgdHlwZSBSb2xlQ29uZmlnID0gUm9sZUFybkNvbmZpZyB8IFJvbGVOYW1lQ29uZmlnIHwgQ29kZUJ1aWxkRGVmYXVsdFJvbGVDb25maWcgfCBPaWRjUm9sZUNvbmZpZztcbiJdfQ==
@@ -0,0 +1,14 @@
1
+ import { type IRole } from 'aws-cdk-lib/aws-iam';
2
+ import { Construct } from 'constructs';
3
+ import { UniqueId } from './id-generator.js';
4
+ import type { RoleConfig } from './role-types.js';
5
+ /**
6
+ * Resolve a RoleConfig into a CDK IRole.
7
+ * Uses discriminated union narrowing to delegate to the appropriate CDK lookup.
8
+ *
9
+ * @param scope - CDK construct scope
10
+ * @param id - UniqueId instance for generating unique construct IDs
11
+ * @param config - Role configuration to resolve
12
+ * @returns Resolved CDK IRole ready to pass to CodePipeline
13
+ */
14
+ export declare function resolveRole(scope: Construct, id: UniqueId, config: RoleConfig): IRole;