@composurecdk/sns 0.7.0 → 0.8.1

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 (83) hide show
  1. package/README.md +57 -10
  2. package/dist/commonjs/defaults.d.ts.map +1 -0
  3. package/dist/commonjs/defaults.js +17 -0
  4. package/dist/commonjs/defaults.js.map +1 -0
  5. package/dist/{index.d.ts → commonjs/index.d.ts} +1 -0
  6. package/dist/commonjs/index.d.ts.map +1 -0
  7. package/dist/commonjs/index.js +14 -0
  8. package/dist/commonjs/index.js.map +1 -0
  9. package/dist/commonjs/package.json +3 -0
  10. package/dist/{subscription-builder.d.ts → commonjs/subscription-builder.d.ts} +36 -32
  11. package/dist/commonjs/subscription-builder.d.ts.map +1 -0
  12. package/dist/commonjs/subscription-builder.js +57 -0
  13. package/dist/commonjs/subscription-builder.js.map +1 -0
  14. package/dist/commonjs/subscription-defaults.d.ts +60 -0
  15. package/dist/commonjs/subscription-defaults.d.ts.map +1 -0
  16. package/dist/commonjs/subscription-defaults.js +78 -0
  17. package/dist/commonjs/subscription-defaults.js.map +1 -0
  18. package/dist/commonjs/topic-alarm-config.d.ts.map +1 -0
  19. package/dist/commonjs/topic-alarm-config.js +3 -0
  20. package/dist/commonjs/topic-alarm-config.js.map +1 -0
  21. package/dist/commonjs/topic-alarm-defaults.d.ts.map +1 -0
  22. package/dist/commonjs/topic-alarm-defaults.js +41 -0
  23. package/dist/commonjs/topic-alarm-defaults.js.map +1 -0
  24. package/dist/commonjs/topic-alarms.d.ts.map +1 -0
  25. package/dist/commonjs/topic-alarms.js +108 -0
  26. package/dist/commonjs/topic-alarms.js.map +1 -0
  27. package/dist/commonjs/topic-builder.d.ts.map +1 -0
  28. package/dist/commonjs/topic-builder.js +97 -0
  29. package/dist/commonjs/topic-builder.js.map +1 -0
  30. package/dist/esm/defaults.d.ts +8 -0
  31. package/dist/esm/defaults.d.ts.map +1 -0
  32. package/dist/esm/defaults.js.map +1 -0
  33. package/dist/esm/index.d.ts +7 -0
  34. package/dist/esm/index.d.ts.map +1 -0
  35. package/dist/{index.js → esm/index.js} +1 -0
  36. package/dist/esm/index.js.map +1 -0
  37. package/dist/esm/package.json +3 -0
  38. package/dist/esm/subscription-builder.d.ts +104 -0
  39. package/dist/esm/subscription-builder.d.ts.map +1 -0
  40. package/dist/esm/subscription-builder.js +54 -0
  41. package/dist/esm/subscription-builder.js.map +1 -0
  42. package/dist/esm/subscription-defaults.d.ts +60 -0
  43. package/dist/esm/subscription-defaults.d.ts.map +1 -0
  44. package/dist/esm/subscription-defaults.js +74 -0
  45. package/dist/esm/subscription-defaults.js.map +1 -0
  46. package/dist/esm/topic-alarm-config.d.ts +67 -0
  47. package/dist/esm/topic-alarm-config.d.ts.map +1 -0
  48. package/dist/esm/topic-alarm-config.js.map +1 -0
  49. package/dist/esm/topic-alarm-defaults.d.ts +16 -0
  50. package/dist/esm/topic-alarm-defaults.d.ts.map +1 -0
  51. package/dist/esm/topic-alarm-defaults.js.map +1 -0
  52. package/dist/esm/topic-alarms.d.ts +26 -0
  53. package/dist/esm/topic-alarms.d.ts.map +1 -0
  54. package/dist/esm/topic-alarms.js.map +1 -0
  55. package/dist/esm/topic-builder.d.ts +136 -0
  56. package/dist/esm/topic-builder.d.ts.map +1 -0
  57. package/dist/{topic-builder.js → esm/topic-builder.js} +2 -1
  58. package/dist/esm/topic-builder.js.map +1 -0
  59. package/package.json +36 -18
  60. package/dist/defaults.d.ts.map +0 -1
  61. package/dist/defaults.js.map +0 -1
  62. package/dist/index.d.ts.map +0 -1
  63. package/dist/index.js.map +0 -1
  64. package/dist/subscription-builder.d.ts.map +0 -1
  65. package/dist/subscription-builder.js +0 -58
  66. package/dist/subscription-builder.js.map +0 -1
  67. package/dist/topic-alarm-config.d.ts.map +0 -1
  68. package/dist/topic-alarm-config.js.map +0 -1
  69. package/dist/topic-alarm-defaults.d.ts.map +0 -1
  70. package/dist/topic-alarm-defaults.js.map +0 -1
  71. package/dist/topic-alarms.d.ts.map +0 -1
  72. package/dist/topic-alarms.js.map +0 -1
  73. package/dist/topic-builder.d.ts.map +0 -1
  74. package/dist/topic-builder.js.map +0 -1
  75. /package/dist/{defaults.d.ts → commonjs/defaults.d.ts} +0 -0
  76. /package/dist/{topic-alarm-config.d.ts → commonjs/topic-alarm-config.d.ts} +0 -0
  77. /package/dist/{topic-alarm-defaults.d.ts → commonjs/topic-alarm-defaults.d.ts} +0 -0
  78. /package/dist/{topic-alarms.d.ts → commonjs/topic-alarms.d.ts} +0 -0
  79. /package/dist/{topic-builder.d.ts → commonjs/topic-builder.d.ts} +0 -0
  80. /package/dist/{defaults.js → esm/defaults.js} +0 -0
  81. /package/dist/{topic-alarm-config.js → esm/topic-alarm-config.js} +0 -0
  82. /package/dist/{topic-alarm-defaults.js → esm/topic-alarm-defaults.js} +0 -0
  83. /package/dist/{topic-alarms.js → esm/topic-alarms.js} +0 -0
