@empire-builder-kit/runtime 0.0.1-alpha.9 → 1.0.0-beta.11

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 (74) hide show
  1. package/LICENSE +201 -21
  2. package/NOTICE +5 -0
  3. package/README.md +14 -23
  4. package/package.json +58 -97
  5. package/src/auth-backend.d.ts +44 -0
  6. package/src/auth-backend.js +158 -0
  7. package/src/auth-backend.js.map +1 -0
  8. package/src/auth-session.d.ts +175 -0
  9. package/src/auth-session.js +181 -0
  10. package/src/auth-session.js.map +1 -0
  11. package/src/auth-web.d.ts +79 -0
  12. package/src/auth-web.js +153 -0
  13. package/src/auth-web.js.map +1 -0
  14. package/src/auth.d.ts +143 -0
  15. package/src/auth.js +233 -0
  16. package/src/auth.js.map +1 -0
  17. package/{dist → src}/config.d.ts +0 -1
  18. package/{dist → src}/config.js +9 -21
  19. package/src/config.js.map +1 -0
  20. package/src/database.d.ts +32 -0
  21. package/src/database.js +119 -0
  22. package/src/database.js.map +1 -0
  23. package/src/events.d.ts +74 -0
  24. package/src/events.js +149 -0
  25. package/src/events.js.map +1 -0
  26. package/{dist → src}/frontend.d.ts +1 -2
  27. package/src/frontend.js +62 -0
  28. package/src/frontend.js.map +1 -0
  29. package/src/hosts.d.ts +9 -0
  30. package/src/hosts.js +38 -0
  31. package/src/hosts.js.map +1 -0
  32. package/src/index.d.ts +15 -0
  33. package/src/index.js +31 -0
  34. package/src/index.js.map +1 -0
  35. package/src/lambda.d.ts +45 -0
  36. package/src/lambda.js +117 -0
  37. package/src/lambda.js.map +1 -0
  38. package/{dist → src}/logging.d.ts +0 -1
  39. package/src/logging.js +113 -0
  40. package/src/logging.js.map +1 -0
  41. package/{dist → src}/observability.d.ts +18 -1
  42. package/{dist → src}/observability.js +72 -62
  43. package/src/observability.js.map +1 -0
  44. package/src/rds-global-ca-bundle.d.ts +1 -0
  45. package/src/rds-global-ca-bundle.js +2742 -0
  46. package/src/rds-global-ca-bundle.js.map +1 -0
  47. package/{dist → src}/request-context.d.ts +12 -2
  48. package/src/request-context.js +68 -0
  49. package/src/request-context.js.map +1 -0
  50. package/{dist → src}/response.d.ts +0 -1
  51. package/src/response.js +66 -0
  52. package/src/response.js.map +1 -0
  53. package/dist/auth-backend.d.ts +0 -18
  54. package/dist/auth-backend.d.ts.map +0 -1
  55. package/dist/auth-backend.js +0 -57
  56. package/dist/auth-web.d.ts +0 -18
  57. package/dist/auth-web.d.ts.map +0 -1
  58. package/dist/auth-web.js +0 -32
  59. package/dist/auth.d.ts +0 -68
  60. package/dist/auth.d.ts.map +0 -1
  61. package/dist/auth.js +0 -107
  62. package/dist/config.d.ts.map +0 -1
  63. package/dist/frontend.d.ts.map +0 -1
  64. package/dist/frontend.js +0 -64
  65. package/dist/index.d.ts +0 -12
  66. package/dist/index.d.ts.map +0 -1
  67. package/dist/index.js +0 -23
  68. package/dist/logging.d.ts.map +0 -1
  69. package/dist/logging.js +0 -129
  70. package/dist/observability.d.ts.map +0 -1
  71. package/dist/request-context.d.ts.map +0 -1
  72. package/dist/request-context.js +0 -58
  73. package/dist/response.d.ts.map +0 -1
  74. package/dist/response.js +0 -66
