@alma-cdk/project 0.0.16 → 0.0.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/.jsii CHANGED
@@ -3008,7 +3008,7 @@
3008
3008
  },
3009
3009
  "name": "@alma-cdk/project",
3010
3010
  "readme": {
3011
- "markdown": "<br/><br/><br/>\n\n🚧 **Work-in-Progress**\n\n<br/><br/><br/>\n\n<div align=\"center\">\n\t<br/>\n\t<br/>\n <h1>\n\t<img width=\"300\" src=\"assets/alma-cdk-project.svg\" alt=\"Alma CDK Project\" />\n <br/>\n <br/>\n </h1>\n\n ```sh\n npm i -D @alma-cdk/project\n ```\n\n <div align=\"left\">\n\n Opinionated CDK “framework” with constructs & utilities for:\n - deploying multiple environments to multiple accounts (with many-to-many relationship)\n - managing account configuration through standardized props (no more random config files)\n - querying account and/or environment specific information within your CDK code\n - enabling dynamic & short-lived “feature-environments”\n - enabling well-defined tagging\n - providing structure & common conventions to CDK projects\n - choosing the target account & environment by passing in runtime context:\n\n ```sh\n npx cdk deploy -c environment=feature/abc-123\n ```\n ... which means you don't need to define all the possibile environments ahead of time!\n\n </div>\n <br/>\n</div>\n\n\n## Account Strategies\n\nDepending on the use case, you may choose a configuration between 1-3 AWS accounts with the following environments:\n\n\n1. **Shared account (`shared`)**:\n\n ![default-multi](assets/accounts-1x.svg)\n <br/>\n\n2. **Multi-account (`dev`+`prod`)**_– RECOMMENDED_:\n\n ![default-multi](assets/accounts-2x.svg)\n <br/>\n\n<br/>\n</details>\n\n3. **Multi-account (`dev`+`preprod`+`prod`)**:\n\n ![default-multi](assets/accounts-3x.svg)\n <br/>\n\n<br/>\n\n## Getting Started\n\nSteps required to define a _environmental_ project resources; At first, it might seem complex but once you get into the habbit of defining your projects this way it starts to make sense:\n\n1. Choose your [Account Strategy](#account-strategies)\n\n2. Initialize a new `Project` instead of `cdk.App`:\n\n ```ts\n // bin/app.ts\n import { Project, AccountStrategy } from '@alma-cdk/project';\n\n const project = new Project({\n // Basic info, you could also read these from package.json if you want\n name: 'my-cool-project',\n author: {\n organization: 'Acme Corp',\n name: 'Mad Scientists',\n email: 'mad.scientists@acme.example.com',\n },\n\n // If not set, defaults to one of: $CDK_DEFAULT_REGION, $AWS_REGION or us-east-1\n defaultRegion: 'eu-west-1',\n\n // Configures the project to use 2 AWS accounts (recommended)\n accounts: AccountStrategy.two({\n dev: {\n id: '111111111111',\n config: {\n // whatever you want here as [string]: any\n baseDomain: 'example.net',\n },\n },\n prod: {\n id: '222222222222',\n config: {\n // whatever you want here as [string]: any\n baseDomain: 'example.com',\n },\n },\n }),\n })\n ```\n\n3. Define a stack which `extends SmartStack` with resources:\n ```ts\n // lib/my-stack.ts\n import { Construct } from 'constructs';\n import { StackProps, RemovalPolicy } from 'aws-cdk-lib';\n import { SmartStack, Name, UrlName, PathName, EC } from '@alma-cdk/project';\n\n export class MyStack extends SmartStack {\n constructor(scope: Construct, id: string, props?: StackProps) {\n super(scope, id, props);\n\n new dynamodb.Table(this, 'Table', {\n removalPolicy: EC.isStable(this) ? RemovalPolicy.RETAIN : RemovalPolicy.DESTROY,\n\n tableName: Name.it(this, 'MyTable'),\n partitionKey: {\n type: dynamodb.AttributeType.STRING,\n name: 'pk',\n },\n // StagingMyTable\n });\n\n new events.EventBus(this, 'EventBus', {\n eventBusName: Name.withProject(this, 'MyEventBus'),\n // MyCoolProjectStagingMyEventBus\n });\n\n new s3.Bucket(this, 'Bucket', {\n\n removalPolicy: EC.isStable(this) ? RemovalPolicy.RETAIN : RemovalPolicy.DESTROY,\n autoDeleteObjects: EC.isStable(this) ? false : true,\n\n bucketName: UrlName.globally(this, 'MyBucket'),\n // acme-corp-my-cool-project-feature-foo-bar-my-bucket\n });\n\n new ssm.StringParameter(this, 'Parameter', {\n stringValue: 'Foo',\n tier: ssm.ParameterTier.ADVANCED,\n parameterName: PathName.withProject(this, 'MyNamespace/MyParameter'),\n // /MyCoolProject/Staging/MyNamespace/MyParameter\n });\n }\n }\n ```\n\n4. Define a new _environmental_ which `extends EnvironmentWrapper` and initialize all your environmental `SmartStack` stacks within:\n\n ```ts\n // lib/environment.ts\n import { EnvironmentWrapper } from '@alma-cdk/project';\n import { MyStack } from './my-stack';\n\n export class Environment extends EnvironmentWrapper {\n constructor(scope: Construct) {\n super(scope);\n new MyStack(this, 'MyStack', { description: 'This is required' });\n }\n }\n ```\n\n Resulting Stack properties (given `environment=staging`):\n\n | Property | Example value |\n | :---------------------- | :--------------------------------------------------- |\n | `stackName` | `\"MyCoolProject-Environment-Staging-MyExampleStack\"` |\n | `terminationProtection` | `true` |\n | `env.account` | `\"111111111111\"` |\n | `env.region` | `\"eu-west-1\"` |\n\n Resulting Tags for the Stack and its resources (given `environment=staging`):\n\n | Property | Example value |\n | :---------------------- | :-------------------------------- |\n | `Account` | `dev` |\n | `Environment` | `staging` |\n | `Project` | `my-cool-project` |\n | `Author` | `Mad Scientists` |\n | `Organization` | `Acme Corp` |\n | `Contact` | `mad.scientists@acme.example.com` |\n\n5. Finally initialize the environment with the `Project` scope:\n\n ```ts\n // bin/app.ts\n import { Project, Accounts } from '@alma-cdk/project';\n import { Environment } from '../lib/environment';\n\n const project = new Project({/* removed for brevity, see step 1 */})\n\n new Environment(project);\n ```\n\n<br/>\n\n\n## Documentation\n\nSee detailed documentation for specific classes & methods at [constructs.dev](http://constructs.dev/packages/@alma-cdk/project).\n\nGenerally speaking you would be most interested in the following:\n- Project\n- AccountStrategy\n- SmartStack\n- AccountWrapper & EnvironmentWrapper\n- AccountContext (AC)\n- EnvironmentContext (EC)\n- Name / UrlName / PathName\n"
3011
+ "markdown": "<br/><br/><br/>\n\n🚧 **Work-in-Progress**: Breaking changes may occur at any given point durin `v0.x`.\n\n<br/><br/><br/>\n\n<div align=\"center\">\n\t<br/>\n\t<br/>\n <h1>\n\t<img width=\"300\" src=\"assets/alma-cdk-project.svg\" alt=\"Alma CDK Project\" />\n <br/>\n <br/>\n </h1>\n\n ```sh\n npm i -D @alma-cdk/project\n ```\n\n <div align=\"left\">\n\n Opinionated CDK “framework” with constructs & utilities for:\n - deploying multiple environments to multiple accounts (with many-to-many relationship)\n - managing account configuration through standardized props (no more random config files)\n - querying account and/or environment specific information within your CDK code\n - enabling dynamic & short-lived “feature-environments”\n - enabling well-defined tagging\n - providing structure & common conventions to CDK projects\n - choosing the target account & environment by passing in runtime context:\n\n ```sh\n npx cdk deploy -c environment=feature/abc-123\n ```\n ... which means you don't need to define all the possibile environments ahead of time!\n\n </div>\n <br/>\n</div>\n\n\n## Account Strategies\n\nDepending on the use case, you may choose a configuration between 1-3 AWS accounts with the following environments:\n\n\n1. **Shared account (`shared`)**:\n\n ![default-multi](assets/accounts-1x.svg)\n <br/>\n\n2. **Multi-account (`dev`+`prod`)**_– RECOMMENDED_:\n\n ![default-multi](assets/accounts-2x.svg)\n <br/>\n\n<br/>\n</details>\n\n3. **Multi-account (`dev`+`preprod`+`prod`)**:\n\n ![default-multi](assets/accounts-3x.svg)\n <br/>\n\n<br/>\n\n## Getting Started\n\nSteps required to define a _environmental_ project resources; At first, it might seem complex but once you get into the habbit of defining your projects this way it starts to make sense:\n\n1. Choose your [Account Strategy](#account-strategies)\n\n2. Initialize a new `Project` instead of `cdk.App`:\n\n ```ts\n // bin/app.ts\n import { Project, AccountStrategy } from '@alma-cdk/project';\n\n const project = new Project({\n // Basic info, you could also read these from package.json if you want\n name: 'my-cool-project',\n author: {\n organization: 'Acme Corp',\n name: 'Mad Scientists',\n email: 'mad.scientists@acme.example.com',\n },\n\n // If not set, defaults to one of: $CDK_DEFAULT_REGION, $AWS_REGION or us-east-1\n defaultRegion: 'eu-west-1',\n\n // Configures the project to use 2 AWS accounts (recommended)\n accounts: AccountStrategy.two({\n dev: {\n id: '111111111111',\n config: {\n // whatever you want here as [string]: any\n baseDomain: 'example.net',\n },\n },\n prod: {\n id: '222222222222',\n config: {\n // whatever you want here as [string]: any\n baseDomain: 'example.com',\n },\n },\n }),\n })\n ```\n\n3. Define a stack which `extends SmartStack` with resources:\n ```ts\n // lib/my-stack.ts\n import { Construct } from 'constructs';\n import { StackProps, RemovalPolicy } from 'aws-cdk-lib';\n import { SmartStack, Name, UrlName, PathName, EC } from '@alma-cdk/project';\n\n export class MyStack extends SmartStack {\n constructor(scope: Construct, id: string, props?: StackProps) {\n super(scope, id, props);\n\n new dynamodb.Table(this, 'Table', {\n removalPolicy: EC.isStable(this) ? RemovalPolicy.RETAIN : RemovalPolicy.DESTROY,\n\n tableName: Name.it(this, 'MyTable'),\n partitionKey: {\n type: dynamodb.AttributeType.STRING,\n name: 'pk',\n },\n // StagingMyTable\n });\n\n new events.EventBus(this, 'EventBus', {\n eventBusName: Name.withProject(this, 'MyEventBus'),\n // MyCoolProjectStagingMyEventBus\n });\n\n new s3.Bucket(this, 'Bucket', {\n\n removalPolicy: EC.isStable(this) ? RemovalPolicy.RETAIN : RemovalPolicy.DESTROY,\n autoDeleteObjects: EC.isStable(this) ? false : true,\n\n bucketName: UrlName.globally(this, 'MyBucket'),\n // acme-corp-my-cool-project-feature-foo-bar-my-bucket\n });\n\n new ssm.StringParameter(this, 'Parameter', {\n stringValue: 'Foo',\n tier: ssm.ParameterTier.ADVANCED,\n parameterName: PathName.withProject(this, 'MyNamespace/MyParameter'),\n // /MyCoolProject/Staging/MyNamespace/MyParameter\n });\n }\n }\n ```\n\n4. Define a new _environmental_ which `extends EnvironmentWrapper` and initialize all your environmental `SmartStack` stacks within:\n\n ```ts\n // lib/environment.ts\n import { EnvironmentWrapper } from '@alma-cdk/project';\n import { MyStack } from './my-stack';\n\n export class Environment extends EnvironmentWrapper {\n constructor(scope: Construct) {\n super(scope);\n new MyStack(this, 'MyStack', { description: 'This is required' });\n }\n }\n ```\n\n Resulting Stack properties (given `environment=staging`):\n\n | Property | Example value |\n | :---------------------- | :--------------------------------------------------- |\n | `stackName` | `\"MyCoolProject-Environment-Staging-MyExampleStack\"` |\n | `terminationProtection` | `true` |\n | `env.account` | `\"111111111111\"` |\n | `env.region` | `\"eu-west-1\"` |\n\n Resulting Tags for the Stack and its resources (given `environment=staging`):\n\n | Property | Example value |\n | :---------------------- | :-------------------------------- |\n | `Account` | `dev` |\n | `Environment` | `staging` |\n | `Project` | `my-cool-project` |\n | `Author` | `Mad Scientists` |\n | `Organization` | `Acme Corp` |\n | `Contact` | `mad.scientists@acme.example.com` |\n\n5. Finally initialize the environment with the `Project` scope:\n\n ```ts\n // bin/app.ts\n import { Project, Accounts } from '@alma-cdk/project';\n import { Environment } from '../lib/environment';\n\n const project = new Project({/* removed for brevity, see step 1 */})\n\n new Environment(project);\n ```\n\n<br/>\n\n\n## Documentation\n\nSee detailed documentation for specific classes & methods at [constructs.dev](http://constructs.dev/packages/@alma-cdk/project).\n\nGenerally speaking you would be most interested in the following:\n- Project\n- AccountStrategy\n- SmartStack\n- AccountWrapper & EnvironmentWrapper\n- AccountContext (AC)\n- EnvironmentContext (EC)\n- Name / UrlName / PathName\n"
3012
3012
  },