@@ -0,0 +1,67 @@
1
+ import type { AlarmConfig } from "@composurecdk/cloudwatch";
2
+ /**
3
+ * Controls which recommended alarms are created for an SNS topic.
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#SNS
9
+ */
10
+ export interface TopicAlarmConfig {
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 SNS fails to deliver notifications to subscribed endpoints.
19
+ *
20
+ * Metric: `AWS/SNS NumberOfNotificationsFailed`, statistic Sum, period 1 minute.
21
+ * Default threshold: > 0 failures.
22
+ *
23
+ * @see https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Best_Practice_Recommended_Alarms_AWS_Services.html#SNS
24
+ */
25
+ numberOfNotificationsFailed?: AlarmConfig | false;
26
+ /**
27
+ * Alarm when messages are rejected due to invalid subscription filter
28
+ * policy attributes.
29
+ *
30
+ * Metric: `AWS/SNS NumberOfNotificationsFilteredOut-InvalidAttributes`,
31
+ * statistic Sum, period 1 minute.
32
+ * Default threshold: > 0 filtered messages.
33
+ *
34
+ * @see https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Best_Practice_Recommended_Alarms_AWS_Services.html#SNS
35
+ */
36
+ numberOfNotificationsFilteredOutInvalidAttributes?: AlarmConfig | false;
37
+ /**
38
+ * Alarm when messages are moved to a subscription's dead-letter queue
39
+ * because SNS could not deliver them to the subscribed endpoint.
40
+ *
41
+ * This metric is topic-level even though DLQs are attached per subscription,
42
+ * so the recommended alarm lives on the topic. It only emits data when at
43
+ * least one subscription on the topic has a DLQ attached and SNS attempts
44
+ * redrive; {@link TreatMissingData.NOT_BREACHING} keeps it quiet otherwise.
45
+ *
46
+ * Metric: `AWS/SNS NumberOfNotificationsRedrivenToDlq`, statistic Sum,
47
+ * period 1 minute, dimension `TopicName`.
48
+ * Default threshold: > 0 redrives.
49
+ *
50
+ * @see https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Best_Practice_Recommended_Alarms_AWS_Services.html#SNS
51
+ * @see https://docs.aws.amazon.com/sns/latest/dg/sns-dead-letter-queues.html
52
+ */
53
+ numberOfNotificationsRedrivenToDlq?: AlarmConfig | false;
54
+ /**
55
+ * Alarm when messages could not even be moved to a dead-letter queue.
56
+ * Indicates a misconfiguration (e.g. missing SNS permission on the DLQ)
57
+ * that results in message loss.
58
+ *
59
+ * Metric: `AWS/SNS NumberOfNotificationsFailedToRedriveToDlq`, statistic Sum,
60
+ * period 1 minute, dimension `TopicName`.
61
+ * Default threshold: > 0 failed redrives.
62
+ *
63
+ * @see https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Best_Practice_Recommended_Alarms_AWS_Services.html#SNS
64
+ */
65
+ numberOfNotificationsFailedToRedriveToDlq?: AlarmConfig | false;
66
+ }
67
+ //# sourceMappingURL=topic-alarm-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"topic-alarm-config.d.ts","sourceRoot":"","sources":["../../src/topic-alarm-config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAE5D;;;;;;;GAOG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;;;;;;OAOG;IACH,2BAA2B,CAAC,EAAE,WAAW,GAAG,KAAK,CAAC;IAElD;;;;;;;;;OASG;IACH,iDAAiD,CAAC,EAAE,WAAW,GAAG,KAAK,CAAC;IAExE;;;;;;;;;;;;;;;OAeG;IACH,kCAAkC,CAAC,EAAE,WAAW,GAAG,KAAK,CAAC;IAEzD;;;;;;;;;;OAUG;IACH,yCAAyC,CAAC,EAAE,WAAW,GAAG,KAAK,CAAC;CACjE"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"topic-alarm-config.js","sourceRoot":"","sources":["../../src/topic-alarm-config.ts"],"names":[],"mappings":""}
@@ -0,0 +1,16 @@
1
+ import type { AlarmConfigDefaults } from "@composurecdk/cloudwatch";
2
+ interface TopicAlarmDefaults {
3
+ enabled: true;
4
+ numberOfNotificationsFailed: AlarmConfigDefaults;
5
+ numberOfNotificationsFilteredOutInvalidAttributes: AlarmConfigDefaults;
6
+ numberOfNotificationsRedrivenToDlq: AlarmConfigDefaults;
7
+ numberOfNotificationsFailedToRedriveToDlq: AlarmConfigDefaults;
8
+ }
9
+ /**
10
+ * AWS-recommended default alarm configuration for SNS topics.
11
+ *
12
+ * @see https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Best_Practice_Recommended_Alarms_AWS_Services.html#SNS
13
+ */
14
+ export declare const TOPIC_ALARM_DEFAULTS: TopicAlarmDefaults;
15
+ export {};
16
+ //# sourceMappingURL=topic-alarm-defaults.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"topic-alarm-defaults.d.ts","sourceRoot":"","sources":["../../src/topic-alarm-defaults.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAEpE,UAAU,kBAAkB;IAC1B,OAAO,EAAE,IAAI,CAAC;IACd,2BAA2B,EAAE,mBAAmB,CAAC;IACjD,iDAAiD,EAAE,mBAAmB,CAAC;IACvE,kCAAkC,EAAE,mBAAmB,CAAC;IACxD,yCAAyC,EAAE,mBAAmB,CAAC;CAChE;AAED;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,EAAE,kBAkClC,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"topic-alarm-defaults.js","sourceRoot":"","sources":["../../src/topic-alarm-defaults.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAW9D;;;;GAIG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAuB;IACtD,OAAO,EAAE,IAAI;IAEb,gEAAgE;IAChE,2BAA2B,EAAE;QAC3B,SAAS,EAAE,CAAC;QACZ,iBAAiB,EAAE,CAAC;QACpB,iBAAiB,EAAE,CAAC;QACpB,gBAAgB,EAAE,gBAAgB,CAAC,aAAa;KACjD;IAED,mGAAmG;IACnG,iDAAiD,EAAE;QACjD,SAAS,EAAE,CAAC;QACZ,iBAAiB,EAAE,CAAC;QACpB,iBAAiB,EAAE,CAAC;QACpB,gBAAgB,EAAE,gBAAgB,CAAC,aAAa;KACjD;IAED,uGAAuG;IACvG,kCAAkC,EAAE;QAClC,SAAS,EAAE,CAAC;QACZ,iBAAiB,EAAE,CAAC;QACpB,iBAAiB,EAAE,CAAC;QACpB,gBAAgB,EAAE,gBAAgB,CAAC,aAAa;KACjD;IAED,uEAAuE;IACvE,yCAAyC,EAAE;QACzC,SAAS,EAAE,CAAC;QACZ,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 { ITopic } from "aws-cdk-lib/aws-sns";
3
+ import type { IConstruct } from "constructs";
4
+ import type { AlarmDefinition } from "@composurecdk/cloudwatch";
5
+ import { AlarmDefinitionBuilder } from "@composurecdk/cloudwatch";
6
+ import type { TopicAlarmConfig } from "./topic-alarm-config.js";
7
+ /**
8
+ * Resolves the recommended alarm configuration into fully-resolved
9
+ * {@link AlarmDefinition}s for an SNS topic.
10
+ */
11
+ export declare function resolveTopicAlarmDefinitions(topic: ITopic, config: TopicAlarmConfig | undefined): AlarmDefinition[];
12
+ /**
13
+ * Creates AWS-recommended CloudWatch alarms for an SNS topic,
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 topic - The SNS topic 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#SNS
24
+ */
25
+ export declare function createTopicAlarms(scope: IConstruct, id: string, topic: ITopic, config: TopicAlarmConfig | false | undefined, customAlarms?: AlarmDefinitionBuilder<ITopic>[]): Record<string, Alarm>;
26
+ //# sourceMappingURL=topic-alarms.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"topic-alarms.d.ts","sourceRoot":"","sources":["../../src/topic-alarms.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,KAAK,EAAsB,MAAM,4BAA4B,CAAC;AAC5E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,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,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAMhE;;;GAGG;AACH,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,gBAAgB,GAAG,SAAS,GACnC,eAAe,EAAE,CAsFnB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,UAAU,EACjB,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,gBAAgB,GAAG,KAAK,GAAG,SAAS,EAC5C,YAAY,GAAE,sBAAsB,CAAC,MAAM,CAAC,EAAO,GAClD,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAUvB"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"topic-alarms.js","sourceRoot":"","sources":["../../src/topic-alarms.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,136 @@
1
+ import { type Alarm } from "aws-cdk-lib/aws-cloudwatch";
2
+ import { type ITopic, type ITopicSubscription, Subscription, Topic, type TopicProps } from "aws-cdk-lib/aws-sns";
3
+ import { type IConstruct } from "constructs";
4
+ import { COPY_STATE, type Lifecycle, type Resolvable } from "@composurecdk/core";
5
+ import { type ITaggedBuilder } from "@composurecdk/cloudformation";
6
+ import { AlarmDefinitionBuilder } from "@composurecdk/cloudwatch";
7
+ import type { TopicAlarmConfig } from "./topic-alarm-config.js";
8
+ /**
9
+ * Configuration properties for the SNS topic builder.
10
+ *
11
+ * Extends the CDK {@link TopicProps} with additional builder-specific options.
12
+ */
13
+ export interface TopicBuilderProps extends TopicProps {
14
+ /**
15
+ * Configuration for AWS-recommended CloudWatch alarms.
16
+ *
17
+ * By default, the builder creates recommended alarms with sensible
18
+ * thresholds for every applicable metric. Individual alarms can be
19
+ * customized or disabled. Set to `false` to disable all alarms.
20
+ *
21
+ * No alarm actions are configured by default since notification
22
+ * methods are user-specific. Access alarms from the build result
23
+ * or use an `afterBuild` hook to apply actions.
24
+ *
25
+ * @see https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Best_Practice_Recommended_Alarms_AWS_Services.html#SNS
26
+ */
27
+ recommendedAlarms?: TopicAlarmConfig | false;
28
+ }
29
+ /**
30
+ * The build output of a {@link ITopicBuilder}. Contains the CDK constructs
31
+ * created during {@link Lifecycle.build}, keyed by role.
32
+ */
33
+ export interface TopicBuilderResult {
34
+ /** The SNS topic construct created by the builder. */
35
+ topic: Topic;
36
+ /**
37
+ * CloudWatch alarms created for the topic, keyed by alarm name.
38
+ *
39
+ * Includes both AWS-recommended alarms and any custom alarms added
40
+ * via {@link ITopicBuilder.addAlarm}. Access individual alarms
41
+ * by key (e.g., `result.alarms.numberOfNotificationsFailed`).
42
+ *
43
+ * No alarm actions are configured — apply them via the result or an
44
+ * `afterBuild` hook.
45
+ *
46
+ * @see https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Best_Practice_Recommended_Alarms_AWS_Services.html#SNS
47
+ */
48
+ alarms: Record<string, Alarm>;
49
+ /**
50
+ * Subscriptions added to the topic via
51
+ * {@link ITopicBuilder.addSubscription}, keyed by the name supplied to
52
+ * that call.
53
+ *
54
+ * Always present — `{}` when no subscriptions were added.
55
+ */
56
+ subscriptions: Record<string, Subscription>;
57
+ }
58
+ /**
59
+ * A fluent builder for configuring and creating an AWS SNS topic.
60
+ *
61
+ * Each configuration property from the CDK {@link TopicProps} is exposed
62
+ * as an overloaded method: call with a value to set it (returns the builder
63
+ * for chaining), or call with no arguments to read the current value.
64
+ *
65
+ * The builder implements {@link Lifecycle}, so it can be used directly as a
66
+ * component in a {@link compose | composed system}. When built, it creates
67
+ * an SNS topic with the configured properties and returns a
68
+ * {@link TopicBuilderResult}.
69
+ *
70
+ * The builder also creates AWS-recommended CloudWatch alarms by default.
71
+ * Alarms can be customized or disabled via the `recommendedAlarms` property.
72
+ * Custom alarms can be added via the {@link addAlarm} method.
73
+ *
74
+ * @see https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_sns.Topic.html
75
+ *
76
+ * @example
77
+ * ```ts
78
+ * const alerts = createTopicBuilder()
79
+ * .topicName("my-alerts")
80
+ * .displayName("My Alert Topic");
81
+ * ```
82
+ */
83
+ export type ITopicBuilder = ITaggedBuilder<TopicBuilderProps, TopicBuilder>;
84
+ declare class TopicBuilder implements Lifecycle<TopicBuilderResult> {
85
+ #private;
86
+ props: Partial<TopicBuilderProps>;
87
+ addAlarm(key: string, configure: (alarm: AlarmDefinitionBuilder<ITopic>) => AlarmDefinitionBuilder<ITopic>): this;
88
+ /**
89
+ * Register a subscription to be attached to the topic at build time.
90
+ *
91
+ * Accepts any {@link ITopicSubscription} (e.g. `EmailSubscription`,
92
+ * `LambdaSubscription`, `SqsSubscription`) or a {@link Resolvable} so
93
+ * subscriptions wiring cross-component references (such as a Lambda
94
+ * function built by a sibling component) can be declared at configuration
95
+ * time.
96
+ *
97
+ * The subscription is bound via `ITopicSubscription.bind(topic)`, which
98
+ * performs the IAM/resource-policy wire-up required by the endpoint (for
99
+ * example, `LambdaSubscription.bind` grants the topic permission to
100
+ * invoke the function; `SqsSubscription.bind` adds the matching SQS queue
101
+ * policy). The resulting {@link Subscription} construct is exposed on
102
+ * {@link TopicBuilderResult.subscriptions} under `key`.
103
+ */
104
+ addSubscription(key: string, subscription: Resolvable<ITopicSubscription>): this;
105
+ /** @internal — see ADR-0005. */
106
+ [COPY_STATE](target: TopicBuilder): void;
107
+ build(scope: IConstruct, id: string, context?: Record<string, object>): TopicBuilderResult;
108
+ }
109
+ /**
110
+ * Creates a new {@link ITopicBuilder} for configuring an AWS SNS topic.
111
+ *
112
+ * This is the entry point for defining an SNS topic component. The returned
113
+ * builder exposes every {@link TopicBuilderProps} property as a fluent setter/getter
114
+ * and implements {@link Lifecycle} for use with {@link compose}.
115
+ *
116
+ * @returns A fluent builder for an AWS SNS topic.
117
+ *
118
+ * @example
119
+ * ```ts
120
+ * const alerts = createTopicBuilder()
121
+ * .topicName("my-alerts")
122
+ * .displayName("My Alert Topic");
123
+ *
124
+ * // Use standalone:
125
+ * const result = alerts.build(stack, "AlertTopic");
126
+ *
127
+ * // Or compose into a system:
128
+ * const system = compose(
129
+ * { alerts, handler: createFunctionBuilder() },
130
+ * { alerts: [], handler: [] },
131
+ * );
132
+ * ```
133
+ */
134
+ export declare function createTopicBuilder(): ITopicBuilder;
135
+ export {};
136
+ //# sourceMappingURL=topic-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"topic-builder.d.ts","sourceRoot":"","sources":["../../src/topic-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EACL,KAAK,MAAM,EACX,KAAK,kBAAkB,EACvB,YAAY,EACZ,KAAK,EACL,KAAK,UAAU,EAChB,MAAM,qBAAqB,CAAC;AAC7B,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,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAKhE;;;;GAIG;AACH,MAAM,WAAW,iBAAkB,SAAQ,UAAU;IACnD;;;;;;;;;;;;OAYG;IACH,iBAAiB,CAAC,EAAE,gBAAgB,GAAG,KAAK,CAAC;CAC9C;AAED;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,sDAAsD;IACtD,KAAK,EAAE,KAAK,CAAC;IAEb;;;;;;;;;;;OAWG;IACH,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAE9B;;;;;;OAMG;IACH,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;CAC7C;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,MAAM,aAAa,GAAG,cAAc,CAAC,iBAAiB,EAAE,YAAY,CAAC,CAAC;AAO5E,cAAM,YAAa,YAAW,SAAS,CAAC,kBAAkB,CAAC;;IACzD,KAAK,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAM;IAIvC,QAAQ,CACN,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,CAAC,KAAK,EAAE,sBAAsB,CAAC,MAAM,CAAC,KAAK,sBAAsB,CAAC,MAAM,CAAC,GACnF,IAAI;IAKP;;;;;;;;;;;;;;;OAeG;IACH,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,CAAC,kBAAkB,CAAC,GAAG,IAAI;IAWhF,gCAAgC;IAChC,CAAC,UAAU,CAAC,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI;IAKxC,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,kBAAkB;CA6B3F;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,kBAAkB,IAAI,aAAa,CAElD"}
@@ -4,6 +4,7 @@ import { taggedBuilder } from "@composurecdk/cloudformation";
4
4
  import { AlarmDefinitionBuilder } from "@composurecdk/cloudwatch";
