@btc-embedded/cdk-extensions 0.9.4 → 0.9.6

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 (67) hide show
  1. package/.backstage/catalog-info.yaml +23 -0
  2. package/.jsii +2332 -1370
  3. package/API.md +1070 -323
  4. package/CHANGELOG.md +24 -0
  5. package/docs/RFC003-referencing-platform-components.md +125 -0
  6. package/docs/adrs/0001-use-adrs.md +36 -0
  7. package/docs/index.md +20 -0
  8. package/lib/constructs/EventPipe.js +1 -1
  9. package/lib/constructs/S3Bucket.js +1 -1
  10. package/lib/constructs/SecureRestApi.js +7 -6
  11. package/lib/constructs/SecureRestApiV2.d.ts +6 -7
  12. package/lib/constructs/SecureRestApiV2.js +17 -25
  13. package/lib/extensions/ApiGatewayExtension.js +1 -1
  14. package/lib/extensions/ApplicationLoadBalancerExtension.js +1 -1
  15. package/lib/extensions/ApplicationLoadBalancerExtensionV2.d.ts +4 -4
  16. package/lib/extensions/ApplicationLoadBalancerExtensionV2.js +9 -15
  17. package/lib/extensions/CloudMapExtension.d.ts +0 -6
  18. package/lib/extensions/CloudMapExtension.js +5 -13
  19. package/lib/extensions/DeactivatableServiceExtension.js +1 -1
  20. package/lib/extensions/DocumentDbAccessExtension.d.ts +2 -1
  21. package/lib/extensions/DocumentDbAccessExtension.js +9 -13
  22. package/lib/extensions/DomainEventMessagingExtension.js +1 -1
  23. package/lib/extensions/ExtraContainerExtension.js +1 -1
  24. package/lib/extensions/HTTPApiExtension.js +15 -24
  25. package/lib/extensions/LogExtension.js +1 -1
  26. package/lib/extensions/ModifyContainerDefinitionExtension.js +1 -1
  27. package/lib/extensions/ModifyTaskDefinitionExtension.js +1 -1
  28. package/lib/extensions/OpenTelemetryExtension.js +1 -1
  29. package/lib/extensions/PostgresDbAccessExtension.js +1 -1
  30. package/lib/extensions/SharedVolumeExtension.js +1 -1
  31. package/lib/extensions/TcpKeepAliveExtension.js +1 -1
  32. package/lib/platform/ApiGateway.js +1 -1
  33. package/lib/platform/ApiGatewayV2.d.ts +16 -6
  34. package/lib/platform/ApiGatewayV2.js +34 -18
  35. package/lib/platform/ApplicationLoadBalancer.js +1 -1
  36. package/lib/platform/ApplicationLoadBalancerV2.d.ts +21 -8
  37. package/lib/platform/ApplicationLoadBalancerV2.js +47 -33
  38. package/lib/platform/CognitoUserPool.d.ts +52 -5
  39. package/lib/platform/CognitoUserPool.js +98 -15
  40. package/lib/platform/DefaultUserPoolClients.d.ts +1 -1
  41. package/lib/platform/DefaultUserPoolClients.js +3 -3
  42. package/lib/platform/DocumentDB.d.ts +15 -1
  43. package/lib/platform/DocumentDB.js +36 -17
  44. package/lib/platform/PrivateDnsNamespace.d.ts +10 -3
  45. package/lib/platform/PrivateDnsNamespace.js +33 -18
  46. package/lib/platform/ResourceServer.js +1 -1
  47. package/lib/platform/Vpc.d.ts +17 -3
  48. package/lib/platform/Vpc.js +32 -13
  49. package/lib/platform/index.d.ts +0 -2
  50. package/lib/platform/index.js +1 -3
  51. package/lib/utils/ImportValue.d.ts +10 -3
  52. package/lib/utils/ImportValue.js +12 -15
  53. package/lib/utils/StackParameter.d.ts +35 -0
  54. package/lib/utils/StackParameter.js +65 -0
  55. package/lib/utils/exportStackInfo.d.ts +28 -0
  56. package/lib/utils/exportStackInfo.js +29 -0
  57. package/lib/utils/functions.js +3 -3
  58. package/lib/utils/index.d.ts +2 -0
  59. package/lib/utils/index.js +3 -1
  60. package/mkdocs.yml +8 -0
  61. package/package.json +1 -1
  62. package/lib/platform/ApiUserPoolClient.d.ts +0 -32
  63. package/lib/platform/ApiUserPoolClient.js +0 -47
  64. package/lib/platform/ApplicationUserPoolClient.d.ts +0 -51
  65. package/lib/platform/ApplicationUserPoolClient.js +0 -66
  66. /package/{rfcs/001-api-gateway.md → docs/RFC001-api-gateway.md} +0 -0
  67. /package/{rfcs/002-developer-stacks.md → docs/RFC002-developer-stacks.md} +0 -0
@@ -1,6 +1,11 @@
1
- import { CfnOutput } from "aws-cdk-lib";
2
1
  import { Construct } from "constructs";
2
+ /**
3
+ * @deprecated use {@link StackParameter} instead
4
+ */
3
5
  export declare function importValue(prefix: string, name: string, ...rest: string[]): string;
6
+ /**
7
+ * @deprecated use {@link StackParameter} instead
8
+ */
4
9
  export declare function createImporter(...prefix: string[]): (...parts: string[]) => string;
5
10
  /**
6
11
  *
@@ -9,9 +14,11 @@ export declare function createImporter(...prefix: string[]): (...parts: string[]
9
14
  * @param scope the scope under which the Cfn construct will be created
10
15
  * @param prefix an optional identifier to prefix the exported parameter
11
16
  * @returns a function that creates a CfnOutput with the given key and value
17
+ *
18
+ * @deprecated use {@link StackParameter} instead
12
19
  */
13
- export declare function createExporter(scope: Construct, prefix?: string): ({ name, key, value, }: {
20
+ export declare function createExporter(scope: Construct, prefix?: string | string[]): ({ name, key, value, }: {
14
21
  name: string;
15
22
  key: string;
16
23
  value: string;
17
- }) => CfnOutput;
24
+ }) => import("aws-cdk-lib").CfnOutput;
@@ -4,10 +4,16 @@ exports.importValue = importValue;
4
4
  exports.createImporter = createImporter;
5
5
  exports.createExporter = createExporter;
6
6
  const aws_cdk_lib_1 = require("aws-cdk-lib");
7
- const lodash_1 = require("lodash");
7
+ const StackParameter_1 = require("./StackParameter");
8
+ /**
9
+ * @deprecated use {@link StackParameter} instead
10
+ */
8
11
  function importValue(prefix, name, ...rest) {
9
12
  return createImporter(prefix)(...[name, ...rest]);
10
13
  }
14
+ /**
15
+ * @deprecated use {@link StackParameter} instead
16
+ */
11
17
  function createImporter(...prefix) {
12
18
  return (...parts) => aws_cdk_lib_1.Fn.importValue(`${[...prefix, ...parts].join(":")}`);
13
19
  }