package/src/lambda.js ADDED
@@ -0,0 +1,117 @@
1
+ import { __awaiter } from "tslib";
2
+ import { createLogger } from './logging.js';
3
+ import { createRequestContext, toRequestHeaders, } from './request-context.js';
4
+ import { createErrorResponse, createSuccessResponse, } from './response.js';
5
+ export const lambdaContract = {
6
+ defaultResponseFormat: 'json',
7
+ exportPath: '@empire-builder-kit/runtime/lambda',
8
+ packageName: '@empire-builder-kit/runtime',
9
+ };
10
+ function getHeader(headers, name) {
11
+ if (!headers) {
12
+ return undefined;
13
+ }
14
+ const lowerName = name.toLowerCase();
15
+ const entry = Object.entries(headers).find(([key]) => key.toLowerCase() === lowerName);
16
+ return entry === null || entry === void 0 ? void 0 : entry[1];
17
+ }
18
+ function resolveStage(stage) {
19
+ const resolved = stage !== null && stage !== void 0 ? stage : process.env['EBK_STAGE'];
20
+ if (resolved === undefined || resolved.trim() === '') {
21
+ throw new Error('EBK runtime stage is required. Pass options.stage or set EBK_STAGE.');
22
+ }
23
+ return resolved.trim();
24
+ }
25
+ function createResponseMeta(context) {
26
+ return {
27
+ correlationId: context.correlationId,
28
+ requestId: context.requestId,
29
+ stage: context.stage,
30
+ };
31
+ }
32
+ export function toHttpJsonResponse(response) {
33
+ var _a, _b;
34
+ return {
35
+ body: JSON.stringify(response),
36
+ headers: Object.assign(Object.assign({ 'content-type': 'application/json' }, (((_a = response.meta) === null || _a === void 0 ? void 0 : _a.correlationId)
37
+ ? { 'x-correlation-id': String(response.meta.correlationId) }
38
+ : {})), (((_b = response.meta) === null || _b === void 0 ? void 0 : _b.requestId)
39
+ ? { 'x-request-id': String(response.meta.requestId) }
40
+ : {})),
41
+ statusCode: response.status,
42
+ };
43
+ }
44
+ export function createHttpJsonHandler(options) {
45
+ var _a, _b;
46
+ const stage = resolveStage(options.stage);
47
+ const baseLogger = (_a = options.logger) !== null && _a !== void 0 ? _a : createLogger({
48
+ app: options.app,
49
+ service: (_b = options.service) !== null && _b !== void 0 ? _b : options.operation,
50
+ stage,
51
+ });
52
+ return (event) => __awaiter(this, void 0, void 0, function* () {
53
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t;
54
+ const requestId = (_a = getHeader(event.headers, 'x-request-id')) !== null && _a !== void 0 ? _a : (_b = event.requestContext) === null || _b === void 0 ? void 0 : _b.requestId;
55
+ const context = createRequestContext({
56
+ app: options.app,
57
+ causationId: getHeader(event.headers, 'x-causation-id'),
58
+ correlationId: (_c = getHeader(event.headers, 'x-correlation-id')) !== null && _c !== void 0 ? _c : requestId,
59
+ metadata: {
60
+ method: (_e = (_d = event.requestContext) === null || _d === void 0 ? void 0 : _d.http) === null || _e === void 0 ? void 0 : _e.method,
61
+ path: (_f = event.rawPath) !== null && _f !== void 0 ? _f : (_h = (_g = event.requestContext) === null || _g === void 0 ? void 0 : _g.http) === null || _h === void 0 ? void 0 : _h.path,
62
+ sourceIp: (_k = (_j = event.requestContext) === null || _j === void 0 ? void 0 : _j.http) === null || _k === void 0 ? void 0 : _k.sourceIp,
63
+ userAgent: (_m = (_l = event.requestContext) === null || _l === void 0 ? void 0 : _l.http) === null || _m === void 0 ? void 0 : _m.userAgent,
64
+ },
65
+ operation: options.operation,
66
+ requestId,
67
+ stage,
68
+ tenantId: getHeader(event.headers, 'x-tenant-id'),
69
+ traceParent: getHeader(event.headers, 'traceparent'),
70
+ traceState: getHeader(event.headers, 'tracestate'),
71
+ });
72
+ const requestLogger = baseLogger.child({
73
+ context,
74
+ service: (_o = options.service) !== null && _o !== void 0 ? _o : options.operation,
75
+ stage,
76
+ });
77
+ requestLogger.info(`${options.app}.${options.operation} request received`, {
78
+ metadata: {
79
+ method: (_q = (_p = event.requestContext) === null || _p === void 0 ? void 0 : _p.http) === null || _q === void 0 ? void 0 : _q.method,
80
+ path: (_r = event.rawPath) !== null && _r !== void 0 ? _r : (_t = (_s = event.requestContext) === null || _s === void 0 ? void 0 : _s.http) === null || _t === void 0 ? void 0 : _t.path,
81
+ },
82
+ });
83
+ try {
84
+ const data = yield options.handle({
85
+ context,
86
+ event,
87
+ logger: requestLogger,
88
+ });
89
+ const response = createSuccessResponse(data, {
90
+ meta: createResponseMeta(context),
91
+ status: options.successStatus,
92
+ });
93
+ requestLogger.info(`${options.app}.${options.operation} request completed`, {
94
+ metadata: {
95
+ status: response.status,
96
+ },
97
+ });
98
+ const httpResponse = toHttpJsonResponse(response);
99
+ return Object.assign(Object.assign({}, httpResponse), { headers: Object.assign(Object.assign({}, httpResponse.headers), toRequestHeaders(context)) });
100
+ }
101
+ catch (error) {
102
+ const response = createErrorResponse(error, {
103
+ includeDetails: options.includeErrorDetails,
104
+ meta: createResponseMeta(context),
105
+ });
106
+ requestLogger.error(`${options.app}.${options.operation} request failed`, {
107
+ error,
108
+ metadata: {
109
+ status: response.status,
110
+ },
111
+ });
112
+ const httpResponse = toHttpJsonResponse(response);
113
+ return Object.assign(Object.assign({}, httpResponse), { headers: Object.assign(Object.assign({}, httpResponse.headers), toRequestHeaders(context)) });
114
+ }
115
+ });
116
+ }
117
+ //# sourceMappingURL=lambda.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lambda.js","sourceRoot":"","sources":["../../../../packages/runtime/src/lambda.ts"],"names":[],"mappings":"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"}
@@ -67,4 +67,3 @@ export declare const loggingContract: {
67
67
  export declare function serializeError(error: unknown): SerializedError;
68
68
  export declare function consoleSink(entry: LogEntry): void;
69
69
  export declare function createLogger(options: CreateLoggerOptions): Logger;
70
- //# sourceMappingURL=logging.d.ts.map
package/src/logging.js ADDED
@@ -0,0 +1,113 @@
1
+ export const loggingContract = {
2
+ defaultFormat: 'json',
3
+ exportPath: '@empire-builder-kit/runtime/logging',
4
+ packageName: '@empire-builder-kit/runtime',
5
+ };
6
+ function mergeContext(base, overrides) {
7
+ var _a, _b, _c, _d, _e, _f, _g, _h;
8
+ if (!base && !overrides) {
9
+ return undefined;
10
+ }
11
+ return {
12
+ actor: (_a = overrides === null || overrides === void 0 ? void 0 : overrides.actor) !== null && _a !== void 0 ? _a : base === null || base === void 0 ? void 0 : base.actor,
13
+ correlationId: (_b = overrides === null || overrides === void 0 ? void 0 : overrides.correlationId) !== null && _b !== void 0 ? _b : base === null || base === void 0 ? void 0 : base.correlationId,
14
+ metadata: Object.assign(Object.assign({}, ((_c = base === null || base === void 0 ? void 0 : base.metadata) !== null && _c !== void 0 ? _c : {})), ((_d = overrides === null || overrides === void 0 ? void 0 : overrides.metadata) !== null && _d !== void 0 ? _d : {})),
15
+ operation: (_e = overrides === null || overrides === void 0 ? void 0 : overrides.operation) !== null && _e !== void 0 ? _e : base === null || base === void 0 ? void 0 : base.operation,
16
+ requestId: (_f = overrides === null || overrides === void 0 ? void 0 : overrides.requestId) !== null && _f !== void 0 ? _f : base === null || base === void 0 ? void 0 : base.requestId,
17
+ source: (_g = overrides === null || overrides === void 0 ? void 0 : overrides.source) !== null && _g !== void 0 ? _g : base === null || base === void 0 ? void 0 : base.source,
18
+ stage: (_h = overrides === null || overrides === void 0 ? void 0 : overrides.stage) !== null && _h !== void 0 ? _h : base === null || base === void 0 ? void 0 : base.stage,
19
+ };
20
+ }
21
+ function contextMetadata(context) {
22
+ var _a, _b, _c;
23
+ if (!context) {
24
+ return {};
25
+ }
26
+ return compactObject(Object.assign({ actorId: (_a = context.actor) === null || _a === void 0 ? void 0 : _a.id, actorType: (_b = context.actor) === null || _b === void 0 ? void 0 : _b.type, operation: context.operation, source: context.source }, ((_c = context.metadata) !== null && _c !== void 0 ? _c : {})));
27
+ }
28
+ function compactObject(value) {
29
+ return Object.fromEntries(Object.entries(value).filter(([, entry]) => entry !== undefined));
30
+ }
31
+ function safeStringify(value) {
32
+ if (typeof value === 'string') {
33
+ return value;
34
+ }
35
+ try {
36
+ return JSON.stringify(value);
37
+ }
38
+ catch (_a) {
39
+ return String(value);
40
+ }
41
+ }
42
+ export function serializeError(error) {
43
+ if (error instanceof Error) {
44
+ const value = error;
45
+ return compactObject({
46
+ code: value.code,
47
+ message: value.message,
48
+ name: value.name,
49
+ stack: value.stack,
50
+ });
51
+ }
52
+ return {
53
+ message: safeStringify(error),
54
+ name: 'UnknownError',
55
+ };
56
+ }
57
+ export function consoleSink(entry) {
58
+ console.log(JSON.stringify(entry));
59
+ }
60
+ export function createLogger(options) {
61
+ var _a, _b;
62
+ const sink = (_a = options.sink) !== null && _a !== void 0 ? _a : consoleSink;
63
+ const now = (_b = options.now) !== null && _b !== void 0 ? _b : (() => new Date());
64
+ const write = (level, message, input = {}) => {
65
+ var _a, _b, _c;
66
+ const mergedContext = mergeContext(options.context, input.context);
67
+ const metadata = compactObject(Object.assign(Object.assign(Object.assign({}, ((_a = options.metadata) !== null && _a !== void 0 ? _a : {})), contextMetadata(mergedContext)), ((_b = input.metadata) !== null && _b !== void 0 ? _b : {})));
68
+ const entry = compactObject({
69
+ app: options.app,
70
+ correlationId: mergedContext === null || mergedContext === void 0 ? void 0 : mergedContext.correlationId,
71
+ error: input.error === undefined ? undefined : serializeError(input.error),
72
+ level,
73
+ message,
74
+ metadata: Object.keys(metadata).length > 0 ? metadata : undefined,
75
+ requestId: mergedContext === null || mergedContext === void 0 ? void 0 : mergedContext.requestId,
76
+ service: options.service,
77
+ stage: (_c = mergedContext === null || mergedContext === void 0 ? void 0 : mergedContext.stage) !== null && _c !== void 0 ? _c : options.stage,
78
+ timestamp: now().toISOString(),
79
+ });
80
+ sink(entry);
81
+ return entry;
82
+ };
83
+ return {
84
+ child(childOptions = {}) {
85
+ var _a, _b, _c, _d;
86
+ return createLogger({
87
+ app: options.app,
88
+ context: mergeContext(options.context, childOptions.context),
89
+ metadata: Object.assign(Object.assign({}, ((_a = options.metadata) !== null && _a !== void 0 ? _a : {})), ((_b = childOptions.metadata) !== null && _b !== void 0 ? _b : {})),
90
+ now,
91
+ service: (_c = childOptions.service) !== null && _c !== void 0 ? _c : options.service,
92
+ sink,
93
+ stage: (_d = childOptions.stage) !== null && _d !== void 0 ? _d : options.stage,
94
+ });
95
+ },
96
+ debug(message, input) {
97
+ return write('debug', message, input);
98
+ },
99
+ error(message, input) {
100
+ return write('error', message, input);
101
+ },
102
+ info(message, input) {
103
+ return write('info', message, input);
104
+ },
105
+ log(level, message, input) {
106
+ return write(level, message, input);
107
+ },
108
+ warn(message, input) {
109
+ return write('warn', message, input);
110
+ },
111
+ };
112
+ }
113
+ //# sourceMappingURL=logging.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logging.js","sourceRoot":"","sources":["../../../../packages/runtime/src/logging.ts"],"names":[],"mappings":"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"}
@@ -83,7 +83,24 @@ export declare function createQueueAlarmDefinitions(input: QueueAlarmInput): Ala
83
83
  export declare function createDashboardPath(input: DashboardPathInput): string;
84
84
  export declare function createDashboardRegistration(input: DashboardRegistrationInput): MonitoringDashboardRegistration;
85
85
  export declare function createQueueAlarmRegistration(input: QueueAlarmRegistrationInput): QueueAlarmRegistration;
86
+ export interface EventConsumerAlarmInput {
87
+ app: string;
88
+ consumer: string;
89
+ queueName: string;
90
+ dlqName: string;
91
+ severity?: AlarmSeverity;
92
+ stage: string;
93
+ thresholds?: Partial<QueueAlertThresholds>;
94
+ }
95
+ export interface EventConsumerAlarmRegistration {
96
+ alarms: AlarmDefinition[];
97
+ app: string;
98
+ consumer: string;
99
+ dlqName: string;
100
+ queueName: string;
101
+ stage: string;
102
+ }
103
+ export declare function defineEventConsumerAlarms(input: EventConsumerAlarmInput): EventConsumerAlarmRegistration;
86
104
  export declare function createDefaultAppGroupAlarmDefinitions(input: AppGroupObservabilityInput): AlarmDefinition[];
87
105
  export declare function createAppGroupObservabilityRegistration(input: AppGroupObservabilityInput): AppGroupObservabilityRegistration;
88
106
  export declare function defineAppGroupMonitoringRegistration<T extends AppGroupMonitoringRegistration>(registration: T): T;
89
- //# sourceMappingURL=observability.d.ts.map
@@ -1,15 +1,3 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createMetricNamespace = createMetricNamespace;
4
- exports.createAlarmName = createAlarmName;
5
- exports.defaultQueueAlertThresholds = defaultQueueAlertThresholds;
6
- exports.createQueueAlarmDefinitions = createQueueAlarmDefinitions;
7
- exports.createDashboardPath = createDashboardPath;
8
- exports.createDashboardRegistration = createDashboardRegistration;
9
- exports.createQueueAlarmRegistration = createQueueAlarmRegistration;
10
- exports.createDefaultAppGroupAlarmDefinitions = createDefaultAppGroupAlarmDefinitions;
11
- exports.createAppGroupObservabilityRegistration = createAppGroupObservabilityRegistration;
12
- exports.defineAppGroupMonitoringRegistration = defineAppGroupMonitoringRegistration;
13
1
  function normalizeSegment(value) {
14
2
  return value
15
3
  .trim()
@@ -17,30 +5,27 @@ function normalizeSegment(value) {
17
5
  .replace(/[^a-z0-9]+/g, '-')
18
6
  .replace(/^-+|-+$/g, '');
19
7
  }
20
- function createMetricNamespace(app) {
8
+ export function createMetricNamespace(app) {
21
9
  return `EBK/${normalizeSegment(app)}`;
22
10
  }
23
- function createAlarmName(input) {
11
+ export function createAlarmName(input) {
12
+ var _a;
24
13
  return [
25
14
  normalizeSegment(input.app),
26
15
  normalizeSegment(input.stage),
27
16
  normalizeSegment(input.component),
28
17
  normalizeSegment(input.metric),
29
- normalizeSegment(input.severity ?? 'medium'),
18
+ normalizeSegment((_a = input.severity) !== null && _a !== void 0 ? _a : 'medium'),
30
19
  ].join('-');
31
20
  }
32
- function defaultQueueAlertThresholds(overrides = {}) {
33
- return {
34
- messagesInFlight: 10,
35
- messagesVisible: 25,
36
- oldestMessageAgeSeconds: 300,
37
- ...overrides,
38
- };
21
+ export function defaultQueueAlertThresholds(overrides = {}) {
22
+ return Object.assign({ messagesInFlight: 10, messagesVisible: 25, oldestMessageAgeSeconds: 300 }, overrides);
39
23
  }
40
- function createQueueAlarmDefinitions(input) {
24
+ export function createQueueAlarmDefinitions(input) {
25
+ var _a;
41
26
  const thresholds = defaultQueueAlertThresholds(input.thresholds);
42
27
  const namespace = 'AWS/SQS';
43
- const severity = input.severity ?? 'high';
28
+ const severity = (_a = input.severity) !== null && _a !== void 0 ? _a : 'high';
44
29
  return [
45
30
  {
46
31
  comparisonOperator: 'GreaterThanOrEqualToThreshold',
@@ -104,41 +89,72 @@ function createQueueAlarmDefinitions(input) {
104
89
  },
105
90
  ];
106
91
  }
107
- function createDashboardPath(input) {
92
+ export function createDashboardPath(input) {
108
93
  return `/${normalizeSegment(input.stage)}/${normalizeSegment(input.app)}/${normalizeSegment(input.dashboard)}`;
109
94
  }
110
- function createDashboardRegistration(input) {
111
- return {
112
- ...input,
113
- path: createDashboardPath(input),
114
- };
95
+ export function createDashboardRegistration(input) {
96
+ return Object.assign(Object.assign({}, input), { path: createDashboardPath(input) });
115
97
  }
116
- function createQueueAlarmRegistration(input) {
98
+ export function createQueueAlarmRegistration(input) {
117
99
  const thresholds = defaultQueueAlertThresholds(input.thresholds);
118
- return {
119
- ...input,
120
- alarms: createQueueAlarmDefinitions({
121
- ...input,
122
- thresholds,
123
- }),
124
- dashboardPath: input.dashboard
100
+ return Object.assign(Object.assign({}, input), { alarms: createQueueAlarmDefinitions(Object.assign(Object.assign({}, input), { thresholds })), dashboardPath: input.dashboard
125
101
  ? createDashboardPath({
126
102
  app: input.app,
127
103
  dashboard: input.dashboard,
128
104
  stage: input.stage,
129
105
  })
130
- : undefined,
131
- thresholds,
132
- };
106
+ : undefined, thresholds });
133
107
  }
134
- function createAppGroupMetricDimensions(input, extra = {}) {
108
+ // Baseline alarms for an event consumer on the shared core bus
109
+ // (rule -> SQS buffer -> Lambda, DLQ on the buffer):
110
+ //
111
+ // - DLQ depth >= 1 (critical): a poison event exhausted its retries and
112
+ // needs manual redrive — this is the primary signal.
113
+ // - Buffer queue depth / in-flight / age (standard queue thresholds): the
114
+ // consumer is falling behind its publisher.
115
+ export function defineEventConsumerAlarms(input) {
116
+ var _a;
117
+ const bufferAlarms = createQueueAlarmDefinitions({
118
+ app: input.app,
119
+ queue: input.queueName,
120
+ severity: (_a = input.severity) !== null && _a !== void 0 ? _a : 'high',
121
+ stage: input.stage,
122
+ thresholds: input.thresholds,
123
+ });
124
+ const dlqAlarm = {
125
+ comparisonOperator: 'GreaterThanOrEqualToThreshold',
126
+ description: `Dead-lettered ${input.consumer} events in ${input.dlqName} — a poison event exhausted its retries and needs redrive.`,
127
+ dimensions: {
128
+ QueueName: input.dlqName,
129
+ },
130
+ evaluationPeriods: 1,
131
+ metricName: 'ApproximateNumberOfMessagesVisible',
132
+ name: createAlarmName({
133
+ app: input.app,
134
+ component: `${input.consumer}-event-dlq`,
135
+ metric: 'dead-lettered-events',
136
+ severity: 'critical',
137
+ stage: input.stage,
138
+ }),
139
+ namespace: 'AWS/SQS',
140
+ periodSeconds: 60,
141
+ severity: 'critical',
142
+ threshold: 1,
143
+ };
135
144
  return {
136
- App: input.app,
137
- Stage: input.stage,
138
- ...extra,
145
+ alarms: [dlqAlarm, ...bufferAlarms],
146
+ app: input.app,
147
+ consumer: input.consumer,
148
+ dlqName: input.dlqName,
149
+ queueName: input.queueName,
150
+ stage: input.stage,
139
151
  };
140
152
  }
141
- function createDefaultAppGroupAlarmDefinitions(input) {
153
+ function createAppGroupMetricDimensions(input, extra = {}) {
154
+ return Object.assign({ App: input.app, Stage: input.stage }, extra);
155
+ }
156
+ export function createDefaultAppGroupAlarmDefinitions(input) {
157
+ var _a, _b;
142
158
  const namespace = createMetricNamespace(input.app);
143
159
  const alarms = [
144
160
  {
@@ -160,7 +176,7 @@ function createDefaultAppGroupAlarmDefinitions(input) {
160
176
  threshold: 1,
161
177
  },
162
178
  ];
163
- for (const webApp of input.webApps ?? []) {
179
+ for (const webApp of (_a = input.webApps) !== null && _a !== void 0 ? _a : []) {
164
180
  alarms.push({
165
181
  comparisonOperator: 'GreaterThanOrEqualToThreshold',
166
182
  description: `5xx responses for ${input.app}/${webApp} exceed the web baseline threshold.`,
@@ -182,7 +198,7 @@ function createDefaultAppGroupAlarmDefinitions(input) {
182
198
  threshold: 1,
183
199
  });
184
200
  }
185
- for (const functionName of input.functions ?? []) {
201
+ for (const functionName of (_b = input.functions) !== null && _b !== void 0 ? _b : []) {
186
202
  alarms.push({
187
203
  comparisonOperator: 'GreaterThanOrEqualToThreshold',
188
204
  description: `Lambda errors for ${input.app}/${functionName} exceed the function baseline threshold.`,
@@ -224,14 +240,11 @@ function createDefaultAppGroupAlarmDefinitions(input) {
224
240
  });
225
241
  return alarms;
226
242
  }
227
- function createAppGroupObservabilityRegistration(input) {
228
- const owner = input.owner ?? 'product';
229
- const summary = input.summary ??
230
- `${input.app} app-group CloudWatch baseline for runtime health, web health, function errors, and smoke validation.`;
231
- return {
232
- ...input,
233
- alarms: createDefaultAppGroupAlarmDefinitions(input),
234
- dashboards: [
243
+ export function createAppGroupObservabilityRegistration(input) {
244
+ var _a, _b;
245
+ const owner = (_a = input.owner) !== null && _a !== void 0 ? _a : 'product';
246
+ const summary = (_b = input.summary) !== null && _b !== void 0 ? _b : `${input.app} app-group CloudWatch baseline for runtime health, web health, function errors, and smoke validation.`;
247
+ return Object.assign(Object.assign({}, input), { alarms: createDefaultAppGroupAlarmDefinitions(input), dashboards: [
235
248
  createDashboardRegistration({
236
249
  app: input.app,
237
250
  dashboard: 'operations',
@@ -239,12 +252,9 @@ function createAppGroupObservabilityRegistration(input) {
239
252
  stage: input.stage,
240
253
  title: `${input.app} Operations`,
241
254
  }),
242
- ],
243
- owner,
244
- queues: [],
245
- summary,
246
- };
255
+ ], owner, queues: [], summary });
247
256
  }
248
- function defineAppGroupMonitoringRegistration(registration) {
257
+ export function defineAppGroupMonitoringRegistration(registration) {
249
258
  return registration;
250
259
  }
260
+ //# sourceMappingURL=observability.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"observability.js","sourceRoot":"","sources":["../../../../packages/runtime/src/observability.ts"],"names":[],"mappings":"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"}