@composurecdk/cloudwatch 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 (111) 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-definition-builder.d.ts.map +1 -0
  5. package/dist/commonjs/alarm-definition-builder.js +103 -0
  6. package/dist/commonjs/alarm-definition-builder.js.map +1 -0
  7. package/dist/commonjs/alarm-definition.d.ts.map +1 -0
  8. package/dist/commonjs/alarm-definition.js +3 -0
  9. package/dist/{alarm-definition.js.map → commonjs/alarm-definition.js.map} +1 -1
  10. package/dist/commonjs/alarm-name.d.ts.map +1 -0
  11. package/dist/commonjs/alarm-name.js +52 -0
  12. package/dist/commonjs/alarm-name.js.map +1 -0
  13. package/dist/commonjs/create-alarms.d.ts.map +1 -0
  14. package/dist/commonjs/create-alarms.js +41 -0
  15. package/dist/commonjs/create-alarms.js.map +1 -0
  16. package/dist/commonjs/default-alarm-name.d.ts.map +1 -0
  17. package/dist/commonjs/default-alarm-name.js +20 -0
  18. package/dist/commonjs/default-alarm-name.js.map +1 -0
  19. package/dist/commonjs/index.d.ts.map +1 -0
  20. package/dist/commonjs/index.js +18 -0
  21. package/dist/commonjs/index.js.map +1 -0
  22. package/dist/commonjs/package.json +3 -0
  23. package/dist/commonjs/policies/alarm-actions-policy.d.ts.map +1 -0
  24. package/dist/commonjs/policies/alarm-actions-policy.js +132 -0
  25. package/dist/commonjs/policies/alarm-actions-policy.js.map +1 -0
  26. package/dist/commonjs/policies/alarm-name-policy.d.ts.map +1 -0
  27. package/dist/commonjs/policies/alarm-name-policy.js +100 -0
  28. package/dist/commonjs/policies/alarm-name-policy.js.map +1 -0
  29. package/dist/commonjs/policies/policy-matcher.d.ts.map +1 -0
  30. package/dist/commonjs/policies/policy-matcher.js +20 -0
  31. package/dist/commonjs/policies/policy-matcher.js.map +1 -0
  32. package/dist/commonjs/resolve-alarm-config.d.ts.map +1 -0
  33. package/dist/commonjs/resolve-alarm-config.js +18 -0
  34. package/dist/commonjs/resolve-alarm-config.js.map +1 -0
  35. package/dist/esm/alarm-config.d.ts +31 -0
  36. package/dist/esm/alarm-config.d.ts.map +1 -0
  37. package/dist/esm/alarm-config.js.map +1 -0
  38. package/dist/esm/alarm-definition-builder.d.ts +40 -0
  39. package/dist/esm/alarm-definition-builder.d.ts.map +1 -0
  40. package/dist/esm/alarm-definition-builder.js.map +1 -0
  41. package/dist/esm/alarm-definition.d.ts +21 -0
  42. package/dist/esm/alarm-definition.d.ts.map +1 -0
  43. package/dist/esm/alarm-definition.js.map +1 -0
  44. package/dist/esm/alarm-name.d.ts +32 -0
  45. package/dist/esm/alarm-name.d.ts.map +1 -0
  46. package/dist/esm/alarm-name.js.map +1 -0
  47. package/dist/esm/create-alarms.d.ts +19 -0
  48. package/dist/esm/create-alarms.d.ts.map +1 -0
  49. package/dist/esm/create-alarms.js.map +1 -0
  50. package/dist/esm/default-alarm-name.d.ts +14 -0
  51. package/dist/esm/default-alarm-name.d.ts.map +1 -0
  52. package/dist/esm/default-alarm-name.js.map +1 -0
  53. package/dist/esm/index.d.ts +11 -0
  54. package/dist/esm/index.d.ts.map +1 -0
  55. package/dist/esm/index.js.map +1 -0
  56. package/dist/esm/package.json +3 -0
  57. package/dist/esm/policies/alarm-actions-policy.d.ts +54 -0
  58. package/dist/esm/policies/alarm-actions-policy.d.ts.map +1 -0
  59. package/dist/esm/policies/alarm-actions-policy.js.map +1 -0
  60. package/dist/esm/policies/alarm-name-policy.d.ts +77 -0
  61. package/dist/esm/policies/alarm-name-policy.d.ts.map +1 -0
  62. package/dist/esm/policies/alarm-name-policy.js.map +1 -0
  63. package/dist/esm/policies/policy-matcher.d.ts +31 -0
  64. package/dist/esm/policies/policy-matcher.d.ts.map +1 -0
  65. package/dist/esm/policies/policy-matcher.js.map +1 -0
  66. package/dist/esm/resolve-alarm-config.d.ts +25 -0
  67. package/dist/esm/resolve-alarm-config.d.ts.map +1 -0
  68. package/dist/esm/resolve-alarm-config.js.map +1 -0
  69. package/package.json +32 -14
  70. package/dist/alarm-config.d.ts.map +0 -1
  71. package/dist/alarm-definition-builder.d.ts.map +0 -1
  72. package/dist/alarm-definition-builder.js.map +0 -1
  73. package/dist/alarm-definition.d.ts.map +0 -1
  74. package/dist/alarm-name.d.ts.map +0 -1
  75. package/dist/alarm-name.js.map +0 -1
  76. package/dist/create-alarms.d.ts.map +0 -1
  77. package/dist/create-alarms.js.map +0 -1
  78. package/dist/default-alarm-name.d.ts.map +0 -1
  79. package/dist/default-alarm-name.js.map +0 -1
  80. package/dist/index.d.ts.map +0 -1
  81. package/dist/index.js.map +0 -1
  82. package/dist/policies/alarm-actions-policy.d.ts.map +0 -1
  83. package/dist/policies/alarm-actions-policy.js.map +0 -1
  84. package/dist/policies/alarm-name-policy.d.ts.map +0 -1
  85. package/dist/policies/alarm-name-policy.js.map +0 -1
  86. package/dist/policies/policy-matcher.d.ts.map +0 -1
  87. package/dist/policies/policy-matcher.js.map +0 -1
  88. package/dist/resolve-alarm-config.d.ts.map +0 -1
  89. package/dist/resolve-alarm-config.js.map +0 -1
  90. /package/dist/{alarm-config.d.ts → commonjs/alarm-config.d.ts} +0 -0
  91. /package/dist/{alarm-definition-builder.d.ts → commonjs/alarm-definition-builder.d.ts} +0 -0
  92. /package/dist/{alarm-definition.d.ts → commonjs/alarm-definition.d.ts} +0 -0
  93. /package/dist/{alarm-name.d.ts → commonjs/alarm-name.d.ts} +0 -0
  94. /package/dist/{create-alarms.d.ts → commonjs/create-alarms.d.ts} +0 -0
  95. /package/dist/{default-alarm-name.d.ts → commonjs/default-alarm-name.d.ts} +0 -0
  96. /package/dist/{index.d.ts → commonjs/index.d.ts} +0 -0
  97. /package/dist/{policies → commonjs/policies}/alarm-actions-policy.d.ts +0 -0
  98. /package/dist/{policies → commonjs/policies}/alarm-name-policy.d.ts +0 -0
  99. /package/dist/{policies → commonjs/policies}/policy-matcher.d.ts +0 -0
  100. /package/dist/{resolve-alarm-config.d.ts → commonjs/resolve-alarm-config.d.ts} +0 -0
  101. /package/dist/{alarm-config.js → esm/alarm-config.js} +0 -0
  102. /package/dist/{alarm-definition-builder.js → esm/alarm-definition-builder.js} +0 -0
  103. /package/dist/{alarm-definition.js → esm/alarm-definition.js} +0 -0
  104. /package/dist/{alarm-name.js → esm/alarm-name.js} +0 -0
  105. /package/dist/{create-alarms.js → esm/create-alarms.js} +0 -0
  106. /package/dist/{default-alarm-name.js → esm/default-alarm-name.js} +0 -0
  107. /package/dist/{index.js → esm/index.js} +0 -0
  108. /package/dist/{policies → esm/policies}/alarm-actions-policy.js +0 -0
  109. /package/dist/{policies → esm/policies}/alarm-name-policy.js +0 -0
  110. /package/dist/{policies → esm/policies}/policy-matcher.js +0 -0
  111. /package/dist/{resolve-alarm-config.js → esm/resolve-alarm-config.js} +0 -0
