@spottoai/types-package 1.0.2-beta.428 → 1.0.2-beta.429

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 (60) hide show
  1. package/dist/azure/dataProtection.d.ts +40 -0
  2. package/dist/azure/dataProtection.d.ts.map +1 -1
  3. package/dist/azure/metrics.d.ts +2 -27
  4. package/dist/azure/metrics.d.ts.map +1 -1
  5. package/dist/azure/reportEvidence.d.ts +7 -5
  6. package/dist/azure/reportEvidence.d.ts.map +1 -1
  7. package/dist/azure/reportEvidence.js.map +1 -1
  8. package/dist/azure/reportEvidenceValidation.d.ts.map +1 -1
  9. package/dist/azure/reportEvidenceValidation.js +5 -1
  10. package/dist/azure/reportEvidenceValidation.js.map +1 -1
  11. package/dist/azure/reportEvidenceValidationHelpers.d.ts +3 -16
  12. package/dist/azure/reportEvidenceValidationHelpers.d.ts.map +1 -1
  13. package/dist/azure/reportEvidenceValidationHelpers.js +79 -95
  14. package/dist/azure/reportEvidenceValidationHelpers.js.map +1 -1
  15. package/dist/azure/resilienceFacts.d.ts +100 -0
  16. package/dist/azure/resilienceFacts.d.ts.map +1 -0
  17. package/dist/azure/resilienceFacts.js +20 -0
  18. package/dist/azure/resilienceFacts.js.map +1 -0
  19. package/dist/azure/resilienceFactsValidation.d.ts +4 -0
  20. package/dist/azure/resilienceFactsValidation.d.ts.map +1 -0
  21. package/dist/azure/resilienceFactsValidation.js +70 -0
  22. package/dist/azure/resilienceFactsValidation.js.map +1 -0
  23. package/dist/azure/views.d.ts +7 -0
  24. package/dist/azure/views.d.ts.map +1 -1
  25. package/dist/azure/views.js.map +1 -1
  26. package/dist/common/boundedRows.d.ts +7 -0
  27. package/dist/common/boundedRows.d.ts.map +1 -0
  28. package/dist/common/boundedRows.js +3 -0
  29. package/dist/common/boundedRows.js.map +1 -0
  30. package/dist/common/metricStats.d.ts +29 -0
  31. package/dist/common/metricStats.d.ts.map +1 -0
  32. package/dist/common/metricStats.js +3 -0
  33. package/dist/common/metricStats.js.map +1 -0
  34. package/dist/common/utilizationStories.d.ts +516 -0
  35. package/dist/common/utilizationStories.d.ts.map +1 -0
  36. package/dist/common/utilizationStories.js +21 -0
  37. package/dist/common/utilizationStories.js.map +1 -0
  38. package/dist/common/utilizationStoriesValidation.d.ts +48 -0
  39. package/dist/common/utilizationStoriesValidation.d.ts.map +1 -0
  40. package/dist/common/utilizationStoriesValidation.js +552 -0
  41. package/dist/common/utilizationStoriesValidation.js.map +1 -0
  42. package/dist/common/validationHelpers.d.ts +18 -0
  43. package/dist/common/validationHelpers.d.ts.map +1 -0
  44. package/dist/common/validationHelpers.js +36 -0
  45. package/dist/common/validationHelpers.js.map +1 -0
  46. package/dist/esm/azure/reportEvidenceValidation.js +5 -1
  47. package/dist/esm/azure/reportEvidenceValidationHelpers.js +2 -18
  48. package/dist/esm/azure/resilienceFacts.js +16 -0
  49. package/dist/esm/azure/resilienceFactsValidation.js +64 -0
  50. package/dist/esm/common/boundedRows.js +1 -0
  51. package/dist/esm/common/metricStats.js +1 -0
  52. package/dist/esm/common/utilizationStories.js +17 -0
  53. package/dist/esm/common/utilizationStoriesValidation.js +514 -0
  54. package/dist/esm/common/validationHelpers.js +18 -0
  55. package/dist/esm/index.js +4 -0
  56. package/dist/index.d.ts +4 -0
  57. package/dist/index.d.ts.map +1 -1
  58. package/dist/index.js +4 -0
  59. package/dist/index.js.map +1 -1
  60. package/package.json +3 -2