@@ -18,22 +24,13 @@ function createImporter(...prefix) {
18
24
  * @param scope the scope under which the Cfn construct will be created
19
25
  * @param prefix an optional identifier to prefix the exported parameter
20
26
  * @returns a function that creates a CfnOutput with the given key and value
27
+ *
28
+ * @deprecated use {@link StackParameter} instead
21
29
  */
22
30
  function createExporter(scope, prefix) {
23
- const stackNamePrefix = aws_cdk_lib_1.Stack.of(scope).stackName;
24
- if (prefix && (0, lodash_1.kebabCase)(prefix) !== prefix) {
25
- throw new Error(`Parameter prefix must be kebab-case, got: ${prefix}`);
26
- }
27
31
  return ({ name, key, value, }) => {
28
- if ((0, lodash_1.kebabCase)(key) !== key) {
29
- throw new Error(`Parameter export key must be kebab-case, got: ${key}`);
30
- }
31
- return new aws_cdk_lib_1.CfnOutput(scope, name, {
32
- value,
33
- description: name,
34
- // filter any falsy values
35
- exportName: `${[stackNamePrefix, prefix, key].filter(Boolean).join(":")}`,
36
- });
32
+ const handler = new StackParameter_1.StackParameter({ key, name, prefix: prefix ?? [] });
33
+ return handler.export(scope, value);
37
34
  };
38
35
  }
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSW1wb3J0VmFsdWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvSW1wb3J0VmFsdWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFJQSxrQ0FFQztBQUVELHdDQUdDO0FBVUQsd0NBMkJDO0FBaERELDZDQUFtRDtBQUVuRCxtQ0FBbUM7QUFFbkMsU0FBZ0IsV0FBVyxDQUFDLE1BQWMsRUFBRSxJQUFZLEVBQUUsR0FBRyxJQUFjO0lBQ3pFLE9BQU8sY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQ3BELENBQUM7QUFFRCxTQUFnQixjQUFjLENBQUMsR0FBRyxNQUFnQjtJQUNoRCxPQUFPLENBQUMsR0FBRyxLQUFlLEVBQUUsRUFBRSxDQUM1QixnQkFBRSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsR0FBRyxNQUFNLEVBQUUsR0FBRyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3pELENBQUM7QUFFRDs7Ozs7OztHQU9HO0FBQ0gsU0FBZ0IsY0FBYyxDQUFDLEtBQWdCLEVBQUUsTUFBZTtJQUM5RCxNQUFNLGVBQWUsR0FBRyxtQkFBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFFbEQsSUFBSSxNQUFNLElBQUksSUFBQSxrQkFBUyxFQUFDLE1BQU0sQ0FBQyxLQUFLLE1BQU0sRUFBRSxDQUFDO1FBQzNDLE1BQU0sSUFBSSxLQUFLLENBQUMsNkNBQTZDLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDekUsQ0FBQztJQUVELE9BQU8sQ0FBQyxFQUNOLElBQUksRUFDSixHQUFHLEVBQ0gsS0FBSyxHQUtOLEVBQUUsRUFBRTtRQUNILElBQUksSUFBQSxrQkFBUyxFQUFDLEdBQUcsQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1lBQzNCLE1BQU0sSUFBSSxLQUFLLENBQUMsaURBQWlELEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDMUUsQ0FBQztRQUVELE9BQU8sSUFBSSx1QkFBUyxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUU7WUFDaEMsS0FBSztZQUNMLFdBQVcsRUFBRSxJQUFJO1lBQ2pCLDBCQUEwQjtZQUMxQixVQUFVLEVBQUUsR0FBRyxDQUFDLGVBQWUsRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRTtTQUMxRSxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2ZuT3V0cHV0LCBGbiwgU3RhY2sgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBrZWJhYkNhc2UgfSBmcm9tIFwibG9kYXNoXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbXBvcnRWYWx1ZShwcmVmaXg6IHN0cmluZywgbmFtZTogc3RyaW5nLCAuLi5yZXN0OiBzdHJpbmdbXSkge1xuICByZXR1cm4gY3JlYXRlSW1wb3J0ZXIocHJlZml4KSguLi5bbmFtZSwgLi4ucmVzdF0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlSW1wb3J0ZXIoLi4ucHJlZml4OiBzdHJpbmdbXSkge1xuICByZXR1cm4gKC4uLnBhcnRzOiBzdHJpbmdbXSkgPT5cbiAgICBGbi5pbXBvcnRWYWx1ZShgJHtbLi4ucHJlZml4LCAuLi5wYXJ0c10uam9pbihcIjpcIil9YCk7XG59XG5cbi8qKlxuICpcbiAqIFJldHVybnMgYSBmdW5jdGlvbiB0byBzaW1wbGlmeSB2YWx1ZSBleHBvcnQgYnkgZW5mb3JjaW5nIHRoZSBuYW1pbmcgc2NoZW1hLlxuICpcbiAqIEBwYXJhbSBzY29wZSB0aGUgc2NvcGUgdW5kZXIgd2hpY2ggdGhlIENmbiBjb25zdHJ1Y3Qgd2lsbCBiZSBjcmVhdGVkXG4gKiBAcGFyYW0gcHJlZml4IGFuIG9wdGlvbmFsIGlkZW50aWZpZXIgdG8gcHJlZml4IHRoZSBleHBvcnRlZCBwYXJhbWV0ZXJcbiAqIEByZXR1cm5zIGEgZnVuY3Rpb24gdGhhdCBjcmVhdGVzIGEgQ2ZuT3V0cHV0IHdpdGggdGhlIGdpdmVuIGtleSBhbmQgdmFsdWVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUV4cG9ydGVyKHNjb3BlOiBDb25zdHJ1Y3QsIHByZWZpeD86IHN0cmluZykge1xuICBjb25zdCBzdGFja05hbWVQcmVmaXggPSBTdGFjay5vZihzY29wZSkuc3RhY2tOYW1lO1xuXG4gIGlmIChwcmVmaXggJiYga2ViYWJDYXNlKHByZWZpeCkgIT09IHByZWZpeCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgUGFyYW1ldGVyIHByZWZpeCBtdXN0IGJlIGtlYmFiLWNhc2UsIGdvdDogJHtwcmVmaXh9YCk7XG4gIH1cblxuICByZXR1cm4gKHtcbiAgICBuYW1lLFxuICAgIGtleSxcbiAgICB2YWx1ZSxcbiAgfToge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBrZXk6IHN0cmluZztcbiAgICB2YWx1ZTogc3RyaW5nO1xuICB9KSA9PiB7XG4gICAgaWYgKGtlYmFiQ2FzZShrZXkpICE9PSBrZXkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgUGFyYW1ldGVyIGV4cG9ydCBrZXkgbXVzdCBiZSBrZWJhYi1jYXNlLCBnb3Q6ICR7a2V5fWApO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgQ2ZuT3V0cHV0KHNjb3BlLCBuYW1lLCB7XG4gICAgICB2YWx1ZSxcbiAgICAgIGRlc2NyaXB0aW9uOiBuYW1lLFxuICAgICAgLy8gZmlsdGVyIGFueSBmYWxzeSB2YWx1ZXNcbiAgICAgIGV4cG9ydE5hbWU6IGAke1tzdGFja05hbWVQcmVmaXgsIHByZWZpeCwga2V5XS5maWx0ZXIoQm9vbGVhbikuam9pbihcIjpcIil9YCxcbiAgICB9KTtcbiAgfTtcbn1cbiJdfQ==
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSW1wb3J0VmFsdWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvSW1wb3J0VmFsdWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFPQSxrQ0FFQztBQUtELHdDQUdDO0FBWUQsd0NBYUM7QUExQ0QsNkNBQWlDO0FBRWpDLHFEQUFrRDtBQUVsRDs7R0FFRztBQUNILFNBQWdCLFdBQVcsQ0FBQyxNQUFjLEVBQUUsSUFBWSxFQUFFLEdBQUcsSUFBYztJQUN6RSxPQUFPLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUNwRCxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixjQUFjLENBQUMsR0FBRyxNQUFnQjtJQUNoRCxPQUFPLENBQUMsR0FBRyxLQUFlLEVBQUUsRUFBRSxDQUM1QixnQkFBRSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsR0FBRyxNQUFNLEVBQUUsR0FBRyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3pELENBQUM7QUFFRDs7Ozs7Ozs7O0dBU0c7QUFDSCxTQUFnQixjQUFjLENBQUMsS0FBZ0IsRUFBRSxNQUEwQjtJQUN6RSxPQUFPLENBQUMsRUFDTixJQUFJLEVBQ0osR0FBRyxFQUNILEtBQUssR0FLTixFQUFFLEVBQUU7UUFDSCxNQUFNLE9BQU8sR0FBRyxJQUFJLCtCQUFjLENBQUMsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxNQUFNLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztRQUN4RSxPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3RDLENBQUMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGbiB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IFN0YWNrUGFyYW1ldGVyIH0gZnJvbSBcIi4vU3RhY2tQYXJhbWV0ZXJcIjtcblxuLyoqXG4gKiBAZGVwcmVjYXRlZCB1c2Uge0BsaW5rIFN0YWNrUGFyYW1ldGVyfSBpbnN0ZWFkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbXBvcnRWYWx1ZShwcmVmaXg6IHN0cmluZywgbmFtZTogc3RyaW5nLCAuLi5yZXN0OiBzdHJpbmdbXSkge1xuICByZXR1cm4gY3JlYXRlSW1wb3J0ZXIocHJlZml4KSguLi5bbmFtZSwgLi4ucmVzdF0pO1xufVxuXG4vKipcbiAqIEBkZXByZWNhdGVkIHVzZSB7QGxpbmsgU3RhY2tQYXJhbWV0ZXJ9IGluc3RlYWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUltcG9ydGVyKC4uLnByZWZpeDogc3RyaW5nW10pIHtcbiAgcmV0dXJuICguLi5wYXJ0czogc3RyaW5nW10pID0+XG4gICAgRm4uaW1wb3J0VmFsdWUoYCR7Wy4uLnByZWZpeCwgLi4ucGFydHNdLmpvaW4oXCI6XCIpfWApO1xufVxuXG4vKipcbiAqXG4gKiBSZXR1cm5zIGEgZnVuY3Rpb24gdG8gc2ltcGxpZnkgdmFsdWUgZXhwb3J0IGJ5IGVuZm9yY2luZyB0aGUgbmFtaW5nIHNjaGVtYS5cbiAqXG4gKiBAcGFyYW0gc2NvcGUgdGhlIHNjb3BlIHVuZGVyIHdoaWNoIHRoZSBDZm4gY29uc3RydWN0IHdpbGwgYmUgY3JlYXRlZFxuICogQHBhcmFtIHByZWZpeCBhbiBvcHRpb25hbCBpZGVudGlmaWVyIHRvIHByZWZpeCB0aGUgZXhwb3J0ZWQgcGFyYW1ldGVyXG4gKiBAcmV0dXJucyBhIGZ1bmN0aW9uIHRoYXQgY3JlYXRlcyBhIENmbk91dHB1dCB3aXRoIHRoZSBnaXZlbiBrZXkgYW5kIHZhbHVlXG4gKlxuICogQGRlcHJlY2F0ZWQgdXNlIHtAbGluayBTdGFja1BhcmFtZXRlcn0gaW5zdGVhZFxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRXhwb3J0ZXIoc2NvcGU6IENvbnN0cnVjdCwgcHJlZml4Pzogc3RyaW5nIHwgc3RyaW5nW10pIHtcbiAgcmV0dXJuICh7XG4gICAgbmFtZSxcbiAgICBrZXksXG4gICAgdmFsdWUsXG4gIH06IHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAga2V5OiBzdHJpbmc7XG4gICAgdmFsdWU6IHN0cmluZztcbiAgfSkgPT4ge1xuICAgIGNvbnN0IGhhbmRsZXIgPSBuZXcgU3RhY2tQYXJhbWV0ZXIoeyBrZXksIG5hbWUsIHByZWZpeDogcHJlZml4ID8/IFtdIH0pO1xuICAgIHJldHVybiBoYW5kbGVyLmV4cG9ydChzY29wZSwgdmFsdWUpO1xuICB9O1xufVxuIl19
@@ -0,0 +1,35 @@
1
+ import { CfnOutput } from "aws-cdk-lib";
2
+ import { Construct } from "constructs";
3
+ export interface StackParameterOptions {
4
+ readonly prefix: string | string[];
5
+ readonly key: string;
6
+ readonly name: string;
7
+ readonly version?: number;
8
+ }
9
+ /**
10
+ * Provides means to export and import stack parameters.
11
+ *
12
+ */
13
+ export declare class StackParameter {
14
+ private readonly prefixes;
15
+ private readonly name;
16
+ private readonly version?;
17
+ /**
18
+ * Construct a stack parameter.
19
+ *
20
+ * The stack parameter is characterized by a prefix, a key, a descriptive name, and an optional version.
21
+ */
22
+ constructor({ key, name, prefix, version }: StackParameterOptions);
23
+ /**
24
+ * Import the parameter as {stackName}:{prefix}-v{version}:{key}.
25
+ *
26
+ * -v{version} is only emitted when the version is greater than 1.
27
+ */
28
+ import(stackName: string): string;
29
+ /**
30
+ * Export the parameter as {stackName}:{prefix}-v{version}:{key}.
31
+ *
32
+ * -v{version} is only emitted when the version is greater than 1.
33
+ */
34
+ export(scope: Construct, value: string): CfnOutput;
35
+ }
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.StackParameter = void 0;
5
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
+ const aws_cdk_lib_1 = require("aws-cdk-lib");
7
+ const lodash_1 = require("lodash");
8
+ function createKeyIdentifier(version, ...prefixes) {
9
+ const validatedPrefixes = prefixes
10
+ .filter((p) => p.length > 0)
11
+ .map((p, idx) => {
12
+ if (idx > 0 && (0, lodash_1.kebabCase)(p) !== p) {
13
+ throw new Error(`prefix '${p}' must be kebab-case (like '${(0, lodash_1.kebabCase)(p)}')`);
14
+ }
15
+ return p;
16
+ });
17
+ if (validatedPrefixes.length < 1) {
18
+ throw new Error(`key must consist of at least one non-empty prefix`);
19
+ }
20
+ // the verion suffix should be either at first or 2nd prefix and only if v > 1
21
+ const shouldGetVersion = (idx) => version && version > 1 && idx === Math.min(prefixes.length, 2) - 1;
22
+ return prefixes
23
+ .map((p, idx) => (shouldGetVersion(idx) ? `${p}-v${version}` : p))
24
+ .join(":");
25
+ }
26
+ /**
27
+ * Provides means to export and import stack parameters.
28
+ *
29
+ */
30
+ class StackParameter {
31
+ /**
32
+ * Construct a stack parameter.
33
+ *
34
+ * The stack parameter is characterized by a prefix, a key, a descriptive name, and an optional version.
35
+ */
36
+ constructor({ key, name, prefix, version }) {
37
+ const p = (0, lodash_1.isArray)(prefix) ? prefix : [prefix];
38
+ this.prefixes = [...p, key];
39
+ this.version = version;
40
+ this.name = name;
41
+ }
42
+ /**
43
+ * Import the parameter as {stackName}:{prefix}-v{version}:{key}.
44
+ *
45
+ * -v{version} is only emitted when the version is greater than 1.
46
+ */
47
+ import(stackName) {
48
+ return aws_cdk_lib_1.Fn.importValue(createKeyIdentifier(this.version, stackName, ...this.prefixes));
49
+ }
50
+ /**
51
+ * Export the parameter as {stackName}:{prefix}-v{version}:{key}.
52
+ *
53
+ * -v{version} is only emitted when the version is greater than 1.
54
+ */
55
+ export(scope, value) {
56
+ return new aws_cdk_lib_1.CfnOutput(scope, this.name, {
57
+ value,
58
+ exportName: createKeyIdentifier(this.version, aws_cdk_lib_1.Stack.of(scope).stackName, ...this.prefixes),
59
+ });
60
+ }
61
+ }
62
+ exports.StackParameter = StackParameter;
63
+ _a = JSII_RTTI_SYMBOL_1;
64
+ StackParameter[_a] = { fqn: "@btc-embedded/cdk-extensions.StackParameter", version: "0.9.6" };
65
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3RhY2tQYXJhbWV0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvU3RhY2tQYXJhbWV0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw2Q0FBbUQ7QUFFbkQsbUNBQTRDO0FBRTVDLFNBQVMsbUJBQW1CLENBQzFCLE9BQTJCLEVBQzNCLEdBQUcsUUFBa0I7SUFFckIsTUFBTSxpQkFBaUIsR0FBRyxRQUFRO1NBQy9CLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7U0FDM0IsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxFQUFFO1FBQ2QsSUFBSSxHQUFHLEdBQUcsQ0FBQyxJQUFJLElBQUEsa0JBQVMsRUFBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNsQyxNQUFNLElBQUksS0FBSyxDQUNiLFdBQVcsQ0FBQywrQkFBK0IsSUFBQSxrQkFBUyxFQUFDLENBQUMsQ0FBQyxJQUFJLENBQzVELENBQUM7UUFDSixDQUFDO1FBQ0QsT0FBTyxDQUFDLENBQUM7SUFDWCxDQUFDLENBQUMsQ0FBQztJQUVMLElBQUksaUJBQWlCLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ2pDLE1BQU0sSUFBSSxLQUFLLENBQUMsbURBQW1ELENBQUMsQ0FBQztJQUN2RSxDQUFDO0lBRUQsOEVBQThFO0lBQzlFLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxHQUFXLEVBQUUsRUFBRSxDQUN2QyxPQUFPLElBQUksT0FBTyxHQUFHLENBQUMsSUFBSSxHQUFHLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUVyRSxPQUFPLFFBQVE7U0FDWixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDakUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2YsQ0FBQztBQVNEOzs7R0FHRztBQUNILE1BQWEsY0FBYztJQUt6Qjs7OztPQUlHO0lBQ0gsWUFBWSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBeUI7UUFDL0QsTUFBTSxDQUFDLEdBQUcsSUFBQSxnQkFBTyxFQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDOUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQzVCLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0lBQ25CLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksTUFBTSxDQUFDLFNBQWlCO1FBQzdCLE9BQU8sZ0JBQUUsQ0FBQyxXQUFXLENBQ25CLG1CQUFtQixDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUMvRCxDQUFDO0lBQ0osQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsS0FBZ0IsRUFBRSxLQUFhO1FBQzNDLE9BQU8sSUFBSSx1QkFBUyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ3JDLEtBQUs7WUFDTCxVQUFVLEVBQUUsbUJBQW1CLENBQzdCLElBQUksQ0FBQyxPQUFPLEVBQ1osbUJBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsU0FBUyxFQUN6QixHQUFHLElBQUksQ0FBQyxRQUFRLENBQ2pCO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7QUExQ0gsd0NBMkNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2ZuT3V0cHV0LCBGbiwgU3RhY2sgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBpc0FycmF5LCBrZWJhYkNhc2UgfSBmcm9tIFwibG9kYXNoXCI7XG5cbmZ1bmN0aW9uIGNyZWF0ZUtleUlkZW50aWZpZXIoXG4gIHZlcnNpb246IG51bWJlciB8IHVuZGVmaW5lZCxcbiAgLi4ucHJlZml4ZXM6IHN0cmluZ1tdXG4pIHtcbiAgY29uc3QgdmFsaWRhdGVkUHJlZml4ZXMgPSBwcmVmaXhlc1xuICAgIC5maWx0ZXIoKHApID0+IHAubGVuZ3RoID4gMClcbiAgICAubWFwKChwLCBpZHgpID0+IHtcbiAgICAgIGlmIChpZHggPiAwICYmIGtlYmFiQ2FzZShwKSAhPT0gcCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYHByZWZpeCAnJHtwfScgbXVzdCBiZSBrZWJhYi1jYXNlIChsaWtlICcke2tlYmFiQ2FzZShwKX0nKWAsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcDtcbiAgICB9KTtcblxuICBpZiAodmFsaWRhdGVkUHJlZml4ZXMubGVuZ3RoIDwgMSkge1xuICAgIHRocm93IG5ldyBFcnJvcihga2V5IG11c3QgY29uc2lzdCBvZiBhdCBsZWFzdCBvbmUgbm9uLWVtcHR5IHByZWZpeGApO1xuICB9XG5cbiAgLy8gdGhlIHZlcmlvbiBzdWZmaXggc2hvdWxkIGJlIGVpdGhlciBhdCBmaXJzdCBvciAybmQgcHJlZml4IGFuZCBvbmx5IGlmIHYgPiAxXG4gIGNvbnN0IHNob3VsZEdldFZlcnNpb24gPSAoaWR4OiBudW1iZXIpID0+XG4gICAgdmVyc2lvbiAmJiB2ZXJzaW9uID4gMSAmJiBpZHggPT09IE1hdGgubWluKHByZWZpeGVzLmxlbmd0aCwgMikgLSAxO1xuXG4gIHJldHVybiBwcmVmaXhlc1xuICAgIC5tYXAoKHAsIGlkeCkgPT4gKHNob3VsZEdldFZlcnNpb24oaWR4KSA/IGAke3B9LXYke3ZlcnNpb259YCA6IHApKVxuICAgIC5qb2luKFwiOlwiKTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTdGFja1BhcmFtZXRlck9wdGlvbnMge1xuICByZWFkb25seSBwcmVmaXg6IHN0cmluZyB8IHN0cmluZ1tdO1xuICByZWFkb25seSBrZXk6IHN0cmluZztcbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICByZWFkb25seSB2ZXJzaW9uPzogbnVtYmVyO1xufVxuXG4vKipcbiAqIFByb3ZpZGVzIG1lYW5zIHRvIGV4cG9ydCBhbmQgaW1wb3J0IHN0YWNrIHBhcmFtZXRlcnMuXG4gKlxuICovXG5leHBvcnQgY2xhc3MgU3RhY2tQYXJhbWV0ZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IHByZWZpeGVzOiBzdHJpbmdbXTtcbiAgcHJpdmF0ZSByZWFkb25seSBuYW1lOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgdmVyc2lvbj86IG51bWJlcjtcblxuICAvKipcbiAgICogQ29uc3RydWN0IGEgc3RhY2sgcGFyYW1ldGVyLlxuICAgKlxuICAgKiBUaGUgc3RhY2sgcGFyYW1ldGVyIGlzIGNoYXJhY3Rlcml6ZWQgYnkgYSBwcmVmaXgsIGEga2V5LCBhIGRlc2NyaXB0aXZlIG5hbWUsIGFuZCBhbiBvcHRpb25hbCB2ZXJzaW9uLlxuICAgKi9cbiAgY29uc3RydWN0b3IoeyBrZXksIG5hbWUsIHByZWZpeCwgdmVyc2lvbiB9OiBTdGFja1BhcmFtZXRlck9wdGlvbnMpIHtcbiAgICBjb25zdCBwID0gaXNBcnJheShwcmVmaXgpID8gcHJlZml4IDogW3ByZWZpeF07XG4gICAgdGhpcy5wcmVmaXhlcyA9IFsuLi5wLCBrZXldO1xuICAgIHRoaXMudmVyc2lvbiA9IHZlcnNpb247XG4gICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbXBvcnQgdGhlIHBhcmFtZXRlciBhcyB7c3RhY2tOYW1lfTp7cHJlZml4fS12e3ZlcnNpb259OntrZXl9LlxuICAgKlxuICAgKiAtdnt2ZXJzaW9ufSBpcyBvbmx5IGVtaXR0ZWQgd2hlbiB0aGUgdmVyc2lvbiBpcyBncmVhdGVyIHRoYW4gMS5cbiAgICovXG4gIHB1YmxpYyBpbXBvcnQoc3RhY2tOYW1lOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gRm4uaW1wb3J0VmFsdWUoXG4gICAgICBjcmVhdGVLZXlJZGVudGlmaWVyKHRoaXMudmVyc2lvbiwgc3RhY2tOYW1lLCAuLi50aGlzLnByZWZpeGVzKSxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4cG9ydCB0aGUgcGFyYW1ldGVyIGFzIHtzdGFja05hbWV9OntwcmVmaXh9LXZ7dmVyc2lvbn06e2tleX0uXG4gICAqXG4gICAqIC12e3ZlcnNpb259IGlzIG9ubHkgZW1pdHRlZCB3aGVuIHRoZSB2ZXJzaW9uIGlzIGdyZWF0ZXIgdGhhbiAxLlxuICAgKi9cbiAgcHVibGljIGV4cG9ydChzY29wZTogQ29uc3RydWN0LCB2YWx1ZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIG5ldyBDZm5PdXRwdXQoc2NvcGUsIHRoaXMubmFtZSwge1xuICAgICAgdmFsdWUsXG4gICAgICBleHBvcnROYW1lOiBjcmVhdGVLZXlJZGVudGlmaWVyKFxuICAgICAgICB0aGlzLnZlcnNpb24sXG4gICAgICAgIFN0YWNrLm9mKHNjb3BlKS5zdGFja05hbWUsXG4gICAgICAgIC4uLnRoaXMucHJlZml4ZXMsXG4gICAgICApLFxuICAgIH0pO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,28 @@
1
+ import { CfnOutput } from "aws-cdk-lib";
2
+ import { Construct } from "constructs";
3
+ /**
4
+ * An entry for the stored stack configuration.
5
+ */
6
+ export type StackConfigEntry = {
7
+ readonly [key: string]: StackConfigEntry;
8
+ } | string;
9
+ /**
10
+ * Representation of a stack configuration storage. May contain multiple nested entries.
11
+ */
12
+ export type StackConfig = {
13
+ readonly [key: string]: StackConfigEntry;
14
+ };
15
+ /**
16
+ * Export stack information. The stack information currently contains
17
+ * * Custom stack configuration.
18
+ * The custom configuration can be used for storing parameters that are
19
+ * determined during the actual deployment or are generated by a system
20
+ * that is our of the developers reach (like a CI/CD job). The configuration
21
+ * then can, for example, be used to control custom deployments or dependent
22
+ * deployments that require parameters from the actual deployment to be re-used.
23
+ *
24
+ * @param scope The scope of the export.
25
+ * @param globalConfiguration Overrides for the stack configuration.
26
+ * @returns A {@link CfnOutput} that has been generated and added to the stack.
27
+ */
28
+ export declare function exportStackInfo(scope: Construct, globalConfiguration: StackConfig): CfnOutput;
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.exportStackInfo = exportStackInfo;
4
+ const StackParameter_1 = require("./StackParameter");
5
+ /**
6
+ * Export stack information. The stack information currently contains
7
+ * * Custom stack configuration.
8
+ * The custom configuration can be used for storing parameters that are
9
+ * determined during the actual deployment or are generated by a system
10
+ * that is our of the developers reach (like a CI/CD job). The configuration
11
+ * then can, for example, be used to control custom deployments or dependent
12
+ * deployments that require parameters from the actual deployment to be re-used.
13
+ *
14
+ * @param scope The scope of the export.
15
+ * @param globalConfiguration Overrides for the stack configuration.
16
+ * @returns A {@link CfnOutput} that has been generated and added to the stack.
17
+ */
18
+ function exportStackInfo(scope, globalConfiguration) {
19
+ const handler = new StackParameter_1.StackParameter({
20
+ key: "stack-info",
21
+ name: "Stack Deployment Information",
22
+ prefix: [],
23
+ });
24
+ let info = {
25
+ stackConfiguration: globalConfiguration,
26
+ };
27
+ return handler.export(scope, JSON.stringify(info));
28
+ }
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwb3J0U3RhY2tJbmZvLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL2V4cG9ydFN0YWNrSW5mby50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQTZCQSwwQ0FjQztBQXpDRCxxREFBa0Q7QUFjbEQ7Ozs7Ozs7Ozs7OztHQVlHO0FBQ0gsU0FBZ0IsZUFBZSxDQUM3QixLQUFnQixFQUNoQixtQkFBZ0M7SUFFaEMsTUFBTSxPQUFPLEdBQUcsSUFBSSwrQkFBYyxDQUFDO1FBQ2pDLEdBQUcsRUFBRSxZQUFZO1FBQ2pCLElBQUksRUFBRSw4QkFBOEI7UUFDcEMsTUFBTSxFQUFFLEVBQUU7S0FDWCxDQUFDLENBQUM7SUFFSCxJQUFJLElBQUksR0FBRztRQUNULGtCQUFrQixFQUFFLG1CQUFtQjtLQUN4QyxDQUFDO0lBQ0YsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDckQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENmbk91dHB1dCB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IFN0YWNrUGFyYW1ldGVyIH0gZnJvbSBcIi4vU3RhY2tQYXJhbWV0ZXJcIjtcblxuLyoqXG4gKiBBbiBlbnRyeSBmb3IgdGhlIHN0b3JlZCBzdGFjayBjb25maWd1cmF0aW9uLlxuICovXG5leHBvcnQgdHlwZSBTdGFja0NvbmZpZ0VudHJ5ID1cbiAgfCB7IHJlYWRvbmx5IFtrZXk6IHN0cmluZ106IFN0YWNrQ29uZmlnRW50cnkgfVxuICB8IHN0cmluZztcblxuLyoqXG4gKiBSZXByZXNlbnRhdGlvbiBvZiBhIHN0YWNrIGNvbmZpZ3VyYXRpb24gc3RvcmFnZS4gTWF5IGNvbnRhaW4gbXVsdGlwbGUgbmVzdGVkIGVudHJpZXMuXG4gKi9cbmV4cG9ydCB0eXBlIFN0YWNrQ29uZmlnID0geyByZWFkb25seSBba2V5OiBzdHJpbmddOiBTdGFja0NvbmZpZ0VudHJ5IH07XG5cbi8qKlxuICogRXhwb3J0IHN0YWNrIGluZm9ybWF0aW9uLiBUaGUgc3RhY2sgaW5mb3JtYXRpb24gY3VycmVudGx5IGNvbnRhaW5zXG4gKiAqIEN1c3RvbSBzdGFjayBjb25maWd1cmF0aW9uLlxuICogVGhlIGN1c3RvbSBjb25maWd1cmF0aW9uIGNhbiBiZSB1c2VkIGZvciBzdG9yaW5nIHBhcmFtZXRlcnMgdGhhdCBhcmVcbiAqIGRldGVybWluZWQgZHVyaW5nIHRoZSBhY3R1YWwgZGVwbG95bWVudCBvciBhcmUgZ2VuZXJhdGVkIGJ5IGEgc3lzdGVtXG4gKiB0aGF0IGlzIG91ciBvZiB0aGUgZGV2ZWxvcGVycyByZWFjaCAobGlrZSBhIENJL0NEIGpvYikuIFRoZSBjb25maWd1cmF0aW9uXG4gKiB0aGVuIGNhbiwgZm9yIGV4YW1wbGUsIGJlIHVzZWQgdG8gY29udHJvbCBjdXN0b20gZGVwbG95bWVudHMgb3IgZGVwZW5kZW50XG4gKiBkZXBsb3ltZW50cyB0aGF0IHJlcXVpcmUgcGFyYW1ldGVycyBmcm9tIHRoZSBhY3R1YWwgZGVwbG95bWVudCB0byBiZSByZS11c2VkLlxuICpcbiAqIEBwYXJhbSBzY29wZSBUaGUgc2NvcGUgb2YgdGhlIGV4cG9ydC5cbiAqIEBwYXJhbSBnbG9iYWxDb25maWd1cmF0aW9uIE92ZXJyaWRlcyBmb3IgdGhlIHN0YWNrIGNvbmZpZ3VyYXRpb24uXG4gKiBAcmV0dXJucyBBIHtAbGluayBDZm5PdXRwdXR9IHRoYXQgaGFzIGJlZW4gZ2VuZXJhdGVkIGFuZCBhZGRlZCB0byB0aGUgc3RhY2suXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBleHBvcnRTdGFja0luZm8oXG4gIHNjb3BlOiBDb25zdHJ1Y3QsXG4gIGdsb2JhbENvbmZpZ3VyYXRpb246IFN0YWNrQ29uZmlnLFxuKSB7XG4gIGNvbnN0IGhhbmRsZXIgPSBuZXcgU3RhY2tQYXJhbWV0ZXIoe1xuICAgIGtleTogXCJzdGFjay1pbmZvXCIsXG4gICAgbmFtZTogXCJTdGFjayBEZXBsb3ltZW50IEluZm9ybWF0aW9uXCIsXG4gICAgcHJlZml4OiBbXSxcbiAgfSk7XG5cbiAgbGV0IGluZm8gPSB7XG4gICAgc3RhY2tDb25maWd1cmF0aW9uOiBnbG9iYWxDb25maWd1cmF0aW9uLFxuICB9O1xuICByZXR1cm4gaGFuZGxlci5leHBvcnQoc2NvcGUsIEpTT04uc3RyaW5naWZ5KGluZm8pKTtcbn1cbiJdfQ==
@@ -2,13 +2,13 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.filterContainers = filterContainers;
4
4
  const ecs_service_extensions_1 = require("@aws-cdk-containers/ecs-service-extensions");
5
- const extensions_1 = require("../extensions");
5
+ const ExtraContainerExtension_1 = require("../extensions/ExtraContainerExtension"); // direct import to avoid circular dependencies
6
6
  /**
7
7
  * Returns a list of all container extensions which define a container.
8
8
  */
9
9
  function filterContainers(service) {
10
10
  return Object.entries(service.serviceDescription.extensions)
11
11
  .map(([_, ext]) => ext)
12
- .filter((ext) => ext instanceof ecs_service_extensions_1.Container || ext instanceof extensions_1.ExtraContainerExtension);
12
+ .filter((ext) => ext instanceof ecs_service_extensions_1.Container || ext instanceof ExtraContainerExtension_1.ExtraContainerExtension);
13
13
  }
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuY3Rpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL2Z1bmN0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQWVBLDRDQU9DO0FBdEJELHVGQUlvRDtBQUVwRCw4Q0FBd0Q7QUFNeEQ7O0dBRUc7QUFDSCxTQUFnQixnQkFBZ0IsQ0FBQyxPQUFnQjtJQUMvQyxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLFVBQVUsQ0FBQztTQUN6RCxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDO1NBQ3RCLE1BQU0sQ0FDTCxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQ04sR0FBRyxZQUFZLGtDQUFTLElBQUksR0FBRyxZQUFZLG9DQUF1QixDQUN6QyxDQUFDO0FBQ2xDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb250YWluZXIsXG4gIFNlcnZpY2UsXG4gIFNlcnZpY2VFeHRlbnNpb24sXG59IGZyb20gXCJAYXdzLWNkay1jb250YWluZXJzL2Vjcy1zZXJ2aWNlLWV4dGVuc2lvbnNcIjtcbmltcG9ydCB7IENvbnRhaW5lckRlZmluaXRpb24gfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVjc1wiO1xuaW1wb3J0IHsgRXh0cmFDb250YWluZXJFeHRlbnNpb24gfSBmcm9tIFwiLi4vZXh0ZW5zaW9uc1wiO1xuXG5leHBvcnQgdHlwZSBFeHRlbnNpb25XaXRoQ29udGFpbmVyID0gU2VydmljZUV4dGVuc2lvbiAmIHtcbiAgY29udGFpbmVyOiBDb250YWluZXJEZWZpbml0aW9uO1xufTtcblxuLyoqXG4gKiBSZXR1cm5zIGEgbGlzdCBvZiBhbGwgY29udGFpbmVyIGV4dGVuc2lvbnMgd2hpY2ggZGVmaW5lIGEgY29udGFpbmVyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZmlsdGVyQ29udGFpbmVycyhzZXJ2aWNlOiBTZXJ2aWNlKTogRXh0ZW5zaW9uV2l0aENvbnRhaW5lcltdIHtcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHNlcnZpY2Uuc2VydmljZURlc2NyaXB0aW9uLmV4dGVuc2lvbnMpXG4gICAgLm1hcCgoW18sIGV4dF0pID0+IGV4dClcbiAgICAuZmlsdGVyKFxuICAgICAgKGV4dCkgPT5cbiAgICAgICAgZXh0IGluc3RhbmNlb2YgQ29udGFpbmVyIHx8IGV4dCBpbnN0YW5jZW9mIEV4dHJhQ29udGFpbmVyRXh0ZW5zaW9uLFxuICAgICkgYXMgRXh0ZW5zaW9uV2l0aENvbnRhaW5lcltdO1xufVxuIl19
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuY3Rpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL2Z1bmN0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQWVBLDRDQU9DO0FBdEJELHVGQUlvRDtBQUVwRCxtRkFBZ0YsQ0FBQywrQ0FBK0M7QUFNaEk7O0dBRUc7QUFDSCxTQUFnQixnQkFBZ0IsQ0FBQyxPQUFnQjtJQUMvQyxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLFVBQVUsQ0FBQztTQUN6RCxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDO1NBQ3RCLE1BQU0sQ0FDTCxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQ04sR0FBRyxZQUFZLGtDQUFTLElBQUksR0FBRyxZQUFZLGlEQUF1QixDQUN6QyxDQUFDO0FBQ2xDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb250YWluZXIsXG4gIFNlcnZpY2UsXG4gIFNlcnZpY2VFeHRlbnNpb24sXG59IGZyb20gXCJAYXdzLWNkay1jb250YWluZXJzL2Vjcy1zZXJ2aWNlLWV4dGVuc2lvbnNcIjtcbmltcG9ydCB7IENvbnRhaW5lckRlZmluaXRpb24gfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVjc1wiO1xuaW1wb3J0IHsgRXh0cmFDb250YWluZXJFeHRlbnNpb24gfSBmcm9tIFwiLi4vZXh0ZW5zaW9ucy9FeHRyYUNvbnRhaW5lckV4dGVuc2lvblwiOyAvLyBkaXJlY3QgaW1wb3J0IHRvIGF2b2lkIGNpcmN1bGFyIGRlcGVuZGVuY2llc1xuXG5leHBvcnQgdHlwZSBFeHRlbnNpb25XaXRoQ29udGFpbmVyID0gU2VydmljZUV4dGVuc2lvbiAmIHtcbiAgY29udGFpbmVyOiBDb250YWluZXJEZWZpbml0aW9uO1xufTtcblxuLyoqXG4gKiBSZXR1cm5zIGEgbGlzdCBvZiBhbGwgY29udGFpbmVyIGV4dGVuc2lvbnMgd2hpY2ggZGVmaW5lIGEgY29udGFpbmVyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZmlsdGVyQ29udGFpbmVycyhzZXJ2aWNlOiBTZXJ2aWNlKTogRXh0ZW5zaW9uV2l0aENvbnRhaW5lcltdIHtcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHNlcnZpY2Uuc2VydmljZURlc2NyaXB0aW9uLmV4dGVuc2lvbnMpXG4gICAgLm1hcCgoW18sIGV4dF0pID0+IGV4dClcbiAgICAuZmlsdGVyKFxuICAgICAgKGV4dCkgPT5cbiAgICAgICAgZXh0IGluc3RhbmNlb2YgQ29udGFpbmVyIHx8IGV4dCBpbnN0YW5jZW9mIEV4dHJhQ29udGFpbmVyRXh0ZW5zaW9uLFxuICAgICkgYXMgRXh0ZW5zaW9uV2l0aENvbnRhaW5lcltdO1xufVxuIl19
@@ -1,4 +1,6 @@
1
1
  export * from "./configFileParsing";
2
2
  export * from "./deactivatedConstruct";
3
+ export * from "./exportStackInfo";
3
4
  export * from "./functions";
4
5
  export * from "./ImportValue";
6
+ export * from "./StackParameter";
@@ -16,6 +16,8 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./configFileParsing"), exports);
18
18
  __exportStar(require("./deactivatedConstruct"), exports);
19
+ __exportStar(require("./exportStackInfo"), exports);
19
20
  __exportStar(require("./functions"), exports);
20
21
  __exportStar(require("./ImportValue"), exports);
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHNEQUFvQztBQUNwQyx5REFBdUM7QUFDdkMsOENBQTRCO0FBQzVCLGdEQUE4QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL2NvbmZpZ0ZpbGVQYXJzaW5nXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9kZWFjdGl2YXRlZENvbnN0cnVjdFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vZnVuY3Rpb25zXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9JbXBvcnRWYWx1ZVwiO1xuIl19
22
+ __exportStar(require("./StackParameter"), exports);
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHNEQUFvQztBQUNwQyx5REFBdUM7QUFDdkMsb0RBQWtDO0FBQ2xDLDhDQUE0QjtBQUM1QixnREFBOEI7QUFDOUIsbURBQWlDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vY29uZmlnRmlsZVBhcnNpbmdcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2RlYWN0aXZhdGVkQ29uc3RydWN0XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9leHBvcnRTdGFja0luZm9cIjtcbmV4cG9ydCAqIGZyb20gXCIuL2Z1bmN0aW9uc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vSW1wb3J0VmFsdWVcIjtcbmV4cG9ydCAqIGZyb20gXCIuL1N0YWNrUGFyYW1ldGVyXCI7XG4iXX0=
package/mkdocs.yml ADDED
@@ -0,0 +1,8 @@
1
+ site_name: 'BTC-ES CDK Extensions Docs'
2
+
3
+ nav:
4
+ - Home: index.md
5
+ - RFC01 - API Gateway and Extensions: RFC001-api-gateway.md
6
+ - RFC02 - Developer Stacks: RFC002-developer-stacks.md
7
+ plugins:
8
+ - techdocs-core
package/package.json CHANGED
@@ -87,7 +87,7 @@
87
87
  ],