5
5
  import { createTopicAlarms } from "./topic-alarms.js";
6
6
  import { TOPIC_DEFAULTS } from "./defaults.js";
7
+ import { applySubscriptionDefaults } from "./subscription-defaults.js";
7
8
  class TopicBuilder {
8
9
  props = {};
9
10
  #customAlarms = [];
@@ -52,8 +53,8 @@ class TopicBuilder {
52
53
  const subscriptions = {};
53
54
  for (const entry of this.#subscriptions) {
54
55
  const resolvedSub = resolve(entry.subscription, context ?? {});
55
- const subscriptionConfig = resolvedSub.bind(topic);
56
56
  const subscriptionId = `${id}${entry.key[0].toUpperCase()}${entry.key.slice(1)}Subscription`;
57
+ const subscriptionConfig = applySubscriptionDefaults(scope, subscriptionId, resolvedSub.bind(topic));
57
58
  subscriptions[entry.key] = new Subscription(scope, subscriptionId, {
58
59
  topic,
59
60
  ...subscriptionConfig,
@@ -0,0 +1 @@
1
+ {"version":3,"file":"topic-builder.js","sourceRoot":"","sources":["../../src/topic-builder.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,29 +1,22 @@
1
1
  {
2
2
  "name": "@composurecdk/sns",
3
- "version": "0.7.0",
3
+ "version": "0.8.1",
4
4
  "description": "Composable SNS topic builder with well-architected defaults",
5
5
  "repository": {
6
6
  "type": "git",
7
7
  "url": "https://github.com/laazyj/composureCDK",
8
8
  "directory": "packages/sns"
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.9.1",
48
+ "aws-cdk-lib": "^2.257.0",
47
49
  "constructs": "^10.6.0",
48
50
  "typescript": "^6.0.3",
49
- "vitest": "^4.1.4"
50
- }
51
+ "vitest": "^4.1.7"
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":"defaults.d.ts","sourceRoot":"","sources":["../src/defaults.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEtD;;;;GAIG;AACH,eAAO,MAAM,cAAc,EAAE,OAAO,CAAC,UAAU,CAO9C,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"defaults.js","sourceRoot":"","sources":["../src/defaults.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,MAAM,CAAC,MAAM,cAAc,GAAwB;IACjD;;;;OAIG;IACH,UAAU,EAAE,IAAI;CACjB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,aAAa,GACnB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EACL,yBAAyB,EACzB,KAAK,oBAAoB,EACzB,KAAK,wBAAwB,EAC7B,KAAK,yBAAyB,GAC/B,MAAM,2BAA2B,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,kBAAkB,GAInB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EACL,yBAAyB,GAI1B,MAAM,2BAA2B,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"subscription-builder.d.ts","sourceRoot":"","sources":["../src/subscription-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAE,YAAY,EAAE,KAAK,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAEL,KAAK,QAAQ,EACb,KAAK,SAAS,EACd,KAAK,UAAU,EAEhB,MAAM,oBAAoB,CAAC;AAE5B;;;;;;GAMG;AACH,MAAM,WAAW,wBAAyB,SAAQ,IAAI,CACpD,iBAAiB,EACjB,OAAO,GAAG,iBAAiB,CAC5B;IACC;;;OAGG;IACH,KAAK,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;IAE1B;;;;;;;;;;;;OAYG;IACH,eAAe,CAAC,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;CACtC;AAED;;;GAGG;AACH,MAAM,WAAW,yBAAyB;IACxC,6DAA6D;IAC7D,YAAY,EAAE,YAAY,CAAC;CAC5B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,MAAM,MAAM,oBAAoB,GAAG,QAAQ,CAAC,wBAAwB,EAAE,mBAAmB,CAAC,CAAC;AAE3F,cAAM,mBAAoB,YAAW,SAAS,CAAC,yBAAyB,CAAC;IACvE,KAAK,EAAE,OAAO,CAAC,wBAAwB,CAAC,CAAM;IAE9C,KAAK,CACH,KAAK,EAAE,UAAU,EACjB,EAAE,EAAE,MAAM,EACV,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,GACnC,yBAAyB;CAmC7B;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,yBAAyB,IAAI,oBAAoB,CAGhE"}
@@ -1,58 +0,0 @@
1
- import { Subscription } from "aws-cdk-lib/aws-sns";
2
- import { Builder, resolve, } from "@composurecdk/core";
3
- class SubscriptionBuilder {
4
- props = {};
5
- build(scope, id, context = {}) {
6
- const { topic, deadLetterQueue, protocol, endpoint, ...rest } = this.props;
7
- if (topic === undefined) {
8
- throw new Error(`SubscriptionBuilder "${id}": topic is required. Call .topic(...) with an ITopic or a Ref before building.`);
9
- }
10
- if (protocol === undefined) {
11
- throw new Error(`SubscriptionBuilder "${id}": protocol is required. Call .protocol(...) with a SubscriptionProtocol before building.`);
12
- }
13
- if (endpoint === undefined) {
14
- throw new Error(`SubscriptionBuilder "${id}": endpoint is required. Call .endpoint(...) with the subscriber endpoint before building.`);
15
- }
16
- const resolvedTopic = resolve(topic, context);
17
- const resolvedDlq = deadLetterQueue !== undefined ? resolve(deadLetterQueue, context) : undefined;
18
- const subscriptionProps = {
19
- ...rest,
20
- protocol,
21
- endpoint,
22
- topic: resolvedTopic,
23
- ...(resolvedDlq !== undefined ? { deadLetterQueue: resolvedDlq } : {}),
24
- };
25
- const subscription = new Subscription(scope, id, subscriptionProps);
26
- return { subscription };
27
- }
28
- }
29
- /**
30
- * Creates a new {@link ISubscriptionBuilder} for configuring an AWS SNS
31
- * subscription.
32
- *
33
- * This is the entry point for defining an SNS subscription component. The
34
- * returned builder exposes every {@link SubscriptionProps} property as a
35
- * fluent setter/getter and implements {@link Lifecycle} for use with
36
- * {@link compose}.
37
- *
38
- * @returns A fluent builder for an AWS SNS subscription.
39
- *
40
- * @example
41
- * ```ts
42
- * const system = compose(
43
- * {
44
- * topic: createTopicBuilder().topicName("budget-alerts"),
45
- * email: createSubscriptionBuilder()
46
- * .topic(ref("topic", (r: TopicBuilderResult) => r.topic))
47
- * .protocol(SubscriptionProtocol.EMAIL)
48
- * .endpoint("ops@example.com"),
49
- * },
50
- * { topic: [], email: ["topic"] },
51
- * );
52
- * ```
53
- */
54
- export function createSubscriptionBuilder() {
55
- // eslint-disable-next-line composurecdk/builder-must-be-tagged -- AWS::SNS::Subscription has no Tags property
56
- return Builder(SubscriptionBuilder);
57
- }
58
- //# sourceMappingURL=subscription-builder.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"subscription-builder.js","sourceRoot":"","sources":["../src/subscription-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,YAAY,EAA0B,MAAM,qBAAqB,CAAC;AAGxF,OAAO,EACL,OAAO,EAIP,OAAO,GACR,MAAM,oBAAoB,CAAC;AA0E5B,MAAM,mBAAmB;IACvB,KAAK,GAAsC,EAAE,CAAC;IAE9C,KAAK,CACH,KAAiB,EACjB,EAAU,EACV,UAAkC,EAAE;QAEpC,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QAE3E,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CACb,wBAAwB,EAAE,iFAAiF,CAC5G,CAAC;QACJ,CAAC;QACD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CACb,wBAAwB,EAAE,2FAA2F,CACtH,CAAC;QACJ,CAAC;QACD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CACb,wBAAwB,EAAE,4FAA4F,CACvH,CAAC;QACJ,CAAC;QAED,MAAM,aAAa,GAAG,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC9C,MAAM,WAAW,GACf,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAEhF,MAAM,iBAAiB,GAAsB;YAC3C,GAAG,IAAI;YACP,QAAQ;YACR,QAAQ;YACR,KAAK,EAAE,aAAa;YACpB,GAAG,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACvE,CAAC;QAEF,MAAM,YAAY,GAAG,IAAI,YAAY,CAAC,KAAK,EAAE,EAAE,EAAE,iBAAiB,CAAC,CAAC;QAEpE,OAAO,EAAE,YAAY,EAAE,CAAC;IAC1B,CAAC;CACF;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,UAAU,yBAAyB;IACvC,8GAA8G;IAC9G,OAAO,OAAO,CAAgD,mBAAmB,CAAC,CAAC;AACrF,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"topic-alarm-config.d.ts","sourceRoot":"","sources":["../src/topic-alarm-config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAE5D;;;;;;;GAOG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;;;;;;OAOG;IACH,2BAA2B,CAAC,EAAE,WAAW,GAAG,KAAK,CAAC;IAElD;;;;;;;;;OASG;IACH,iDAAiD,CAAC,EAAE,WAAW,GAAG,KAAK,CAAC;IAExE;;;;;;;;;;;;;;;OAeG;IACH,kCAAkC,CAAC,EAAE,WAAW,GAAG,KAAK,CAAC;IAEzD;;;;;;;;;;OAUG;IACH,yCAAyC,CAAC,EAAE,WAAW,GAAG,KAAK,CAAC;CACjE"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"topic-alarm-config.js","sourceRoot":"","sources":["../src/topic-alarm-config.ts"],"names":[],"mappings":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"topic-alarm-defaults.d.ts","sourceRoot":"","sources":["../src/topic-alarm-defaults.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAEpE,UAAU,kBAAkB;IAC1B,OAAO,EAAE,IAAI,CAAC;IACd,2BAA2B,EAAE,mBAAmB,CAAC;IACjD,iDAAiD,EAAE,mBAAmB,CAAC;IACvE,kCAAkC,EAAE,mBAAmB,CAAC;IACxD,yCAAyC,EAAE,mBAAmB,CAAC;CAChE;AAED;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,EAAE,kBAkClC,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"topic-alarm-defaults.js","sourceRoot":"","sources":["../src/topic-alarm-defaults.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAW9D;;;;GAIG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAuB;IACtD,OAAO,EAAE,IAAI;IAEb,gEAAgE;IAChE,2BAA2B,EAAE;QAC3B,SAAS,EAAE,CAAC;QACZ,iBAAiB,EAAE,CAAC;QACpB,iBAAiB,EAAE,CAAC;QACpB,gBAAgB,EAAE,gBAAgB,CAAC,aAAa;KACjD;IAED,mGAAmG;IACnG,iDAAiD,EAAE;QACjD,SAAS,EAAE,CAAC;QACZ,iBAAiB,EAAE,CAAC;QACpB,iBAAiB,EAAE,CAAC;QACpB,gBAAgB,EAAE,gBAAgB,CAAC,aAAa;KACjD;IAED,uGAAuG;IACvG,kCAAkC,EAAE;QAClC,SAAS,EAAE,CAAC;QACZ,iBAAiB,EAAE,CAAC;QACpB,iBAAiB,EAAE,CAAC;QACpB,gBAAgB,EAAE,gBAAgB,CAAC,aAAa;KACjD;IAED,uEAAuE;IACvE,yCAAyC,EAAE;QACzC,SAAS,EAAE,CAAC;QACZ,iBAAiB,EAAE,CAAC;QACpB,iBAAiB,EAAE,CAAC;QACpB,gBAAgB,EAAE,gBAAgB,CAAC,aAAa;KACjD;CACF,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"topic-alarms.d.ts","sourceRoot":"","sources":["../src/topic-alarms.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,KAAK,EAAsB,MAAM,4BAA4B,CAAC;AAC5E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,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,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAMhE;;;GAGG;AACH,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,gBAAgB,GAAG,SAAS,GACnC,eAAe,EAAE,CAsFnB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,UAAU,EACjB,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,gBAAgB,GAAG,KAAK,GAAG,SAAS,EAC5C,YAAY,GAAE,sBAAsB,CAAC,MAAM,CAAC,EAAO,GAClD,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAUvB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"topic-alarms.js","sourceRoot":"","sources":["../src/topic-alarms.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"topic-builder.d.ts","sourceRoot":"","sources":["../src/topic-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EACL,KAAK,MAAM,EACX,KAAK,kBAAkB,EACvB,YAAY,EACZ,KAAK,EACL,KAAK,UAAU,EAChB,MAAM,qBAAqB,CAAC;AAC7B,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,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAIhE;;;;GAIG;AACH,MAAM,WAAW,iBAAkB,SAAQ,UAAU;IACnD;;;;;;;;;;;;OAYG;IACH,iBAAiB,CAAC,EAAE,gBAAgB,GAAG,KAAK,CAAC;CAC9C;AAED;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,sDAAsD;IACtD,KAAK,EAAE,KAAK,CAAC;IAEb;;;;;;;;;;;OAWG;IACH,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAE9B;;;;;;OAMG;IACH,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;CAC7C;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,MAAM,aAAa,GAAG,cAAc,CAAC,iBAAiB,EAAE,YAAY,CAAC,CAAC;AAO5E,cAAM,YAAa,YAAW,SAAS,CAAC,kBAAkB,CAAC;;IACzD,KAAK,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAM;IAIvC,QAAQ,CACN,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,CAAC,KAAK,EAAE,sBAAsB,CAAC,MAAM,CAAC,KAAK,sBAAsB,CAAC,MAAM,CAAC,GACnF,IAAI;IAKP;;;;;;;;;;;;;;;OAeG;IACH,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,CAAC,kBAAkB,CAAC,GAAG,IAAI;IAWhF,gCAAgC;IAChC,CAAC,UAAU,CAAC,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI;IAKxC,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,kBAAkB;CAyB3F;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,kBAAkB,IAAI,aAAa,CAElD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"topic-builder.js","sourceRoot":"","sources":["../src/topic-builder.ts"],"names":[],"mappings":"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"}
File without changes
File without changes
File without changes