@@ -0,0 +1,552 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isResilienceProfileConfig = exports.isUtilizationProfileConfig = exports.isUtilizationProfileEntry = exports.isUtilizationMetricEntry = exports.isReportingStories = exports.isStoryFingerprintRows = exports.isStoryFingerprint = exports.isStorySample = exports.isStoryArtifact = exports.isRowInScope = exports.isStorySection = exports.isStorySummary = exports.storyRowGuard = exports.isCommitmentRow = exports.isHybridBenefitRow = exports.isResilienceRow = exports.isScheduleCandidateRow = exports.isRightSkuRow = exports.isOversizedResourceRow = exports.hasCellsForColumns = exports.isStoryColumn = exports.isStoryCell = exports.isProtectionProfile = exports.isProtectionCapability = exports.isUtilizationSignal = exports.isUtilizationProfile = exports.isSkuOption = exports.isSkuOptionSummary = exports.isEvidenceWindow = exports.isCommitmentCoverage = exports.isCorroboratedRunningProfile = exports.isRunningProfile = exports.isCapacityDescriptor = exports.isMetricSparkline = void 0;
4
+ const validationHelpers_1 = require("./validationHelpers");
5
+ const utilizationStories_1 = require("./utilizationStories");
6
+ const PROVIDERS = new Set(['azure', 'aws']);
7
+ const METRIC_ROLES = new Set(['primary', 'secondary', 'context']);
8
+ const DIMENSION_POLICIES = new Set(['average', 'sum', 'max', 'split']);
9
+ const METRIC_VISUALS = new Set(['sparkline', 'trend', 'capacity-bar', 'mix-bar', 'event-strip']);
10
+ const BILLED_ON = new Set(['allocated', 'used', 'included']);
11
+ const AXIS_MAX_SOURCES = new Set(['config', 'capacity', 'observed']);
12
+ const SCALE_MODES = new Set(['fixed', 'autoscale', 'serverless']);
13
+ const RUN_MODES = new Set(['stop-start', 'auto-pause', 'scale-to-zero', 'always-on']);
14
+ const RUNNING_BASES = new Set(['power-state', 'billing-hours', 'metric-presence']);
15
+ const SIZING_VERDICTS = new Set(['oversized', 'undersized', 'busy', 'rebalance', 'mostly-off', 'idle', 'no-telemetry', 'fits', 'unknown']);
16
+ const SCHEDULE_FITS = new Set(['good', 'fair', 'low', 'done', 'insufficient-data', 'not-applicable']);
17
+ const SCHEDULE_FITS_REQUIRING_CORROBORATION = new Set(['good', 'fair', 'low']);
18
+ const SCHEDULE_ACTIONS = new Set(['stop', 'pause', 'scale']);
19
+ const TELEMETRY_STATUSES = new Set(['collected', 'partial', 'no-series', 'unavailable']);
20
+ const CONFIDENCES = new Set(['high', 'medium', 'low']);
21
+ const BENEFIT_TYPES = new Set(['reservation', 'savings-plan']);
22
+ const SKU_OPTION_KINDS = new Set(['same-shape', 'fits-usage', 'trade-off', 'cross-platform']);
23
+ const CAPABILITY_STATES = new Set(['enabled', 'disabled', 'partial', 'unknown', 'not-applicable']);
24
+ const RIGHT_SKU_VERDICTS = new Set(['modernise', 'downsize', 'consider', 'keep']);
25
+ const BACKUP_RUN_STATES = new Set(['ok', 'failed', null]);
26
+ const STORY_KEY_SET = new Set(utilizationStories_1.STORY_KEYS);
27
+ const STORY_CELL_KINDS = new Set([
28
+ 'text',
29
+ 'number',
30
+ 'money',
31
+ 'percent',
32
+ 'mark',
33
+ 'dot',
34
+ 'sparkline',
35
+ 'dual',
36
+ 'capacity-bar',
37
+ 'mix-bar',
38
+ 'event-strip',
39
+ 'weekly-grid',
40
+ ]);
41
+ const SERIES_ROLES = new Set(['primary', 'secondary']);
42
+ const STATUS_TONES = new Set(['good', 'warn', 'bad', 'neutral', 'muted']);
43
+ const COLUMN_ROLE_CLASSES = new Set(['res', 'prim', 'sec', 'nums', 'cap', 'read', 'cost', 'save', 'dual']);
44
+ const PRODUCERS = new Set(['parser', 'strategy']);
45
+ const isNullableNumber = (value) => value === null || (0, validationHelpers_1.isFiniteNumber)(value);
46
+ const isOptionalNullableNumber = (value) => value === undefined || isNullableNumber(value);
47
+ const isNullableString = (value) => value === null || (0, validationHelpers_1.isString)(value);
48
+ const isText = (value) => typeof value === 'string';
49
+ const isOptionalText = (value) => value === undefined || isText(value);
50
+ const isBoolean = (value) => typeof value === 'boolean';
51
+ const isNullableSeries = (value) => Array.isArray(value) && value.every(isNullableNumber);
52
+ const isPriority = (value) => (0, validationHelpers_1.isCount)(value) && value >= 1 && value <= 5;
53
+ const isStringRecord = (value) => (0, validationHelpers_1.isRecord)(value) && Object.values(value).every(isText);
54
+ const isNumberRecord = (value) => (0, validationHelpers_1.isRecord)(value) && Object.values(value).every(validationHelpers_1.isFiniteNumber);
55
+ const inSet = (set, value) => set.has(value);
56
+ const isWeeklyGrid = (value) => Array.isArray(value) &&
57
+ value.length === utilizationStories_1.STORY_LIMITS.weeklyGridDays &&
58
+ value.every(day => isNullableSeries(day) && day.length === utilizationStories_1.STORY_LIMITS.weeklyGridHours);
59
+ const METRIC_STATS_FIELDS = [
60
+ 'average',
61
+ 'median',
62
+ 'p50',
63
+ 'p75',
64
+ 'p90',
65
+ 'p95',
66
+ 'p99',
67
+ 'min',
68
+ 'max',
69
+ 'frequency',
70
+ 'trend',
71
+ 'variance',
72
+ 'count',
73
+ 'totalDataPoints',
74
+ 'runningDataPoints',
75
+ 'nonRunningDataPoints',
76
+ 'runningTimePercentage',
77
+ 'longestRunningStreak',
78
+ 'longestDowntimeStreak',
79
+ 'averageUptimeStreak',
80
+ 'averageDowntimeStreak',
81
+ ];
82
+ const METRIC_STATS_OPTIONAL_FIELDS = ['uptime', 'peakHours', 'offPeakHours'];
83
+ const isMetricStats = (value) => (0, validationHelpers_1.isRecord)(value) &&
84
+ METRIC_STATS_FIELDS.every(key => (0, validationHelpers_1.isFiniteNumber)(value[key])) &&
85
+ METRIC_STATS_OPTIONAL_FIELDS.every(key => value[key] === undefined || (0, validationHelpers_1.isFiniteNumber)(value[key]));
86
+ const isMetricSparkline = (value, days) => {
87
+ if (!(0, validationHelpers_1.isRecord)(value) || !(0, validationHelpers_1.isString)(value.key) || !(0, validationHelpers_1.isString)(value.metricName))
88
+ return false;
89
+ if (!inSet(METRIC_ROLES, value.role) || !inSet(METRIC_VISUALS, value.visual) || !isText(value.unit))
90
+ return false;
91
+ if (!isNullableNumber(value.axisMax) || (value.axisMaxSource !== undefined && !inSet(AXIS_MAX_SOURCES, value.axisMaxSource)))
92
+ return false;
93
+ if (value.billedOn !== undefined && !inSet(BILLED_ON, value.billedOn))
94
+ return false;
95
+ if (value.dimensions !== undefined &&
96
+ (!(0, validationHelpers_1.isRecord)(value.dimensions) ||
97
+ !inSet(DIMENSION_POLICIES, value.dimensions.policy) ||
98
+ !isOptionalText(value.dimensions.name) ||
99
+ !isOptionalText(value.dimensions.value) ||
100
+ !(0, validationHelpers_1.isCount)(value.dimensions.seriesCount)))
101
+ return false;
102
+ if (!(0, validationHelpers_1.isDateTime)(value.start) || value.bucket !== 'P1D')
103
+ return false;
104
+ if (!isNullableSeries(value.avg) || !isNullableSeries(value.p95) || !isNullableSeries(value.max))
105
+ return false;
106
+ if (value.avg.length !== value.p95.length || value.avg.length !== value.max.length)
107
+ return false;
108
+ if (days !== undefined && value.avg.length !== days)
109
+ return false;
110
+ return isMetricStats(value.stats) && (0, validationHelpers_1.isCount)(value.sourcePoints);
111
+ };
112
+ exports.isMetricSparkline = isMetricSparkline;
113
+ const isCapacityDescriptor = (value) => (0, validationHelpers_1.isRecord)(value) &&
114
+ isNullableString(value.sku) &&
115
+ isNullableString(value.tier) &&
116
+ isNullableNumber(value.units) &&
117
+ isText(value.unitName) &&
118
+ isOptionalNullableNumber(value.memoryGB) &&
119
+ inSet(SCALE_MODES, value.scaleMode) &&
120
+ isText(value.label);
121
+ exports.isCapacityDescriptor = isCapacityDescriptor;
122
+ const isHourShare = (value) => (0, validationHelpers_1.isRecord)(value) && isNullableNumber(value.runningShare) && isNullableNumber(value.usageMean);
123
+ const isRunningProfile = (value, days) => {
124
+ if (!(0, validationHelpers_1.isRecord)(value) || !(0, validationHelpers_1.isString)(value.signalMetric) || !inSet(RUNNING_BASES, value.basis))
125
+ return false;
126
+ if (!Array.isArray(value.corroboration) || !value.corroboration.every(basis => inSet(RUNNING_BASES, basis)))
127
+ return false;
128
+ if (value.corroboration.includes(value.basis))
129
+ return false;
130
+ if (!isNullableSeries(value.daily) || (days !== undefined && value.daily.length !== days) || !isNullableNumber(value.share))
131
+ return false;
132
+ if (value.weekly === undefined)
133
+ return true;
134
+ const weekly = value.weekly;
135
+ return ((0, validationHelpers_1.isRecord)(weekly) &&
136
+ (0, validationHelpers_1.isString)(weekly.timezone) &&
137
+ isWeeklyGrid(weekly.running) &&
138
+ isWeeklyGrid(weekly.usage) &&
139
+ isHourShare(weekly.businessHours) &&
140
+ isHourShare(weekly.offHours));
141
+ };
142
+ exports.isRunningProfile = isRunningProfile;
143
+ /** A running signal derived from metric presence alone is not evidence of stopped time; it needs an independent source. */
144
+ const isCorroboratedRunningProfile = (value) => value.basis !== 'metric-presence' || value.corroboration.some(basis => basis !== 'metric-presence');
145
+ exports.isCorroboratedRunningProfile = isCorroboratedRunningProfile;
146
+ const isCommitmentCoverage = (value) => (0, validationHelpers_1.isRecord)(value) &&
147
+ isNullableNumber(value.coveragePercent) &&
148
+ Array.isArray(value.benefitTypes) &&
149
+ value.benefitTypes.every(type => inSet(BENEFIT_TYPES, type)) &&
150
+ Array.isArray(value.benefitNames) &&
151
+ value.benefitNames.every(isText) &&
152
+ isNullableNumber(value.coveredCost) &&
153
+ isNullableNumber(value.uncoveredCost) &&
154
+ (0, validationHelpers_1.isDateTime)(value.windowStart) &&
155
+ (0, validationHelpers_1.isDateTime)(value.windowEnd);
156
+ exports.isCommitmentCoverage = isCommitmentCoverage;
157
+ const isEvidenceWindow = (value) => (0, validationHelpers_1.isRecord)(value) &&
158
+ (0, validationHelpers_1.isDateTime)(value.windowStart) &&
159
+ (0, validationHelpers_1.isDateTime)(value.windowEnd) &&
160
+ (0, validationHelpers_1.isCount)(value.days) &&
161
+ (0, validationHelpers_1.isCount)(value.sampleCount) &&
162
+ inSet(TELEMETRY_STATUSES, value.telemetry) &&
163
+ inSet(CONFIDENCES, value.confidence);
164
+ exports.isEvidenceWindow = isEvidenceWindow;
165
+ const isVerdictReason = (value) => (0, validationHelpers_1.isRecord)(value) && (0, validationHelpers_1.isString)(value.rule) && (0, validationHelpers_1.isRecord)(value.values) && Object.values(value.values).every(isNullableNumber);
166
+ const isSkuOptionSummary = (value) => (0, validationHelpers_1.isRecord)(value) && inSet(SKU_OPTION_KINDS, value.kind) && (0, validationHelpers_1.isString)(value.label) && isNullableNumber(value.savingsPercent);
167
+ exports.isSkuOptionSummary = isSkuOptionSummary;
168
+ const isSkuOption = (value) => (0, validationHelpers_1.isRecord)(value) &&
169
+ inSet(SKU_OPTION_KINDS, value.kind) &&
170
+ (0, validationHelpers_1.isString)(value.sku) &&
171
+ (0, validationHelpers_1.isString)(value.label) &&
172
+ (value.capacity === undefined ||
173
+ ((0, validationHelpers_1.isRecord)(value.capacity) && isNullableNumber(value.capacity.units) && isOptionalNullableNumber(value.capacity.memoryGB))) &&
174
+ isNullableNumber(value.monthlyCost) &&
175
+ (0, validationHelpers_1.isString)(value.currency) &&
176
+ isNullableNumber(value.savingsPercent) &&
177
+ isNullableNumber(value.savingsMonthly) &&
178
+ (0, validationHelpers_1.isStringArray)(value.lostCapabilities) &&
179
+ (value.confidence === undefined || inSet(CONFIDENCES, value.confidence));
180
+ exports.isSkuOption = isSkuOption;
181
+ const isUtilizationProfile = (value, days) => {
182
+ if (!(0, validationHelpers_1.isRecord)(value) || !inSet(PROVIDERS, value.provider) || !(0, validationHelpers_1.isString)(value.family) || !(0, exports.isCapacityDescriptor)(value.capacity))
183
+ return false;
184
+ if (!inSet(RUN_MODES, value.runMode) || !inSet(SIZING_VERDICTS, value.verdict) || !inSet(SCHEDULE_FITS, value.scheduleFit))
185
+ return false;
186
+ if (!(0, exports.isEvidenceWindow)(value.evidenceWindow) || !(0, validationHelpers_1.isString)(value.fingerprint))
187
+ return false;
188
+ const evidenceWindow = value.evidenceWindow;
189
+ const windowDays = days ?? evidenceWindow.days;
190
+ if (!Array.isArray(value.metrics) || !value.metrics.every(metric => (0, exports.isMetricSparkline)(metric, windowDays)))
191
+ return false;
192
+ if (value.running !== undefined && !(0, exports.isRunningProfile)(value.running, windowDays))
193
+ return false;
194
+ if (!Array.isArray(value.verdictReasons) || !value.verdictReasons.every(isVerdictReason) || !(0, validationHelpers_1.isStringArray)(value.evidence))
195
+ return false;
196
+ if (value.scheduleAction !== undefined && !inSet(SCHEDULE_ACTIONS, value.scheduleAction))
197
+ return false;
198
+ if (value.coverage !== undefined && !(0, exports.isCommitmentCoverage)(value.coverage))
199
+ return false;
200
+ if (value.ownerResourceId !== undefined && !(0, validationHelpers_1.isString)(value.ownerResourceId))
201
+ return false;
202
+ const needsCorroboration = inSet(SCHEDULE_FITS_REQUIRING_CORROBORATION, value.scheduleFit) || value.verdict === 'mostly-off';
203
+ if (needsCorroboration) {
204
+ if (evidenceWindow.telemetry !== 'collected')
205
+ return false;
206
+ if (value.running === undefined || !(0, exports.isCorroboratedRunningProfile)(value.running))
207
+ return false;
208
+ }
209
+ return true;
210
+ };
211
+ exports.isUtilizationProfile = isUtilizationProfile;
212
+ const isSignalSeries = (value) => (0, validationHelpers_1.isRecord)(value) && (0, validationHelpers_1.isString)(value.key) && isNullableNumber(value.p95) && isNullableSeries(value.sparkline);
213
+ const isUtilizationSignal = (value) => {
214
+ if (!(0, validationHelpers_1.isRecord)(value) || !inSet(SIZING_VERDICTS, value.verdict) || !inSet(SCHEDULE_FITS, value.scheduleFit))
215
+ return false;
216
+ if (!isSignalSeries(value.primary) || !inSet(TELEMETRY_STATUSES, value.telemetry))
217
+ return false;
218
+ const actionable = inSet(SCHEDULE_FITS_REQUIRING_CORROBORATION, value.scheduleFit) || value.verdict === 'mostly-off';
219
+ if (actionable && value.telemetry !== 'collected')
220
+ return false;
221
+ if (value.secondary !== undefined) {
222
+ if (!isSignalSeries(value.secondary))
223
+ return false;
224
+ const primaryLength = value.primary.sparkline.length;
225
+ if (value.secondary.sparkline.length !== primaryLength)
226
+ return false;
227
+ }
228
+ if (value.coverage !== undefined &&
229
+ (!(0, validationHelpers_1.isRecord)(value.coverage) ||
230
+ !isNullableNumber(value.coverage.coveragePercent) ||
231
+ !Array.isArray(value.coverage.benefitTypes) ||
232
+ !value.coverage.benefitTypes.every(type => inSet(BENEFIT_TYPES, type))))
233
+ return false;
234
+ return value.betterSku === undefined || (0, exports.isSkuOptionSummary)(value.betterSku);
235
+ };
236
+ exports.isUtilizationSignal = isUtilizationSignal;
237
+ const isCapabilityDetails = (value) => (0, validationHelpers_1.isRecord)(value) && Object.values(value).every(detail => detail === null || isText(detail) || (0, validationHelpers_1.isFiniteNumber)(detail) || isBoolean(detail));
238
+ const isProtectionCapability = (value) => (0, validationHelpers_1.isRecord)(value) &&
239
+ (0, validationHelpers_1.isString)(value.key) &&
240
+ inSet(CAPABILITY_STATES, value.state) &&
241
+ isBoolean(value.required) &&
242
+ isText(value.label) &&
243
+ (value.details === undefined || isCapabilityDetails(value.details)) &&
244
+ isOptionalNullableNumber(value.costIfEnabled) &&
245
+ (0, validationHelpers_1.isRecord)(value.evidence) &&
246
+ (0, validationHelpers_1.isString)(value.evidence.source) &&
247
+ (value.evidence.observedAt === undefined || value.evidence.observedAt === null || (0, validationHelpers_1.isDateTime)(value.evidence.observedAt));
248
+ exports.isProtectionCapability = isProtectionCapability;
249
+ const isProtectionProfile = (value) => (0, validationHelpers_1.isRecord)(value) &&
250
+ inSet(PROVIDERS, value.provider) &&
251
+ Array.isArray(value.capabilities) &&
252
+ value.capabilities.every(exports.isProtectionCapability) &&
253
+ (0, validationHelpers_1.isStringArray)(value.missingRequired) &&
254
+ isOptionalNullableNumber(value.slaPercent);
255
+ exports.isProtectionProfile = isProtectionProfile;
256
+ // ---- Cells
257
+ const isSparklineCell = (value) => inSet(SERIES_ROLES, value.role) &&
258
+ isNullableSeries(value.values) &&
259
+ isNullableNumber(value.axisMax) &&
260
+ isText(value.unit) &&
261
+ isNullableNumber(value.p95) &&
262
+ isText(value.label);
263
+ const isStoryCell = (value) => {
264
+ if (!(0, validationHelpers_1.isRecord)(value) || !inSet(STORY_CELL_KINDS, value.kind))
265
+ return false;
266
+ switch (value.kind) {
267
+ case 'text':
268
+ return (value.value === null || isText(value.value)) && (value.detail === undefined || value.detail === null || isText(value.detail));
269
+ case 'number':
270
+ return isNullableNumber(value.value) && isOptionalText(value.unit) && (value.decimals === undefined || (0, validationHelpers_1.isCount)(value.decimals));
271
+ case 'money':
272
+ return isNullableNumber(value.value) && (0, validationHelpers_1.isString)(value.currency);
273
+ case 'percent':
274
+ return isNullableNumber(value.value);
275
+ case 'mark':
276
+ return ((0, validationHelpers_1.isString)(value.state) && isText(value.label) && inSet(STATUS_TONES, value.tone) && isOptionalText(value.icon) && isOptionalText(value.hint));
277
+ case 'dot':
278
+ return isBoolean(value.present) && inSet(STATUS_TONES, value.tone) && isOptionalText(value.label) && isOptionalText(value.hint);
279
+ case 'sparkline':
280
+ return isSparklineCell(value);
281
+ case 'dual':
282
+ return ((0, validationHelpers_1.isRecord)(value.primary) &&
283
+ value.primary.kind === 'sparkline' &&
284
+ isSparklineCell(value.primary) &&
285
+ (value.secondary === null ||
286
+ ((0, validationHelpers_1.isRecord)(value.secondary) &&
287
+ value.secondary.kind === 'sparkline' &&
288
+ isSparklineCell(value.secondary) &&
289
+ value.secondary.values.length === value.primary.values.length)));
290
+ case 'capacity-bar':
291
+ return isNullableNumber(value.used) && isNullableNumber(value.total) && isText(value.unit) && isText(value.label);
292
+ case 'mix-bar':
293
+ return (Array.isArray(value.parts) &&
294
+ value.parts.every(part => (0, validationHelpers_1.isRecord)(part) && (0, validationHelpers_1.isString)(part.key) && isText(part.label) && (0, validationHelpers_1.isFiniteNumber)(part.value)) &&
295
+ isText(value.unit) &&
296
+ (0, validationHelpers_1.isFiniteNumber)(value.total));
297
+ case 'event-strip':
298
+ return (Array.isArray(value.events) &&
299
+ value.events.every(event => inSet(BACKUP_RUN_STATES, event)) &&
300
+ (0, validationHelpers_1.isDateTime)(value.start) &&
301
+ isOptionalText(value.label));
302
+ case 'weekly-grid':
303
+ return ((0, validationHelpers_1.isString)(value.timezone) && isWeeklyGrid(value.running) && isNullableNumber(value.businessHoursShare) && isNullableNumber(value.offHoursShare));
304
+ default:
305
+ return false;
306
+ }
307
+ };
308
+ exports.isStoryCell = isStoryCell;
309
+ const isStoryColumn = (value) => (0, validationHelpers_1.isRecord)(value) &&
310
+ (0, validationHelpers_1.isString)(value.key) &&
311
+ isText(value.label) &&
312
+ inSet(STORY_CELL_KINDS, value.cell) &&
313
+ isPriority(value.priority) &&
314
+ (value.roleClass === undefined || inSet(COLUMN_ROLE_CLASSES, value.roleClass)) &&
315
+ isOptionalText(value.hint);
316
+ exports.isStoryColumn = isStoryColumn;
317
+ /** Every column has a cell on the row, and the cell's kind matches the column's renderer. */
318
+ const hasCellsForColumns = (row, columns) => columns.every(column => {
319
+ const cell = row.cells[column.key];
320
+ return cell !== undefined && cell.kind === column.cell;
321
+ });
322
+ exports.hasCellsForColumns = hasCellsForColumns;
323
+ // ---- Rows
324
+ /** Re-widen a narrowed row so story-specific fields can be inspected without index-signature casts. */
325
+ const fields = (value) => value;
326
+ const isStoryRowBase = (value) => (0, validationHelpers_1.isRecord)(value) &&
327
+ ['resourceId', 'name', 'type', 'subscriptionId', 'tenantId', 'companyId', 'currency', 'fingerprint'].every(key => (0, validationHelpers_1.isString)(value[key])) &&
328
+ isText(value.location) &&
329
+ isNullableNumber(value.spend30d) &&
330
+ isNullableNumber(value.savingsMax) &&
331
+ (value.ownerResourceId === undefined || (0, validationHelpers_1.isString)(value.ownerResourceId)) &&
332
+ (0, validationHelpers_1.isRecord)(value.cells) &&
333
+ Object.values(value.cells).every(exports.isStoryCell);
334
+ const isOversizedResourceRow = (value, days) => {
335
+ if (!isStoryRowBase(value))
336
+ return false;
337
+ const row = fields(value);
338
+ return (0, exports.isUtilizationProfile)(row.profile, days) && (row.betterSku === undefined || (0, exports.isSkuOptionSummary)(row.betterSku));
339
+ };
340
+ exports.isOversizedResourceRow = isOversizedResourceRow;
341
+ const isRightSkuRow = (value) => {
342
+ if (!isStoryRowBase(value))
343
+ return false;
344
+ const row = fields(value);
345
+ return ((0, exports.isSkuOption)(row.current) &&
346
+ Array.isArray(row.options) &&
347
+ row.options.every(exports.isSkuOption) &&
348
+ inSet(RIGHT_SKU_VERDICTS, row.verdict) &&
349
+ (0, validationHelpers_1.isRecord)(row.usage) &&
350
+ isNullableNumber(row.usage.primaryP95) &&
351
+ isNullableNumber(row.usage.secondaryP95) &&
352
+ inSet(TELEMETRY_STATUSES, row.usage.telemetry));
353
+ };
354
+ exports.isRightSkuRow = isRightSkuRow;
355
+ /** Schedule candidates always carry a corroborated weekly running profile. */
356
+ const isScheduleCandidateRow = (value, days) => {
357
+ if (!isStoryRowBase(value))
358
+ return false;
359
+ const row = fields(value);
360
+ if (!(0, exports.isUtilizationProfile)(row.profile, days) || !inSet(SCHEDULE_ACTIONS, row.action))
361
+ return false;
362
+ const profile = row.profile;
363
+ return profile.running !== undefined && profile.running.weekly !== undefined && (0, exports.isCorroboratedRunningProfile)(profile.running);
364
+ };
365
+ exports.isScheduleCandidateRow = isScheduleCandidateRow;
366
+ const isResilienceRow = (value) => {
367
+ if (!isStoryRowBase(value))
368
+ return false;
369
+ const row = fields(value);
370
+ return ((0, exports.isProtectionProfile)(row.protection) &&
371
+ (row.backupRuns === undefined || (Array.isArray(row.backupRuns) && row.backupRuns.every(run => inSet(BACKUP_RUN_STATES, run)))) &&
372
+ (row.lastRecoveryPointAt === undefined || row.lastRecoveryPointAt === null || (0, validationHelpers_1.isDateTime)(row.lastRecoveryPointAt)) &&
373
+ isOptionalNullableNumber(row.uptimeDays) &&
374
+ (row.activeHealthEvents === undefined || (0, validationHelpers_1.isCount)(row.activeHealthEvents)));
375
+ };
376
+ exports.isResilienceRow = isResilienceRow;
377
+ const isHybridBenefitRow = (value) => {
378
+ if (!isStoryRowBase(value))
379
+ return false;
380
+ const row = fields(value);
381
+ return (['productFamily', 'serviceModel', 'configurationStatus', 'technicalEligibilityStatus', 'coverageStatus', 'entitlementStatus'].every(key => (0, validationHelpers_1.isString)(row[key])) &&
382
+ isNullableString(row.edition) &&
383
+ isNullableNumber(row.vCpuCount) &&
384
+ (0, validationHelpers_1.isRecord)(row.decision) &&
385
+ (0, validationHelpers_1.isString)(row.decision.status) &&
386
+ isText(row.decision.headline) &&
387
+ isNullableNumber(row.decision.paybackMonths) &&
388
+ (0, validationHelpers_1.isString)(row.decision.confidence) &&
389
+ (0, validationHelpers_1.isStringArray)(row.reasonCodes) &&
390
+ isNullableNumber(row.licenceObservedStableDays));
391
+ };
392
+ exports.isHybridBenefitRow = isHybridBenefitRow;
393
+ const isCommitmentRow = (value) => {
394
+ if (!isStoryRowBase(value))
395
+ return false;
396
+ const row = fields(value);
397
+ return ((0, exports.isCommitmentCoverage)(row.coverage) &&
398
+ (row.utilization === undefined || ((0, validationHelpers_1.isRecord)(row.utilization) && (0, validationHelpers_1.isString)(row.utilization.primaryKey) && isNullableNumber(row.utilization.p95))));
399
+ };
400
+ exports.isCommitmentRow = isCommitmentRow;
401
+ /** Row guard for a story key; unknown keys reject every row. */
402
+ const storyRowGuard = (storyKey, days) => {
403
+ switch (storyKey) {
404
+ case 'oversized-resources':
405
+ return (row) => (0, exports.isOversizedResourceRow)(row, days);
406
+ case 'right-sku':
407
+ return exports.isRightSkuRow;
408
+ case 'schedule-candidates':
409
+ return (row) => (0, exports.isScheduleCandidateRow)(row, days);
410
+ case 'resilience-recovery':
411
+ return exports.isResilienceRow;
412
+ case 'hybrid-benefit':
413
+ return exports.isHybridBenefitRow;
414
+ case 'commitments':
415
+ return exports.isCommitmentRow;
416
+ default:
417
+ return (_row) => false;
418
+ }
419
+ };
420
+ exports.storyRowGuard = storyRowGuard;
421
+ const isStorySummary = (value) => (0, validationHelpers_1.isRecord)(value) &&
422
+ (0, validationHelpers_1.isRecord)(value.counts) &&
423
+ Object.values(value.counts).every(validationHelpers_1.isCount) &&
424
+ isNumberRecord(value.spend) &&
425
+ (0, validationHelpers_1.isString)(value.currency) &&
426
+ isOptionalText(value.note);
427
+ exports.isStorySummary = isStorySummary;
428
+ const isStorySection = (value, storyKey, limit, days) => {
429
+ if (!(0, validationHelpers_1.isRecord)(value) || !(0, validationHelpers_1.isString)(value.resourceType) || !(0, validationHelpers_1.isString)(value.family))
430
+ return false;
431
+ if (!Array.isArray(value.columns) || !value.columns.every(exports.isStoryColumn))
432
+ return false;
433
+ if (new Set(value.columns.map(column => column.key)).size !== value.columns.length)
434
+ return false;
435
+ if (!(0, validationHelpers_1.isBoundedRows)(value, limit, (0, exports.storyRowGuard)(storyKey, days)))
436
+ return false;
437
+ const columns = value.columns;
438
+ return value.rows.every(row => (0, exports.hasCellsForColumns)(row, columns));
439
+ };
440
+ exports.isStorySection = isStorySection;
441
+ /** Every row of an artifact belongs to the artifact's scope; a row from another company, tenant or subscription is rejected. */
442
+ const isRowInScope = (row, scope) => row.companyId === scope.companyId && row.tenantId === scope.tenantId && row.subscriptionId === scope.subscriptionId;
443
+ exports.isRowInScope = isRowInScope;
444
+ const isScope = (value) => (0, validationHelpers_1.isRecord)(value) && ['companyId', 'tenantId', 'subscriptionId', 'currency'].every(key => (0, validationHelpers_1.isString)(value[key])) && isText(value.displayName);
445
+ const isStoryArtifact = (value, storyKey) => {
446
+ if (!(0, validationHelpers_1.isRecord)(value) || !(0, validationHelpers_1.isString)(value.storyKey) || !STORY_KEY_SET.has(value.storyKey))
447
+ return false;
448
+ if (storyKey !== undefined && value.storyKey !== storyKey)
449
+ return false;
450
+ if (!isScope(value.scope))
451
+ return false;
452
+ if (!(0, validationHelpers_1.isRecord)(value.generation) || !(0, validationHelpers_1.isString)(value.generation.sourceRunId) || !(0, validationHelpers_1.isDateTime)(value.generation.generatedAt))
453
+ return false;
454
+ if (!(0, validationHelpers_1.isRecord)(value.window) ||
455
+ !(0, validationHelpers_1.isDateTime)(value.window.start) ||
456
+ !(0, validationHelpers_1.isDateTime)(value.window.end) ||
457
+ !(0, validationHelpers_1.isCount)(value.window.days) ||
458
+ value.window.days < 1 ||
459
+ !(0, validationHelpers_1.isString)(value.window.timezone))
460
+ return false;
461
+ if (!(0, exports.isStorySummary)(value.summary))
462
+ return false;
463
+ const days = value.window.days;
464
+ const key = value.storyKey;
465
+ if (!Array.isArray(value.sections) || !value.sections.every(section => (0, exports.isStorySection)(section, key, utilizationStories_1.STORY_LIMITS.sectionRows, days)))
466
+ return false;
467
+ const scope = value.scope;
468
+ return value.sections.every(section => section.rows.every(row => (0, exports.isRowInScope)(row, scope)));
469
+ };
470
+ exports.isStoryArtifact = isStoryArtifact;
471
+ /** Bounded sample embedded in the evidence pack; rows are validated for `storyKey`, window days are not known here. */
472
+ const isStorySample = (value, storyKey) => (0, validationHelpers_1.isRecord)(value) &&
473
+ (0, exports.isStorySummary)(value.summary) &&
474
+ Array.isArray(value.sections) &&
475
+ value.sections.every(section => (0, exports.isStorySection)(section, storyKey, utilizationStories_1.STORY_LIMITS.sampleRows));
476
+ exports.isStorySample = isStorySample;
477
+ const isStoryFingerprint = (value) => (0, validationHelpers_1.isRecord)(value) &&
478
+ (0, validationHelpers_1.isString)(value.storyKey) &&
479
+ STORY_KEY_SET.has(value.storyKey) &&
480
+ (0, validationHelpers_1.isString)(value.resourceId) &&
481
+ (0, validationHelpers_1.isString)(value.fingerprint) &&
482
+ isNullableNumber(value.savingsMax);
483
+ exports.isStoryFingerprint = isStoryFingerprint;
484
+ /** Bounded, de-duplicated (storyKey + fingerprint) fingerprint rows for one history period. */
485
+ const isStoryFingerprintRows = (value) => (0, validationHelpers_1.isBoundedRows)(value, utilizationStories_1.STORY_LIMITS.historyFingerprints, exports.isStoryFingerprint) &&
486
+ new Set(value.rows.map(row => `${row.storyKey}|${row.fingerprint}`)).size === value.rows.length;
487
+ exports.isStoryFingerprintRows = isStoryFingerprintRows;
488
+ const isReportingStories = (value) => (0, validationHelpers_1.isRecord)(value) && Object.entries(value).every(([key, sample]) => STORY_KEY_SET.has(key) && (0, exports.isStorySample)(sample, key));
489
+ exports.isReportingStories = isReportingStories;
490
+ // ---- Engine config schemas
491
+ const isUtilizationMetricEntry = (value) => (0, validationHelpers_1.isRecord)(value) &&
492
+ (0, validationHelpers_1.isString)(value.key) &&
493
+ (0, validationHelpers_1.isString)(value.metricName) &&
494
+ isOptionalText(value.collection) &&
495
+ inSet(METRIC_ROLES, value.role) &&
496
+ (value.visual === undefined || inSet(METRIC_VISUALS, value.visual)) &&
497
+ isOptionalText(value.unit) &&
498
+ (value.axisMax === undefined || (0, validationHelpers_1.isFiniteNumber)(value.axisMax)) &&
499
+ isOptionalText(value.axisMaxExpression) &&
500
+ (value.billedOn === undefined || inSet(BILLED_ON, value.billedOn)) &&
501
+ isOptionalText(value.transform) &&
502
+ isOptionalText(value.requires) &&
503
+ isOptionalText(value.when) &&
504
+ (value.dimensions === undefined ||
505
+ ((0, validationHelpers_1.isRecord)(value.dimensions) && inSet(DIMENSION_POLICIES, value.dimensions.policy) && isOptionalText(value.dimensions.name))) &&
506
+ (value.priority === undefined || isPriority(value.priority));
507
+ exports.isUtilizationMetricEntry = isUtilizationMetricEntry;
508
+ const isMetricEntries = (value) => Array.isArray(value) && value.every(exports.isUtilizationMetricEntry);
509
+ const isUtilizationProfileEntry = (value) => (0, validationHelpers_1.isRecord)(value) &&
510
+ (0, validationHelpers_1.isString)(value.family) &&
511
+ (value.producer === undefined || inSet(PRODUCERS, value.producer)) &&
512
+ isOptionalText(value.capacityLabel) &&
513
+ inSet(RUN_MODES, value.runMode) &&
514
+ (value.runningSignal === undefined || isNullableString(value.runningSignal)) &&
515
+ (value.scheduleFit === undefined || isBoolean(value.scheduleFit) || inSet(SCHEDULE_ACTIONS, value.scheduleFit)) &&
516
+ (value.variants === undefined ||
517
+ (Array.isArray(value.variants) &&
518
+ value.variants.every(variant => (0, validationHelpers_1.isRecord)(variant) &&
519
+ (0, validationHelpers_1.isString)(variant.when) &&
520
+ isMetricEntries(variant.metrics) &&
521
+ (variant.verdictRules === undefined || isStringRecord(variant.verdictRules))))) &&
522
+ (value.metrics === undefined || isMetricEntries(value.metrics)) &&
523
+ (value.verdictRules === undefined || isStringRecord(value.verdictRules)) &&
524
+ (value.skuAlternatives === undefined ||
525
+ ((0, validationHelpers_1.isRecord)(value.skuAlternatives) &&
526
+ (0, validationHelpers_1.isString)(value.skuAlternatives.source) &&
527
+ (value.skuAlternatives.capabilityKeys === undefined || (0, validationHelpers_1.isStringArray)(value.skuAlternatives.capabilityKeys))));
528
+ exports.isUtilizationProfileEntry = isUtilizationProfileEntry;
529
+ const isUtilizationProfileConfig = (value) => (0, validationHelpers_1.isRecord)(value) &&
530
+ value.version === 1 &&
531
+ (0, validationHelpers_1.isRecord)(value.defaults) &&
532
+ (0, validationHelpers_1.isCount)(value.defaults.windowDays) &&
533
+ value.defaults.windowDays >= 1 &&
534
+ value.defaults.bucket === 'P1D' &&
535
+ isBoolean(value.defaults.weeklyProfile) &&
536
+ isStringRecord(value.defaults.verdictRules) &&
537
+ (0, validationHelpers_1.isRecord)(value.profiles) &&
538
+ Object.entries(value.profiles).every(([type, entry]) => type === type.toLowerCase() && (0, exports.isUtilizationProfileEntry)(entry));
539
+ exports.isUtilizationProfileConfig = isUtilizationProfileConfig;
540
+ const isResilienceProfileConfig = (value) => (0, validationHelpers_1.isRecord)(value) &&
541
+ value.version === 1 &&
542
+ (0, validationHelpers_1.isRecord)(value.profiles) &&
543
+ Object.entries(value.profiles).every(([type, entry]) => type === type.toLowerCase() &&
544
+ (0, validationHelpers_1.isRecord)(entry) &&
545
+ Array.isArray(entry.capabilities) &&
546
+ entry.capabilities.every(capability => (0, validationHelpers_1.isRecord)(capability) &&
547
+ (0, validationHelpers_1.isString)(capability.key) &&
548
+ isBoolean(capability.required) &&
549
+ (0, validationHelpers_1.isString)(capability.source) &&
550
+ isOptionalText(capability.sla)));
551
+ exports.isResilienceProfileConfig = isResilienceProfileConfig;
552
+ //# sourceMappingURL=utilizationStoriesValidation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utilizationStoriesValidation.js","sourceRoot":"","sources":["../../src/common/utilizationStoriesValidation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /** Dependency-free structural guard primitives shared by every validation module. */
2
+ import type { ReportBoundedRows } from './boundedRows';
3
+ export type JsonRecord = Record<string, unknown>;
4
+ export declare const isRecord: (value: unknown) => value is JsonRecord;
5
+ export declare const isString: (value: unknown) => value is string;
6
+ export declare const isOptionalString: (value: unknown) => boolean;
7
+ export declare const isFiniteNumber: (value: unknown) => value is number;
8
+ export declare const isOptionalFiniteNumber: (value: unknown) => boolean;
9
+ export declare const isOptionalBoolean: (value: unknown) => boolean;
10
+ export declare const isCount: (value: unknown) => value is number;
11
+ export declare const isDateTime: (value: unknown) => value is string;
12
+ export declare const isStringArray: (value: unknown) => value is string[];
13
+ export declare const isCountRecord: (value: unknown) => value is Record<string, number>;
14
+ export declare const countTotal: (value: Record<string, number>) => number;
15
+ export declare const hasOptionalStrings: (value: JsonRecord, keys: readonly string[]) => boolean;
16
+ export declare const hasOptionalNumbers: (value: JsonRecord, keys: readonly string[]) => boolean;
17
+ export declare const isBoundedRows: <T>(value: unknown, limit: number, isRow: (row: unknown) => row is T) => value is ReportBoundedRows<T>;
18
+ //# sourceMappingURL=validationHelpers.d.ts.map