{"_id":"@awslv/aws-cdk-organizer","_rev":"2-25d0ed57dbdad16d7224f9d7083157e0","name":"@awslv/aws-cdk-organizer","dist-tags":{"latest":"1.2.0"},"versions":{"1.0.0":{"name":"@awslv/aws-cdk-organizer","version":"1.0.0","type":"commonjs","main":"./src/index.js","typings":"./src/index.d.ts","dependencies":{"@awslv/cdk-organizer-core":"1.0.0","constructs":"^10.1.90","js-yaml":"^4.1.0","lodash":"^4.17.21","glob":"^8.0.3","aws-cdk-lib":"^2.41.0","tslib":"^2.3.0"},"peerDependencies":{},"gitHead":"477e5e8f80713e054dcdf99072b338d9eb002ae0","description":"This library contains the core features to handle CDK projects including:","_id":"@awslv/aws-cdk-organizer@1.0.0","_nodeVersion":"16.17.0","_npmVersion":"8.15.0","dist":{"integrity":"sha512-KrZjjEpB/gvlgPQUsxJ0GZ2RskgrBS01cstN8G1/hpQjhXiXWtSUKN8yvymB+jAMrQX9VrjkGXXYMAUNmks6tQ==","shasum":"632bf6430c26a801f3d61ff2ff2ac8f5c2fc770d","tarball":"https://registry.npmjs.org/@awslv/aws-cdk-organizer/-/aws-cdk-organizer-1.0.0.tgz","fileCount":12,"unpackedSize":9111,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIE29g+GJOalerLVyoex9t6nW4jgwmOoXhQ6KTxlkB8IZAiAuEzaieX8bNNXxxG5aefpZW6NsBtE4agJa3CVAfVC5Kg=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjGzYrACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmp/LhAAosabCvFo6X5P3U3snshm6WQQINnlfWKMr2GSvZ2OAgf5xwm1\r\neF2mDZ8IKiRUbwbWZulSgJiSk8m7YlQENSXFL9Mmg3KT3ZY4UwwZt8HPQe5J\r\nQ6RpKAWe/V2eWKOc6iQm+nu4aVR7p7Z00OSNbuEMQRPsk7v7Xwx/C5UCL7aO\r\nBC7sZ0PSM42dXnb8HiMY+9h7rR9LxTAycEmHiD+ItY5LecgIy0CtN2q/HlJN\r\nFlB9s5pbern0a8BXTabsPWi5Yw2E3mez6rUihmM+LkfIaSgC5y86umkqwoIO\r\nw44BLPn8MwFB4PQFisdXVZpou0u5cxkZaFwMcqRPwqWyKmk1+/SgsY+PsLJi\r\ndbszSHJJ7P3d5o3BspIcGPUMaZ7oMk3orzZUWYxd6FLud52lftm1ufvy3mzU\r\nPLnTVbX8aap2ylDg7vQsu04OgGb7qj0pZ8e5oKQACAMv2/9BhVR8lvQFvtsK\r\n4x7mRDE8IzSK9rgVblSSdPL1/XFqU9Q1ZDNq7sA9fFVYqkuvn4U9h+dVx6oX\r\nmhUYwQ5lSEznFWhO+xBd8WeDymvjY+l6meivRP2xB2nWs+3WMOeOeJEWNmQV\r\nnOFTdYxXBVx+5+fhSUIRHxglMzTEHTAQd64rVjwPIa87ykfm29+yvcxbCfm3\r\nZt/SihGioN7cIKpoF2m89qehE7VAtjUpmks=\r\n=trLC\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"lucas.vieira","email":"lucas.vieira94@outlook.com"},"directories":{},"maintainers":[{"name":"lucas.vieira","email":"lucas.vieira94@outlook.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/aws-cdk-organizer_1.0.0_1662727722856_0.8821215002575244"},"_hasShrinkwrap":false},"1.1.0":{"name":"@awslv/aws-cdk-organizer","description":"CDK Organizer for AWS CDK TypeScript Library","version":"1.1.0","type":"commonjs","repository":{"type":"git","url":"git+ssh://git@github.com/cdk-organizer/cdk-organizer.git"},"main":"./src/index.js","typings":"./src/index.d.ts","dependencies":{"@awslv/cdk-organizer-core":"1.1.0","constructs":"^10.1.90","js-yaml":"^4.1.0","lodash":"^4.17.21","glob":"^8.0.3","aws-cdk-lib":"^2.41.0","tslib":"^2.3.0"},"peerDependencies":{},"gitHead":"4074e1ab2f6e226f6481e83b8f31281fed27a1a1","bugs":{"url":"https://github.com/cdk-organizer/cdk-organizer/issues"},"homepage":"https://github.com/cdk-organizer/cdk-organizer#readme","_id":"@awslv/aws-cdk-organizer@1.1.0","_nodeVersion":"16.17.0","_npmVersion":"8.15.0","dist":{"integrity":"sha512-wGp0OIzBIbv4K6SGH37bcRLY8ZKUMYqvOI7nRBVlVGNbqxmszdgC8W6ZQGKMfl4oGpl/97lyNg2Fwg48lWt39A==","shasum":"1ccf7ba937bda671fc8489c8667a061aa8e63b80","tarball":"https://registry.npmjs.org/@awslv/aws-cdk-organizer/-/aws-cdk-organizer-1.1.0.tgz","fileCount":12,"unpackedSize":10053,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCs9qpSImlNUql7r4KsWLZ6y4kRmaxoazfMYwqeW8CF9wIgEvS9Q2gwgDbRFsiAjtjXxg49OnDaWOcmBLBp5StJjPc="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjGz7rACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqK0A/9FJ5apf1mgmKcxNnUGlITHALAQMcDMuAvWabJE4cLWPY27oGD\r\n3wz08b6vZOWSS4hKAOncrikkRdtp62e/DiTX193Q4u9PeKwJlRqlP7gSxz8a\r\niAE1uaQQDeQq8gwz14+lxf6o+FaB/Q9uiCfIYHIsjEPswIjqq5C22OpGTUDF\r\nkSWRuBq5JgRa9VnmriFfrp1J6a/ff4tZjKX6xamZb0Po9BY2wGVpyzxHsfRr\r\naTqcbcp6Az7MKr3qUdTM53Bft21oK9JHaz3ugIdJDInmLtBZkvnmcfeS+tld\r\nvYjxrLVSLFPdyFR5sO1M1z8a2qKtRNkB9txDgauZgL59Knb4+ZYhMM2mHRgg\r\nhwW/acclxfN5HztR2q90ys4mMCPkCiu3lgS7HNIh8Kc69iLKxgyfNn5rKVGs\r\nlVY6bVwOZ/rQVVX9KBFn8TvAHiJjuDD9bdEim6PzX2+2McRDVZWbhIC11qfR\r\n+8rquzjTBCPmCzFM2U5e7NscvHNulIyE1Ro0v0GRjy13LaJ4Jlv8IraVpxi7\r\niGL5QDLh+pV9Ouy/ztWI8hvoHhj99i38LC+eoxPNAQ6OaxJ/7ChrTkTPh1Cv\r\nsnjqKktXyUBl2QDPBTuaueOz6C/OHcHf5t4I6BqCsv9/FOAyS7R0bGx1znDf\r\nhVpeG/Lj9R1+exra+je4/oO/m/DMoAuLnBs=\r\n=CLMC\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"lucas.vieira","email":"lucas.vieira94@outlook.com"},"directories":{},"maintainers":[{"name":"lucas.vieira","email":"lucas.vieira94@outlook.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/aws-cdk-organizer_1.1.0_1662729963407_0.9266171530517764"},"_hasShrinkwrap":false},"1.2.0":{"name":"@awslv/aws-cdk-organizer","description":"CDK Organizer for AWS CDK TypeScript Library","version":"1.2.0","type":"commonjs","repository":{"type":"git","url":"git+ssh://git@github.com/cdk-organizer/cdk-organizer.git"},"main":"./src/index.js","typings":"./src/index.d.ts","dependencies":{"@awslv/cdk-organizer-core":"1.1.0","constructs":"^10.1.90","js-yaml":"^4.1.0","lodash":"^4.17.21","glob":"^8.0.3","aws-cdk-lib":"^2.41.0","tslib":"^2.3.0"},"peerDependencies":{},"gitHead":"cc9835ab5027f8ee9b2dec389b44c159f8f1ac3a","bugs":{"url":"https://github.com/cdk-organizer/cdk-organizer/issues"},"homepage":"https://github.com/cdk-organizer/cdk-organizer#readme","_id":"@awslv/aws-cdk-organizer@1.2.0","_nodeVersion":"16.17.0","_npmVersion":"8.15.0","dist":{"integrity":"sha512-YSQYsJP9HYJ7/a2m2qgZNao/KIE++gSEIzqx79j/SjQzN3H9Eli4jZE2HuzyWUOKzruRVyJFz/F4OTx9YVNXyw==","shasum":"1a51a76da7b0699b6472d1c75f0a500630686d0b","tarball":"https://registry.npmjs.org/@awslv/aws-cdk-organizer/-/aws-cdk-organizer-1.2.0.tgz","fileCount":12,"unpackedSize":10620,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICdxNJAXpLgS/z+KWMi6nhgR6z4Y6llc7Erq1E8b4eTjAiEAyRvd8mXcUkXiAux1xSBAjVFXxBzBU7QgA57TZLTuPcA="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjG1NSACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqFhw/+NtDJnluUq3h9jxUZVmRnByH8elhXdia2pG6hTplquqF9rE3K\r\nKUmunO6HPWn9FZc1a0Ng016GpgH9qX4wB8KpA/Jt9nJbv/o5vDnYS1BsPg6t\r\nSvdFCJnDGRm47H5saC2BrGXM4DsjHduot9W7fxuOa0ugxEnTjqeeGVYCbidh\r\nZhVpokgJgLKpYlP620nfW0nebJ6rDCKpIBvmuRL0CjOaNa6GPs0f/zU1AT8h\r\nNV0eqsaft+i3tm08b1JgiDFMTxI0q5x3N5urihixyIMGAUIqGQPDJQA6teNz\r\n4CGmvevPSYJvsrcaedC9STkQoYSY0m+klhnTCJ4p9mXzfchv5UGSQ3QRc2aB\r\nebFqI2aRcryRq2Sri2AlsUdjfFibDGuaQ2ns+JSJX2/SDxBE1b0/Bw3+H5/Y\r\n4qHJ1/5NoEXubnSc4Zo6PPlYkn4ccKFeHbOetJumcIB7rAygZDzLEWfN9WIY\r\n36Y1X9nlU0/VRRpttAdfFKrN2e+LvdA0p+GxkrwLjrLaQQ1QAVp9sUGgv2Oy\r\no5aL7gc0zYvXvB699L3ifZtx42STB6SKyrKVvYuY/Q3jwf++vYGdlDNsHs1O\r\nL5KQ3rsc6hl8sTAqOzJBCyT1a1AfWIOOZjqWew6SMn+/0cmS5A0KtxmhE+xP\r\nqLJkUsbOMG/bFCT0ZrNwwbNgxobCf7ondu0=\r\n=bpKJ\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"lucas.vieira","email":"lucas.vieira94@outlook.com"},"directories":{},"maintainers":[{"name":"lucas.vieira","email":"lucas.vieira94@outlook.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/aws-cdk-organizer_1.2.0_1662735186166_0.022472817293530012"},"_hasShrinkwrap":false}},"time":{"created":"2022-09-09T12:48:42.779Z","1.0.0":"2022-09-09T12:48:42.998Z","modified":"2022-09-09T14:53:06.465Z","1.1.0":"2022-09-09T13:26:03.633Z","1.2.0":"2022-09-09T14:53:06.363Z"},"maintainers":[{"name":"lucas.vieira","email":"lucas.vieira94@outlook.com"}],"description":"CDK Organizer for AWS CDK TypeScript Library","readme":"# CDK Organizer for AWS CDK TypeScript Library\n\nThis library contains the core features to handle CDK projects including:\n\n- Configuration Resolver\n- Stack Groups Loader\n- Naming Utils\n\nFull documentation: <https://cdk-organizer.github.io/>\n\n## Installation\n\n```bash\nnpm install --save @awslv/aws-cdk-organizer\n```\n\n## Project Structure\n\nTo apply the pattern purposed in this library for CDK projects, the following structure is required:\n\n```text\n.\n+-- cdk.json\n+-- bin/main.ts\n```\n\n### CDK Start Script\n\nThe content of the `bin/main.ts` file should be as follows:\n\n```typescript\n#!/usr/bin/env node\nimport * as cdk from 'aws-cdk-lib';\nimport { StackGroupLoader } from \"@awslv/cdk-organizer-core\";\n\nconst app = new cdk.App();\nconst loader = new StackGroupLoader(app)\n\nloader.synth().then(() => console.log(\"Stack Groups Synthesized\"));\n```\n\n## Context Variables\n\nThe following context variables are required to the CDK Organizer to work properly:\n\n- `env`\n- `region`\n\nThe variables can be set in the `cdk.json` file:\n\n```json\n{\n  ...\n  \"context\": {\n    ...\n    \"env\": \"dev\",\n    \"region\": \"us-east-1\"\n    ...\n  }\n  ...\n}\n```\n\nOr passed as arguments to the CDK CLI:\n\n```bash\ncdk synth --context env=dev --context region=us-east-1\n```\n\n> The `env` variable can also be set as an environment variable `CDK_ENV`.\n\n### Stack Structure\n\nthe stack class needs to inherit from class `import { Stack } from '@awslv/aws-cdk-organizer'` for AWS CDK.\n\n#### AWS CDK\n\n```typescript\nimport { Stack } from '@awslv/aws-cdk-organizer';\nimport { StackGroup } from '@awslv/aws-cdk-organizer';\nimport { StackProps } from 'aws-cdk-lib';\nimport { Bucket } from 'aws-cdk-lib/aws-s3';\nimport { Construct } from 'constructs';\n\nexport type S3StackProps = StackProps & {\n  bucketName: string;\n};\n\nexport class S3Stack extends Stack<S3StackProps> {\n  public bucket: Bucket;\n\n  constructor(\n    stackGroup: StackGroup,\n    scope: Construct,\n    id: string,\n    props: S3StackProps\n  ) {\n    super(stackGroup, scope, id, props);\n\n    this.bucket = new Bucket(this, 'Bucket', {\n      bucketName: this.getBucketName(props.bucketName)\n    });\n  }\n}\n```\n\n### Stack Group Structure\n\nCreate a `stacks` folder in the root of the project and structure it as follows:\n\n```text\n.\n+-- cdk.json\n+-- bin/main.ts\n+-- stacks/\n| +-- <groupName>/\n|   +-- stacks.ts\n```\n\nThe stack groups files follow this pattern:\n\n#### AWS CDK\n\n```typescript\nimport { StackGroup } from '@awslv/aws-cdk-organizer';\nimport { BaseConfig } from '@awslv/cdk-organizer-core';\nimport { Bucket } from 'aws-cdk-lib/aws-s3';\nimport { S3Stack } from '../../templates/s3-stack';\n\ntype StorageStackGroupProps = {\n  bucketName: string;\n} & BaseConfig;\n\nexport class StorageStackGroup extends StackGroup<StorageStackGroupProps> {\n  public bucket!: Bucket;\n\n  override async loadStacks(): Promise<void> {\n    this.bucket = new S3Stack(this, this.app, this.getStackName('bucket'), {\n      bucketName: this.data.bucketName,\n    }).bucket;\n  }\n}\n```\n\n> If you are using `typescript` version <4.3 you need to remove the `override` keyword.\n\n#### Using Stack Attributes from Other Stack Groups\n\nIn some cases, you may want to use the attributes of another stack group. For example, refer the DNS Hosted Zone created by a shared stack group.\n\nTo resolve the group use the `this.resolveGroup` function in the stack group class, like the example below:\n\n```typescript\nimport { StackGroup } from '@awslv/aws-cdk-organizer';\nimport { RoleStack } from '../../templates/role-stack';\nimport { StorageStackGroup } from '../storage/stacks';\n\nexport class IamStackGroup extends StackGroup {\n  override async loadStacks(): Promise<void> {\n    const storageGroup = await this.resolveGroup(StorageStackGroup);\n\n    new RoleStack(this, this.app, this.getStackName('role'), {\n      bucket: storageGroup.bucket,\n    });\n  }\n}\n```\n\n> If you are using `typescript` version <4.3 you need to remove the `override` keyword.\n\nThe function `getStackName` generates the stack name based on following pattern.\n\n**Pattern**: `{module_path}-{name}-{region}-{env}`\n\nConsider the following example:\n\n**module_path**: `myproject.myapp.www`\n**name**: `spa`\n**region**: `us-east-1`\n**env**: `dev`\n\nStack name will be:\n\n- `myproject-myapp-www-spa-us-east-1-dev`.\n\n### Config Structure\n\nCreate a `config` folder in the root of the project and structure it as follows:\n\n```text\n.\n+-- cdk.json\n+-- bin/main.ts\n+-- config/\n| +-- <env>/\n|   +-- config.yaml\n|   +-- <region>/\n|     +-- config.yaml\n|     +-- <groupName>/\n|         +-- config.yaml\n```\n\nThe first two levels are reserved to the environment name and the region name, the next levels needs to match the stack group structure.\n\nExample:\n\n```text\n.\n+-- cdk.json\n+-- bin/main.ts\n+-- config/\n| +-- config.yaml\n| +-- dev/\n|   +-- config.yaml\n|   +-- us-east-1/\n|     +-- config.yaml\n|     +-- app1/\n|       +-- config.yaml\n+-- stacks/\n| +-- app1/\n|   +-- stacks.ts\n+-- templates/\n|   +-- stacks/\n```\n\n### Examples\n\n- [AWS CDK](https://github.com/lucasvieirasilva/cdk-organizer/tree/main/examples/typescript/aws-cdk)\n","readmeFilename":"README.md","homepage":"https://github.com/cdk-organizer/cdk-organizer#readme","repository":{"type":"git","url":"git+ssh://git@github.com/cdk-organizer/cdk-organizer.git"},"bugs":{"url":"https://github.com/cdk-organizer/cdk-organizer/issues"}}