@@ -0,0 +1,31 @@
1
+ import type { TreatMissingData } from "aws-cdk-lib/aws-cloudwatch";
2
+ import type { AlarmName } from "./alarm-name.js";
3
+ /**
4
+ * Configuration for a single recommended CloudWatch alarm.
5
+ * Every field has a documented default; users override individual
6
+ * fields to tune thresholds without replacing the entire alarm.
7
+ */
8
+ export interface AlarmConfig {
9
+ /**
10
+ * Explicit CloudWatch alarm name. When omitted, the library derives a
11
+ * readable default from the stack name, builder id, and alarm key.
12
+ *
13
+ * Construct via the {@link alarmName} helper to opt into the same
14
+ * validation the library applies to its own auto-generated names.
15
+ */
16
+ alarmName?: AlarmName;
17
+ /** Alarm threshold. Default varies per alarm type. */
18
+ threshold?: number;
19
+ /** Number of evaluation periods before triggering. @default 1 */
20
+ evaluationPeriods?: number;
21
+ /** Datapoints within evaluation periods required to trigger. @default 1 */
22
+ datapointsToAlarm?: number;
23
+ /** How to treat missing data points. @default TreatMissingData.NOT_BREACHING */
24
+ treatMissingData?: TreatMissingData;
25
+ }
26
+ /**
27
+ * Type for per-package `*_ALARM_DEFAULTS` constants. Defaults set every
28
+ * tunable field but never `alarmName` — names are derived per-instance.
29
+ */
30
+ export type AlarmConfigDefaults = Required<Omit<AlarmConfig, "alarmName">>;
31
+ //# 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,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IAEtB,sDAAsD;IACtD,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,iEAAiE;IACjE,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B,2EAA2E;IAC3E,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B,gFAAgF;IAChF,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;CACrC;AAED;;;GAGG;AACH,MAAM,MAAM,mBAAmB,GAAG,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alarm-config.js","sourceRoot":"","sources":["../../src/alarm-config.ts"],"names":[],"mappings":""}
@@ -0,0 +1,40 @@
1
+ import { type Metric, TreatMissingData } from "aws-cdk-lib/aws-cloudwatch";
2
+ import type { AlarmDefinition } from "./alarm-definition.js";
3
+ import type { AlarmName } from "./alarm-name.js";
4
+ /**
5
+ * Fluent builder for constructing deferred {@link AlarmDefinition}s.
6
+ *
7
+ * Stores a metric factory `(construct: T) => Metric` at configuration time.
8
+ * Call {@link resolve} during build to invoke the factory and produce a
9
+ * complete {@link AlarmDefinition}.
10
+ *
11
+ * @typeParam TConstruct - The construct type the metric factory receives.
12
+ */
13
+ export declare class AlarmDefinitionBuilder<TConstruct> {
14
+ #private;
15
+ constructor(key: string);
16
+ metric(factory: (construct: TConstruct) => Metric): this;
17
+ /**
18
+ * Sets an explicit CloudWatch alarm name. When unset, {@link createAlarms}
19
+ * derives a default from the stack name, builder id, and alarm key. Use
20
+ * the {@link alarmName} helper to construct branded values.
21
+ */
22
+ alarmName(name: AlarmName): this;
23
+ threshold(value: number): this;
24
+ greaterThan(): this;
25
+ greaterThanOrEqual(): this;
26
+ lessThan(): this;
27
+ lessThanOrEqual(): this;
28
+ evaluationPeriods(n: number): this;
29
+ datapointsToAlarm(n: number): this;
30
+ treatMissingData(treatment: TreatMissingData): this;
31
+ description(text: string | ((definition: AlarmDefinition) => string)): this;
32
+ /**
33
+ * Resolves the deferred metric factory against a construct and
34
+ * returns a complete {@link AlarmDefinition}.
35
+ *
36
+ * @throws If {@link metric} was not called before resolve.
37
+ */
38
+ resolve(construct: TConstruct): AlarmDefinition;
39
+ }
40
+ //# sourceMappingURL=alarm-definition-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alarm-definition-builder.d.ts","sourceRoot":"","sources":["../../src/alarm-definition-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,KAAK,MAAM,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC/F,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD;;;;;;;;GAQG;AACH,qBAAa,sBAAsB,CAAC,UAAU;;gBAWhC,GAAG,EAAE,MAAM;IAIvB,MAAM,CAAC,OAAO,EAAE,CAAC,SAAS,EAAE,UAAU,KAAK,MAAM,GAAG,IAAI;IAKxD;;;;OAIG;IACH,SAAS,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI;IAKhC,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK9B,WAAW,IAAI,IAAI;IAKnB,kBAAkB,IAAI,IAAI;IAK1B,QAAQ,IAAI,IAAI;IAKhB,eAAe,IAAI,IAAI;IAKvB,iBAAiB,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IAKlC,iBAAiB,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IAKlC,gBAAgB,CAAC,SAAS,EAAE,gBAAgB,GAAG,IAAI;IAKnD,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC,CAAC,UAAU,EAAE,eAAe,KAAK,MAAM,CAAC,GAAG,IAAI;IAK3E;;;;;OAKG;IACH,OAAO,CAAC,SAAS,EAAE,UAAU,GAAG,eAAe;CAwBhD"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alarm-definition-builder.js","sourceRoot":"","sources":["../../src/alarm-definition-builder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import type { ComparisonOperator, Metric, TreatMissingData } from "aws-cdk-lib/aws-cloudwatch";
2
+ import type { AlarmName } from "./alarm-name.js";
3
+ /**
4
+ * A fully-resolved alarm descriptor. All fields are required —
5
+ * this is the canonical form consumed by {@link createAlarms}.
6
+ *
7
+ * `alarmName` is the only optional field: when omitted, {@link createAlarms}
8
+ * derives a default via `defaultAlarmName(scope, id, key)`.
9
+ */
10
+ export interface AlarmDefinition {
11
+ key: string;
12
+ alarmName?: AlarmName;
13
+ metric: Metric;
14
+ threshold: number;
15
+ comparisonOperator: ComparisonOperator;
16
+ evaluationPeriods: number;
17
+ datapointsToAlarm: number;
18
+ treatMissingData: TreatMissingData;
19
+ description: string;
20
+ }
21
+ //# sourceMappingURL=alarm-definition.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alarm-definition.d.ts","sourceRoot":"","sources":["../../src/alarm-definition.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC/F,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD;;;;;;GAMG;AACH,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,WAAW,EAAE,MAAM,CAAC;CACrB"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alarm-definition.js","sourceRoot":"","sources":["../../src/alarm-definition.ts"],"names":[],"mappings":""}
@@ -0,0 +1,32 @@
1
+ declare const alarmNameBrand: unique symbol;
2
+ /**
3
+ * A validated CloudWatch alarm name. Construct via {@link alarmName} or
4
+ * {@link joinAlarmName}; the brand prevents bare strings from being passed
5
+ * where an `AlarmName` is required.
6
+ */
7
+ export type AlarmName = string & {
8
+ readonly [alarmNameBrand]: true;
9
+ };
10
+ /**
11
+ * Validates and brands a string as an {@link AlarmName}. The string is used
12
+ * verbatim — no sanitisation — so what the caller writes is exactly what
13
+ * appears in CloudWatch.
14
+ *
15
+ * @throws If the input is empty, exceeds 255 chars, or contains characters
16
+ * outside CloudWatch's allowed set: `[A-Za-z0-9-_./#:()+ =@]`.
17
+ */
18
+ export declare function alarmName(input: string): AlarmName;
19
+ /**
20
+ * Builds an {@link AlarmName} by kebab-casing each segment and joining with
21
+ * `sep`. Empty segments after kebab-casing are dropped, so callers can pass
22
+ * e.g. `Stack.of(scope).stackName` without worrying about token-resolution
23
+ * artefacts.
24
+ */
25
+ export declare function joinAlarmName(segments: readonly string[], sep?: string): AlarmName;
26
+ /**
27
+ * Lower-cases and hyphenates a string: splits camelCase / PascalCase /
28
+ * snake_case / dotted boundaries into hyphen-separated lowercase words.
29
+ */
30
+ export declare function kebab(input: string): string;
31
+ export {};
32
+ //# sourceMappingURL=alarm-name.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alarm-name.d.ts","sourceRoot":"","sources":["../../src/alarm-name.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,cAAc,EAAE,OAAO,MAAM,CAAC;AAE5C;;;;GAIG;AACH,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG;IAAE,QAAQ,CAAC,CAAC,cAAc,CAAC,EAAE,IAAI,CAAA;CAAE,CAAC;AAKrE;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAclD;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,EAAE,GAAG,SAAM,GAAG,SAAS,CAG/E;AAED;;;GAGG;AACH,wBAAgB,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAQ3C"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alarm-name.js","sourceRoot":"","sources":["../../src/alarm-name.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,GAAG,6BAA6B,CAAC;AAClD,MAAM,OAAO,GAAG,GAAG,CAAC;AAEpB;;;;;;;GAOG;AACH,MAAM,UAAU,SAAS,CAAC,KAAa;IACrC,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAChD,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,GAAG,OAAO,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,sBAAsB,MAAM,CAAC,OAAO,CAAC,YAAY,OAAO,GAAG,CAAC,CAAC;IAC/E,CAAC;IACD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CACb,+FAA+F,OAAO,GAAG,CAC1G,CAAC;IACJ,CAAC;IACD,OAAO,OAAoB,CAAC;AAC9B,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,QAA2B,EAAE,GAAG,GAAG,GAAG;IAClE,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC9D,OAAO,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACpC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,KAAK,CAAC,KAAa;IACjC,OAAO,KAAK;SACT,OAAO,CAAC,oBAAoB,EAAE,OAAO,CAAC;SACtC,OAAO,CAAC,uBAAuB,EAAE,OAAO,CAAC;SACzC,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC;SACxB,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;SACnB,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;SACrB,WAAW,EAAE,CAAC;AACnB,CAAC"}
@@ -0,0 +1,19 @@
1
+ import { Alarm } from "aws-cdk-lib/aws-cloudwatch";
2
+ import type { IConstruct } from "constructs";
3
+ import type { AlarmDefinition } from "./alarm-definition.js";
4
+ /**
5
+ * Creates CDK {@link Alarm} constructs from fully-resolved {@link AlarmDefinition}s.
6
+ *
7
+ * Validates that all definition keys are unique before creating alarms. Each
8
+ * alarm's `AlarmName` is taken verbatim from `def.alarmName` when supplied;
9
+ * otherwise it is derived from the scope, `id`, and `def.key` via
10
+ * {@link defaultAlarmName}.
11
+ *
12
+ * @param scope - CDK construct scope.
13
+ * @param id - Base identifier; each alarm's construct id is `${id}${Capitalize(key)}Alarm`.
14
+ * @param definitions - Fully-resolved alarm definitions.
15
+ * @returns A record mapping each definition's key to its created Alarm.
16
+ * @throws If duplicate keys are found in the definitions.
17
+ */
18
+ export declare function createAlarms(scope: IConstruct, id: string, definitions: AlarmDefinition[]): Record<string, Alarm>;
19
+ //# sourceMappingURL=create-alarms.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-alarms.d.ts","sourceRoot":"","sources":["../../src/create-alarms.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAO7D;;;;;;;;;;;;;GAaG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,UAAU,EACjB,EAAE,EAAE,MAAM,EACV,WAAW,EAAE,eAAe,EAAE,GAC7B,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAsBvB"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-alarms.js","sourceRoot":"","sources":["../../src/create-alarms.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAE3D,SAAS,UAAU,CAAC,CAAS;IAC3B,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACzC,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,YAAY,CAC1B,KAAiB,EACjB,EAAU,EACV,WAA8B;IAE9B,MAAM,MAAM,GAA0B,EAAE,CAAC;IAEzC,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;QAC9B,IAAI,GAAG,CAAC,GAAG,IAAI,MAAM,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CACb,wBAAwB,GAAG,CAAC,GAAG,mEAAmE;gBAChG,8DAA8D,CACjE,CAAC;QACJ,CAAC;QACD,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE;YAClF,SAAS,EAAE,GAAG,CAAC,SAAS,IAAI,gBAAgB,CAAC,KAAK,EAAE,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC;YAChE,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,iBAAiB,EAAE,GAAG,CAAC,iBAAiB;YACxC,iBAAiB,EAAE,GAAG,CAAC,iBAAiB;YACxC,gBAAgB,EAAE,GAAG,CAAC,gBAAgB;YACtC,kBAAkB,EAAE,GAAG,CAAC,kBAAkB;YAC1C,gBAAgB,EAAE,GAAG,CAAC,WAAW;SAClC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,14 @@
1
+ import type { IConstruct } from "constructs";
2
+ import { type AlarmName } from "./alarm-name.js";
3
+ /**
4
+ * Builds a human-readable, stack-scoped {@link AlarmName} from the alarm's
5
+ * scope, base id, and key.
6
+ *
7
+ * Format: `${stackName}/${kebab(id)}/${kebab(key)}`. Slashes are valid in
8
+ * CloudWatch alarm names and render hierarchy clearly in the console.
9
+ *
10
+ * Used by {@link createAlarms} as the fallback whenever an explicit
11
+ * `alarmName` is not supplied on the {@link AlarmDefinition}.
12
+ */
13
+ export declare function defaultAlarmName(scope: IConstruct, id: string, key: string): AlarmName;
14
+ //# sourceMappingURL=default-alarm-name.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"default-alarm-name.d.ts","sourceRoot":"","sources":["../../src/default-alarm-name.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,KAAK,SAAS,EAAiB,MAAM,iBAAiB,CAAC;AAEhE;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,CAGtF"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"default-alarm-name.js","sourceRoot":"","sources":["../../src/default-alarm-name.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEpC,OAAO,EAAkB,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhE;;;;;;;;;GASG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAiB,EAAE,EAAU,EAAE,GAAW;IACzE,MAAM,SAAS,GAAG,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC;IAC5C,OAAO,aAAa,CAAC,CAAC,SAAS,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;AAC7C,CAAC"}
@@ -0,0 +1,11 @@
1
+ export type { AlarmConfig, AlarmConfigDefaults } from "./alarm-config.js";
2
+ export type { AlarmDefinition } from "./alarm-definition.js";
3
+ export { AlarmDefinitionBuilder } from "./alarm-definition-builder.js";
4
+ export { type AlarmName, alarmName } from "./alarm-name.js";
5
+ export { defaultAlarmName } from "./default-alarm-name.js";
6
+ export { createAlarms } from "./create-alarms.js";
7
+ export { resolveAlarmConfig, type ResolvedAlarmConfig } from "./resolve-alarm-config.js";
8
+ export { alarmActionsPolicy } from "./policies/alarm-actions-policy.js";
9
+ export type { AlarmActionsPolicyConfig, AlarmMatchContext, AlarmMatcher, } from "./policies/alarm-actions-policy.js";
10
+ export { alarmNamePolicy, type AlarmNamePolicyConfig, type AlarmNameRule, type AlarmNameTransformContext, } from "./policies/alarm-name-policy.js";
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC1E,YAAY,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,EAAE,KAAK,SAAS,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,KAAK,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AACzF,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AACxE,YAAY,EACV,wBAAwB,EACxB,iBAAiB,EACjB,YAAY,GACb,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EACL,eAAe,EACf,KAAK,qBAAqB,EAC1B,KAAK,aAAa,EAClB,KAAK,yBAAyB,GAC/B,MAAM,iCAAiC,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,EAAkB,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAA4B,MAAM,2BAA2B,CAAC;AACzF,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAMxE,OAAO,EACL,eAAe,GAIhB,MAAM,iCAAiC,CAAC"}
@@ -0,0 +1,3 @@
1
+ {
2
+ "type": "module"
3
+ }
@@ -0,0 +1,54 @@
1
+ import { type IAlarmAction } from "aws-cdk-lib/aws-cloudwatch";
2
+ import { type IConstruct } from "constructs";
3
+ import { type AlarmRuleScope } from "./policy-matcher.js";
4
+ export type { AlarmMatchContext, AlarmMatcher } from "./policy-matcher.js";
5
+ /** A set of actions, one array per alarm state. All arrays are optional. */
6
+ export interface AlarmActionSet {
7
+ alarmActions?: IAlarmAction[];
8
+ okActions?: IAlarmAction[];
9
+ insufficientDataActions?: IAlarmAction[];
10
+ }
11
+ /** A rule: a matcher (or matchers) plus an action set, with optional scoping flags. */
12
+ export interface AlarmActionRule extends AlarmActionSet, AlarmRuleScope {
13
+ /** When this rule matches, suppress `defaults` for the alarm. */
14
+ replaceDefaults?: boolean;
15
+ }
16
+ /** Configuration for {@link alarmActionsPolicy}. */
17
+ export interface AlarmActionsPolicyConfig {
18
+ /** Actions applied to every matched alarm unless a matching rule sets `replaceDefaults: true`. */
19
+ defaults?: AlarmActionSet;
20
+ /** Ordered list of overrides. All matching rules contribute (append semantics). */
21
+ rules?: AlarmActionRule[];
22
+ /** Skip alarms that already have non-empty `alarmActions`. */
23
+ skipIfAlreadyConfigured?: boolean;
24
+ }
25
+ /**
26
+ * Attaches CloudWatch alarm actions to every `Alarm` and `CompositeAlarm`
27
+ * (L2) construct in the subtree under `scope`.
28
+ *
29
+ * The policy installs a CDK {@link https://docs.aws.amazon.com/cdk/v2/guide/aspects.html | Aspect}
30
+ * that fires during the synth prepare phase, so late-added alarms are also
31
+ * covered. Detection uses the jsii type guards
32
+ * `CfnAlarm.isCfnAlarm` / `CfnCompositeAlarm.isCfnCompositeAlarm` on the L1
33
+ * resource; the L2 parent is found via duck-typing on `addAlarmAction`.
34
+ * Actions are attached through the L2 so that `IAlarmAction.bind()` runs and
35
+ * permissions are wired correctly. Bare `CfnAlarm` nodes (created without an
36
+ * L2 wrapper) are detected but silently skipped.
37
+ *
38
+ * `defaults` apply to every matched alarm; `rules` append additional actions.
39
+ * A rule matches if any of its `match` entries matches. Set
40
+ * `replaceDefaults: true` on a rule to suppress defaults for its matched
41
+ * alarms.
42
+ *
43
+ * @example
44
+ * ```ts
45
+ * alarmActionsPolicy(app, {
46
+ * defaults: { alarmActions: [new SnsAction(standardTopic)] },
47
+ * rules: [
48
+ * { match: "HighSev", alarmActions: [new SnsAction(pagerTopic)] },
49
+ * ],
50
+ * });
51
+ * ```
52
+ */
53
+ export declare function alarmActionsPolicy(scope: IConstruct, config: AlarmActionsPolicyConfig): void;
54
+ //# sourceMappingURL=alarm-actions-policy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alarm-actions-policy.d.ts","sourceRoot":"","sources":["../../../src/policies/alarm-actions-policy.ts"],"names":[],"mappings":"AACA,OAAO,EAIL,KAAK,YAAY,EAClB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,KAAK,cAAc,EAAe,MAAM,qBAAqB,CAAC;AAGvE,YAAY,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAE3E,4EAA4E;AAC5E,MAAM,WAAW,cAAc;IAC7B,YAAY,CAAC,EAAE,YAAY,EAAE,CAAC;IAC9B,SAAS,CAAC,EAAE,YAAY,EAAE,CAAC;IAC3B,uBAAuB,CAAC,EAAE,YAAY,EAAE,CAAC;CAC1C;AAED,uFAAuF;AACvF,MAAM,WAAW,eAAgB,SAAQ,cAAc,EAAE,cAAc;IACrE,iEAAiE;IACjE,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,oDAAoD;AACpD,MAAM,WAAW,wBAAwB;IACvC,kGAAkG;IAClG,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,mFAAmF;IACnF,KAAK,CAAC,EAAE,eAAe,EAAE,CAAC;IAC1B,8DAA8D;IAC9D,uBAAuB,CAAC,EAAE,OAAO,CAAC;CACnC;AA4DD;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,wBAAwB,GAAG,IAAI,CAkD5F"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alarm-actions-policy.js","sourceRoot":"","sources":["../../../src/policies/alarm-actions-policy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,77 @@
1
+ import { type IConstruct } from "constructs";
2
+ import { type AlarmName } from "../alarm-name.js";
3
+ import { type AlarmMatchContext, type AlarmRuleScope } from "./policy-matcher.js";
4
+ /** Context passed to {@link AlarmNameRule.transform}. */
5
+ export interface AlarmNameTransformContext extends AlarmMatchContext {
6
+ /**
7
+ * The alarm name as it stands at the moment this rule's transform runs:
8
+ * the original alarm name plus any prefix/suffix decorations contributed
9
+ * by `defaults` and earlier matched rules.
10
+ */
11
+ readonly currentName: string;
12
+ }
13
+ /**
14
+ * A rule for {@link alarmNamePolicy}. A rule matches when **any** supplied
15
+ * matcher matches.
16
+ *
17
+ * - `prefix` / `suffix` decorate the current name.
18
+ * - `transform` produces a new name from scratch and wins over `prefix`/`suffix`
19
+ * when both are set on the same rule.
20
+ * - Multiple matched rules layer in declaration order.
21
+ */
22
+ export interface AlarmNameRule extends AlarmRuleScope {
23
+ /** Prepended to the current name with the configured separator. */
24
+ prefix?: string;
25
+ /** Appended to the current name with the configured separator. */
26
+ suffix?: string;
27
+ /** Full transform — wins over `prefix`/`suffix` on the same rule. */
28
+ transform?: (ctx: AlarmNameTransformContext) => AlarmName;
29
+ /** When `true`, this rule's `prefix`/`suffix` replace `defaults` rather than layering on top. */
30
+ replaceDefaults?: boolean;
31
+ }
32
+ /** Configuration for {@link alarmNamePolicy}. */
33
+ export interface AlarmNamePolicyConfig {
34
+ /** Decorations applied to every alarm unless a matching rule sets `replaceDefaults: true`. */
35
+ defaults?: Pick<AlarmNameRule, "prefix" | "suffix">;
36
+ /** Ordered list of rules. All matching rules contribute. */
37
+ rules?: AlarmNameRule[];
38
+ /**
39
+ * Separator between prefix / current-name / suffix segments.
40
+ * @default "-"
41
+ */
42
+ separator?: string;
43
+ }
44
+ /**
45
+ * Decorates CloudWatch alarm names across an entire scope.
46
+ *
47
+ * Installs a CDK
48
+ * {@link https://docs.aws.amazon.com/cdk/v2/guide/aspects.html | Aspect}
49
+ * that fires during the synth prepare phase. For every `AWS::CloudWatch::Alarm`
50
+ * (and `AWS::CloudWatch::CompositeAlarm`) found beneath `scope`:
51
+ *
52
+ * 1. The alarm's existing name is read (set by the library default or the
53
+ * consumer's per-alarm override).
54
+ * 2. `defaults.prefix` / `defaults.suffix` decorate it, unless a matched
55
+ * rule sets `replaceDefaults: true`.
56
+ * 3. Each matching rule contributes in declaration order — `transform`
57
+ * replaces the current name; otherwise `prefix`/`suffix` decorate.
58
+ * 4. The final value is validated via {@link alarmName} and written back to
59
+ * `cfn.alarmName`.
60
+ *
61
+ * Use cases: stage prefixing (`prod-…`), severity tagging (`…-critical`),
62
+ * team scoping. Composes with per-alarm `alarmName` overrides — those run
63
+ * first, the policy decorates the result.
64
+ *
65
+ * @example
66
+ * ```ts
67
+ * alarmNamePolicy(app, {
68
+ * defaults: { prefix: "prod" },
69
+ * rules: [
70
+ * { match: /Errors$/, suffix: "critical" },
71
+ * { match: "throttles", suffix: "warning" },
72
+ * ],
73
+ * });
74
+ * ```
75
+ */
76
+ export declare function alarmNamePolicy(scope: IConstruct, config: AlarmNamePolicyConfig): void;
77
+ //# sourceMappingURL=alarm-name-policy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alarm-name-policy.d.ts","sourceRoot":"","sources":["../../../src/policies/alarm-name-policy.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,KAAK,SAAS,EAA+B,MAAM,kBAAkB,CAAC;AAC/E,OAAO,EAAE,KAAK,iBAAiB,EAAE,KAAK,cAAc,EAAe,MAAM,qBAAqB,CAAC;AAE/F,yDAAyD;AACzD,MAAM,WAAW,yBAA0B,SAAQ,iBAAiB;IAClE;;;;OAIG;IACH,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,aAAc,SAAQ,cAAc;IACnD,mEAAmE;IACnE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,kEAAkE;IAClE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qEAAqE;IACrE,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,yBAAyB,KAAK,SAAS,CAAC;IAC1D,iGAAiG;IACjG,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,iDAAiD;AACjD,MAAM,WAAW,qBAAqB;IACpC,8FAA8F;IAC9F,QAAQ,CAAC,EAAE,IAAI,CAAC,aAAa,EAAE,QAAQ,GAAG,QAAQ,CAAC,CAAC;IACpD,4DAA4D;IAC5D,KAAK,CAAC,EAAE,aAAa,EAAE,CAAC;IACxB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAsBD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,qBAAqB,GAAG,IAAI,CAgDtF"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alarm-name-policy.js","sourceRoot":"","sources":["../../../src/policies/alarm-name-policy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import type { CfnAlarm, CfnCompositeAlarm, IAlarm } from "aws-cdk-lib/aws-cloudwatch";
2
+ /**
3
+ * Selects which alarms a rule applies to.
4
+ *
5
+ * - `string` — substring match against the alarm's `id` OR `path`.
6
+ * - `RegExp` — tested against `path`.
7
+ * - predicate — receives the full {@link AlarmMatchContext}.
8
+ */
9
+ export type AlarmMatcher = string | RegExp | ((ctx: AlarmMatchContext) => boolean);
10
+ /**
11
+ * Context passed to matcher predicates and derived for every visited alarm.
12
+ *
13
+ * `id` and `path` come from the L2 alarm when one is present, otherwise from
14
+ * the L1 `CfnAlarm` / `CfnCompositeAlarm`.
15
+ */
16
+ export interface AlarmMatchContext {
17
+ readonly alarm: IAlarm | undefined;
18
+ readonly cfn: CfnAlarm | CfnCompositeAlarm;
19
+ readonly id: string;
20
+ readonly path: string;
21
+ readonly isComposite: boolean;
22
+ }
23
+ /** Common scoping flags shared by every alarm-policy rule shape. */
24
+ export interface AlarmRuleScope {
25
+ match: AlarmMatcher | AlarmMatcher[];
26
+ singleOnly?: boolean;
27
+ compositeOnly?: boolean;
28
+ }
29
+ export declare function matchesOne(matcher: AlarmMatcher, ctx: AlarmMatchContext): boolean;
30
+ export declare function ruleMatches(rule: AlarmRuleScope, ctx: AlarmMatchContext): boolean;
31
+ //# sourceMappingURL=policy-matcher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"policy-matcher.d.ts","sourceRoot":"","sources":["../../../src/policies/policy-matcher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAEtF;;;;;;GAMG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,iBAAiB,KAAK,OAAO,CAAC,CAAC;AAEnF;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,QAAQ,CAAC,GAAG,EAAE,QAAQ,GAAG,iBAAiB,CAAC;IAC3C,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;CAC/B;AAED,oEAAoE;AACpE,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,YAAY,GAAG,YAAY,EAAE,CAAC;IACrC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,EAAE,iBAAiB,GAAG,OAAO,CAIjF;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,cAAc,EAAE,GAAG,EAAE,iBAAiB,GAAG,OAAO,CAKjF"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"policy-matcher.js","sourceRoot":"","sources":["../../../src/policies/policy-matcher.ts"],"names":[],"mappings":"AAgCA,MAAM,UAAU,UAAU,CAAC,OAAqB,EAAE,GAAsB;IACtE,IAAI,OAAO,OAAO,KAAK,UAAU;QAAE,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC;IACvD,IAAI,OAAO,YAAY,MAAM;QAAE,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC7D,OAAO,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AAChE,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAAoB,EAAE,GAAsB;IACtE,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,IAAI,GAAG,CAAC,WAAW;QAAE,OAAO,KAAK,CAAC;IAC9D,IAAI,IAAI,CAAC,aAAa,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW;QAAE,OAAO,KAAK,CAAC;IAClE,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACvE,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AAClD,CAAC"}
@@ -0,0 +1,25 @@
1
+ import type { TreatMissingData } from "aws-cdk-lib/aws-cloudwatch";
2
+ import type { AlarmConfig, AlarmConfigDefaults } from "./alarm-config.js";
3
+ import type { AlarmName } from "./alarm-name.js";
4
+ /**
5
+ * A fully-resolved alarm configuration. Every numeric/enum field is required;
6
+ * `alarmName` is carried through verbatim from user config (or `undefined`
7
+ * when the consumer is happy with the library default).
8
+ *
9
+ * Produced by {@link resolveAlarmConfig} after merging user overrides onto
10
+ * defaults.
11
+ */
12
+ export interface ResolvedAlarmConfig {
13
+ alarmName?: AlarmName;
14
+ threshold: number;
15
+ evaluationPeriods: number;
16
+ datapointsToAlarm: number;
17
+ treatMissingData: TreatMissingData;
18
+ }
19
+ /**
20
+ * Resolves an absolute-threshold alarm config by layering user overrides
21
+ * onto the defaults. `alarmName` is propagated from user config only;
22
+ * defaults intentionally do not specify a name.
23
+ */
24
+ export declare function resolveAlarmConfig(userConfig: AlarmConfig | undefined, defaults: AlarmConfigDefaults): ResolvedAlarmConfig;
25
+ //# sourceMappingURL=resolve-alarm-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve-alarm-config.d.ts","sourceRoot":"","sources":["../../src/resolve-alarm-config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,KAAK,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC1E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD;;;;;;;GAOG;AACH,MAAM,WAAW,mBAAmB;IAClC,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,gBAAgB,EAAE,gBAAgB,CAAC;CACpC;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,WAAW,GAAG,SAAS,EACnC,QAAQ,EAAE,mBAAmB,GAC5B,mBAAmB,CAQrB"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve-alarm-config.js","sourceRoot":"","sources":["../../src/resolve-alarm-config.ts"],"names":[],"mappings":"AAoBA;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAChC,UAAmC,EACnC,QAA6B;IAE7B,OAAO;QACL,SAAS,EAAE,UAAU,EAAE,SAAS;QAChC,SAAS,EAAE,UAAU,EAAE,SAAS,IAAI,QAAQ,CAAC,SAAS;QACtD,iBAAiB,EAAE,UAAU,EAAE,iBAAiB,IAAI,QAAQ,CAAC,iBAAiB;QAC9E,iBAAiB,EAAE,UAAU,EAAE,iBAAiB,IAAI,QAAQ,CAAC,iBAAiB;QAC9E,gBAAgB,EAAE,UAAU,EAAE,gBAAgB,IAAI,QAAQ,CAAC,gBAAgB;KAC5E,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,29 +1,22 @@
1
1
  {
2
2
  "name": "@composurecdk/cloudwatch",
3
- "version": "0.7.0",
3
+ "version": "0.8.0",
4
4
  "description": "Composable CloudWatch alarm primitives for composureCDK resource packages",
5
5
  "repository": {
6
6
  "type": "git",
7
7
  "url": "https://github.com/laazyj/composureCDK",
8
8
  "directory": "packages/cloudwatch"
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 --passWithNoTests",
28
21
  "test:watch": "vitest"
29
22
  },
@@ -34,15 +27,40 @@
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
40
  "aws-cdk-lib": "^2.0.0",
39
41
  "constructs": "^10.0.0"
40
42
  },