3013
3013
  "repository": {
3014
3014
  "type": "git",
@@ -3108,13 +3108,14 @@
3108
3108
  "assembly": "@alma-cdk/project",
3109
3109
  "datatype": true,
3110
3110
  "docs": {
3111
- "stability": "experimental"
3111
+ "stability": "experimental",
3112
+ "summary": "Interface for a single account type configuration."
3112
3113
  },
3113
3114
  "fqn": "@alma-cdk/project.AccountConfiguration",
3114
3115
  "kind": "interface",
3115
3116
  "locationInModule": {
3116
3117
  "filename": "src/configurations/accounts.ts",
3117
- "line": 12
3118
+ "line": 16
3118
3119
  },
3119
3120
  "name": "AccountConfiguration",
3120
3121
  "properties": [
@@ -3126,7 +3127,7 @@
3126
3127
  "immutable": true,
3127
3128
  "locationInModule": {
3128
3129
  "filename": "src/configurations/accounts.ts",
3129
- "line": 13
3130
+ "line": 17
3130
3131
  },
3131
3132
  "name": "id",
3132
3133
  "type": {
@@ -3141,7 +3142,7 @@
3141
3142
  "immutable": true,
3142
3143
  "locationInModule": {
3143
3144
  "filename": "src/configurations/accounts.ts",
3144
- "line": 14
3145
+ "line": 18
3145
3146
  },
3146
3147
  "name": "config",
3147
3148
  "optional": true,
@@ -3382,7 +3383,7 @@
3382
3383
  "docs": {
3383
3384
  "remarks": "Available strategies are:\n- One Account: `shared`\n- Two Accounts: `dev`+`prod` – _recommended_\n- Three Accounts: `dev`+`preprod`+`prod`",
3384
3385
  "stability": "experimental",
3385
- "summary": "Use static methods of Accounts abstract class to define your account strategy."
3386
+ "summary": "Use static methods of `AccountStrategy` abstract class to define your account strategy."
3386
3387
  },
3387
3388
  "fqn": "@alma-cdk/project.AccountStrategy",
3388
3389
  "initializer": {
@@ -3393,7 +3394,7 @@
3393
3394
  "kind": "class",
3394
3395
  "locationInModule": {
3395
3396
  "filename": "src/configurations/accounts.ts",
3396
- "line": 54
3397
+ "line": 53
3397
3398
  },
3398
3399
  "methods": [
3399
3400
  {
@@ -3405,14 +3406,14 @@
3405
3406
  },
3406
3407
  "locationInModule": {
3407
3408
  "filename": "src/configurations/accounts.ts",
3408
- "line": 75
3409
+ "line": 74
3409
3410
  },
3410
3411
  "name": "one",
3411
3412
  "parameters": [
3412
3413
  {
3413
3414
  "name": "props",
3414
3415
  "type": {
3415
- "fqn": "@alma-cdk/project.AccountsOneProps"
3416
+ "fqn": "@alma-cdk/project.AccountStrategyOneProps"
3416
3417
  }
3417
3418
  }
3418
3419
  ],
@@ -3437,14 +3438,14 @@
3437
3438
  },
3438
3439
  "locationInModule": {
3439
3440
  "filename": "src/configurations/accounts.ts",
3440
- "line": 178
3441
+ "line": 177
3441
3442
  },
3442
3443
  "name": "three",
3443
3444
  "parameters": [
3444
3445
  {
3445
3446
  "name": "props",
3446
3447
  "type": {
3447
- "fqn": "@alma-cdk/project.AccountsThreeProps"
3448
+ "fqn": "@alma-cdk/project.AccountStrategyThreeProps"
3448
3449
  }
3449
3450
  }
3450
3451
  ],
@@ -3469,14 +3470,14 @@
3469
3470
  },
3470
3471
  "locationInModule": {
3471
3472
  "filename": "src/configurations/accounts.ts",
3472
- "line": 122
3473
+ "line": 121
3473
3474
  },
3474
3475
  "name": "two",
3475
3476
  "parameters": [
3476
3477
  {
3477
3478
  "name": "props",
3478
3479
  "type": {
3479
- "fqn": "@alma-cdk/project.AccountsTwoProps"
3480
+ "fqn": "@alma-cdk/project.AccountStrategyTwoProps"
3480
3481
  }
3481
3482
  }
3482
3483
  ],
@@ -3496,163 +3497,20 @@
3496
3497
  "name": "AccountStrategy",
3497
3498
  "symbolId": "src/configurations/accounts:AccountStrategy"
3498
3499
  },
3499
- "@alma-cdk/project.AccountType": {
3500
- "assembly": "@alma-cdk/project",
3501
- "docs": {
3502
- "stability": "experimental",
3503
- "summary": "Internal class to handle set/get operations for Account Type."
3504
- },
3505
- "fqn": "@alma-cdk/project.AccountType",
3506
- "initializer": {
3507
- "docs": {
3508
- "stability": "experimental"
3509
- }
3510
- },
3511
- "kind": "class",
3512
- "locationInModule": {
3513
- "filename": "src/project/account-type.ts",
3514
- "line": 10
3515
- },
3516
- "methods": [
3517
- {
3518
- "docs": {
3519
- "stability": "experimental"
3520
- },
3521
- "locationInModule": {
3522
- "filename": "src/project/account-type.ts",
3523
- "line": 17
3524
- },
3525
- "name": "get",
3526
- "parameters": [
3527
- {
3528
- "name": "scope",
3529
- "type": {
3530
- "fqn": "constructs.Construct"
3531
- }
3532
- }
3533
- ],
3534
- "returns": {
3535
- "type": {
3536
- "primitive": "string"
3537
- }
3538
- },
3539
- "static": true
3540
- },
3541
- {
3542
- "docs": {
3543
- "stability": "experimental"
3544
- },
3545
- "locationInModule": {
3546
- "filename": "src/project/account-type.ts",
3547
- "line": 31
3548
- },
3549
- "name": "matchFromEnvironment",
3550
- "parameters": [
3551
- {
3552
- "name": "scope",
3553
- "type": {
3554
- "fqn": "constructs.Construct"
3555
- }
3556
- },
3557
- {
3558
- "name": "accounts",
3559
- "type": {
3560
- "collection": {
3561
- "elementtype": {
3562
- "fqn": "@alma-cdk/project.Account"
3563
- },
3564
- "kind": "map"
3565
- }
3566
- }
3567
- },
3568
- {
3569
- "name": "environmentType",
3570
- "type": {
3571
- "primitive": "string"
3572
- }
3573
- }
3574
- ],
3575
- "returns": {
3576
- "type": {
3577
- "primitive": "string"
3578
- }
3579
- },
3580
- "static": true
3581
- },
3582
- {
3583
- "docs": {
3584
- "stability": "experimental"
3585
- },
3586
- "locationInModule": {
3587
- "filename": "src/project/account-type.ts",
3588
- "line": 12
3589
- },
3590
- "name": "set",
3591
- "parameters": [
3592
- {
3593
- "name": "scope",
3594
- "type": {
3595
- "fqn": "constructs.Construct"
3596
- }
3597
- },
3598
- {
3599
- "name": "accountType",
3600
- "type": {
3601
- "primitive": "string"
3602
- }
3603
- }
3604
- ],
3605
- "static": true
3606
- }
3607
- ],
3608
- "name": "AccountType",
3609
- "symbolId": "src/project/account-type:AccountType"
3610
- },
3611
- "@alma-cdk/project.AccountWrapper": {
3612
- "assembly": "@alma-cdk/project",
3613
- "base": "constructs.Construct",
3614
- "docs": {
3615
- "stability": "experimental"
3616
- },
3617
- "fqn": "@alma-cdk/project.AccountWrapper",
3618
- "initializer": {
3619
- "docs": {
3620
- "stability": "experimental"
3621
- },
3622
- "locationInModule": {
3623
- "filename": "src/wrapper/account.ts",
3624
- "line": 7
3625
- },
3626
- "parameters": [
3627
- {
3628
- "name": "scope",
3629
- "type": {
3630
- "fqn": "constructs.Construct"
3631
- }
3632
- }
3633
- ]
3634
- },
3635
- "kind": "class",
3636
- "locationInModule": {
3637
- "filename": "src/wrapper/account.ts",
3638
- "line": 5
3639
- },
3640
- "name": "AccountWrapper",
3641
- "symbolId": "src/wrapper/account:AccountWrapper"
3642
- },
3643
- "@alma-cdk/project.AccountsOneProps": {
3500
+ "@alma-cdk/project.AccountStrategyOneProps": {
3644
3501
  "assembly": "@alma-cdk/project",
3645
3502
  "datatype": true,
3646
3503
  "docs": {
3647
- "stability": "experimental"
3504
+ "stability": "experimental",
3505
+ "summary": "Props `AccountStrategy.one`."
3648
3506
  },
3649
- "fqn": "@alma-cdk/project.AccountsOneProps",
3507
+ "fqn": "@alma-cdk/project.AccountStrategyOneProps",
3650
3508
  "kind": "interface",
3651
3509
  "locationInModule": {
3652
3510
  "filename": "src/configurations/accounts.ts",
3653
- "line": 25
3511
+ "line": 22
3654
3512
  },
3655
- "name": "AccountsOneProps",
3513
+ "name": "AccountStrategyOneProps",
3656
3514
  "properties": [
3657
3515
  {
3658
3516
  "abstract": true,
@@ -3662,7 +3520,7 @@
3662
3520
  "immutable": true,
3663
3521
  "locationInModule": {
3664
3522
  "filename": "src/configurations/accounts.ts",
3665
- "line": 27
3523
+ "line": 24
3666
3524
  },
3667
3525
  "name": "shared",
3668
3526
  "type": {
@@ -3677,7 +3535,7 @@
3677
3535
  "immutable": true,
3678
3536
  "locationInModule": {
3679
3537
  "filename": "src/configurations/accounts.ts",
3680
- "line": 26
3538
+ "line": 23
3681
3539
  },
3682
3540
  "name": "mock",
3683
3541
  "optional": true,
@@ -3686,21 +3544,22 @@
3686
3544
  }
3687
3545
  }
3688
3546
  ],
3689
- "symbolId": "src/configurations/accounts:AccountsOneProps"
3547
+ "symbolId": "src/configurations/accounts:AccountStrategyOneProps"
3690
3548
  },
3691
- "@alma-cdk/project.AccountsThreeProps": {
3549
+ "@alma-cdk/project.AccountStrategyThreeProps": {
3692
3550
  "assembly": "@alma-cdk/project",
3693
3551
  "datatype": true,
3694
3552
  "docs": {
3695
- "stability": "experimental"
3553
+ "stability": "experimental",
3554
+ "summary": "Props `AccountStrategy.three`."
3696
3555
  },
3697
- "fqn": "@alma-cdk/project.AccountsThreeProps",
3556
+ "fqn": "@alma-cdk/project.AccountStrategyThreeProps",
3698
3557
  "kind": "interface",
3699
3558
  "locationInModule": {
3700
3559
  "filename": "src/configurations/accounts.ts",
3701
- "line": 36
3560
+ "line": 35
3702
3561
  },
3703
- "name": "AccountsThreeProps",
3562
+ "name": "AccountStrategyThreeProps",
3704
3563
  "properties": [
3705
3564
  {
3706
3565
  "abstract": true,
@@ -3710,7 +3569,7 @@
3710
3569
  "immutable": true,
3711
3570
  "locationInModule": {
3712
3571
  "filename": "src/configurations/accounts.ts",
3713
- "line": 38
3572
+ "line": 37
3714
3573
  },
3715
3574
  "name": "dev",
3716
3575
  "type": {
@@ -3725,7 +3584,7 @@
3725
3584
  "immutable": true,
3726
3585
  "locationInModule": {
3727
3586
  "filename": "src/configurations/accounts.ts",
3728
- "line": 39
3587
+ "line": 38
3729
3588
  },
3730
3589
  "name": "preprod",
3731
3590
  "type": {
@@ -3740,7 +3599,7 @@
3740
3599
  "immutable": true,
3741
3600
  "locationInModule": {
3742
3601
  "filename": "src/configurations/accounts.ts",
3743
- "line": 40
3602
+ "line": 39
3744
3603
  },
3745
3604
  "name": "prod",
3746
3605
  "type": {
@@ -3755,7 +3614,7 @@
3755
3614
  "immutable": true,
3756
3615
  "locationInModule": {
3757
3616
  "filename": "src/configurations/accounts.ts",
3758
- "line": 37
3617
+ "line": 36
3759
3618
  },
3760
3619
  "name": "mock",
3761
3620
  "optional": true,
@@ -3764,21 +3623,22 @@
3764
3623
  }
3765
3624
  }
3766
3625
  ],
3767
- "symbolId": "src/configurations/accounts:AccountsThreeProps"
3626
+ "symbolId": "src/configurations/accounts:AccountStrategyThreeProps"
3768
3627
  },
3769
- "@alma-cdk/project.AccountsTwoProps": {
3628
+ "@alma-cdk/project.AccountStrategyTwoProps": {
3770
3629
  "assembly": "@alma-cdk/project",
3771
3630
  "datatype": true,
3772
3631
  "docs": {
3773
- "stability": "experimental"
3632
+ "stability": "experimental",
3633
+ "summary": "Props `AccountStrategy.two`."
3774
3634
  },
3775
- "fqn": "@alma-cdk/project.AccountsTwoProps",
3635
+ "fqn": "@alma-cdk/project.AccountStrategyTwoProps",
3776
3636
  "kind": "interface",
3777
3637
  "locationInModule": {
3778
3638
  "filename": "src/configurations/accounts.ts",
3779
- "line": 30
3639
+ "line": 28
3780
3640
  },
3781
- "name": "AccountsTwoProps",
3641
+ "name": "AccountStrategyTwoProps",
3782
3642
  "properties": [
3783
3643
  {
3784
3644
  "abstract": true,
@@ -3788,7 +3648,7 @@
3788
3648
  "immutable": true,
3789
3649
  "locationInModule": {
3790
3650
  "filename": "src/configurations/accounts.ts",
3791
- "line": 32
3651
+ "line": 30
3792
3652
  },
3793
3653
  "name": "dev",
3794
3654
  "type": {
@@ -3803,7 +3663,7 @@
3803
3663
  "immutable": true,
3804
3664
  "locationInModule": {
3805
3665
  "filename": "src/configurations/accounts.ts",
3806
- "line": 33
3666
+ "line": 31
3807
3667
  },
3808
3668
  "name": "prod",
3809
3669
  "type": {
@@ -3818,7 +3678,7 @@
3818
3678
  "immutable": true,
3819
3679
  "locationInModule": {
3820
3680
  "filename": "src/configurations/accounts.ts",
3821
- "line": 31
3681
+ "line": 29
3822
3682
  },
3823
3683
  "name": "mock",
3824
3684
  "optional": true,
@@ -3827,7 +3687,152 @@
3827
3687
  }
3828
3688
  }
3829
3689
  ],
3830
- "symbolId": "src/configurations/accounts:AccountsTwoProps"
3690
+ "symbolId": "src/configurations/accounts:AccountStrategyTwoProps"
3691
+ },
3692
+ "@alma-cdk/project.AccountType": {
3693
+ "assembly": "@alma-cdk/project",
3694
+ "docs": {
3695
+ "stability": "experimental",
3696
+ "summary": "Internal class to handle set/get operations for Account Type."
3697
+ },
3698
+ "fqn": "@alma-cdk/project.AccountType",
3699
+ "initializer": {
3700
+ "docs": {
3701
+ "stability": "experimental"
3702
+ }
3703
+ },
3704
+ "kind": "class",
3705
+ "locationInModule": {
3706
+ "filename": "src/project/account-type.ts",
3707
+ "line": 10
3708
+ },
3709
+ "methods": [
3710
+ {
3711
+ "docs": {
3712
+ "stability": "experimental"
3713
+ },
3714
+ "locationInModule": {
3715
+ "filename": "src/project/account-type.ts",
3716
+ "line": 17
3717
+ },
3718
+ "name": "get",
3719
+ "parameters": [
3720
+ {
3721
+ "name": "scope",
3722
+ "type": {
3723
+ "fqn": "constructs.Construct"
3724
+ }
3725
+ }
3726
+ ],
3727
+ "returns": {
3728
+ "type": {
3729
+ "primitive": "string"
3730
+ }
3731
+ },
3732
+ "static": true
3733
+ },
3734
+ {
3735
+ "docs": {
3736
+ "stability": "experimental"
3737
+ },
3738
+ "locationInModule": {
3739
+ "filename": "src/project/account-type.ts",
3740
+ "line": 31
3741
+ },
3742
+ "name": "matchFromEnvironment",
3743
+ "parameters": [
3744
+ {
3745
+ "name": "scope",
3746
+ "type": {
3747
+ "fqn": "constructs.Construct"
3748
+ }
3749
+ },
3750
+ {
3751
+ "name": "accounts",
3752
+ "type": {
3753
+ "collection": {
3754
+ "elementtype": {
3755
+ "fqn": "@alma-cdk/project.Account"
3756
+ },
3757
+ "kind": "map"
3758
+ }
3759
+ }
3760
+ },
3761
+ {
3762
+ "name": "environmentType",
3763
+ "type": {
3764
+ "primitive": "string"
3765
+ }
3766
+ }
3767
+ ],
3768
+ "returns": {
3769
+ "type": {
3770
+ "primitive": "string"
3771
+ }
3772
+ },
3773
+ "static": true
3774
+ },
3775
+ {
3776
+ "docs": {
3777
+ "stability": "experimental"
3778
+ },
3779
+ "locationInModule": {
3780
+ "filename": "src/project/account-type.ts",
3781
+ "line": 12
3782
+ },
3783
+ "name": "set",
3784
+ "parameters": [
3785
+ {
3786
+ "name": "scope",
3787
+ "type": {
3788
+ "fqn": "constructs.Construct"
3789
+ }
3790
+ },
3791
+ {
3792
+ "name": "accountType",
3793
+ "type": {
3794
+ "primitive": "string"
3795
+ }
3796
+ }
3797
+ ],
3798
+ "static": true
3799
+ }
3800
+ ],
3801
+ "name": "AccountType",
3802
+ "symbolId": "src/project/account-type:AccountType"
3803
+ },
3804
+ "@alma-cdk/project.AccountWrapper": {
3805
+ "assembly": "@alma-cdk/project",
3806
+ "base": "constructs.Construct",
3807
+ "docs": {
3808
+ "stability": "experimental",
3809
+ "summary": "Wrapper for account-level stacks."
3810
+ },
3811
+ "fqn": "@alma-cdk/project.AccountWrapper",
3812
+ "initializer": {
3813
+ "docs": {
3814
+ "stability": "experimental"
3815
+ },
3816
+ "locationInModule": {
3817
+ "filename": "src/wrapper/account.ts",
3818
+ "line": 10
3819
+ },
3820
+ "parameters": [
3821
+ {
3822
+ "name": "scope",
3823
+ "type": {
3824
+ "fqn": "constructs.Construct"
3825
+ }
3826
+ }
3827
+ ]
3828
+ },
3829
+ "kind": "class",
3830
+ "locationInModule": {
3831
+ "filename": "src/wrapper/account.ts",
3832
+ "line": 8
3833
+ },
3834
+ "name": "AccountWrapper",
3835
+ "symbolId": "src/wrapper/account:AccountWrapper"
3831
3836
  },
3832
3837
  "@alma-cdk/project.Author": {
3833
3838
  "assembly": "@alma-cdk/project",
@@ -4504,7 +4509,8 @@
4504
4509
  "assembly": "@alma-cdk/project",
4505
4510
  "base": "constructs.Construct",
4506
4511
  "docs": {
4507
- "stability": "experimental"
4512
+ "stability": "experimental",
4513
+ "summary": "Wrapper for environmental stacks."
4508
4514
  },
4509
4515
  "fqn": "@alma-cdk/project.EnvironmentWrapper",
4510
4516
  "initializer": {
@@ -4513,7 +4519,7 @@
4513
4519
  },
4514
4520
  "locationInModule": {
4515
4521
  "filename": "src/wrapper/environment.ts",
4516
- "line": 6
4522
+ "line": 9
4517
4523
  },
4518
4524
  "parameters": [
4519
4525
  {
@@ -4527,7 +4533,7 @@
4527
4533
  "kind": "class",
4528
4534
  "locationInModule": {
4529
4535
  "filename": "src/wrapper/environment.ts",
4530
- "line": 5
4536
+ "line": 8
4531
4537
  },
4532
4538
  "name": "EnvironmentWrapper",
4533
4539
  "symbolId": "src/wrapper/environment:EnvironmentWrapper"
@@ -5567,6 +5573,6 @@
5567
5573
  "symbolId": "src/name/name-url:UrlName"
5568
5574
  }
5569
5575
  },
5570
- "version": "0.0.16",
5571
- "fingerprint": "GbuiqmC6qCyWpOIirRoY1/3Ba+zrtpzmAsp8Yai6VQ4="
5576
+ "version": "0.0.19",
5577
+ "fingerprint": "N9qDhd3sSM5aNC/lk6cBc4b0L8MSz35MfMKNiUdnxZw="
5572
5578
  }