88
88
  "main": "lib/index.js",
89
89
  "license": "Apache-2.0",
90
- "version": "0.9.4",
90
+ "version": "0.9.6",
91
91
  "jest": {
92
92
  "coverageProvider": "v8",
93
93
  "maxWorkers": 4,
@@ -1,32 +0,0 @@
1
- import { IUserPoolClient } from "aws-cdk-lib/aws-cognito";
2
- import { Construct } from "constructs";
3
- import { CognitoUserPool } from "./CognitoUserPool";
4
- import { ResourceServer } from "./ResourceServer";
5
- export interface ApiUserPoolClientProps {
6
- /**
7
- * The user pool which should be attached to the clients.
8
- */
9
- readonly cognitoUserPool: CognitoUserPool;
10
- /**
11
- * Specify additional user pool identity providers to enable federated login.
12
- */
13
- readonly additonalUserPoolIdentityProviders?: string[];
14
- /**
15
- * The resource server associated with the user pool client.
16
- * This is used to define OAuth scopes for the client.
17
- */
18
- readonly resourceServer: ResourceServer;
19
- }
20
- /**
21
- * A construct that creates a Cognito User Pool Client for API access.
22
- *
23
- * This construct:
24
- * - Creates a user pool client with client credentials flow enabled.
25
- * - Associates the client with the specified resource server to define OAuth scopes.
26
- * - Supports additional identity providers for federated login.
27
- * - Exports the client ID as a CloudFormation output for use in other constructs.
28
- */
29
- export declare class ApiUserPoolClient extends Construct {
30
- apiClient: IUserPoolClient;
31
- constructor(scope: Construct, id: string, props: ApiUserPoolClientProps);
32
- }
@@ -1,47 +0,0 @@
1
- "use strict";
2
- var _a;
3
- Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.ApiUserPoolClient = void 0;
5
- const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
- const aws_cognito_1 = require("aws-cdk-lib/aws-cognito");
7
- const constructs_1 = require("constructs");
8
- const utils_1 = require("../utils");
9
- /**
10
- * A construct that creates a Cognito User Pool Client for API access.
11
- *
12
- * This construct:
13
- * - Creates a user pool client with client credentials flow enabled.
14
- * - Associates the client with the specified resource server to define OAuth scopes.
15
- * - Supports additional identity providers for federated login.
16
- * - Exports the client ID as a CloudFormation output for use in other constructs.
17
- */
18
- class ApiUserPoolClient extends constructs_1.Construct {
19
- constructor(scope, id, props) {
20
- super(scope, id);
21
- const providerNames = props.additonalUserPoolIdentityProviders?.map((name) => aws_cognito_1.UserPoolClientIdentityProvider.custom(name)) ?? [];
22
- this.apiClient = new aws_cognito_1.UserPoolClient(this, "RESTAPIUserPoolClient", {
23
- userPool: props.cognitoUserPool.userPool,
24
- generateSecret: true,
25
- oAuth: {
26
- flows: {
27
- clientCredentials: true,
28
- },
29
- scopes: props.resourceServer.createOAuthScopes(),
30
- },
31
- supportedIdentityProviders: [
32
- aws_cognito_1.UserPoolClientIdentityProvider.COGNITO,
33
- ...providerNames,
34
- ],
35
- });
36
- const exportValue = (0, utils_1.createExporter)(this, "cognito-v2");
37
- exportValue({
38
- name: "Cognito API Client Id",
39
- key: "api-client-id",
40
- value: this.apiClient.userPoolClientId,
41
- });
42
- }
43
- }
44
- exports.ApiUserPoolClient = ApiUserPoolClient;
45
- _a = JSII_RTTI_SYMBOL_1;
46
- ApiUserPoolClient[_a] = { fqn: "@btc-embedded/cdk-extensions.ApiUserPoolClient", version: "0.9.4" };
47
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXBpVXNlclBvb2xDbGllbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcGxhdGZvcm0vQXBpVXNlclBvb2xDbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSx5REFJaUM7QUFDakMsMkNBQXVDO0FBQ3ZDLG9DQUEwQztBQXNCMUM7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFhLGlCQUFrQixTQUFRLHNCQUFTO0lBRzlDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBNkI7UUFDckUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixNQUFNLGFBQWEsR0FDakIsS0FBSyxDQUFDLGtDQUFrQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQ3JELDRDQUE4QixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FDNUMsSUFBSSxFQUFFLENBQUM7UUFFVixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksNEJBQWMsQ0FBQyxJQUFJLEVBQUUsdUJBQXVCLEVBQUU7WUFDakUsUUFBUSxFQUFFLEtBQUssQ0FBQyxlQUFlLENBQUMsUUFBUTtZQUN4QyxjQUFjLEVBQUUsSUFBSTtZQUNwQixLQUFLLEVBQUU7Z0JBQ0wsS0FBSyxFQUFFO29CQUNMLGlCQUFpQixFQUFFLElBQUk7aUJBQ3hCO2dCQUNELE1BQU0sRUFBRSxLQUFLLENBQUMsY0FBYyxDQUFDLGlCQUFpQixFQUFFO2FBQ2pEO1lBQ0QsMEJBQTBCLEVBQUU7Z0JBQzFCLDRDQUE4QixDQUFDLE9BQU87Z0JBQ3RDLEdBQUcsYUFBYTthQUNqQjtTQUNGLENBQUMsQ0FBQztRQUVILE1BQU0sV0FBVyxHQUFHLElBQUEsc0JBQWMsRUFBQyxJQUFJLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFFdkQsV0FBVyxDQUFDO1lBQ1YsSUFBSSxFQUFFLHVCQUF1QjtZQUM3QixHQUFHLEVBQUUsZUFBZTtZQUNwQixLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0I7U0FDdkMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7QUFqQ0gsOENBa0NDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgSVVzZXJQb29sQ2xpZW50LFxuICBVc2VyUG9vbENsaWVudCxcbiAgVXNlclBvb2xDbGllbnRJZGVudGl0eVByb3ZpZGVyLFxufSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWNvZ25pdG9cIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBjcmVhdGVFeHBvcnRlciB9IGZyb20gXCIuLi91dGlsc1wiO1xuaW1wb3J0IHsgQ29nbml0b1VzZXJQb29sIH0gZnJvbSBcIi4vQ29nbml0b1VzZXJQb29sXCI7XG5pbXBvcnQgeyBSZXNvdXJjZVNlcnZlciB9IGZyb20gXCIuL1Jlc291cmNlU2VydmVyXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXBpVXNlclBvb2xDbGllbnRQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgdXNlciBwb29sIHdoaWNoIHNob3VsZCBiZSBhdHRhY2hlZCB0byB0aGUgY2xpZW50cy5cbiAgICovXG4gIHJlYWRvbmx5IGNvZ25pdG9Vc2VyUG9vbDogQ29nbml0b1VzZXJQb29sO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZ5IGFkZGl0aW9uYWwgdXNlciBwb29sIGlkZW50aXR5IHByb3ZpZGVycyB0byBlbmFibGUgZmVkZXJhdGVkIGxvZ2luLlxuICAgKi9cbiAgcmVhZG9ubHkgYWRkaXRvbmFsVXNlclBvb2xJZGVudGl0eVByb3ZpZGVycz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBUaGUgcmVzb3VyY2Ugc2VydmVyIGFzc29jaWF0ZWQgd2l0aCB0aGUgdXNlciBwb29sIGNsaWVudC5cbiAgICogVGhpcyBpcyB1c2VkIHRvIGRlZmluZSBPQXV0aCBzY29wZXMgZm9yIHRoZSBjbGllbnQuXG4gICAqL1xuICByZWFkb25seSByZXNvdXJjZVNlcnZlcjogUmVzb3VyY2VTZXJ2ZXI7XG59XG5cbi8qKlxuICogQSBjb25zdHJ1Y3QgdGhhdCBjcmVhdGVzIGEgQ29nbml0byBVc2VyIFBvb2wgQ2xpZW50IGZvciBBUEkgYWNjZXNzLlxuICpcbiAqIFRoaXMgY29uc3RydWN0OlxuICogLSBDcmVhdGVzIGEgdXNlciBwb29sIGNsaWVudCB3aXRoIGNsaWVudCBjcmVkZW50aWFscyBmbG93IGVuYWJsZWQuXG4gKiAtIEFzc29jaWF0ZXMgdGhlIGNsaWVudCB3aXRoIHRoZSBzcGVjaWZpZWQgcmVzb3VyY2Ugc2VydmVyIHRvIGRlZmluZSBPQXV0aCBzY29wZXMuXG4gKiAtIFN1cHBvcnRzIGFkZGl0aW9uYWwgaWRlbnRpdHkgcHJvdmlkZXJzIGZvciBmZWRlcmF0ZWQgbG9naW4uXG4gKiAtIEV4cG9ydHMgdGhlIGNsaWVudCBJRCBhcyBhIENsb3VkRm9ybWF0aW9uIG91dHB1dCBmb3IgdXNlIGluIG90aGVyIGNvbnN0cnVjdHMuXG4gKi9cbmV4cG9ydCBjbGFzcyBBcGlVc2VyUG9vbENsaWVudCBleHRlbmRzIENvbnN0cnVjdCB7XG4gIHB1YmxpYyBhcGlDbGllbnQ6IElVc2VyUG9vbENsaWVudDtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogQXBpVXNlclBvb2xDbGllbnRQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBjb25zdCBwcm92aWRlck5hbWVzID1cbiAgICAgIHByb3BzLmFkZGl0b25hbFVzZXJQb29sSWRlbnRpdHlQcm92aWRlcnM/Lm1hcCgobmFtZSkgPT5cbiAgICAgICAgVXNlclBvb2xDbGllbnRJZGVudGl0eVByb3ZpZGVyLmN1c3RvbShuYW1lKSxcbiAgICAgICkgPz8gW107XG5cbiAgICB0aGlzLmFwaUNsaWVudCA9IG5ldyBVc2VyUG9vbENsaWVudCh0aGlzLCBcIlJFU1RBUElVc2VyUG9vbENsaWVudFwiLCB7XG4gICAgICB1c2VyUG9vbDogcHJvcHMuY29nbml0b1VzZXJQb29sLnVzZXJQb29sLFxuICAgICAgZ2VuZXJhdGVTZWNyZXQ6IHRydWUsXG4gICAgICBvQXV0aDoge1xuICAgICAgICBmbG93czoge1xuICAgICAgICAgIGNsaWVudENyZWRlbnRpYWxzOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBzY29wZXM6IHByb3BzLnJlc291cmNlU2VydmVyLmNyZWF0ZU9BdXRoU2NvcGVzKCksXG4gICAgICB9LFxuICAgICAgc3VwcG9ydGVkSWRlbnRpdHlQcm92aWRlcnM6IFtcbiAgICAgICAgVXNlclBvb2xDbGllbnRJZGVudGl0eVByb3ZpZGVyLkNPR05JVE8sXG4gICAgICAgIC4uLnByb3ZpZGVyTmFtZXMsXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgY29uc3QgZXhwb3J0VmFsdWUgPSBjcmVhdGVFeHBvcnRlcih0aGlzLCBcImNvZ25pdG8tdjJcIik7XG5cbiAgICBleHBvcnRWYWx1ZSh7XG4gICAgICBuYW1lOiBcIkNvZ25pdG8gQVBJIENsaWVudCBJZFwiLFxuICAgICAga2V5OiBcImFwaS1jbGllbnQtaWRcIixcbiAgICAgIHZhbHVlOiB0aGlzLmFwaUNsaWVudC51c2VyUG9vbENsaWVudElkLFxuICAgIH0pO1xuICB9XG59XG4iXX0=
@@ -1,51 +0,0 @@
1
- import { IUserPool, IUserPoolClient } from "aws-cdk-lib/aws-cognito";
2
- import { Construct } from "constructs";
3
- import { CognitoUserPool } from "./CognitoUserPool";
4
- import { ResourceServer } from "./ResourceServer";
5
- export interface ApplicationUserPoolClientProps {
6
- /**
7
- * The user pool which should be attached to the clients.
8
- */
9
- readonly cognitoUserPool: CognitoUserPool;
10
- /**
11
- * The fully qualified domain name which the ALB will listen to.
12
- *
13
- * This setting is used to configure the correct callback URL for user pool
14
- * client such that the ALB can perform authentication.
15
- *
16
- */
17
- readonly fqdn: string;
18
- /**
19
- * The resource server associated with the user pool client.
20
- * This is used to define OAuth scopes for the client.
21
- */
22
- readonly resourceServer: ResourceServer;
23
- /**
24
- * Specify valid logout URLs which should be added to the frontend user pool client.
25
- */
26
- readonly logoutUrls?: string[];
27
- /**
28
- * Specify additional callback URLs which the frontend uses for OIDC authentication.
29
- *
30
- */
31
- readonly callbackUrls?: string[];
32
- /**
33
- * Specify additional user pool identity providers to enable federated login.
34
- */
35
- readonly additonalUserPoolIdentityProviders?: string[];
36
- }
37
- /**
38
- * A construct that creates a Cognito User Pool Client for frontend and API access.
39
- *
40
- * This construct:
41
- * - Creates a user pool client with authorization code grant flow enabled.
42
- * - Configures OAuth scopes, callback URLs, and logout URLs for the client.
43
- * - Supports additional identity providers for federated login.
44
- * - Exports the client ID as a CloudFormation output for use in other constructs.
45
- */
46
- export declare class ApplicationUserPoolClient extends Construct {
47
- client: IUserPoolClient;
48
- private cognitoUserPool;
49
- constructor(scope: Construct, id: string, props: ApplicationUserPoolClientProps);
50
- get userPool(): IUserPool;
51
- }
@@ -1,66 +0,0 @@
1
- "use strict";
2
- var _a;
3
- Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.ApplicationUserPoolClient = void 0;
5
- const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
- const aws_cognito_1 = require("aws-cdk-lib/aws-cognito");
7
- const constructs_1 = require("constructs");
8
- const utils_1 = require("../utils");
9
- /**
10
- * A construct that creates a Cognito User Pool Client for frontend and API access.
11
- *
12
- * This construct:
13
- * - Creates a user pool client with authorization code grant flow enabled.
14
- * - Configures OAuth scopes, callback URLs, and logout URLs for the client.
15
- * - Supports additional identity providers for federated login.
16
- * - Exports the client ID as a CloudFormation output for use in other constructs.
17
- */
18
- class ApplicationUserPoolClient extends constructs_1.Construct {
19
- constructor(scope, id, props) {
20
- super(scope, id);
21
- this.cognitoUserPool = props.cognitoUserPool;
22
- const providerNames = props.additonalUserPoolIdentityProviders?.map((name) => aws_cognito_1.UserPoolClientIdentityProvider.custom(name)) ?? [];
23
- const callbackUrls = props.callbackUrls ?? [];
24
- this.client = new aws_cognito_1.UserPoolClient(this, "FrontendUserPoolClient", {
25
- userPool: props.cognitoUserPool.userPool,
26
- // Required minimal configuration for use with an ELB
27
- generateSecret: true,
28
- authFlows: {
29
- userPassword: true,
30
- },
31
- oAuth: {
32
- flows: {
33
- authorizationCodeGrant: true,
34
- },
35
- scopes: [
36
- aws_cognito_1.OAuthScope.OPENID,
37
- aws_cognito_1.OAuthScope.PROFILE,
38
- ...props.resourceServer.createOAuthScopes(),
39
- ],
40
- callbackUrls: [
41
- // add callback URL for ALB
42
- `https://${props.fqdn}/oauth2/idpresponse`,
43
- ...callbackUrls,
44
- ],
45
- logoutUrls: props.logoutUrls,
46
- },
47
- supportedIdentityProviders: [
48
- aws_cognito_1.UserPoolClientIdentityProvider.COGNITO,
49
- ...providerNames,
50
- ],
51
- });
52
- const exportValue = (0, utils_1.createExporter)(this, "cognito-v2");
53
- exportValue({
54
- name: "Cognito Application Client Id",
55
- key: "application-client-id",
56
- value: this.client.userPoolClientId,
57
- });
58
- }
59
- get userPool() {
60
- return this.cognitoUserPool.userPool;
61
- }
62
- }
63
- exports.ApplicationUserPoolClient = ApplicationUserPoolClient;
64
- _a = JSII_RTTI_SYMBOL_1;
65
- ApplicationUserPoolClient[_a] = { fqn: "@btc-embedded/cdk-extensions.ApplicationUserPoolClient", version: "0.9.4" };
66
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXBwbGljYXRpb25Vc2VyUG9vbENsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wbGF0Zm9ybS9BcHBsaWNhdGlvblVzZXJQb29sQ2xpZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEseURBTWlDO0FBQ2pDLDJDQUF1QztBQUN2QyxvQ0FBMEM7QUEyQzFDOzs7Ozs7OztHQVFHO0FBQ0gsTUFBYSx5QkFBMEIsU0FBUSxzQkFBUztJQUd0RCxZQUNFLEtBQWdCLEVBQ2hCLEVBQVUsRUFDVixLQUFxQztRQUVyQyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2pCLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDLGVBQWUsQ0FBQztRQUM3QyxNQUFNLGFBQWEsR0FDakIsS0FBSyxDQUFDLGtDQUFrQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQ3JELDRDQUE4QixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FDNUMsSUFBSSxFQUFFLENBQUM7UUFFVixNQUFNLFlBQVksR0FBRyxLQUFLLENBQUMsWUFBWSxJQUFJLEVBQUUsQ0FBQztRQUU5QyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksNEJBQWMsQ0FBQyxJQUFJLEVBQUUsd0JBQXdCLEVBQUU7WUFDL0QsUUFBUSxFQUFFLEtBQUssQ0FBQyxlQUFlLENBQUMsUUFBUTtZQUV4QyxxREFBcUQ7WUFDckQsY0FBYyxFQUFFLElBQUk7WUFDcEIsU0FBUyxFQUFFO2dCQUNULFlBQVksRUFBRSxJQUFJO2FBQ25CO1lBRUQsS0FBSyxFQUFFO2dCQUNMLEtBQUssRUFBRTtvQkFDTCxzQkFBc0IsRUFBRSxJQUFJO2lCQUM3QjtnQkFDRCxNQUFNLEVBQUU7b0JBQ04sd0JBQVUsQ0FBQyxNQUFNO29CQUNqQix3QkFBVSxDQUFDLE9BQU87b0JBQ2xCLEdBQUcsS0FBSyxDQUFDLGNBQWMsQ0FBQyxpQkFBaUIsRUFBRTtpQkFDNUM7Z0JBQ0QsWUFBWSxFQUFFO29CQUNaLDJCQUEyQjtvQkFDM0IsV0FBVyxLQUFLLENBQUMsSUFBSSxxQkFBcUI7b0JBQzFDLEdBQUcsWUFBWTtpQkFDaEI7Z0JBQ0QsVUFBVSxFQUFFLEtBQUssQ0FBQyxVQUFVO2FBQzdCO1lBQ0QsMEJBQTBCLEVBQUU7Z0JBQzFCLDRDQUE4QixDQUFDLE9BQU87Z0JBQ3RDLEdBQUcsYUFBYTthQUNqQjtTQUNGLENBQUMsQ0FBQztRQUVILE1BQU0sV0FBVyxHQUFHLElBQUEsc0JBQWMsRUFBQyxJQUFJLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFFdkQsV0FBVyxDQUFDO1lBQ1YsSUFBSSxFQUFFLCtCQUErQjtZQUNyQyxHQUFHLEVBQUUsdUJBQXVCO1lBQzVCLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLGdCQUFnQjtTQUNwQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQztJQUN2QyxDQUFDOztBQTNESCw4REE0REMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBJVXNlclBvb2wsXG4gIElVc2VyUG9vbENsaWVudCxcbiAgT0F1dGhTY29wZSxcbiAgVXNlclBvb2xDbGllbnQsXG4gIFVzZXJQb29sQ2xpZW50SWRlbnRpdHlQcm92aWRlcixcbn0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1jb2duaXRvXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgY3JlYXRlRXhwb3J0ZXIgfSBmcm9tIFwiLi4vdXRpbHNcIjtcbmltcG9ydCB7IENvZ25pdG9Vc2VyUG9vbCB9IGZyb20gXCIuL0NvZ25pdG9Vc2VyUG9vbFwiO1xuaW1wb3J0IHsgUmVzb3VyY2VTZXJ2ZXIgfSBmcm9tIFwiLi9SZXNvdXJjZVNlcnZlclwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFwcGxpY2F0aW9uVXNlclBvb2xDbGllbnRQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgdXNlciBwb29sIHdoaWNoIHNob3VsZCBiZSBhdHRhY2hlZCB0byB0aGUgY2xpZW50cy5cbiAgICovXG4gIHJlYWRvbmx5IGNvZ25pdG9Vc2VyUG9vbDogQ29nbml0b1VzZXJQb29sO1xuXG4gIC8qKlxuICAgKiBUaGUgZnVsbHkgcXVhbGlmaWVkIGRvbWFpbiBuYW1lIHdoaWNoIHRoZSBBTEIgd2lsbCBsaXN0ZW4gdG8uXG4gICAqXG4gICAqIFRoaXMgc2V0dGluZyBpcyB1c2VkIHRvIGNvbmZpZ3VyZSB0aGUgY29ycmVjdCBjYWxsYmFjayBVUkwgZm9yIHVzZXIgcG9vbFxuICAgKiBjbGllbnQgc3VjaCB0aGF0IHRoZSBBTEIgY2FuIHBlcmZvcm0gYXV0aGVudGljYXRpb24uXG4gICAqXG4gICAqL1xuXG4gIHJlYWRvbmx5IGZxZG46IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHJlc291cmNlIHNlcnZlciBhc3NvY2lhdGVkIHdpdGggdGhlIHVzZXIgcG9vbCBjbGllbnQuXG4gICAqIFRoaXMgaXMgdXNlZCB0byBkZWZpbmUgT0F1dGggc2NvcGVzIGZvciB0aGUgY2xpZW50LlxuICAgKi9cbiAgcmVhZG9ubHkgcmVzb3VyY2VTZXJ2ZXI6IFJlc291cmNlU2VydmVyO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZ5IHZhbGlkIGxvZ291dCBVUkxzIHdoaWNoIHNob3VsZCBiZSBhZGRlZCB0byB0aGUgZnJvbnRlbmQgdXNlciBwb29sIGNsaWVudC5cbiAgICovXG4gIHJlYWRvbmx5IGxvZ291dFVybHM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogU3BlY2lmeSBhZGRpdGlvbmFsIGNhbGxiYWNrIFVSTHMgd2hpY2ggdGhlIGZyb250ZW5kIHVzZXMgZm9yIE9JREMgYXV0aGVudGljYXRpb24uXG4gICAqXG4gICAqL1xuICByZWFkb25seSBjYWxsYmFja1VybHM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogU3BlY2lmeSBhZGRpdGlvbmFsIHVzZXIgcG9vbCBpZGVudGl0eSBwcm92aWRlcnMgdG8gZW5hYmxlIGZlZGVyYXRlZCBsb2dpbi5cbiAgICovXG4gIHJlYWRvbmx5IGFkZGl0b25hbFVzZXJQb29sSWRlbnRpdHlQcm92aWRlcnM/OiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBBIGNvbnN0cnVjdCB0aGF0IGNyZWF0ZXMgYSBDb2duaXRvIFVzZXIgUG9vbCBDbGllbnQgZm9yIGZyb250ZW5kIGFuZCBBUEkgYWNjZXNzLlxuICpcbiAqIFRoaXMgY29uc3RydWN0OlxuICogLSBDcmVhdGVzIGEgdXNlciBwb29sIGNsaWVudCB3aXRoIGF1dGhvcml6YXRpb24gY29kZSBncmFudCBmbG93IGVuYWJsZWQuXG4gKiAtIENvbmZpZ3VyZXMgT0F1dGggc2NvcGVzLCBjYWxsYmFjayBVUkxzLCBhbmQgbG9nb3V0IFVSTHMgZm9yIHRoZSBjbGllbnQuXG4gKiAtIFN1cHBvcnRzIGFkZGl0aW9uYWwgaWRlbnRpdHkgcHJvdmlkZXJzIGZvciBmZWRlcmF0ZWQgbG9naW4uXG4gKiAtIEV4cG9ydHMgdGhlIGNsaWVudCBJRCBhcyBhIENsb3VkRm9ybWF0aW9uIG91dHB1dCBmb3IgdXNlIGluIG90aGVyIGNvbnN0cnVjdHMuXG4gKi9cbmV4cG9ydCBjbGFzcyBBcHBsaWNhdGlvblVzZXJQb29sQ2xpZW50IGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgcHVibGljIGNsaWVudDogSVVzZXJQb29sQ2xpZW50O1xuICBwcml2YXRlIGNvZ25pdG9Vc2VyUG9vbDogQ29nbml0b1VzZXJQb29sO1xuICBjb25zdHJ1Y3RvcihcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcHJvcHM6IEFwcGxpY2F0aW9uVXNlclBvb2xDbGllbnRQcm9wcyxcbiAgKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcbiAgICB0aGlzLmNvZ25pdG9Vc2VyUG9vbCA9IHByb3BzLmNvZ25pdG9Vc2VyUG9vbDtcbiAgICBjb25zdCBwcm92aWRlck5hbWVzID1cbiAgICAgIHByb3BzLmFkZGl0b25hbFVzZXJQb29sSWRlbnRpdHlQcm92aWRlcnM/Lm1hcCgobmFtZSkgPT5cbiAgICAgICAgVXNlclBvb2xDbGllbnRJZGVudGl0eVByb3ZpZGVyLmN1c3RvbShuYW1lKSxcbiAgICAgICkgPz8gW107XG5cbiAgICBjb25zdCBjYWxsYmFja1VybHMgPSBwcm9wcy5jYWxsYmFja1VybHMgPz8gW107XG5cbiAgICB0aGlzLmNsaWVudCA9IG5ldyBVc2VyUG9vbENsaWVudCh0aGlzLCBcIkZyb250ZW5kVXNlclBvb2xDbGllbnRcIiwge1xuICAgICAgdXNlclBvb2w6IHByb3BzLmNvZ25pdG9Vc2VyUG9vbC51c2VyUG9vbCxcblxuICAgICAgLy8gUmVxdWlyZWQgbWluaW1hbCBjb25maWd1cmF0aW9uIGZvciB1c2Ugd2l0aCBhbiBFTEJcbiAgICAgIGdlbmVyYXRlU2VjcmV0OiB0cnVlLFxuICAgICAgYXV0aEZsb3dzOiB7XG4gICAgICAgIHVzZXJQYXNzd29yZDogdHJ1ZSxcbiAgICAgIH0sXG5cbiAgICAgIG9BdXRoOiB7XG4gICAgICAgIGZsb3dzOiB7XG4gICAgICAgICAgYXV0aG9yaXphdGlvbkNvZGVHcmFudDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgc2NvcGVzOiBbXG4gICAgICAgICAgT0F1dGhTY29wZS5PUEVOSUQsXG4gICAgICAgICAgT0F1dGhTY29wZS5QUk9GSUxFLFxuICAgICAgICAgIC4uLnByb3BzLnJlc291cmNlU2VydmVyLmNyZWF0ZU9BdXRoU2NvcGVzKCksXG4gICAgICAgIF0sXG4gICAgICAgIGNhbGxiYWNrVXJsczogW1xuICAgICAgICAgIC8vIGFkZCBjYWxsYmFjayBVUkwgZm9yIEFMQlxuICAgICAgICAgIGBodHRwczovLyR7cHJvcHMuZnFkbn0vb2F1dGgyL2lkcHJlc3BvbnNlYCxcbiAgICAgICAgICAuLi5jYWxsYmFja1VybHMsXG4gICAgICAgIF0sXG4gICAgICAgIGxvZ291dFVybHM6IHByb3BzLmxvZ291dFVybHMsXG4gICAgICB9LFxuICAgICAgc3VwcG9ydGVkSWRlbnRpdHlQcm92aWRlcnM6IFtcbiAgICAgICAgVXNlclBvb2xDbGllbnRJZGVudGl0eVByb3ZpZGVyLkNPR05JVE8sXG4gICAgICAgIC4uLnByb3ZpZGVyTmFtZXMsXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgY29uc3QgZXhwb3J0VmFsdWUgPSBjcmVhdGVFeHBvcnRlcih0aGlzLCBcImNvZ25pdG8tdjJcIik7XG5cbiAgICBleHBvcnRWYWx1ZSh7XG4gICAgICBuYW1lOiBcIkNvZ25pdG8gQXBwbGljYXRpb24gQ2xpZW50IElkXCIsXG4gICAgICBrZXk6IFwiYXBwbGljYXRpb24tY2xpZW50LWlkXCIsXG4gICAgICB2YWx1ZTogdGhpcy5jbGllbnQudXNlclBvb2xDbGllbnRJZCxcbiAgICB9KTtcbiAgfVxuXG4gIGdldCB1c2VyUG9vbCgpOiBJVXNlclBvb2wge1xuICAgIHJldHVybiB0aGlzLmNvZ25pdG9Vc2VyUG9vbC51c2VyUG9vbDtcbiAgfVxufVxuIl19