41
43
  "devDependencies": {
42
- "@types/node": "^25.6.0",
43
- "aws-cdk-lib": "^2.250.0",
44
+ "@types/node": "^25.6.2",
45
+ "aws-cdk-lib": "^2.253.1",
44
46
  "constructs": "^10.6.0",
45
47
  "typescript": "^6.0.3",
46
48
  "vitest": "^4.1.4"
47
- }
49
+ },
50
+ "exports": {
51
+ "./package.json": "./package.json",
52
+ ".": {
53
+ "import": {
54
+ "types": "./dist/esm/index.d.ts",
55
+ "default": "./dist/esm/index.js"
56
+ },
57
+ "require": {
58
+ "types": "./dist/commonjs/index.d.ts",
59
+ "default": "./dist/commonjs/index.js"
60
+ }
61
+ }
62
+ },
63
+ "main": "./dist/commonjs/index.js",
64
+ "types": "./dist/commonjs/index.d.ts",
65
+ "module": "./dist/esm/index.js"
48
66
  }
@@ -1 +0,0 @@
1
- {"version":3,"file":"alarm-config.d.ts","sourceRoot":"","sources":["../src/alarm-config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IAEtB,sDAAsD;IACtD,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,iEAAiE;IACjE,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B,2EAA2E;IAC3E,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B,gFAAgF;IAChF,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;CACrC;AAED;;;GAGG;AACH,MAAM,MAAM,mBAAmB,GAAG,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"alarm-definition-builder.d.ts","sourceRoot":"","sources":["../src/alarm-definition-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,KAAK,MAAM,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC/F,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD;;;;;;;;GAQG;AACH,qBAAa,sBAAsB,CAAC,UAAU;;gBAWhC,GAAG,EAAE,MAAM;IAIvB,MAAM,CAAC,OAAO,EAAE,CAAC,SAAS,EAAE,UAAU,KAAK,MAAM,GAAG,IAAI;IAKxD;;;;OAIG;IACH,SAAS,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI;IAKhC,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK9B,WAAW,IAAI,IAAI;IAKnB,kBAAkB,IAAI,IAAI;IAK1B,QAAQ,IAAI,IAAI;IAKhB,eAAe,IAAI,IAAI;IAKvB,iBAAiB,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IAKlC,iBAAiB,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IAKlC,gBAAgB,CAAC,SAAS,EAAE,gBAAgB,GAAG,IAAI;IAKnD,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC,CAAC,UAAU,EAAE,eAAe,KAAK,MAAM,CAAC,GAAG,IAAI;IAK3E;;;;;OAKG;IACH,OAAO,CAAC,SAAS,EAAE,UAAU,GAAG,eAAe;CAwBhD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"alarm-definition-builder.js","sourceRoot":"","sources":["../src/alarm-definition-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAe,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAI/F;;;;;;;;GAQG;AACH,MAAM,OAAO,sBAAsB;IACxB,IAAI,CAAS;IACtB,UAAU,CAAa;IACvB,cAAc,CAAqC;IACnD,UAAU,GAAG,CAAC,CAAC;IACf,mBAAmB,GAAG,kBAAkB,CAAC,sBAAsB,CAAC;IAChE,kBAAkB,GAAG,CAAC,CAAC;IACvB,kBAAkB,GAAG,CAAC,CAAC;IACvB,iBAAiB,GAAG,gBAAgB,CAAC,aAAa,CAAC;IACnD,YAAY,GAAuD,EAAE,CAAC;IAEtE,YAAY,GAAW;QACrB,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;IAClB,CAAC;IAED,MAAM,CAAC,OAA0C;QAC/C,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;OAIG;IACH,SAAS,CAAC,IAAe;QACvB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,SAAS,CAAC,KAAa;QACrB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,WAAW;QACT,IAAI,CAAC,mBAAmB,GAAG,kBAAkB,CAAC,sBAAsB,CAAC;QACrE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,kBAAkB;QAChB,IAAI,CAAC,mBAAmB,GAAG,kBAAkB,CAAC,kCAAkC,CAAC;QACjF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,QAAQ;QACN,IAAI,CAAC,mBAAmB,GAAG,kBAAkB,CAAC,mBAAmB,CAAC;QAClE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,eAAe;QACb,IAAI,CAAC,mBAAmB,GAAG,kBAAkB,CAAC,+BAA+B,CAAC;QAC9E,OAAO,IAAI,CAAC;IACd,CAAC;IAED,iBAAiB,CAAC,CAAS;QACzB,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC;QAC5B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,iBAAiB,CAAC,CAAS;QACzB,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC;QAC5B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,gBAAgB,CAAC,SAA2B;QAC1C,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC;QACnC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,WAAW,CAAC,IAAwD;QAClE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;OAKG;IACH,OAAO,CAAC,SAAqB;QAC3B,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CACb,2BAA2B,IAAI,CAAC,IAAI,6CAA6C,CAClF,CAAC;QACJ,CAAC;QAED,MAAM,UAAU,GAAoB;YAClC,GAAG,EAAE,IAAI,CAAC,IAAI;YACd,SAAS,EAAE,IAAI,CAAC,UAAU;YAC1B,MAAM,EAAE,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC;YACtC,SAAS,EAAE,IAAI,CAAC,UAAU;YAC1B,kBAAkB,EAAE,IAAI,CAAC,mBAAmB;YAC5C,iBAAiB,EAAE,IAAI,CAAC,kBAAkB;YAC1C,iBAAiB,EAAE,IAAI,CAAC,kBAAkB;YAC1C,gBAAgB,EAAE,IAAI,CAAC,iBAAiB;YACxC,WAAW,EAAE,EAAE;SAChB,CAAC;QAEF,UAAU,CAAC,WAAW;YACpB,OAAO,IAAI,CAAC,YAAY,KAAK,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC;QAE9F,OAAO,UAAU,CAAC;IACpB,CAAC;CACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"alarm-definition.d.ts","sourceRoot":"","sources":["../src/alarm-definition.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC/F,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD;;;;;;GAMG;AACH,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,WAAW,EAAE,MAAM,CAAC;CACrB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"alarm-name.d.ts","sourceRoot":"","sources":["../src/alarm-name.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,cAAc,EAAE,OAAO,MAAM,CAAC;AAE5C;;;;GAIG;AACH,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG;IAAE,QAAQ,CAAC,CAAC,cAAc,CAAC,EAAE,IAAI,CAAA;CAAE,CAAC;AAKrE;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAclD;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,EAAE,GAAG,SAAM,GAAG,SAAS,CAG/E;AAED;;;GAGG;AACH,wBAAgB,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAQ3C"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"alarm-name.js","sourceRoot":"","sources":["../src/alarm-name.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,GAAG,6BAA6B,CAAC;AAClD,MAAM,OAAO,GAAG,GAAG,CAAC;AAEpB;;;;;;;GAOG;AACH,MAAM,UAAU,SAAS,CAAC,KAAa;IACrC,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAChD,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,GAAG,OAAO,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,sBAAsB,MAAM,CAAC,OAAO,CAAC,YAAY,OAAO,GAAG,CAAC,CAAC;IAC/E,CAAC;IACD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CACb,+FAA+F,OAAO,GAAG,CAC1G,CAAC;IACJ,CAAC;IACD,OAAO,OAAoB,CAAC;AAC9B,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,QAA2B,EAAE,GAAG,GAAG,GAAG;IAClE,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC9D,OAAO,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACpC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,KAAK,CAAC,KAAa;IACjC,OAAO,KAAK;SACT,OAAO,CAAC,oBAAoB,EAAE,OAAO,CAAC;SACtC,OAAO,CAAC,uBAAuB,EAAE,OAAO,CAAC;SACzC,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC;SACxB,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;SACnB,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;SACrB,WAAW,EAAE,CAAC;AACnB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"create-alarms.d.ts","sourceRoot":"","sources":["../src/create-alarms.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAO7D;;;;;;;;;;;;;GAaG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,UAAU,EACjB,EAAE,EAAE,MAAM,EACV,WAAW,EAAE,eAAe,EAAE,GAC7B,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAsBvB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"create-alarms.js","sourceRoot":"","sources":["../src/create-alarms.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAE3D,SAAS,UAAU,CAAC,CAAS;IAC3B,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACzC,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,YAAY,CAC1B,KAAiB,EACjB,EAAU,EACV,WAA8B;IAE9B,MAAM,MAAM,GAA0B,EAAE,CAAC;IAEzC,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;QAC9B,IAAI,GAAG,CAAC,GAAG,IAAI,MAAM,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CACb,wBAAwB,GAAG,CAAC,GAAG,mEAAmE;gBAChG,8DAA8D,CACjE,CAAC;QACJ,CAAC;QACD,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE;YAClF,SAAS,EAAE,GAAG,CAAC,SAAS,IAAI,gBAAgB,CAAC,KAAK,EAAE,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC;YAChE,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,iBAAiB,EAAE,GAAG,CAAC,iBAAiB;YACxC,iBAAiB,EAAE,GAAG,CAAC,iBAAiB;YACxC,gBAAgB,EAAE,GAAG,CAAC,gBAAgB;YACtC,kBAAkB,EAAE,GAAG,CAAC,kBAAkB;YAC1C,gBAAgB,EAAE,GAAG,CAAC,WAAW;SAClC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"default-alarm-name.d.ts","sourceRoot":"","sources":["../src/default-alarm-name.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,KAAK,SAAS,EAAiB,MAAM,iBAAiB,CAAC;AAEhE;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,CAGtF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"default-alarm-name.js","sourceRoot":"","sources":["../src/default-alarm-name.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEpC,OAAO,EAAkB,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhE;;;;;;;;;GASG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAiB,EAAE,EAAU,EAAE,GAAW;IACzE,MAAM,SAAS,GAAG,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC;IAC5C,OAAO,aAAa,CAAC,CAAC,SAAS,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;AAC7C,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC1E,YAAY,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,EAAE,KAAK,SAAS,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,KAAK,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AACzF,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AACxE,YAAY,EACV,wBAAwB,EACxB,iBAAiB,EACjB,YAAY,GACb,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EACL,eAAe,EACf,KAAK,qBAAqB,EAC1B,KAAK,aAAa,EAClB,KAAK,yBAAyB,GAC/B,MAAM,iCAAiC,CAAC"}
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,EAAkB,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAA4B,MAAM,2BAA2B,CAAC;AACzF,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAMxE,OAAO,EACL,eAAe,GAIhB,MAAM,iCAAiC,CAAC"}