@contractspec/lib.metering 1.46.2 → 1.47.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.
- package/dist/aggregation/index.js.map +1 -1
- package/dist/contracts/index.d.ts +291 -291
- package/dist/entities/index.d.ts +185 -185
- package/dist/entities/index.d.ts.map +1 -1
- package/dist/entities/index.js.map +1 -1
- package/dist/events.d.ts +135 -135
- package/dist/events.d.ts.map +1 -1
- package/dist/metering.capability.d.ts +8 -0
- package/dist/metering.capability.d.ts.map +1 -0
- package/dist/metering.capability.js +33 -0
- package/dist/metering.capability.js.map +1 -0
- package/dist/metering.feature.d.ts +4 -4
- package/dist/metering.feature.d.ts.map +1 -1
- package/dist/metering.feature.js +11 -4
- package/dist/metering.feature.js.map +1 -1
- package/package.json +7 -8
package/dist/entities/index.d.ts
CHANGED
|
@@ -1,226 +1,226 @@
|
|
|
1
|
-
import * as
|
|
1
|
+
import * as _contractspec_lib_schema422 from "@contractspec/lib.schema";
|
|
2
2
|
import { ModuleSchemaContribution } from "@contractspec/lib.schema";
|
|
3
3
|
|
|
4
4
|
//#region src/entities/index.d.ts
|
|
5
5
|
/**
|
|
6
6
|
* Aggregation type enum.
|
|
7
7
|
*/
|
|
8
|
-
declare const AggregationTypeEnum:
|
|
8
|
+
declare const AggregationTypeEnum: _contractspec_lib_schema422.EntityEnumDef;
|
|
9
9
|
/**
|
|
10
10
|
* Reset period enum.
|
|
11
11
|
*/
|
|
12
|
-
declare const ResetPeriodEnum:
|
|
12
|
+
declare const ResetPeriodEnum: _contractspec_lib_schema422.EntityEnumDef;
|
|
13
13
|
/**
|
|
14
14
|
* Period type enum.
|
|
15
15
|
*/
|
|
16
|
-
declare const PeriodTypeEnum:
|
|
16
|
+
declare const PeriodTypeEnum: _contractspec_lib_schema422.EntityEnumDef;
|
|
17
17
|
/**
|
|
18
18
|
* Threshold action enum.
|
|
19
19
|
*/
|
|
20
|
-
declare const ThresholdActionEnum:
|
|
20
|
+
declare const ThresholdActionEnum: _contractspec_lib_schema422.EntityEnumDef;
|
|
21
21
|
/**
|
|
22
22
|
* MetricDefinition entity - defines a trackable metric.
|
|
23
23
|
*/
|
|
24
|
-
declare const MetricDefinitionEntity:
|
|
25
|
-
id:
|
|
26
|
-
key:
|
|
27
|
-
name:
|
|
28
|
-
description:
|
|
29
|
-
unit:
|
|
30
|
-
aggregationType:
|
|
31
|
-
resetPeriod:
|
|
32
|
-
precision:
|
|
33
|
-
orgId:
|
|
34
|
-
category:
|
|
35
|
-
displayOrder:
|
|
36
|
-
metadata:
|
|
37
|
-
isActive:
|
|
38
|
-
createdAt:
|
|
39
|
-
updatedAt:
|
|
40
|
-
usageRecords:
|
|
41
|
-
usageSummaries:
|
|
42
|
-
thresholds:
|
|
24
|
+
declare const MetricDefinitionEntity: _contractspec_lib_schema422.EntitySpec<{
|
|
25
|
+
id: _contractspec_lib_schema422.EntityScalarField;
|
|
26
|
+
key: _contractspec_lib_schema422.EntityScalarField;
|
|
27
|
+
name: _contractspec_lib_schema422.EntityScalarField;
|
|
28
|
+
description: _contractspec_lib_schema422.EntityScalarField;
|
|
29
|
+
unit: _contractspec_lib_schema422.EntityScalarField;
|
|
30
|
+
aggregationType: _contractspec_lib_schema422.EntityEnumField;
|
|
31
|
+
resetPeriod: _contractspec_lib_schema422.EntityEnumField;
|
|
32
|
+
precision: _contractspec_lib_schema422.EntityScalarField;
|
|
33
|
+
orgId: _contractspec_lib_schema422.EntityScalarField;
|
|
34
|
+
category: _contractspec_lib_schema422.EntityScalarField;
|
|
35
|
+
displayOrder: _contractspec_lib_schema422.EntityScalarField;
|
|
36
|
+
metadata: _contractspec_lib_schema422.EntityScalarField;
|
|
37
|
+
isActive: _contractspec_lib_schema422.EntityScalarField;
|
|
38
|
+
createdAt: _contractspec_lib_schema422.EntityScalarField;
|
|
39
|
+
updatedAt: _contractspec_lib_schema422.EntityScalarField;
|
|
40
|
+
usageRecords: _contractspec_lib_schema422.EntityRelationField;
|
|
41
|
+
usageSummaries: _contractspec_lib_schema422.EntityRelationField;
|
|
42
|
+
thresholds: _contractspec_lib_schema422.EntityRelationField;
|
|
43
43
|
}>;
|
|
44
44
|
/**
|
|
45
45
|
* UsageRecord entity - individual usage event.
|
|
46
46
|
*/
|
|
47
|
-
declare const UsageRecordEntity:
|
|
48
|
-
id:
|
|
49
|
-
metricKey:
|
|
50
|
-
metricId:
|
|
51
|
-
subjectType:
|
|
52
|
-
subjectId:
|
|
53
|
-
quantity:
|
|
54
|
-
source:
|
|
55
|
-
resourceId:
|
|
56
|
-
resourceType:
|
|
57
|
-
metadata:
|
|
58
|
-
idempotencyKey:
|
|
59
|
-
timestamp:
|
|
60
|
-
createdAt:
|
|
61
|
-
aggregated:
|
|
62
|
-
aggregatedAt:
|
|
47
|
+
declare const UsageRecordEntity: _contractspec_lib_schema422.EntitySpec<{
|
|
48
|
+
id: _contractspec_lib_schema422.EntityScalarField;
|
|
49
|
+
metricKey: _contractspec_lib_schema422.EntityScalarField;
|
|
50
|
+
metricId: _contractspec_lib_schema422.EntityScalarField;
|
|
51
|
+
subjectType: _contractspec_lib_schema422.EntityScalarField;
|
|
52
|
+
subjectId: _contractspec_lib_schema422.EntityScalarField;
|
|
53
|
+
quantity: _contractspec_lib_schema422.EntityScalarField;
|
|
54
|
+
source: _contractspec_lib_schema422.EntityScalarField;
|
|
55
|
+
resourceId: _contractspec_lib_schema422.EntityScalarField;
|
|
56
|
+
resourceType: _contractspec_lib_schema422.EntityScalarField;
|
|
57
|
+
metadata: _contractspec_lib_schema422.EntityScalarField;
|
|
58
|
+
idempotencyKey: _contractspec_lib_schema422.EntityScalarField;
|
|
59
|
+
timestamp: _contractspec_lib_schema422.EntityScalarField;
|
|
60
|
+
createdAt: _contractspec_lib_schema422.EntityScalarField;
|
|
61
|
+
aggregated: _contractspec_lib_schema422.EntityScalarField;
|
|
62
|
+
aggregatedAt: _contractspec_lib_schema422.EntityScalarField;
|
|
63
63
|
}>;
|
|
64
64
|
/**
|
|
65
65
|
* UsageSummary entity - pre-aggregated usage.
|
|
66
66
|
*/
|
|
67
|
-
declare const UsageSummaryEntity:
|
|
68
|
-
id:
|
|
69
|
-
metricKey:
|
|
70
|
-
metricId:
|
|
71
|
-
subjectType:
|
|
72
|
-
subjectId:
|
|
73
|
-
periodType:
|
|
74
|
-
periodStart:
|
|
75
|
-
periodEnd:
|
|
76
|
-
totalQuantity:
|
|
77
|
-
recordCount:
|
|
78
|
-
minQuantity:
|
|
79
|
-
maxQuantity:
|
|
80
|
-
avgQuantity:
|
|
81
|
-
metadata:
|
|
82
|
-
createdAt:
|
|
83
|
-
updatedAt:
|
|
67
|
+
declare const UsageSummaryEntity: _contractspec_lib_schema422.EntitySpec<{
|
|
68
|
+
id: _contractspec_lib_schema422.EntityScalarField;
|
|
69
|
+
metricKey: _contractspec_lib_schema422.EntityScalarField;
|
|
70
|
+
metricId: _contractspec_lib_schema422.EntityScalarField;
|
|
71
|
+
subjectType: _contractspec_lib_schema422.EntityScalarField;
|
|
72
|
+
subjectId: _contractspec_lib_schema422.EntityScalarField;
|
|
73
|
+
periodType: _contractspec_lib_schema422.EntityEnumField;
|
|
74
|
+
periodStart: _contractspec_lib_schema422.EntityScalarField;
|
|
75
|
+
periodEnd: _contractspec_lib_schema422.EntityScalarField;
|
|
76
|
+
totalQuantity: _contractspec_lib_schema422.EntityScalarField;
|
|
77
|
+
recordCount: _contractspec_lib_schema422.EntityScalarField;
|
|
78
|
+
minQuantity: _contractspec_lib_schema422.EntityScalarField;
|
|
79
|
+
maxQuantity: _contractspec_lib_schema422.EntityScalarField;
|
|
80
|
+
avgQuantity: _contractspec_lib_schema422.EntityScalarField;
|
|
81
|
+
metadata: _contractspec_lib_schema422.EntityScalarField;
|
|
82
|
+
createdAt: _contractspec_lib_schema422.EntityScalarField;
|
|
83
|
+
updatedAt: _contractspec_lib_schema422.EntityScalarField;
|
|
84
84
|
}>;
|
|
85
85
|
/**
|
|
86
86
|
* UsageThreshold entity - threshold configuration.
|
|
87
87
|
*/
|
|
88
|
-
declare const UsageThresholdEntity:
|
|
89
|
-
id:
|
|
90
|
-
metricKey:
|
|
91
|
-
metricId:
|
|
92
|
-
subjectType:
|
|
93
|
-
subjectId:
|
|
94
|
-
name:
|
|
95
|
-
threshold:
|
|
96
|
-
warnThreshold:
|
|
97
|
-
periodType:
|
|
98
|
-
action:
|
|
99
|
-
notifyEmails:
|
|
100
|
-
notifyWebhook:
|
|
101
|
-
currentValue:
|
|
102
|
-
lastCheckedAt:
|
|
103
|
-
lastExceededAt:
|
|
104
|
-
isActive:
|
|
105
|
-
metadata:
|
|
106
|
-
createdAt:
|
|
107
|
-
updatedAt:
|
|
88
|
+
declare const UsageThresholdEntity: _contractspec_lib_schema422.EntitySpec<{
|
|
89
|
+
id: _contractspec_lib_schema422.EntityScalarField;
|
|
90
|
+
metricKey: _contractspec_lib_schema422.EntityScalarField;
|
|
91
|
+
metricId: _contractspec_lib_schema422.EntityScalarField;
|
|
92
|
+
subjectType: _contractspec_lib_schema422.EntityScalarField;
|
|
93
|
+
subjectId: _contractspec_lib_schema422.EntityScalarField;
|
|
94
|
+
name: _contractspec_lib_schema422.EntityScalarField;
|
|
95
|
+
threshold: _contractspec_lib_schema422.EntityScalarField;
|
|
96
|
+
warnThreshold: _contractspec_lib_schema422.EntityScalarField;
|
|
97
|
+
periodType: _contractspec_lib_schema422.EntityEnumField;
|
|
98
|
+
action: _contractspec_lib_schema422.EntityEnumField;
|
|
99
|
+
notifyEmails: _contractspec_lib_schema422.EntityScalarField;
|
|
100
|
+
notifyWebhook: _contractspec_lib_schema422.EntityScalarField;
|
|
101
|
+
currentValue: _contractspec_lib_schema422.EntityScalarField;
|
|
102
|
+
lastCheckedAt: _contractspec_lib_schema422.EntityScalarField;
|
|
103
|
+
lastExceededAt: _contractspec_lib_schema422.EntityScalarField;
|
|
104
|
+
isActive: _contractspec_lib_schema422.EntityScalarField;
|
|
105
|
+
metadata: _contractspec_lib_schema422.EntityScalarField;
|
|
106
|
+
createdAt: _contractspec_lib_schema422.EntityScalarField;
|
|
107
|
+
updatedAt: _contractspec_lib_schema422.EntityScalarField;
|
|
108
108
|
}>;
|
|
109
109
|
/**
|
|
110
110
|
* UsageAlert entity - threshold violation alerts.
|
|
111
111
|
*/
|
|
112
|
-
declare const UsageAlertEntity:
|
|
113
|
-
id:
|
|
114
|
-
thresholdId:
|
|
115
|
-
metricKey:
|
|
116
|
-
subjectType:
|
|
117
|
-
subjectId:
|
|
118
|
-
alertType:
|
|
119
|
-
threshold:
|
|
120
|
-
actualValue:
|
|
121
|
-
percentageUsed:
|
|
122
|
-
status:
|
|
123
|
-
acknowledgedBy:
|
|
124
|
-
acknowledgedAt:
|
|
125
|
-
resolvedAt:
|
|
126
|
-
notificationsSent:
|
|
127
|
-
triggeredAt:
|
|
128
|
-
createdAt:
|
|
129
|
-
thresholdRelation:
|
|
112
|
+
declare const UsageAlertEntity: _contractspec_lib_schema422.EntitySpec<{
|
|
113
|
+
id: _contractspec_lib_schema422.EntityScalarField;
|
|
114
|
+
thresholdId: _contractspec_lib_schema422.EntityScalarField;
|
|
115
|
+
metricKey: _contractspec_lib_schema422.EntityScalarField;
|
|
116
|
+
subjectType: _contractspec_lib_schema422.EntityScalarField;
|
|
117
|
+
subjectId: _contractspec_lib_schema422.EntityScalarField;
|
|
118
|
+
alertType: _contractspec_lib_schema422.EntityScalarField;
|
|
119
|
+
threshold: _contractspec_lib_schema422.EntityScalarField;
|
|
120
|
+
actualValue: _contractspec_lib_schema422.EntityScalarField;
|
|
121
|
+
percentageUsed: _contractspec_lib_schema422.EntityScalarField;
|
|
122
|
+
status: _contractspec_lib_schema422.EntityScalarField;
|
|
123
|
+
acknowledgedBy: _contractspec_lib_schema422.EntityScalarField;
|
|
124
|
+
acknowledgedAt: _contractspec_lib_schema422.EntityScalarField;
|
|
125
|
+
resolvedAt: _contractspec_lib_schema422.EntityScalarField;
|
|
126
|
+
notificationsSent: _contractspec_lib_schema422.EntityScalarField;
|
|
127
|
+
triggeredAt: _contractspec_lib_schema422.EntityScalarField;
|
|
128
|
+
createdAt: _contractspec_lib_schema422.EntityScalarField;
|
|
129
|
+
thresholdRelation: _contractspec_lib_schema422.EntityRelationField;
|
|
130
130
|
}>;
|
|
131
131
|
/**
|
|
132
132
|
* All metering entities for schema composition.
|
|
133
133
|
*/
|
|
134
|
-
declare const meteringEntities: (
|
|
135
|
-
id:
|
|
136
|
-
key:
|
|
137
|
-
name:
|
|
138
|
-
description:
|
|
139
|
-
unit:
|
|
140
|
-
aggregationType:
|
|
141
|
-
resetPeriod:
|
|
142
|
-
precision:
|
|
143
|
-
orgId:
|
|
144
|
-
category:
|
|
145
|
-
displayOrder:
|
|
146
|
-
metadata:
|
|
147
|
-
isActive:
|
|
148
|
-
createdAt:
|
|
149
|
-
updatedAt:
|
|
150
|
-
usageRecords:
|
|
151
|
-
usageSummaries:
|
|
152
|
-
thresholds:
|
|
153
|
-
}> |
|
|
154
|
-
id:
|
|
155
|
-
metricKey:
|
|
156
|
-
metricId:
|
|
157
|
-
subjectType:
|
|
158
|
-
subjectId:
|
|
159
|
-
quantity:
|
|
160
|
-
source:
|
|
161
|
-
resourceId:
|
|
162
|
-
resourceType:
|
|
163
|
-
metadata:
|
|
164
|
-
idempotencyKey:
|
|
165
|
-
timestamp:
|
|
166
|
-
createdAt:
|
|
167
|
-
aggregated:
|
|
168
|
-
aggregatedAt:
|
|
169
|
-
}> |
|
|
170
|
-
id:
|
|
171
|
-
metricKey:
|
|
172
|
-
metricId:
|
|
173
|
-
subjectType:
|
|
174
|
-
subjectId:
|
|
175
|
-
periodType:
|
|
176
|
-
periodStart:
|
|
177
|
-
periodEnd:
|
|
178
|
-
totalQuantity:
|
|
179
|
-
recordCount:
|
|
180
|
-
minQuantity:
|
|
181
|
-
maxQuantity:
|
|
182
|
-
avgQuantity:
|
|
183
|
-
metadata:
|
|
184
|
-
createdAt:
|
|
185
|
-
updatedAt:
|
|
186
|
-
}> |
|
|
187
|
-
id:
|
|
188
|
-
metricKey:
|
|
189
|
-
metricId:
|
|
190
|
-
subjectType:
|
|
191
|
-
subjectId:
|
|
192
|
-
name:
|
|
193
|
-
threshold:
|
|
194
|
-
warnThreshold:
|
|
195
|
-
periodType:
|
|
196
|
-
action:
|
|
197
|
-
notifyEmails:
|
|
198
|
-
notifyWebhook:
|
|
199
|
-
currentValue:
|
|
200
|
-
lastCheckedAt:
|
|
201
|
-
lastExceededAt:
|
|
202
|
-
isActive:
|
|
203
|
-
metadata:
|
|
204
|
-
createdAt:
|
|
205
|
-
updatedAt:
|
|
206
|
-
}> |
|
|
207
|
-
id:
|
|
208
|
-
thresholdId:
|
|
209
|
-
metricKey:
|
|
210
|
-
subjectType:
|
|
211
|
-
subjectId:
|
|
212
|
-
alertType:
|
|
213
|
-
threshold:
|
|
214
|
-
actualValue:
|
|
215
|
-
percentageUsed:
|
|
216
|
-
status:
|
|
217
|
-
acknowledgedBy:
|
|
218
|
-
acknowledgedAt:
|
|
219
|
-
resolvedAt:
|
|
220
|
-
notificationsSent:
|
|
221
|
-
triggeredAt:
|
|
222
|
-
createdAt:
|
|
223
|
-
thresholdRelation:
|
|
134
|
+
declare const meteringEntities: (_contractspec_lib_schema422.EntitySpec<{
|
|
135
|
+
id: _contractspec_lib_schema422.EntityScalarField;
|
|
136
|
+
key: _contractspec_lib_schema422.EntityScalarField;
|
|
137
|
+
name: _contractspec_lib_schema422.EntityScalarField;
|
|
138
|
+
description: _contractspec_lib_schema422.EntityScalarField;
|
|
139
|
+
unit: _contractspec_lib_schema422.EntityScalarField;
|
|
140
|
+
aggregationType: _contractspec_lib_schema422.EntityEnumField;
|
|
141
|
+
resetPeriod: _contractspec_lib_schema422.EntityEnumField;
|
|
142
|
+
precision: _contractspec_lib_schema422.EntityScalarField;
|
|
143
|
+
orgId: _contractspec_lib_schema422.EntityScalarField;
|
|
144
|
+
category: _contractspec_lib_schema422.EntityScalarField;
|
|
145
|
+
displayOrder: _contractspec_lib_schema422.EntityScalarField;
|
|
146
|
+
metadata: _contractspec_lib_schema422.EntityScalarField;
|
|
147
|
+
isActive: _contractspec_lib_schema422.EntityScalarField;
|
|
148
|
+
createdAt: _contractspec_lib_schema422.EntityScalarField;
|
|
149
|
+
updatedAt: _contractspec_lib_schema422.EntityScalarField;
|
|
150
|
+
usageRecords: _contractspec_lib_schema422.EntityRelationField;
|
|
151
|
+
usageSummaries: _contractspec_lib_schema422.EntityRelationField;
|
|
152
|
+
thresholds: _contractspec_lib_schema422.EntityRelationField;
|
|
153
|
+
}> | _contractspec_lib_schema422.EntitySpec<{
|
|
154
|
+
id: _contractspec_lib_schema422.EntityScalarField;
|
|
155
|
+
metricKey: _contractspec_lib_schema422.EntityScalarField;
|
|
156
|
+
metricId: _contractspec_lib_schema422.EntityScalarField;
|
|
157
|
+
subjectType: _contractspec_lib_schema422.EntityScalarField;
|
|
158
|
+
subjectId: _contractspec_lib_schema422.EntityScalarField;
|
|
159
|
+
quantity: _contractspec_lib_schema422.EntityScalarField;
|
|
160
|
+
source: _contractspec_lib_schema422.EntityScalarField;
|
|
161
|
+
resourceId: _contractspec_lib_schema422.EntityScalarField;
|
|
162
|
+
resourceType: _contractspec_lib_schema422.EntityScalarField;
|
|
163
|
+
metadata: _contractspec_lib_schema422.EntityScalarField;
|
|
164
|
+
idempotencyKey: _contractspec_lib_schema422.EntityScalarField;
|
|
165
|
+
timestamp: _contractspec_lib_schema422.EntityScalarField;
|
|
166
|
+
createdAt: _contractspec_lib_schema422.EntityScalarField;
|
|
167
|
+
aggregated: _contractspec_lib_schema422.EntityScalarField;
|
|
168
|
+
aggregatedAt: _contractspec_lib_schema422.EntityScalarField;
|
|
169
|
+
}> | _contractspec_lib_schema422.EntitySpec<{
|
|
170
|
+
id: _contractspec_lib_schema422.EntityScalarField;
|
|
171
|
+
metricKey: _contractspec_lib_schema422.EntityScalarField;
|
|
172
|
+
metricId: _contractspec_lib_schema422.EntityScalarField;
|
|
173
|
+
subjectType: _contractspec_lib_schema422.EntityScalarField;
|
|
174
|
+
subjectId: _contractspec_lib_schema422.EntityScalarField;
|
|
175
|
+
periodType: _contractspec_lib_schema422.EntityEnumField;
|
|
176
|
+
periodStart: _contractspec_lib_schema422.EntityScalarField;
|
|
177
|
+
periodEnd: _contractspec_lib_schema422.EntityScalarField;
|
|
178
|
+
totalQuantity: _contractspec_lib_schema422.EntityScalarField;
|
|
179
|
+
recordCount: _contractspec_lib_schema422.EntityScalarField;
|
|
180
|
+
minQuantity: _contractspec_lib_schema422.EntityScalarField;
|
|
181
|
+
maxQuantity: _contractspec_lib_schema422.EntityScalarField;
|
|
182
|
+
avgQuantity: _contractspec_lib_schema422.EntityScalarField;
|
|
183
|
+
metadata: _contractspec_lib_schema422.EntityScalarField;
|
|
184
|
+
createdAt: _contractspec_lib_schema422.EntityScalarField;
|
|
185
|
+
updatedAt: _contractspec_lib_schema422.EntityScalarField;
|
|
186
|
+
}> | _contractspec_lib_schema422.EntitySpec<{
|
|
187
|
+
id: _contractspec_lib_schema422.EntityScalarField;
|
|
188
|
+
metricKey: _contractspec_lib_schema422.EntityScalarField;
|
|
189
|
+
metricId: _contractspec_lib_schema422.EntityScalarField;
|
|
190
|
+
subjectType: _contractspec_lib_schema422.EntityScalarField;
|
|
191
|
+
subjectId: _contractspec_lib_schema422.EntityScalarField;
|
|
192
|
+
name: _contractspec_lib_schema422.EntityScalarField;
|
|
193
|
+
threshold: _contractspec_lib_schema422.EntityScalarField;
|
|
194
|
+
warnThreshold: _contractspec_lib_schema422.EntityScalarField;
|
|
195
|
+
periodType: _contractspec_lib_schema422.EntityEnumField;
|
|
196
|
+
action: _contractspec_lib_schema422.EntityEnumField;
|
|
197
|
+
notifyEmails: _contractspec_lib_schema422.EntityScalarField;
|
|
198
|
+
notifyWebhook: _contractspec_lib_schema422.EntityScalarField;
|
|
199
|
+
currentValue: _contractspec_lib_schema422.EntityScalarField;
|
|
200
|
+
lastCheckedAt: _contractspec_lib_schema422.EntityScalarField;
|
|
201
|
+
lastExceededAt: _contractspec_lib_schema422.EntityScalarField;
|
|
202
|
+
isActive: _contractspec_lib_schema422.EntityScalarField;
|
|
203
|
+
metadata: _contractspec_lib_schema422.EntityScalarField;
|
|
204
|
+
createdAt: _contractspec_lib_schema422.EntityScalarField;
|
|
205
|
+
updatedAt: _contractspec_lib_schema422.EntityScalarField;
|
|
206
|
+
}> | _contractspec_lib_schema422.EntitySpec<{
|
|
207
|
+
id: _contractspec_lib_schema422.EntityScalarField;
|
|
208
|
+
thresholdId: _contractspec_lib_schema422.EntityScalarField;
|
|
209
|
+
metricKey: _contractspec_lib_schema422.EntityScalarField;
|
|
210
|
+
subjectType: _contractspec_lib_schema422.EntityScalarField;
|
|
211
|
+
subjectId: _contractspec_lib_schema422.EntityScalarField;
|
|
212
|
+
alertType: _contractspec_lib_schema422.EntityScalarField;
|
|
213
|
+
threshold: _contractspec_lib_schema422.EntityScalarField;
|
|
214
|
+
actualValue: _contractspec_lib_schema422.EntityScalarField;
|
|
215
|
+
percentageUsed: _contractspec_lib_schema422.EntityScalarField;
|
|
216
|
+
status: _contractspec_lib_schema422.EntityScalarField;
|
|
217
|
+
acknowledgedBy: _contractspec_lib_schema422.EntityScalarField;
|
|
218
|
+
acknowledgedAt: _contractspec_lib_schema422.EntityScalarField;
|
|
219
|
+
resolvedAt: _contractspec_lib_schema422.EntityScalarField;
|
|
220
|
+
notificationsSent: _contractspec_lib_schema422.EntityScalarField;
|
|
221
|
+
triggeredAt: _contractspec_lib_schema422.EntityScalarField;
|
|
222
|
+
createdAt: _contractspec_lib_schema422.EntityScalarField;
|
|
223
|
+
thresholdRelation: _contractspec_lib_schema422.EntityRelationField;
|
|
224
224
|
}>)[];
|
|
225
225
|
/**
|
|
226
226
|
* Module schema contribution for metering.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","names":[],"sources":["../../src/entities/index.ts"],"sourcesContent":[],"mappings":";;;;;;;AAWa,cAAA,mBAKX,EAAA,
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":[],"sources":["../../src/entities/index.ts"],"sourcesContent":[],"mappings":";;;;;;;AAWa,cAAA,mBAKX,EAAA,2BAAA,CAL8B,aAK9B;AAKF;AAUA;AAUA;AAUa,cA9BA,eAuGX,EAlGA,2BAAA,CAL0B,aAuG1B;;;;cA7FW,gBAKX,2BAAA,CALyB;;;;cAUd,qBAKX,2BAAA,CAL8B;;;;cAUnB,oDAAsB;MAyEjC,2BAAA,CAAA;;;;;;0DAzEiC;EAAA,SAAA,+CAAA;EA8EtB,KAAA,+CAuEX;EAAA,QAAA,+CAAA;;;;;;;;;;;;;cAvEW,+CAAiB;MAuE5B,2BAAA,CAAA;0DAvE4B;EAAA,QAAA,+CAAA;EA4EjB,WAAA,+CAgEX;EAAA,SAAA,+CAAA;;;;;;;;;;;;;;;cAhEW,gDAAkB;MAgE7B,2BAAA,CAAA,iBAhE6B;EAAA,SAAA,+CAAA;EAqElB,QAAA,+CAyFX;EAAA,WAAA,+CAAA;;;;;;;;;;;;;;;;;cAzFW,kDAAoB;MAyF/B,2BAAA,CAAA;0DAzF+B;EAAA,QAAA,+CAAA;EA8FpB,WAAA,+CAyEX;EAAA,SAAA,+CAAA;;;;;;;;;;;;;;;;;;;AAKW,cA9EA,gBAoFZ,8BApF4B,UAoF5B,CAAA;EAAA,EAAA,EAXC,2BAAA,CAAA,iBAWD;;;;;;;;;;;;;;;;;;;;;cANY,+CAAgB;MAM5B,2BAAA,CAAA;;;;;;;;;;;;;;;;;;;MAN4B,2BAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAWhB,SAAA,+CAA4B;;;;;;;;;;;;;;;;;;;;;;;;cAA5B,4BAA4B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["meteringSchemaContribution: ModuleSchemaContribution"],"sources":["../../src/entities/index.ts"],"sourcesContent":["import {\n defineEntity,\n defineEntityEnum,\n field,\n index,\n} from '@contractspec/lib.schema';\nimport type { ModuleSchemaContribution } from '@contractspec/lib.schema';\n\n/**\n * Aggregation type enum.\n */\nexport const AggregationTypeEnum = defineEntityEnum({\n name: 'AggregationType',\n values: ['COUNT', 'SUM', 'AVG', 'MAX', 'MIN', 'LAST'] as const,\n schema: 'lssm_metering',\n description: 'How to aggregate metric values.',\n});\n\n/**\n * Reset period enum.\n */\nexport const ResetPeriodEnum = defineEntityEnum({\n name: 'ResetPeriod',\n values: ['NEVER', 'HOURLY', 'DAILY', 'WEEKLY', 'MONTHLY', 'YEARLY'] as const,\n schema: 'lssm_metering',\n description: 'When to reset metric counters.',\n});\n\n/**\n * Period type enum.\n */\nexport const PeriodTypeEnum = defineEntityEnum({\n name: 'PeriodType',\n values: ['HOURLY', 'DAILY', 'WEEKLY', 'MONTHLY', 'YEARLY'] as const,\n schema: 'lssm_metering',\n description: 'Time period for aggregation.',\n});\n\n/**\n * Threshold action enum.\n */\nexport const ThresholdActionEnum = defineEntityEnum({\n name: 'ThresholdAction',\n values: ['NONE', 'ALERT', 'WARN', 'BLOCK', 'DOWNGRADE'] as const,\n schema: 'lssm_metering',\n description: 'Action to take when threshold is exceeded.',\n});\n\n/**\n * MetricDefinition entity - defines a trackable metric.\n */\nexport const MetricDefinitionEntity = defineEntity({\n name: 'MetricDefinition',\n description: 'Definition of a usage metric.',\n schema: 'lssm_metering',\n map: 'metric_definition',\n fields: {\n id: field.id({ description: 'Unique identifier' }),\n key: field.string({\n isUnique: true,\n description: 'Metric key (e.g., api_calls, storage_gb)',\n }),\n name: field.string({ description: 'Human-readable name' }),\n description: field.string({\n isOptional: true,\n description: 'Metric description',\n }),\n\n // Configuration\n unit: field.string({\n description: 'Unit of measurement (calls, bytes, etc.)',\n }),\n aggregationType: field.enum('AggregationType', {\n default: 'SUM',\n description: 'How to aggregate values',\n }),\n resetPeriod: field.enum('ResetPeriod', {\n default: 'MONTHLY',\n description: 'When to reset counters',\n }),\n\n // Precision\n precision: field.int({ default: 2, description: 'Decimal precision' }),\n\n // Scope\n orgId: field.string({\n isOptional: true,\n description: 'Organization scope (null = global metric)',\n }),\n\n // Display\n category: field.string({\n isOptional: true,\n description: 'Category for grouping',\n }),\n displayOrder: field.int({ default: 0, description: 'Order for display' }),\n\n // Metadata\n metadata: field.json({\n isOptional: true,\n description: 'Additional metadata',\n }),\n\n // Status\n isActive: field.boolean({\n default: true,\n description: 'Whether metric is active',\n }),\n\n // Timestamps\n createdAt: field.createdAt(),\n updatedAt: field.updatedAt(),\n\n // Relations\n usageRecords: field.hasMany('UsageRecord'),\n usageSummaries: field.hasMany('UsageSummary'),\n thresholds: field.hasMany('UsageThreshold'),\n },\n indexes: [\n index.on(['orgId', 'key']),\n index.on(['category']),\n index.on(['isActive']),\n ],\n enums: [AggregationTypeEnum, ResetPeriodEnum],\n});\n\n/**\n * UsageRecord entity - individual usage event.\n */\nexport const UsageRecordEntity = defineEntity({\n name: 'UsageRecord',\n description: 'A single usage event.',\n schema: 'lssm_metering',\n map: 'usage_record',\n fields: {\n id: field.id({ description: 'Unique identifier' }),\n\n // Metric reference\n metricKey: field.string({ description: 'Metric being recorded' }),\n metricId: field.string({\n isOptional: true,\n description: 'Metric ID (for FK)',\n }),\n\n // Subject\n subjectType: field.string({\n description: 'Subject type (org, user, project)',\n }),\n subjectId: field.string({ description: 'Subject identifier' }),\n\n // Usage value\n quantity: field.decimal({ description: 'Usage quantity' }),\n\n // Context\n source: field.string({\n isOptional: true,\n description: 'Source of usage (endpoint, feature, etc.)',\n }),\n resourceId: field.string({\n isOptional: true,\n description: 'Related resource ID',\n }),\n resourceType: field.string({\n isOptional: true,\n description: 'Related resource type',\n }),\n\n // Metadata\n metadata: field.json({\n isOptional: true,\n description: 'Additional context',\n }),\n\n // Idempotency\n idempotencyKey: field.string({\n isOptional: true,\n description: 'Idempotency key for deduplication',\n }),\n\n // Timestamps\n timestamp: field.dateTime({ description: 'When usage occurred' }),\n createdAt: field.createdAt(),\n\n // Aggregation status\n aggregated: field.boolean({\n default: false,\n description: 'Whether included in summary',\n }),\n aggregatedAt: field.dateTime({\n isOptional: true,\n description: 'When aggregated',\n }),\n },\n indexes: [\n index.on(['metricKey', 'subjectType', 'subjectId', 'timestamp']),\n index.on(['subjectType', 'subjectId', 'timestamp']),\n index.on(['timestamp']),\n index.on(['aggregated', 'timestamp']),\n index.unique(['idempotencyKey'], { name: 'usage_record_idempotency' }),\n ],\n});\n\n/**\n * UsageSummary entity - pre-aggregated usage.\n */\nexport const UsageSummaryEntity = defineEntity({\n name: 'UsageSummary',\n description: 'Pre-aggregated usage summary.',\n schema: 'lssm_metering',\n map: 'usage_summary',\n fields: {\n id: field.id({ description: 'Unique identifier' }),\n\n // Metric reference\n metricKey: field.string({ description: 'Metric key' }),\n metricId: field.string({\n isOptional: true,\n description: 'Metric ID (for FK)',\n }),\n\n // Subject\n subjectType: field.string({ description: 'Subject type' }),\n subjectId: field.string({ description: 'Subject identifier' }),\n\n // Period\n periodType: field.enum('PeriodType', { description: 'Period type' }),\n periodStart: field.dateTime({ description: 'Period start time' }),\n periodEnd: field.dateTime({ description: 'Period end time' }),\n\n // Aggregated values\n totalQuantity: field.decimal({ description: 'Total/aggregated quantity' }),\n recordCount: field.int({\n default: 0,\n description: 'Number of records aggregated',\n }),\n\n // Statistics (for AVG, MIN, MAX)\n minQuantity: field.decimal({\n isOptional: true,\n description: 'Minimum value',\n }),\n maxQuantity: field.decimal({\n isOptional: true,\n description: 'Maximum value',\n }),\n avgQuantity: field.decimal({\n isOptional: true,\n description: 'Average value',\n }),\n\n // Metadata\n metadata: field.json({\n isOptional: true,\n description: 'Additional metadata',\n }),\n\n // Timestamps\n createdAt: field.createdAt(),\n updatedAt: field.updatedAt(),\n },\n indexes: [\n index.unique(\n ['metricKey', 'subjectType', 'subjectId', 'periodType', 'periodStart'],\n { name: 'usage_summary_unique' }\n ),\n index.on(['subjectType', 'subjectId', 'periodType', 'periodStart']),\n index.on(['metricKey', 'periodType', 'periodStart']),\n ],\n enums: [PeriodTypeEnum],\n});\n\n/**\n * UsageThreshold entity - threshold configuration.\n */\nexport const UsageThresholdEntity = defineEntity({\n name: 'UsageThreshold',\n description: 'Usage threshold configuration.',\n schema: 'lssm_metering',\n map: 'usage_threshold',\n fields: {\n id: field.id({ description: 'Unique identifier' }),\n\n // Metric reference\n metricKey: field.string({ description: 'Metric to monitor' }),\n metricId: field.string({\n isOptional: true,\n description: 'Metric ID (for FK)',\n }),\n\n // Subject (optional - can be global)\n subjectType: field.string({\n isOptional: true,\n description: 'Subject type',\n }),\n subjectId: field.string({\n isOptional: true,\n description: 'Subject identifier',\n }),\n\n // Threshold configuration\n name: field.string({ description: 'Threshold name' }),\n threshold: field.decimal({ description: 'Threshold value' }),\n warnThreshold: field.decimal({\n isOptional: true,\n description: 'Warning threshold (e.g., 80%)',\n }),\n\n // Period\n periodType: field.enum('PeriodType', {\n default: 'MONTHLY',\n description: 'Period to evaluate',\n }),\n\n // Actions\n action: field.enum('ThresholdAction', {\n default: 'ALERT',\n description: 'Action when exceeded',\n }),\n notifyEmails: field.json({\n isOptional: true,\n description: 'Email addresses to notify',\n }),\n notifyWebhook: field.string({\n isOptional: true,\n description: 'Webhook URL to call',\n }),\n\n // Status tracking\n currentValue: field.decimal({\n default: 0,\n description: 'Current usage value',\n }),\n lastCheckedAt: field.dateTime({\n isOptional: true,\n description: 'Last threshold check',\n }),\n lastExceededAt: field.dateTime({\n isOptional: true,\n description: 'Last time threshold was exceeded',\n }),\n\n // Status\n isActive: field.boolean({\n default: true,\n description: 'Whether threshold is active',\n }),\n\n // Metadata\n metadata: field.json({\n isOptional: true,\n description: 'Additional metadata',\n }),\n\n // Timestamps\n createdAt: field.createdAt(),\n updatedAt: field.updatedAt(),\n },\n indexes: [\n index.on(['metricKey']),\n index.on(['subjectType', 'subjectId']),\n index.on(['isActive', 'metricKey']),\n ],\n enums: [ThresholdActionEnum],\n});\n\n/**\n * UsageAlert entity - threshold violation alerts.\n */\nexport const UsageAlertEntity = defineEntity({\n name: 'UsageAlert',\n description: 'Alert generated when threshold is exceeded.',\n schema: 'lssm_metering',\n map: 'usage_alert',\n fields: {\n id: field.id({ description: 'Unique identifier' }),\n\n // Threshold reference\n thresholdId: field.foreignKey({\n description: 'Threshold that triggered alert',\n }),\n\n // Context\n metricKey: field.string({ description: 'Metric key' }),\n subjectType: field.string({\n isOptional: true,\n description: 'Subject type',\n }),\n subjectId: field.string({\n isOptional: true,\n description: 'Subject identifier',\n }),\n\n // Alert details\n alertType: field.string({ description: 'Alert type (warn, exceed, etc.)' }),\n threshold: field.decimal({ description: 'Threshold value' }),\n actualValue: field.decimal({ description: 'Actual usage value' }),\n percentageUsed: field.decimal({\n description: 'Percentage of threshold used',\n }),\n\n // Status\n status: field.string({\n default: '\"pending\"',\n description: 'Alert status (pending, acknowledged, resolved)',\n }),\n acknowledgedBy: field.string({\n isOptional: true,\n description: 'User who acknowledged',\n }),\n acknowledgedAt: field.dateTime({\n isOptional: true,\n description: 'When acknowledged',\n }),\n resolvedAt: field.dateTime({\n isOptional: true,\n description: 'When resolved',\n }),\n\n // Notifications\n notificationsSent: field.json({\n isOptional: true,\n description: 'Notifications sent',\n }),\n\n // Timestamps\n triggeredAt: field.dateTime({ description: 'When alert was triggered' }),\n createdAt: field.createdAt(),\n\n // Relations\n thresholdRelation: field.belongsTo(\n 'UsageThreshold',\n ['thresholdId'],\n ['id'],\n { onDelete: 'Cascade' }\n ),\n },\n indexes: [\n index.on(['thresholdId', 'status']),\n index.on(['metricKey', 'triggeredAt']),\n index.on(['status', 'triggeredAt']),\n ],\n});\n\n/**\n * All metering entities for schema composition.\n */\nexport const meteringEntities = [\n MetricDefinitionEntity,\n UsageRecordEntity,\n UsageSummaryEntity,\n UsageThresholdEntity,\n UsageAlertEntity,\n];\n\n/**\n * Module schema contribution for metering.\n */\nexport const meteringSchemaContribution: ModuleSchemaContribution = {\n moduleId: '@contractspec/lib.metering',\n entities: meteringEntities,\n enums: [\n AggregationTypeEnum,\n ResetPeriodEnum,\n PeriodTypeEnum,\n ThresholdActionEnum,\n ],\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../src/entities/index.ts"],"sourcesContent":["import {\n defineEntity,\n defineEntityEnum,\n field,\n index,\n} from '@contractspec/lib.schema';\nimport type { ModuleSchemaContribution } from '@contractspec/lib.schema';\n\n/**\n * Aggregation type enum.\n */\nexport const AggregationTypeEnum = defineEntityEnum({\n name: 'AggregationType',\n values: ['COUNT', 'SUM', 'AVG', 'MAX', 'MIN', 'LAST'] as const,\n schema: 'lssm_metering',\n description: 'How to aggregate metric values.',\n});\n\n/**\n * Reset period enum.\n */\nexport const ResetPeriodEnum = defineEntityEnum({\n name: 'ResetPeriod',\n values: ['NEVER', 'HOURLY', 'DAILY', 'WEEKLY', 'MONTHLY', 'YEARLY'] as const,\n schema: 'lssm_metering',\n description: 'When to reset metric counters.',\n});\n\n/**\n * Period type enum.\n */\nexport const PeriodTypeEnum = defineEntityEnum({\n name: 'PeriodType',\n values: ['HOURLY', 'DAILY', 'WEEKLY', 'MONTHLY', 'YEARLY'] as const,\n schema: 'lssm_metering',\n description: 'Time period for aggregation.',\n});\n\n/**\n * Threshold action enum.\n */\nexport const ThresholdActionEnum = defineEntityEnum({\n name: 'ThresholdAction',\n values: ['NONE', 'ALERT', 'WARN', 'BLOCK', 'DOWNGRADE'] as const,\n schema: 'lssm_metering',\n description: 'Action to take when threshold is exceeded.',\n});\n\n/**\n * MetricDefinition entity - defines a trackable metric.\n */\nexport const MetricDefinitionEntity = defineEntity({\n name: 'MetricDefinition',\n description: 'Definition of a usage metric.',\n schema: 'lssm_metering',\n map: 'metric_definition',\n fields: {\n id: field.id({ description: 'Unique identifier' }),\n key: field.string({\n isUnique: true,\n description: 'Metric key (e.g., api_calls, storage_gb)',\n }),\n name: field.string({ description: 'Human-readable name' }),\n description: field.string({\n isOptional: true,\n description: 'Metric description',\n }),\n\n // Configuration\n unit: field.string({\n description: 'Unit of measurement (calls, bytes, etc.)',\n }),\n aggregationType: field.enum('AggregationType', {\n default: 'SUM',\n description: 'How to aggregate values',\n }),\n resetPeriod: field.enum('ResetPeriod', {\n default: 'MONTHLY',\n description: 'When to reset counters',\n }),\n\n // Precision\n precision: field.int({ default: 2, description: 'Decimal precision' }),\n\n // Scope\n orgId: field.string({\n isOptional: true,\n description: 'Organization scope (null = global metric)',\n }),\n\n // Display\n category: field.string({\n isOptional: true,\n description: 'Category for grouping',\n }),\n displayOrder: field.int({ default: 0, description: 'Order for display' }),\n\n // Metadata\n metadata: field.json({\n isOptional: true,\n description: 'Additional metadata',\n }),\n\n // Status\n isActive: field.boolean({\n default: true,\n description: 'Whether metric is active',\n }),\n\n // Timestamps\n createdAt: field.createdAt(),\n updatedAt: field.updatedAt(),\n\n // Relations\n usageRecords: field.hasMany('UsageRecord'),\n usageSummaries: field.hasMany('UsageSummary'),\n thresholds: field.hasMany('UsageThreshold'),\n },\n indexes: [\n index.on(['orgId', 'key']),\n index.on(['category']),\n index.on(['isActive']),\n ],\n enums: [AggregationTypeEnum, ResetPeriodEnum],\n});\n\n/**\n * UsageRecord entity - individual usage event.\n */\nexport const UsageRecordEntity = defineEntity({\n name: 'UsageRecord',\n description: 'A single usage event.',\n schema: 'lssm_metering',\n map: 'usage_record',\n fields: {\n id: field.id({ description: 'Unique identifier' }),\n\n // Metric reference\n metricKey: field.string({ description: 'Metric being recorded' }),\n metricId: field.string({\n isOptional: true,\n description: 'Metric ID (for FK)',\n }),\n\n // Subject\n subjectType: field.string({\n description: 'Subject type (org, user, project)',\n }),\n subjectId: field.string({ description: 'Subject identifier' }),\n\n // Usage value\n quantity: field.decimal({ description: 'Usage quantity' }),\n\n // Context\n source: field.string({\n isOptional: true,\n description: 'Source of usage (endpoint, feature, etc.)',\n }),\n resourceId: field.string({\n isOptional: true,\n description: 'Related resource ID',\n }),\n resourceType: field.string({\n isOptional: true,\n description: 'Related resource type',\n }),\n\n // Metadata\n metadata: field.json({\n isOptional: true,\n description: 'Additional context',\n }),\n\n // Idempotency\n idempotencyKey: field.string({\n isOptional: true,\n description: 'Idempotency key for deduplication',\n }),\n\n // Timestamps\n timestamp: field.dateTime({ description: 'When usage occurred' }),\n createdAt: field.createdAt(),\n\n // Aggregation status\n aggregated: field.boolean({\n default: false,\n description: 'Whether included in summary',\n }),\n aggregatedAt: field.dateTime({\n isOptional: true,\n description: 'When aggregated',\n }),\n },\n indexes: [\n index.on(['metricKey', 'subjectType', 'subjectId', 'timestamp']),\n index.on(['subjectType', 'subjectId', 'timestamp']),\n index.on(['timestamp']),\n index.on(['aggregated', 'timestamp']),\n index.unique(['idempotencyKey'], { name: 'usage_record_idempotency' }),\n ],\n});\n\n/**\n * UsageSummary entity - pre-aggregated usage.\n */\nexport const UsageSummaryEntity = defineEntity({\n name: 'UsageSummary',\n description: 'Pre-aggregated usage summary.',\n schema: 'lssm_metering',\n map: 'usage_summary',\n fields: {\n id: field.id({ description: 'Unique identifier' }),\n\n // Metric reference\n metricKey: field.string({ description: 'Metric key' }),\n metricId: field.string({\n isOptional: true,\n description: 'Metric ID (for FK)',\n }),\n\n // Subject\n subjectType: field.string({ description: 'Subject type' }),\n subjectId: field.string({ description: 'Subject identifier' }),\n\n // Period\n periodType: field.enum('PeriodType', { description: 'Period type' }),\n periodStart: field.dateTime({ description: 'Period start time' }),\n periodEnd: field.dateTime({ description: 'Period end time' }),\n\n // Aggregated values\n totalQuantity: field.decimal({ description: 'Total/aggregated quantity' }),\n recordCount: field.int({\n default: 0,\n description: 'Number of records aggregated',\n }),\n\n // Statistics (for AVG, MIN, MAX)\n minQuantity: field.decimal({\n isOptional: true,\n description: 'Minimum value',\n }),\n maxQuantity: field.decimal({\n isOptional: true,\n description: 'Maximum value',\n }),\n avgQuantity: field.decimal({\n isOptional: true,\n description: 'Average value',\n }),\n\n // Metadata\n metadata: field.json({\n isOptional: true,\n description: 'Additional metadata',\n }),\n\n // Timestamps\n createdAt: field.createdAt(),\n updatedAt: field.updatedAt(),\n },\n indexes: [\n index.unique(\n ['metricKey', 'subjectType', 'subjectId', 'periodType', 'periodStart'],\n { name: 'usage_summary_unique' }\n ),\n index.on(['subjectType', 'subjectId', 'periodType', 'periodStart']),\n index.on(['metricKey', 'periodType', 'periodStart']),\n ],\n enums: [PeriodTypeEnum],\n});\n\n/**\n * UsageThreshold entity - threshold configuration.\n */\nexport const UsageThresholdEntity = defineEntity({\n name: 'UsageThreshold',\n description: 'Usage threshold configuration.',\n schema: 'lssm_metering',\n map: 'usage_threshold',\n fields: {\n id: field.id({ description: 'Unique identifier' }),\n\n // Metric reference\n metricKey: field.string({ description: 'Metric to monitor' }),\n metricId: field.string({\n isOptional: true,\n description: 'Metric ID (for FK)',\n }),\n\n // Subject (optional - can be global)\n subjectType: field.string({\n isOptional: true,\n description: 'Subject type',\n }),\n subjectId: field.string({\n isOptional: true,\n description: 'Subject identifier',\n }),\n\n // Threshold configuration\n name: field.string({ description: 'Threshold name' }),\n threshold: field.decimal({ description: 'Threshold value' }),\n warnThreshold: field.decimal({\n isOptional: true,\n description: 'Warning threshold (e.g., 80%)',\n }),\n\n // Period\n periodType: field.enum('PeriodType', {\n default: 'MONTHLY',\n description: 'Period to evaluate',\n }),\n\n // Actions\n action: field.enum('ThresholdAction', {\n default: 'ALERT',\n description: 'Action when exceeded',\n }),\n notifyEmails: field.json({\n isOptional: true,\n description: 'Email addresses to notify',\n }),\n notifyWebhook: field.string({\n isOptional: true,\n description: 'Webhook URL to call',\n }),\n\n // Status tracking\n currentValue: field.decimal({\n default: 0,\n description: 'Current usage value',\n }),\n lastCheckedAt: field.dateTime({\n isOptional: true,\n description: 'Last threshold check',\n }),\n lastExceededAt: field.dateTime({\n isOptional: true,\n description: 'Last time threshold was exceeded',\n }),\n\n // Status\n isActive: field.boolean({\n default: true,\n description: 'Whether threshold is active',\n }),\n\n // Metadata\n metadata: field.json({\n isOptional: true,\n description: 'Additional metadata',\n }),\n\n // Timestamps\n createdAt: field.createdAt(),\n updatedAt: field.updatedAt(),\n },\n indexes: [\n index.on(['metricKey']),\n index.on(['subjectType', 'subjectId']),\n index.on(['isActive', 'metricKey']),\n ],\n enums: [ThresholdActionEnum],\n});\n\n/**\n * UsageAlert entity - threshold violation alerts.\n */\nexport const UsageAlertEntity = defineEntity({\n name: 'UsageAlert',\n description: 'Alert generated when threshold is exceeded.',\n schema: 'lssm_metering',\n map: 'usage_alert',\n fields: {\n id: field.id({ description: 'Unique identifier' }),\n\n // Threshold reference\n thresholdId: field.foreignKey({\n description: 'Threshold that triggered alert',\n }),\n\n // Context\n metricKey: field.string({ description: 'Metric key' }),\n subjectType: field.string({\n isOptional: true,\n description: 'Subject type',\n }),\n subjectId: field.string({\n isOptional: true,\n description: 'Subject identifier',\n }),\n\n // Alert details\n alertType: field.string({ description: 'Alert type (warn, exceed, etc.)' }),\n threshold: field.decimal({ description: 'Threshold value' }),\n actualValue: field.decimal({ description: 'Actual usage value' }),\n percentageUsed: field.decimal({\n description: 'Percentage of threshold used',\n }),\n\n // Status\n status: field.string({\n default: '\"pending\"',\n description: 'Alert status (pending, acknowledged, resolved)',\n }),\n acknowledgedBy: field.string({\n isOptional: true,\n description: 'User who acknowledged',\n }),\n acknowledgedAt: field.dateTime({\n isOptional: true,\n description: 'When acknowledged',\n }),\n resolvedAt: field.dateTime({\n isOptional: true,\n description: 'When resolved',\n }),\n\n // Notifications\n notificationsSent: field.json({\n isOptional: true,\n description: 'Notifications sent',\n }),\n\n // Timestamps\n triggeredAt: field.dateTime({ description: 'When alert was triggered' }),\n createdAt: field.createdAt(),\n\n // Relations\n thresholdRelation: field.belongsTo(\n 'UsageThreshold',\n ['thresholdId'],\n ['id'],\n { onDelete: 'Cascade' }\n ),\n },\n indexes: [\n index.on(['thresholdId', 'status']),\n index.on(['metricKey', 'triggeredAt']),\n index.on(['status', 'triggeredAt']),\n ],\n});\n\n/**\n * All metering entities for schema composition.\n */\nexport const meteringEntities = [\n MetricDefinitionEntity,\n UsageRecordEntity,\n UsageSummaryEntity,\n UsageThresholdEntity,\n UsageAlertEntity,\n];\n\n/**\n * Module schema contribution for metering.\n */\nexport const meteringSchemaContribution: ModuleSchemaContribution = {\n moduleId: '@contractspec/lib.metering',\n entities: meteringEntities,\n enums: [\n AggregationTypeEnum,\n ResetPeriodEnum,\n PeriodTypeEnum,\n ThresholdActionEnum,\n ],\n};\n"],"mappings":"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"}
|