@composurecdk/acm 0.7.0 → 0.8.0

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 (62) hide show
  1. package/dist/commonjs/alarm-config.d.ts.map +1 -0
  2. package/dist/commonjs/alarm-config.js +3 -0
  3. package/dist/{alarm-config.js.map → commonjs/alarm-config.js.map} +1 -1
  4. package/dist/commonjs/alarm-defaults.d.ts.map +1 -0
  5. package/dist/commonjs/alarm-defaults.js +29 -0
  6. package/dist/commonjs/alarm-defaults.js.map +1 -0
  7. package/dist/commonjs/certificate-alarms.d.ts.map +1 -0
  8. package/dist/commonjs/certificate-alarms.js +57 -0
  9. package/dist/commonjs/certificate-alarms.js.map +1 -0
  10. package/dist/commonjs/certificate-builder.d.ts.map +1 -0
  11. package/dist/commonjs/certificate-builder.js +87 -0
  12. package/dist/commonjs/certificate-builder.js.map +1 -0
  13. package/dist/commonjs/defaults.d.ts.map +1 -0
  14. package/dist/commonjs/defaults.js +27 -0
  15. package/dist/commonjs/defaults.js.map +1 -0
  16. package/dist/commonjs/index.d.ts.map +1 -0
  17. package/dist/commonjs/index.js +10 -0
  18. package/dist/commonjs/index.js.map +1 -0
  19. package/dist/commonjs/package.json +3 -0
  20. package/dist/esm/alarm-config.d.ts +34 -0
  21. package/dist/esm/alarm-config.d.ts.map +1 -0
  22. package/dist/esm/alarm-config.js.map +1 -0
  23. package/dist/esm/alarm-defaults.d.ts +13 -0
  24. package/dist/esm/alarm-defaults.d.ts.map +1 -0
  25. package/dist/esm/alarm-defaults.js.map +1 -0
  26. package/dist/esm/certificate-alarms.d.ts +26 -0
  27. package/dist/esm/certificate-alarms.d.ts.map +1 -0
  28. package/dist/esm/certificate-alarms.js.map +1 -0
  29. package/dist/esm/certificate-builder.d.ts +145 -0
  30. package/dist/esm/certificate-builder.d.ts.map +1 -0
  31. package/dist/esm/certificate-builder.js.map +1 -0
  32. package/dist/esm/defaults.d.ts +8 -0
  33. package/dist/esm/defaults.d.ts.map +1 -0
  34. package/dist/esm/defaults.js.map +1 -0
  35. package/dist/esm/index.d.ts +5 -0
  36. package/dist/esm/index.d.ts.map +1 -0
  37. package/dist/esm/index.js.map +1 -0
  38. package/dist/esm/package.json +3 -0
  39. package/package.json +35 -17
  40. package/dist/alarm-config.d.ts.map +0 -1
  41. package/dist/alarm-defaults.d.ts.map +0 -1
  42. package/dist/alarm-defaults.js.map +0 -1
  43. package/dist/certificate-alarms.d.ts.map +0 -1
  44. package/dist/certificate-alarms.js.map +0 -1
  45. package/dist/certificate-builder.d.ts.map +0 -1
  46. package/dist/certificate-builder.js.map +0 -1
  47. package/dist/defaults.d.ts.map +0 -1
  48. package/dist/defaults.js.map +0 -1
  49. package/dist/index.d.ts.map +0 -1
  50. package/dist/index.js.map +0 -1
  51. /package/dist/{alarm-config.d.ts → commonjs/alarm-config.d.ts} +0 -0
  52. /package/dist/{alarm-defaults.d.ts → commonjs/alarm-defaults.d.ts} +0 -0
  53. /package/dist/{certificate-alarms.d.ts → commonjs/certificate-alarms.d.ts} +0 -0
  54. /package/dist/{certificate-builder.d.ts → commonjs/certificate-builder.d.ts} +0 -0
  55. /package/dist/{defaults.d.ts → commonjs/defaults.d.ts} +0 -0
  56. /package/dist/{index.d.ts → commonjs/index.d.ts} +0 -0
  57. /package/dist/{alarm-config.js → esm/alarm-config.js} +0 -0
  58. /package/dist/{alarm-defaults.js → esm/alarm-defaults.js} +0 -0
  59. /package/dist/{certificate-alarms.js → esm/certificate-alarms.js} +0 -0
  60. /package/dist/{certificate-builder.js → esm/certificate-builder.js} +0 -0
  61. /package/dist/{defaults.js → esm/defaults.js} +0 -0
  62. /package/dist/{index.js → esm/index.js} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alarm-config.d.ts","sourceRoot":"","sources":["../../src/alarm-config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAE5D;;;;;;;GAOG;AACH,MAAM,WAAW,sBAAsB;IACrC;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;;;;;;;;;;;;;OAcG;IACH,YAAY,CAAC,EAAE,WAAW,GAAG,KAAK,CAAC;CACpC"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=alarm-config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"alarm-config.js","sourceRoot":"","sources":["../src/alarm-config.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"alarm-config.js","sourceRoot":"","sources":["../../src/alarm-config.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alarm-defaults.d.ts","sourceRoot":"","sources":["../../src/alarm-defaults.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAEpE,UAAU,wBAAwB;IAChC,OAAO,EAAE,IAAI,CAAC;IACd,YAAY,EAAE,mBAAmB,CAAC;CACnC;AAED;;;;GAIG;AACH,eAAO,MAAM,0BAA0B,EAAE,wBAmBxC,CAAC"}
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CERTIFICATE_ALARM_DEFAULTS = void 0;
4
+ const aws_cloudwatch_1 = require("aws-cdk-lib/aws-cloudwatch");
5
+ /**
6
+ * AWS-recommended default alarm configuration for ACM certificates.
7
+ *
8
+ * @see https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Best_Practice_Recommended_Alarms_AWS_Services.html#CertificateManager
9
+ */
10
+ exports.CERTIFICATE_ALARM_DEFAULTS = {
11
+ enabled: true,
12
+ /**
13
+ * Alarm 45 days before expiry — AWS's recommended threshold. For public
14
+ * certificates, ACM begins auto-renewal attempts around 60 days out, so
15
+ * 45 days leaves a two-week window to investigate renewal failures
16
+ * before the certificate expires.
17
+ *
18
+ * `treatMissingData: notBreaching` avoids false alarms after a
19
+ * certificate has effectively expired — at that point ACM stops
20
+ * emitting DaysToExpiry, and there is nothing left to alarm about.
21
+ */
22
+ daysToExpiry: {
23
+ threshold: 45,
24
+ evaluationPeriods: 1,
25
+ datapointsToAlarm: 1,
26
+ treatMissingData: aws_cloudwatch_1.TreatMissingData.NOT_BREACHING,
27
+ },
28
+ };
29
+ //# sourceMappingURL=alarm-defaults.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alarm-defaults.js","sourceRoot":"","sources":["../../src/alarm-defaults.ts"],"names":[],"mappings":";;;AAAA,+DAA8D;AAQ9D;;;;GAIG;AACU,QAAA,0BAA0B,GAA6B;IAClE,OAAO,EAAE,IAAI;IAEb;;;;;;;;;OASG;IACH,YAAY,EAAE;QACZ,SAAS,EAAE,EAAE;QACb,iBAAiB,EAAE,CAAC;QACpB,iBAAiB,EAAE,CAAC;QACpB,gBAAgB,EAAE,iCAAgB,CAAC,aAAa;KACjD;CACF,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"certificate-alarms.d.ts","sourceRoot":"","sources":["../../src/certificate-alarms.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,KAAK,EAAsB,MAAM,4BAA4B,CAAC;AAC5E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,sBAAsB,EAAoC,MAAM,0BAA0B,CAAC;AACpG,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAKhE;;;GAGG;AACH,wBAAgB,kCAAkC,CAChD,WAAW,EAAE,YAAY,EACzB,MAAM,EAAE,sBAAsB,GAAG,SAAS,GACzC,eAAe,EAAE,CAqBnB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,UAAU,EACjB,EAAE,EAAE,MAAM,EACV,WAAW,EAAE,YAAY,EACzB,MAAM,EAAE,sBAAsB,GAAG,KAAK,GAAG,SAAS,EAClD,YAAY,GAAE,sBAAsB,CAAC,YAAY,CAAC,EAAO,GACxD,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAUvB"}
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.resolveCertificateAlarmDefinitions = resolveCertificateAlarmDefinitions;
4
+ exports.createCertificateAlarms = createCertificateAlarms;
5
+ const aws_cdk_lib_1 = require("aws-cdk-lib");
6
+ const aws_cloudwatch_1 = require("aws-cdk-lib/aws-cloudwatch");
7
+ const cloudwatch_1 = require("@composurecdk/cloudwatch");
8
+ const alarm_defaults_js_1 = require("./alarm-defaults.js");
9
+ const METRIC_PERIOD = aws_cdk_lib_1.Duration.days(1);
10
+ /**
11
+ * Resolves the recommended alarm configuration into fully-resolved
12
+ * {@link AlarmDefinition}s for an ACM certificate.
13
+ */
14
+ function resolveCertificateAlarmDefinitions(certificate, config) {
15
+ if (config?.enabled === false)
16
+ return [];
17
+ const definitions = [];
18
+ if (config?.daysToExpiry !== false) {
19
+ const cfg = (0, cloudwatch_1.resolveAlarmConfig)(config?.daysToExpiry, alarm_defaults_js_1.CERTIFICATE_ALARM_DEFAULTS.daysToExpiry);
20
+ definitions.push({
21
+ key: "daysToExpiry",
22
+ alarmName: cfg.alarmName,
23
+ metric: certificate.metricDaysToExpiry({ period: METRIC_PERIOD }),
24
+ threshold: cfg.threshold,
25
+ comparisonOperator: aws_cloudwatch_1.ComparisonOperator.LESS_THAN_OR_EQUAL_TO_THRESHOLD,
26
+ evaluationPeriods: cfg.evaluationPeriods,
27
+ datapointsToAlarm: cfg.datapointsToAlarm,
28
+ treatMissingData: cfg.treatMissingData,
29
+ description: `ACM certificate is approaching expiry. Threshold: <= ${String(cfg.threshold)} days remaining.`,
30
+ });
31
+ }
32
+ return definitions;
33
+ }
34
+ /**
35
+ * Creates AWS-recommended CloudWatch alarms for an ACM certificate,
36
+ * merging recommended definitions with any custom alarm builders.
37
+ *
38
+ * @param scope - CDK construct scope for creating alarm constructs.
39
+ * @param id - Base identifier for alarm construct ids.
40
+ * @param certificate - The ACM certificate to create alarms for.
41
+ * @param config - User-provided alarm configuration, or `false` to disable all.
42
+ * @param customAlarms - Custom alarm builders added via `addAlarm()`.
43
+ * @returns A record mapping alarm keys to their created Alarm constructs.
44
+ *
45
+ * @see https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Best_Practice_Recommended_Alarms_AWS_Services.html#CertificateManager
46
+ */
47
+ function createCertificateAlarms(scope, id, certificate, config, customAlarms = []) {
48
+ if (config === false)
49
+ return {};
50
+ const enabled = config?.enabled ?? alarm_defaults_js_1.CERTIFICATE_ALARM_DEFAULTS.enabled;
51
+ if (!enabled)
52
+ return {};
53
+ const recommended = resolveCertificateAlarmDefinitions(certificate, config);
54
+ const custom = customAlarms.map((b) => b.resolve(certificate));
55
+ return (0, cloudwatch_1.createAlarms)(scope, id, [...recommended, ...custom]);
56
+ }
57
+ //# sourceMappingURL=certificate-alarms.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"certificate-alarms.js","sourceRoot":"","sources":["../../src/certificate-alarms.ts"],"names":[],"mappings":";;AAeA,gFAwBC;AAeD,0DAgBC;AAtED,6CAAuC;AACvC,+DAA4E;AAI5E,yDAAoG;AAEpG,2DAAiE;AAEjE,MAAM,aAAa,GAAG,sBAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAEvC;;;GAGG;AACH,SAAgB,kCAAkC,CAChD,WAAyB,EACzB,MAA0C;IAE1C,IAAI,MAAM,EAAE,OAAO,KAAK,KAAK;QAAE,OAAO,EAAE,CAAC;IAEzC,MAAM,WAAW,GAAsB,EAAE,CAAC;IAE1C,IAAI,MAAM,EAAE,YAAY,KAAK,KAAK,EAAE,CAAC;QACnC,MAAM,GAAG,GAAG,IAAA,+BAAkB,EAAC,MAAM,EAAE,YAAY,EAAE,8CAA0B,CAAC,YAAY,CAAC,CAAC;QAC9F,WAAW,CAAC,IAAI,CAAC;YACf,GAAG,EAAE,cAAc;YACnB,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,MAAM,EAAE,WAAW,CAAC,kBAAkB,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC;YACjE,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,kBAAkB,EAAE,mCAAkB,CAAC,+BAA+B;YACtE,iBAAiB,EAAE,GAAG,CAAC,iBAAiB;YACxC,iBAAiB,EAAE,GAAG,CAAC,iBAAiB;YACxC,gBAAgB,EAAE,GAAG,CAAC,gBAAgB;YACtC,WAAW,EAAE,wDAAwD,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,kBAAkB;SAC7G,CAAC,CAAC;IACL,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,SAAgB,uBAAuB,CACrC,KAAiB,EACjB,EAAU,EACV,WAAyB,EACzB,MAAkD,EAClD,eAAuD,EAAE;IAEzD,IAAI,MAAM,KAAK,KAAK;QAAE,OAAO,EAAE,CAAC;IAEhC,MAAM,OAAO,GAAG,MAAM,EAAE,OAAO,IAAI,8CAA0B,CAAC,OAAO,CAAC;IACtE,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,CAAC;IAExB,MAAM,WAAW,GAAG,kCAAkC,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IAC5E,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;IAE/D,OAAO,IAAA,yBAAY,EAAC,KAAK,EAAE,EAAE,EAAE,CAAC,GAAG,WAAW,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC;AAC9D,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"certificate-builder.d.ts","sourceRoot":"","sources":["../../src/certificate-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EAEX,KAAK,gBAAgB,EACrB,KAAK,YAAY,EAClB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,KAAK,SAAS,EAAW,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAC1F,OAAO,EAAE,KAAK,cAAc,EAAiB,MAAM,8BAA8B,CAAC;AAClF,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAIhE;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,uBAAwB,SAAQ,gBAAgB;IAC/D;;;;;;;;OAQG;IACH,cAAc,CAAC,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC;IAEzC;;;;;;;OAOG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC;IAE1D;;;;;;;;;;;;OAYG;IACH,iBAAiB,CAAC,EAAE,sBAAsB,GAAG,KAAK,CAAC;CACpD;AAED;;;GAGG;AACH,MAAM,WAAW,wBAAwB;IACvC,4DAA4D;IAC5D,WAAW,EAAE,WAAW,CAAC;IAEzB;;;;;;;;;;;OAWG;IACH,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;CAC/B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,MAAM,MAAM,mBAAmB,GAAG,cAAc,CAAC,uBAAuB,EAAE,kBAAkB,CAAC,CAAC;AAE9F,cAAM,kBAAmB,YAAW,SAAS,CAAC,wBAAwB,CAAC;;IACrE,KAAK,EAAE,OAAO,CAAC,uBAAuB,CAAC,CAAM;IAG7C,QAAQ,CACN,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,CACT,KAAK,EAAE,sBAAsB,CAAC,YAAY,CAAC,KACxC,sBAAsB,CAAC,YAAY,CAAC,GACxC,IAAI;IAKP;;;;;;OAMG;IACH,CAAC,UAAU,CAAC,CAAC,MAAM,EAAE,kBAAkB,GAAG,IAAI;IAI9C,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,wBAAwB;CAwDjG;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,wBAAwB,IAAI,mBAAmB,CAE9D"}
@@ -0,0 +1,87 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createCertificateBuilder = createCertificateBuilder;
4
+ const aws_certificatemanager_1 = require("aws-cdk-lib/aws-certificatemanager");
5
+ const core_1 = require("@composurecdk/core");
6
+ const cloudformation_1 = require("@composurecdk/cloudformation");
7
+ const cloudwatch_1 = require("@composurecdk/cloudwatch");
8
+ const certificate_alarms_js_1 = require("./certificate-alarms.js");
9
+ const defaults_js_1 = require("./defaults.js");
10
+ class CertificateBuilder {
11
+ props = {};
12
+ #customAlarms = [];
13
+ addAlarm(key, configure) {
14
+ this.#customAlarms.push(configure(new cloudwatch_1.AlarmDefinitionBuilder(key)));
15
+ return this;
16
+ }
17
+ /**
18
+ * Copies non-`props` state onto a freshly cloned builder. Per ADR-0005,
19
+ * the array is spread into a fresh container; the
20
+ * {@link AlarmDefinitionBuilder} elements are shared by reference.
21
+ *
22
+ * @internal
23
+ */
24
+ [core_1.COPY_STATE](target) {
25
+ target.#customAlarms.push(...this.#customAlarms);
26
+ }
27
+ build(scope, id, context) {
28
+ const { validationZone, validationZones, validation: userValidation, recommendedAlarms: alarmConfig, ...certProps } = this.props;
29
+ if (!certProps.domainName) {
30
+ throw new Error(`CertificateBuilder "${id}" requires a domainName. ` +
31
+ `Call .domainName() with the fully-qualified domain.`);
32
+ }
33
+ if ([userValidation, validationZone, validationZones].filter(Boolean).length > 1) {
34
+ throw new Error(`CertificateBuilder "${id}": 'validation', 'validationZone', and 'validationZones' ` +
35
+ `are mutually exclusive. Set exactly one.`);
36
+ }
37
+ let validation;
38
+ if (userValidation) {
39
+ validation = userValidation;
40
+ }
41
+ else if (validationZones) {
42
+ const resolvedZones = Object.fromEntries(Object.entries(validationZones).map(([domain, zone]) => [domain, (0, core_1.resolve)(zone, context)]));
43
+ validation = aws_certificatemanager_1.CertificateValidation.fromDnsMultiZone(resolvedZones);
44
+ }
45
+ else if (validationZone) {
46
+ validation = aws_certificatemanager_1.CertificateValidation.fromDns((0, core_1.resolve)(validationZone, context));
47
+ }
48
+ else {
49
+ throw new Error(`CertificateBuilder "${id}" requires DNS validation to be configured. ` +
50
+ `Call .validationZone() with the hosted zone for the certificate's domain, ` +
51
+ `or .validationZones() when domains span multiple zones, ` +
52
+ `or .validation() to configure an explicit CertificateValidation. ` +
53
+ `Email validation is not enabled by default because it blocks stack creation.`);
54
+ }
55
+ const mergedProps = {
56
+ ...defaults_js_1.CERTIFICATE_DEFAULTS,
57
+ ...certProps,
58
+ validation,
59
+ };
60
+ const certificate = new aws_certificatemanager_1.Certificate(scope, id, mergedProps);
61
+ const alarms = (0, certificate_alarms_js_1.createCertificateAlarms)(scope, id, certificate, alarmConfig, this.#customAlarms);
62
+ return { certificate, alarms };
63
+ }
64
+ }
65
+ /**
66
+ * Creates a new {@link ICertificateBuilder} for configuring an ACM certificate.
67
+ *
68
+ * This is the entry point for defining an ACM certificate component. The
69
+ * returned builder exposes every {@link CertificateBuilderProps} property as
70
+ * a fluent setter/getter and implements {@link Lifecycle} for use with
71
+ * {@link compose}.
72
+ *
73
+ * @returns A fluent builder for an ACM certificate.
74
+ *
75
+ * @example
76
+ * ```ts
77
+ * const cert = createCertificateBuilder()
78
+ * .domainName("example.com")
79
+ * .validationZone(zone);
80
+ *
81
+ * const result = cert.build(stack, "SiteCert");
82
+ * ```
83
+ */
84
+ function createCertificateBuilder() {
85
+ return (0, cloudformation_1.taggedBuilder)(CertificateBuilder);
86
+ }
87
+ //# sourceMappingURL=certificate-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"certificate-builder.js","sourceRoot":"","sources":["../../src/certificate-builder.ts"],"names":[],"mappings":";;AAiOA,4DAEC;AAnOD,+EAK4C;AAI5C,6CAA0F;AAC1F,iEAAkF;AAClF,yDAAkE;AAElE,mEAAkE;AAClE,+CAAqD;AA6GrD,MAAM,kBAAkB;IACtB,KAAK,GAAqC,EAAE,CAAC;IACpC,aAAa,GAA2C,EAAE,CAAC;IAEpE,QAAQ,CACN,GAAW,EACX,SAEyC;QAEzC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,mCAAsB,CAAe,GAAG,CAAC,CAAC,CAAC,CAAC;QAClF,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;OAMG;IACH,CAAC,iBAAU,CAAC,CAAC,MAA0B;QACrC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC;IACnD,CAAC;IAED,KAAK,CAAC,KAAiB,EAAE,EAAU,EAAE,OAAgC;QACnE,MAAM,EACJ,cAAc,EACd,eAAe,EACf,UAAU,EAAE,cAAc,EAC1B,iBAAiB,EAAE,WAAW,EAC9B,GAAG,SAAS,EACb,GAAG,IAAI,CAAC,KAAK,CAAC;QAEf,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CACb,uBAAuB,EAAE,2BAA2B;gBAClD,qDAAqD,CACxD,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,cAAc,EAAE,cAAc,EAAE,eAAe,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjF,MAAM,IAAI,KAAK,CACb,uBAAuB,EAAE,2DAA2D;gBAClF,0CAA0C,CAC7C,CAAC;QACJ,CAAC;QAED,IAAI,UAAiC,CAAC;QAEtC,IAAI,cAAc,EAAE,CAAC;YACnB,UAAU,GAAG,cAAc,CAAC;QAC9B,CAAC;aAAM,IAAI,eAAe,EAAE,CAAC;YAC3B,MAAM,aAAa,GAAG,MAAM,CAAC,WAAW,CACtC,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,IAAA,cAAO,EAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAC1F,CAAC;YACF,UAAU,GAAG,8CAAqB,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;QACrE,CAAC;aAAM,IAAI,cAAc,EAAE,CAAC;YAC1B,UAAU,GAAG,8CAAqB,CAAC,OAAO,CAAC,IAAA,cAAO,EAAC,cAAc,EAAE,OAAO,CAAC,CAAC,CAAC;QAC/E,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CACb,uBAAuB,EAAE,8CAA8C;gBACrE,4EAA4E;gBAC5E,0DAA0D;gBAC1D,mEAAmE;gBACnE,8EAA8E,CACjF,CAAC;QACJ,CAAC;QAED,MAAM,WAAW,GAAG;YAClB,GAAG,kCAAoB;YACvB,GAAG,SAAS;YACZ,UAAU;SACS,CAAC;QAEtB,MAAM,WAAW,GAAG,IAAI,oCAAW,CAAC,KAAK,EAAE,EAAE,EAAE,WAAW,CAAC,CAAC;QAE5D,MAAM,MAAM,GAAG,IAAA,+CAAuB,EAAC,KAAK,EAAE,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QAEhG,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC;IACjC,CAAC;CACF;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,SAAgB,wBAAwB;IACtC,OAAO,IAAA,8BAAa,EAA8C,kBAAkB,CAAC,CAAC;AACxF,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/defaults.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AAEzF;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,EAAE,OAAO,CAAC,gBAAgB,CAiB1D,CAAC"}
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CERTIFICATE_DEFAULTS = void 0;
4
+ const aws_certificatemanager_1 = require("aws-cdk-lib/aws-certificatemanager");
5
+ /**
6
+ * Secure, AWS-recommended defaults applied to every ACM certificate built
7
+ * with {@link createCertificateBuilder}. Each property can be individually
8
+ * overridden via the builder's fluent API.
9
+ */
10
+ exports.CERTIFICATE_DEFAULTS = {
11
+ /**
12
+ * Use RSA-2048 as the key algorithm. Widest client/CDN compatibility
13
+ * (CloudFront, API Gateway, ALB) and sufficient for TLS 1.2 and 1.3.
14
+ * For newer workloads, `KeyAlgorithm.EC_PRIME256V1` offers smaller
15
+ * signatures at comparable security — override via `.keyAlgorithm()`.
16
+ * @see https://docs.aws.amazon.com/acm/latest/userguide/acm-certificate.html#algorithms.title
17
+ */
18
+ keyAlgorithm: aws_certificatemanager_1.KeyAlgorithm.RSA_2048,
19
+ /**
20
+ * Publish certificates to the public Certificate Transparency (CT) logs.
21
+ * CT logging is required by modern browsers to trust a certificate and
22
+ * enables detection of mis-issuance.
23
+ * @see https://docs.aws.amazon.com/acm/latest/userguide/acm-bestpractices.html#best-practices-transparency
24
+ */
25
+ transparencyLoggingEnabled: true,
26
+ };
27
+ //# sourceMappingURL=defaults.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../src/defaults.ts"],"names":[],"mappings":";;;AAAA,+EAAyF;AAEzF;;;;GAIG;AACU,QAAA,oBAAoB,GAA8B;IAC7D;;;;;;OAMG;IACH,YAAY,EAAE,qCAAY,CAAC,QAAQ;IAEnC;;;;;OAKG;IACH,0BAA0B,EAAE,IAAI;CACjC,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,EACxB,KAAK,uBAAuB,EAC5B,KAAK,wBAAwB,EAC7B,KAAK,mBAAmB,GACzB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAChE,OAAO,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CERTIFICATE_ALARM_DEFAULTS = exports.CERTIFICATE_DEFAULTS = exports.createCertificateBuilder = void 0;
4
+ var certificate_builder_js_1 = require("./certificate-builder.js");
5
+ Object.defineProperty(exports, "createCertificateBuilder", { enumerable: true, get: function () { return certificate_builder_js_1.createCertificateBuilder; } });
6
+ var defaults_js_1 = require("./defaults.js");
7
+ Object.defineProperty(exports, "CERTIFICATE_DEFAULTS", { enumerable: true, get: function () { return defaults_js_1.CERTIFICATE_DEFAULTS; } });
8
+ var alarm_defaults_js_1 = require("./alarm-defaults.js");
9
+ Object.defineProperty(exports, "CERTIFICATE_ALARM_DEFAULTS", { enumerable: true, get: function () { return alarm_defaults_js_1.CERTIFICATE_ALARM_DEFAULTS; } });
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,mEAKkC;AAJhC,kIAAA,wBAAwB,OAAA;AAK1B,6CAAqD;AAA5C,mHAAA,oBAAoB,OAAA;AAE7B,yDAAiE;AAAxD,+HAAA,0BAA0B,OAAA"}
@@ -0,0 +1,3 @@
1
+ {
2
+ "type": "commonjs"
3
+ }
@@ -0,0 +1,34 @@
1
+ import type { AlarmConfig } from "@composurecdk/cloudwatch";
2
+ /**
3
+ * Controls which recommended alarms are created for an ACM certificate.
4
+ * All applicable alarms are enabled by default with AWS-recommended thresholds.
5
+ * Set individual alarms to `false` to disable them, or provide an
6
+ * {@link AlarmConfig} to tune thresholds.
7
+ *
8
+ * @see https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Best_Practice_Recommended_Alarms_AWS_Services.html#CertificateManager
9
+ */
10
+ export interface CertificateAlarmConfig {
11
+ /**
12
+ * Master switch: set to `false` to disable all recommended alarms.
13
+ * Individual alarms can also be disabled via their own entry.
14
+ * @default true
15
+ */
16
+ enabled?: boolean;
17
+ /**
18
+ * Alarm when the certificate is approaching expiry.
19
+ *
20
+ * ACM public certificates auto-renew, so this alarm is primarily a
21
+ * safety net for the edge cases where renewal cannot complete (for
22
+ * example, when DNS validation records have been removed from the
23
+ * zone). For imported certificates, which do not auto-renew, this
24
+ * alarm is the primary expiry control.
25
+ *
26
+ * Metric: `AWS/CertificateManager DaysToExpiry`, statistic Minimum,
27
+ * period 1 day, dimension `CertificateArn`.
28
+ * Default threshold: &le; 45 days.
29
+ *
30
+ * @see https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Best_Practice_Recommended_Alarms_AWS_Services.html#CertificateManager
31
+ */
32
+ daysToExpiry?: AlarmConfig | false;
33
+ }
34
+ //# sourceMappingURL=alarm-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alarm-config.d.ts","sourceRoot":"","sources":["../../src/alarm-config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAE5D;;;;;;;GAOG;AACH,MAAM,WAAW,sBAAsB;IACrC;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;;;;;;;;;;;;;OAcG;IACH,YAAY,CAAC,EAAE,WAAW,GAAG,KAAK,CAAC;CACpC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alarm-config.js","sourceRoot":"","sources":["../../src/alarm-config.ts"],"names":[],"mappings":""}
@@ -0,0 +1,13 @@
1
+ import type { AlarmConfigDefaults } from "@composurecdk/cloudwatch";
2
+ interface CertificateAlarmDefaults {
3
+ enabled: true;
4
+ daysToExpiry: AlarmConfigDefaults;
5
+ }
6
+ /**
7
+ * AWS-recommended default alarm configuration for ACM certificates.
8
+ *
9
+ * @see https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Best_Practice_Recommended_Alarms_AWS_Services.html#CertificateManager
10
+ */
11
+ export declare const CERTIFICATE_ALARM_DEFAULTS: CertificateAlarmDefaults;
12
+ export {};
13
+ //# sourceMappingURL=alarm-defaults.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alarm-defaults.d.ts","sourceRoot":"","sources":["../../src/alarm-defaults.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAEpE,UAAU,wBAAwB;IAChC,OAAO,EAAE,IAAI,CAAC;IACd,YAAY,EAAE,mBAAmB,CAAC;CACnC;AAED;;;;GAIG;AACH,eAAO,MAAM,0BAA0B,EAAE,wBAmBxC,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alarm-defaults.js","sourceRoot":"","sources":["../../src/alarm-defaults.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAQ9D;;;;GAIG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAA6B;IAClE,OAAO,EAAE,IAAI;IAEb;;;;;;;;;OASG;IACH,YAAY,EAAE;QACZ,SAAS,EAAE,EAAE;QACb,iBAAiB,EAAE,CAAC;QACpB,iBAAiB,EAAE,CAAC;QACpB,gBAAgB,EAAE,gBAAgB,CAAC,aAAa;KACjD;CACF,CAAC"}
@@ -0,0 +1,26 @@
1
+ import { type Alarm } from "aws-cdk-lib/aws-cloudwatch";
2
+ import type { ICertificate } from "aws-cdk-lib/aws-certificatemanager";
3
+ import type { IConstruct } from "constructs";
4
+ import type { AlarmDefinition } from "@composurecdk/cloudwatch";
5
+ import { AlarmDefinitionBuilder } from "@composurecdk/cloudwatch";
6
+ import type { CertificateAlarmConfig } from "./alarm-config.js";
7
+ /**
8
+ * Resolves the recommended alarm configuration into fully-resolved
9
+ * {@link AlarmDefinition}s for an ACM certificate.
10
+ */
11
+ export declare function resolveCertificateAlarmDefinitions(certificate: ICertificate, config: CertificateAlarmConfig | undefined): AlarmDefinition[];
12
+ /**
13
+ * Creates AWS-recommended CloudWatch alarms for an ACM certificate,
14
+ * merging recommended definitions with any custom alarm builders.
15
+ *
16
+ * @param scope - CDK construct scope for creating alarm constructs.
17
+ * @param id - Base identifier for alarm construct ids.
18
+ * @param certificate - The ACM certificate to create alarms for.
19
+ * @param config - User-provided alarm configuration, or `false` to disable all.
20
+ * @param customAlarms - Custom alarm builders added via `addAlarm()`.
21
+ * @returns A record mapping alarm keys to their created Alarm constructs.
22
+ *
23
+ * @see https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Best_Practice_Recommended_Alarms_AWS_Services.html#CertificateManager
24
+ */
25
+ export declare function createCertificateAlarms(scope: IConstruct, id: string, certificate: ICertificate, config: CertificateAlarmConfig | false | undefined, customAlarms?: AlarmDefinitionBuilder<ICertificate>[]): Record<string, Alarm>;
26
+ //# sourceMappingURL=certificate-alarms.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"certificate-alarms.d.ts","sourceRoot":"","sources":["../../src/certificate-alarms.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,KAAK,EAAsB,MAAM,4BAA4B,CAAC;AAC5E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,sBAAsB,EAAoC,MAAM,0BAA0B,CAAC;AACpG,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAKhE;;;GAGG;AACH,wBAAgB,kCAAkC,CAChD,WAAW,EAAE,YAAY,EACzB,MAAM,EAAE,sBAAsB,GAAG,SAAS,GACzC,eAAe,EAAE,CAqBnB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,UAAU,EACjB,EAAE,EAAE,MAAM,EACV,WAAW,EAAE,YAAY,EACzB,MAAM,EAAE,sBAAsB,GAAG,KAAK,GAAG,SAAS,EAClD,YAAY,GAAE,sBAAsB,CAAC,YAAY,CAAC,EAAO,GACxD,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAUvB"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"certificate-alarms.js","sourceRoot":"","sources":["../../src/certificate-alarms.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAc,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAI5E,OAAO,EAA0B,YAAY,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAEpG,OAAO,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;AAEjE,MAAM,aAAa,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAEvC;;;GAGG;AACH,MAAM,UAAU,kCAAkC,CAChD,WAAyB,EACzB,MAA0C;IAE1C,IAAI,MAAM,EAAE,OAAO,KAAK,KAAK;QAAE,OAAO,EAAE,CAAC;IAEzC,MAAM,WAAW,GAAsB,EAAE,CAAC;IAE1C,IAAI,MAAM,EAAE,YAAY,KAAK,KAAK,EAAE,CAAC;QACnC,MAAM,GAAG,GAAG,kBAAkB,CAAC,MAAM,EAAE,YAAY,EAAE,0BAA0B,CAAC,YAAY,CAAC,CAAC;QAC9F,WAAW,CAAC,IAAI,CAAC;YACf,GAAG,EAAE,cAAc;YACnB,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,MAAM,EAAE,WAAW,CAAC,kBAAkB,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC;YACjE,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,kBAAkB,EAAE,kBAAkB,CAAC,+BAA+B;YACtE,iBAAiB,EAAE,GAAG,CAAC,iBAAiB;YACxC,iBAAiB,EAAE,GAAG,CAAC,iBAAiB;YACxC,gBAAgB,EAAE,GAAG,CAAC,gBAAgB;YACtC,WAAW,EAAE,wDAAwD,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,kBAAkB;SAC7G,CAAC,CAAC;IACL,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,uBAAuB,CACrC,KAAiB,EACjB,EAAU,EACV,WAAyB,EACzB,MAAkD,EAClD,eAAuD,EAAE;IAEzD,IAAI,MAAM,KAAK,KAAK;QAAE,OAAO,EAAE,CAAC;IAEhC,MAAM,OAAO,GAAG,MAAM,EAAE,OAAO,IAAI,0BAA0B,CAAC,OAAO,CAAC;IACtE,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,CAAC;IAExB,MAAM,WAAW,GAAG,kCAAkC,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IAC5E,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;IAE/D,OAAO,YAAY,CAAC,KAAK,EAAE,EAAE,EAAE,CAAC,GAAG,WAAW,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC;AAC9D,CAAC"}
@@ -0,0 +1,145 @@
1
+ import { Certificate, type CertificateProps, type ICertificate } from "aws-cdk-lib/aws-certificatemanager";
2
+ import { type Alarm } from "aws-cdk-lib/aws-cloudwatch";
3
+ import type { IHostedZone } from "aws-cdk-lib/aws-route53";
4
+ import { type IConstruct } from "constructs";
5
+ import { COPY_STATE, type Lifecycle, type Resolvable } from "@composurecdk/core";
6
+ import { type ITaggedBuilder } from "@composurecdk/cloudformation";
7
+ import { AlarmDefinitionBuilder } from "@composurecdk/cloudwatch";
8
+ import type { CertificateAlarmConfig } from "./alarm-config.js";
9
+ /**
10
+ * Configuration properties for the ACM certificate builder.
11
+ *
12
+ * Extends the CDK {@link CertificateProps} with additional builder-specific
13
+ * options. The `validation` field is augmented by {@link validationZone} /
14
+ * {@link validationZones}, which accept {@link Resolvable} hosted zones so
15
+ * the validation zone can come from a composed component.
16
+ *
17
+ * If neither `validation`, `validationZone`, nor `validationZones` is set,
18
+ * the builder fails fast — falling back to ACM's email-based validation would
19
+ * stall stack creation waiting on a human to click a link.
20
+ */
21
+ export interface CertificateBuilderProps extends CertificateProps {
22
+ /**
23
+ * The hosted zone used to automatically create DNS validation records
24
+ * for every domain on the certificate. Accepts a {@link Resolvable} so
25
+ * a zone produced by a sibling component can be wired in via `ref`.
26
+ *
27
+ * Mutually exclusive with {@link validationZones} and {@link CertificateProps.validation}.
28
+ * When set, the builder configures
29
+ * {@link CertificateValidation.fromDns | CertificateValidation.fromDns(zone)}.
30
+ */
31
+ validationZone?: Resolvable<IHostedZone>;
32
+ /**
33
+ * A map of domain name to hosted zone, used when the apex and subject
34
+ * alternative names live in different zones. Each value accepts a
35
+ * {@link Resolvable}. When set, the builder configures
36
+ * {@link CertificateValidation.fromDnsMultiZone}.
37
+ *
38
+ * Mutually exclusive with {@link validationZone} and {@link CertificateProps.validation}.
39
+ */
40
+ validationZones?: Record<string, Resolvable<IHostedZone>>;
41
+ /**
42
+ * Configuration for AWS-recommended CloudWatch alarms.
43
+ *
44
+ * By default, the builder creates a recommended `daysToExpiry` alarm
45
+ * at 45 days. The alarm can be customized or disabled. Set to `false`
46
+ * to disable all alarms.
47
+ *
48
+ * No alarm actions are configured by default since notification
49
+ * methods are user-specific. Access alarms from the build result
50
+ * or use an `afterBuild` hook to apply actions.
51
+ *
52
+ * @see https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Best_Practice_Recommended_Alarms_AWS_Services.html#CertificateManager
53
+ */
54
+ recommendedAlarms?: CertificateAlarmConfig | false;
55
+ }
56
+ /**
57
+ * The build output of an {@link ICertificateBuilder}. Contains the CDK
58
+ * constructs created during {@link Lifecycle.build}, keyed by role.
59
+ */
60
+ export interface CertificateBuilderResult {
61
+ /** The ACM certificate construct created by the builder. */
62
+ certificate: Certificate;
63
+ /**
64
+ * CloudWatch alarms created for the certificate, keyed by alarm name.
65
+ *
66
+ * Includes both AWS-recommended alarms and any custom alarms added
67
+ * via {@link ICertificateBuilder.addAlarm}. Access individual alarms
68
+ * by key (e.g., `result.alarms.daysToExpiry`).
69
+ *
70
+ * No alarm actions are configured — apply them via the result or an
71
+ * `afterBuild` hook.
72
+ *
73
+ * @see https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Best_Practice_Recommended_Alarms_AWS_Services.html#CertificateManager
74
+ */
75
+ alarms: Record<string, Alarm>;
76
+ }
77
+ /**
78
+ * A fluent builder for configuring and creating an AWS Certificate Manager
79
+ * certificate.
80
+ *
81
+ * Each configuration property from the CDK {@link CertificateProps} is
82
+ * exposed as an overloaded method: call with a value to set it (returns the
83
+ * builder for chaining), or call with no arguments to read the current value.
84
+ *
85
+ * Validation is DNS-based by default — set
86
+ * {@link CertificateBuilderProps.validationZone | validationZone} (or
87
+ * {@link CertificateBuilderProps.validationZones | validationZones}) with the
88
+ * hosted zone(s) that own the certificate's domains. Accepts a
89
+ * {@link Resolvable} so zones produced by a composed component can be
90
+ * wired in via `ref`.
91
+ *
92
+ * The builder implements {@link Lifecycle}, so it can be used directly as a
93
+ * component in a {@link compose | composed system}. When built, it creates
94
+ * an ACM certificate with the configured properties and returns a
95
+ * {@link CertificateBuilderResult}.
96
+ *
97
+ * The builder also creates AWS-recommended CloudWatch alarms by default
98
+ * (`daysToExpiry` at 45 days). Alarms can be customized or disabled via the
99
+ * `recommendedAlarms` property.
100
+ *
101
+ * @example
102
+ * ```ts
103
+ * const cert = createCertificateBuilder()
104
+ * .domainName("example.com")
105
+ * .subjectAlternativeNames(["www.example.com"])
106
+ * .validationZone(zone);
107
+ * ```
108
+ */
109
+ export type ICertificateBuilder = ITaggedBuilder<CertificateBuilderProps, CertificateBuilder>;
110
+ declare class CertificateBuilder implements Lifecycle<CertificateBuilderResult> {
111
+ #private;
112
+ props: Partial<CertificateBuilderProps>;
113
+ addAlarm(key: string, configure: (alarm: AlarmDefinitionBuilder<ICertificate>) => AlarmDefinitionBuilder<ICertificate>): this;
114
+ /**
115
+ * Copies non-`props` state onto a freshly cloned builder. Per ADR-0005,
116
+ * the array is spread into a fresh container; the
117
+ * {@link AlarmDefinitionBuilder} elements are shared by reference.
118
+ *
119
+ * @internal
120
+ */
121
+ [COPY_STATE](target: CertificateBuilder): void;
122
+ build(scope: IConstruct, id: string, context?: Record<string, object>): CertificateBuilderResult;
123
+ }
124
+ /**
125
+ * Creates a new {@link ICertificateBuilder} for configuring an ACM certificate.
126
+ *
127
+ * This is the entry point for defining an ACM certificate component. The
128
+ * returned builder exposes every {@link CertificateBuilderProps} property as
129
+ * a fluent setter/getter and implements {@link Lifecycle} for use with
130
+ * {@link compose}.
131
+ *
132
+ * @returns A fluent builder for an ACM certificate.
133
+ *
134
+ * @example
135
+ * ```ts
136
+ * const cert = createCertificateBuilder()
137
+ * .domainName("example.com")
138
+ * .validationZone(zone);
139
+ *
140
+ * const result = cert.build(stack, "SiteCert");
141
+ * ```
142
+ */
143
+ export declare function createCertificateBuilder(): ICertificateBuilder;
144
+ export {};
145
+ //# sourceMappingURL=certificate-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"certificate-builder.d.ts","sourceRoot":"","sources":["../../src/certificate-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EAEX,KAAK,gBAAgB,EACrB,KAAK,YAAY,EAClB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,KAAK,SAAS,EAAW,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAC1F,OAAO,EAAE,KAAK,cAAc,EAAiB,MAAM,8BAA8B,CAAC;AAClF,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAIhE;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,uBAAwB,SAAQ,gBAAgB;IAC/D;;;;;;;;OAQG;IACH,cAAc,CAAC,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC;IAEzC;;;;;;;OAOG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC;IAE1D;;;;;;;;;;;;OAYG;IACH,iBAAiB,CAAC,EAAE,sBAAsB,GAAG,KAAK,CAAC;CACpD;AAED;;;GAGG;AACH,MAAM,WAAW,wBAAwB;IACvC,4DAA4D;IAC5D,WAAW,EAAE,WAAW,CAAC;IAEzB;;;;;;;;;;;OAWG;IACH,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;CAC/B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,MAAM,MAAM,mBAAmB,GAAG,cAAc,CAAC,uBAAuB,EAAE,kBAAkB,CAAC,CAAC;AAE9F,cAAM,kBAAmB,YAAW,SAAS,CAAC,wBAAwB,CAAC;;IACrE,KAAK,EAAE,OAAO,CAAC,uBAAuB,CAAC,CAAM;IAG7C,QAAQ,CACN,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,CACT,KAAK,EAAE,sBAAsB,CAAC,YAAY,CAAC,KACxC,sBAAsB,CAAC,YAAY,CAAC,GACxC,IAAI;IAKP;;;;;;OAMG;IACH,CAAC,UAAU,CAAC,CAAC,MAAM,EAAE,kBAAkB,GAAG,IAAI;IAI9C,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,wBAAwB;CAwDjG;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,wBAAwB,IAAI,mBAAmB,CAE9D"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"certificate-builder.js","sourceRoot":"","sources":["../../src/certificate-builder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { type CertificateProps } from "aws-cdk-lib/aws-certificatemanager";
2
+ /**
3
+ * Secure, AWS-recommended defaults applied to every ACM certificate built
4
+ * with {@link createCertificateBuilder}. Each property can be individually
5
+ * overridden via the builder's fluent API.
6
+ */
7
+ export declare const CERTIFICATE_DEFAULTS: Partial<CertificateProps>;
8
+ //# sourceMappingURL=defaults.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/defaults.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AAEzF;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,EAAE,OAAO,CAAC,gBAAgB,CAiB1D,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../src/defaults.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAyB,MAAM,oCAAoC,CAAC;AAEzF;;;;GAIG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAA8B;IAC7D;;;;;;OAMG;IACH,YAAY,EAAE,YAAY,CAAC,QAAQ;IAEnC;;;;;OAKG;IACH,0BAA0B,EAAE,IAAI;CACjC,CAAC"}
@@ -0,0 +1,5 @@
1
+ export { createCertificateBuilder, type CertificateBuilderProps, type CertificateBuilderResult, type ICertificateBuilder, } from "./certificate-builder.js";
2
+ export { CERTIFICATE_DEFAULTS } from "./defaults.js";
3
+ export { type CertificateAlarmConfig } from "./alarm-config.js";
4
+ export { CERTIFICATE_ALARM_DEFAULTS } from "./alarm-defaults.js";
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,EACxB,KAAK,uBAAuB,EAC5B,KAAK,wBAAwB,EAC7B,KAAK,mBAAmB,GACzB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAChE,OAAO,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,GAIzB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAErD,OAAO,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,3 @@
1
+ {
2
+ "type": "module"
3
+ }
package/package.json CHANGED
@@ -1,29 +1,22 @@
1
1
  {
2
2
  "name": "@composurecdk/acm",
3
- "version": "0.7.0",
3
+ "version": "0.8.0",
4
4
  "description": "Composable AWS Certificate Manager builder with well-architected defaults",
5
5
  "repository": {
6
6
  "type": "git",
7
7
  "url": "https://github.com/laazyj/composureCDK",
8
8
  "directory": "packages/acm"
9
9
  },
10
- "main": "./dist/index.js",
11
- "types": "./dist/index.d.ts",
12
- "exports": {
13
- ".": {
14
- "import": "./dist/index.js",
15
- "types": "./dist/index.d.ts"
16
- }
17
- },
18
10
  "files": [
19
11
  "dist",
20
12
  "README.md",
21
13
  "LICENSE"
22
14
  ],
23
15
  "scripts": {
24
- "clean": "rm -rf dist",
25
- "build": "tsc -p tsconfig.build.json",
16
+ "clean": "rm -rf dist .tshy .tshy-build",
17
+ "build": "tshy",
26
18
  "typecheck": "tsc --noEmit",
19
+ "check:exports": "attw --pack . --profile node16 && publint",
27
20
  "test": "vitest run",
28
21
  "test:watch": "vitest"
29
22
  },
@@ -34,18 +27,43 @@
34
27
  "access": "public"
35
28
  },
36
29
  "type": "module",
30
+ "engines": {
31
+ "node": ">=20"
32
+ },
33
+ "tshy": {
34
+ "exports": {
35
+ "./package.json": "./package.json",
36
+ ".": "./src/index.ts"
37
+ }
38
+ },
37
39
  "peerDependencies": {
38
- "@composurecdk/cloudformation": "^0.7.0",
39
- "@composurecdk/cloudwatch": "^0.7.0",
40
- "@composurecdk/core": "^0.7.0",
40
+ "@composurecdk/cloudformation": "^0.8.0",
41
+ "@composurecdk/cloudwatch": "^0.8.0",
42
+ "@composurecdk/core": "^0.8.0",
41
43
  "aws-cdk-lib": "^2.0.0",
42
44
  "constructs": "^10.0.0"
43
45
  },
44
46
  "devDependencies": {
45
- "@types/node": "^25.6.0",
46
- "aws-cdk-lib": "^2.250.0",
47
+ "@types/node": "^25.6.2",
48
+ "aws-cdk-lib": "^2.253.1",
47
49
  "constructs": "^10.6.0",
48
50
  "typescript": "^6.0.3",
49
51
  "vitest": "^4.1.4"
50
- }
52
+ },
53
+ "exports": {
54
+ "./package.json": "./package.json",
55
+ ".": {
56
+ "import": {
57
+ "types": "./dist/esm/index.d.ts",
58
+ "default": "./dist/esm/index.js"
59
+ },
60
+ "require": {
61
+ "types": "./dist/commonjs/index.d.ts",
62
+ "default": "./dist/commonjs/index.js"
63
+ }
64
+ }
65
+ },
66
+ "main": "./dist/commonjs/index.js",
67
+ "types": "./dist/commonjs/index.d.ts",
68
+ "module": "./dist/esm/index.js"
51
69
  }
@@ -1 +0,0 @@
1
- {"version":3,"file":"alarm-config.d.ts","sourceRoot":"","sources":["../src/alarm-config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAE5D;;;;;;;GAOG;AACH,MAAM,WAAW,sBAAsB;IACrC;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;;;;;;;;;;;;;OAcG;IACH,YAAY,CAAC,EAAE,WAAW,GAAG,KAAK,CAAC;CACpC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"alarm-defaults.d.ts","sourceRoot":"","sources":["../src/alarm-defaults.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAEpE,UAAU,wBAAwB;IAChC,OAAO,EAAE,IAAI,CAAC;IACd,YAAY,EAAE,mBAAmB,CAAC;CACnC;AAED;;;;GAIG;AACH,eAAO,MAAM,0BAA0B,EAAE,wBAmBxC,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"alarm-defaults.js","sourceRoot":"","sources":["../src/alarm-defaults.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAQ9D;;;;GAIG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAA6B;IAClE,OAAO,EAAE,IAAI;IAEb;;;;;;;;;OASG;IACH,YAAY,EAAE;QACZ,SAAS,EAAE,EAAE;QACb,iBAAiB,EAAE,CAAC;QACpB,iBAAiB,EAAE,CAAC;QACpB,gBAAgB,EAAE,gBAAgB,CAAC,aAAa;KACjD;CACF,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"certificate-alarms.d.ts","sourceRoot":"","sources":["../src/certificate-alarms.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,KAAK,EAAsB,MAAM,4BAA4B,CAAC;AAC5E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,sBAAsB,EAAoC,MAAM,0BAA0B,CAAC;AACpG,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAKhE;;;GAGG;AACH,wBAAgB,kCAAkC,CAChD,WAAW,EAAE,YAAY,EACzB,MAAM,EAAE,sBAAsB,GAAG,SAAS,GACzC,eAAe,EAAE,CAqBnB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,UAAU,EACjB,EAAE,EAAE,MAAM,EACV,WAAW,EAAE,YAAY,EACzB,MAAM,EAAE,sBAAsB,GAAG,KAAK,GAAG,SAAS,EAClD,YAAY,GAAE,sBAAsB,CAAC,YAAY,CAAC,EAAO,GACxD,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAUvB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"certificate-alarms.js","sourceRoot":"","sources":["../src/certificate-alarms.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAc,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAI5E,OAAO,EAA0B,YAAY,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAEpG,OAAO,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;AAEjE,MAAM,aAAa,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAEvC;;;GAGG;AACH,MAAM,UAAU,kCAAkC,CAChD,WAAyB,EACzB,MAA0C;IAE1C,IAAI,MAAM,EAAE,OAAO,KAAK,KAAK;QAAE,OAAO,EAAE,CAAC;IAEzC,MAAM,WAAW,GAAsB,EAAE,CAAC;IAE1C,IAAI,MAAM,EAAE,YAAY,KAAK,KAAK,EAAE,CAAC;QACnC,MAAM,GAAG,GAAG,kBAAkB,CAAC,MAAM,EAAE,YAAY,EAAE,0BAA0B,CAAC,YAAY,CAAC,CAAC;QAC9F,WAAW,CAAC,IAAI,CAAC;YACf,GAAG,EAAE,cAAc;YACnB,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,MAAM,EAAE,WAAW,CAAC,kBAAkB,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC;YACjE,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,kBAAkB,EAAE,kBAAkB,CAAC,+BAA+B;YACtE,iBAAiB,EAAE,GAAG,CAAC,iBAAiB;YACxC,iBAAiB,EAAE,GAAG,CAAC,iBAAiB;YACxC,gBAAgB,EAAE,GAAG,CAAC,gBAAgB;YACtC,WAAW,EAAE,wDAAwD,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,kBAAkB;SAC7G,CAAC,CAAC;IACL,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,uBAAuB,CACrC,KAAiB,EACjB,EAAU,EACV,WAAyB,EACzB,MAAkD,EAClD,eAAuD,EAAE;IAEzD,IAAI,MAAM,KAAK,KAAK;QAAE,OAAO,EAAE,CAAC;IAEhC,MAAM,OAAO,GAAG,MAAM,EAAE,OAAO,IAAI,0BAA0B,CAAC,OAAO,CAAC;IACtE,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,CAAC;IAExB,MAAM,WAAW,GAAG,kCAAkC,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IAC5E,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;IAE/D,OAAO,YAAY,CAAC,KAAK,EAAE,EAAE,EAAE,CAAC,GAAG,WAAW,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC;AAC9D,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"certificate-builder.d.ts","sourceRoot":"","sources":["../src/certificate-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EAEX,KAAK,gBAAgB,EACrB,KAAK,YAAY,EAClB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,KAAK,SAAS,EAAW,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAC1F,OAAO,EAAE,KAAK,cAAc,EAAiB,MAAM,8BAA8B,CAAC;AAClF,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAIhE;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,uBAAwB,SAAQ,gBAAgB;IAC/D;;;;;;;;OAQG;IACH,cAAc,CAAC,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC;IAEzC;;;;;;;OAOG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC;IAE1D;;;;;;;;;;;;OAYG;IACH,iBAAiB,CAAC,EAAE,sBAAsB,GAAG,KAAK,CAAC;CACpD;AAED;;;GAGG;AACH,MAAM,WAAW,wBAAwB;IACvC,4DAA4D;IAC5D,WAAW,EAAE,WAAW,CAAC;IAEzB;;;;;;;;;;;OAWG;IACH,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;CAC/B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,MAAM,MAAM,mBAAmB,GAAG,cAAc,CAAC,uBAAuB,EAAE,kBAAkB,CAAC,CAAC;AAE9F,cAAM,kBAAmB,YAAW,SAAS,CAAC,wBAAwB,CAAC;;IACrE,KAAK,EAAE,OAAO,CAAC,uBAAuB,CAAC,CAAM;IAG7C,QAAQ,CACN,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,CACT,KAAK,EAAE,sBAAsB,CAAC,YAAY,CAAC,KACxC,sBAAsB,CAAC,YAAY,CAAC,GACxC,IAAI;IAKP;;;;;;OAMG;IACH,CAAC,UAAU,CAAC,CAAC,MAAM,EAAE,kBAAkB,GAAG,IAAI;IAI9C,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,wBAAwB;CAwDjG;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,wBAAwB,IAAI,mBAAmB,CAE9D"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"certificate-builder.js","sourceRoot":"","sources":["../src/certificate-builder.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../src/defaults.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AAEzF;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,EAAE,OAAO,CAAC,gBAAgB,CAiB1D,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"defaults.js","sourceRoot":"","sources":["../src/defaults.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAyB,MAAM,oCAAoC,CAAC;AAEzF;;;;GAIG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAA8B;IAC7D;;;;;;OAMG;IACH,YAAY,EAAE,YAAY,CAAC,QAAQ;IAEnC;;;;;OAKG;IACH,0BAA0B,EAAE,IAAI;CACjC,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,EACxB,KAAK,uBAAuB,EAC5B,KAAK,wBAAwB,EAC7B,KAAK,mBAAmB,GACzB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAChE,OAAO,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC"}
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,GAIzB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAErD,OAAO,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC"}
File without changes
File without changes
File without changes
File without changes
File without changes