@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
@@ -2,71 +2,55 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.isEvidenceReference = exports.isCommitmentExpirySummary = exports.isRetirementSummary = exports.isRecommendationSummary = exports.isCostSummary = exports.isResourceSummary = exports.isTagCoverage = exports.isSourceFileStatus = exports.hasRequiredRecords = exports.isProjectionRows = exports.isBoundedRows = exports.hasOptionalNumbers = exports.hasOptionalStrings = exports.countTotal = exports.isCountRecord = exports.isStringArray = exports.isDateTime = exports.isCount = exports.isOptionalBoolean = exports.isOptionalFiniteNumber = exports.isFiniteNumber = exports.isOptionalString = exports.isString = exports.isRecord = void 0;
4
4
  const reportEvidence_1 = require("./reportEvidence");
5
- const isRecord = (value) => typeof value === 'object' && value !== null && !Array.isArray(value);
6
- exports.isRecord = isRecord;
7
- const isString = (value) => typeof value === 'string' && value.trim().length > 0;
8
- exports.isString = isString;
9
- const isOptionalString = (value) => value === undefined || (0, exports.isString)(value);
10
- exports.isOptionalString = isOptionalString;
11
- const isFiniteNumber = (value) => typeof value === 'number' && Number.isFinite(value);
12
- exports.isFiniteNumber = isFiniteNumber;
13
- const isOptionalFiniteNumber = (value) => value === undefined || (0, exports.isFiniteNumber)(value);
14
- exports.isOptionalFiniteNumber = isOptionalFiniteNumber;
15
- const isOptionalBoolean = (value) => value === undefined || typeof value === 'boolean';
16
- exports.isOptionalBoolean = isOptionalBoolean;
17
- const isCount = (value) => (0, exports.isFiniteNumber)(value) && Number.isInteger(value) && value >= 0;
18
- exports.isCount = isCount;
19
- const isDateTime = (value) => (0, exports.isString)(value) && Number.isFinite(Date.parse(value));
20
- exports.isDateTime = isDateTime;
21
- const isStringArray = (value) => Array.isArray(value) && value.every(exports.isString);
22
- exports.isStringArray = isStringArray;
23
- const isCountRecord = (value) => (0, exports.isRecord)(value) && Object.values(value).every(exports.isCount);
24
- exports.isCountRecord = isCountRecord;
25
- const countTotal = (value) => Object.values(value).reduce((total, count) => total + count, 0);
26
- exports.countTotal = countTotal;
27
- const hasOptionalStrings = (value, keys) => keys.every(key => (0, exports.isOptionalString)(value[key]));
28
- exports.hasOptionalStrings = hasOptionalStrings;
29
- const hasOptionalNumbers = (value, keys) => keys.every(key => (0, exports.isOptionalFiniteNumber)(value[key]));
30
- exports.hasOptionalNumbers = hasOptionalNumbers;
31
- const isBoundedRows = (value, limit, isRow) => {
32
- if (!(0, exports.isRecord)(value) || !(0, exports.isCount)(value.totalCount) || !(0, exports.isCount)(value.omittedCount) || !Array.isArray(value.rows))
33
- return false;
34
- return value.rows.length <= limit && value.rows.every(isRow) && value.totalCount === value.rows.length + value.omittedCount;
35
- };
36
- exports.isBoundedRows = isBoundedRows;
37
- const isProjectionRows = (value, limit = reportEvidence_1.REPORT_EVIDENCE_LIMITS.detailRows) => (0, exports.isBoundedRows)(value, limit, exports.isRecord);
5
+ const validationHelpers_1 = require("../common/validationHelpers");
6
+ var validationHelpers_2 = require("../common/validationHelpers");
7
+ Object.defineProperty(exports, "isRecord", { enumerable: true, get: function () { return validationHelpers_2.isRecord; } });
8
+ Object.defineProperty(exports, "isString", { enumerable: true, get: function () { return validationHelpers_2.isString; } });
9
+ Object.defineProperty(exports, "isOptionalString", { enumerable: true, get: function () { return validationHelpers_2.isOptionalString; } });
10
+ Object.defineProperty(exports, "isFiniteNumber", { enumerable: true, get: function () { return validationHelpers_2.isFiniteNumber; } });
11
+ Object.defineProperty(exports, "isOptionalFiniteNumber", { enumerable: true, get: function () { return validationHelpers_2.isOptionalFiniteNumber; } });
12
+ Object.defineProperty(exports, "isOptionalBoolean", { enumerable: true, get: function () { return validationHelpers_2.isOptionalBoolean; } });
13
+ Object.defineProperty(exports, "isCount", { enumerable: true, get: function () { return validationHelpers_2.isCount; } });
14
+ Object.defineProperty(exports, "isDateTime", { enumerable: true, get: function () { return validationHelpers_2.isDateTime; } });
15
+ Object.defineProperty(exports, "isStringArray", { enumerable: true, get: function () { return validationHelpers_2.isStringArray; } });
16
+ Object.defineProperty(exports, "isCountRecord", { enumerable: true, get: function () { return validationHelpers_2.isCountRecord; } });
17
+ Object.defineProperty(exports, "countTotal", { enumerable: true, get: function () { return validationHelpers_2.countTotal; } });
18
+ Object.defineProperty(exports, "hasOptionalStrings", { enumerable: true, get: function () { return validationHelpers_2.hasOptionalStrings; } });
19
+ Object.defineProperty(exports, "hasOptionalNumbers", { enumerable: true, get: function () { return validationHelpers_2.hasOptionalNumbers; } });
20
+ Object.defineProperty(exports, "isBoundedRows", { enumerable: true, get: function () { return validationHelpers_2.isBoundedRows; } });
21
+ const isProjectionRows = (value, limit = reportEvidence_1.REPORT_EVIDENCE_LIMITS.detailRows) => (0, validationHelpers_1.isBoundedRows)(value, limit, validationHelpers_1.isRecord);
38
22
  exports.isProjectionRows = isProjectionRows;
39
- const hasRequiredRecords = (value, keys) => keys.every(key => (0, exports.isRecord)(value[key]));
23
+ const hasRequiredRecords = (value, keys) => keys.every(key => (0, validationHelpers_1.isRecord)(value[key]));
40
24
  exports.hasRequiredRecords = hasRequiredRecords;
41
- const isSourceFileStatus = (value) => (0, exports.isRecord)(value) &&
42
- (0, exports.isString)(value.path) &&
25
+ const isSourceFileStatus = (value) => (0, validationHelpers_1.isRecord)(value) &&
26
+ (0, validationHelpers_1.isString)(value.path) &&
43
27
  typeof value.available === 'boolean' &&
44
- (value.recordCount === undefined || (0, exports.isCount)(value.recordCount)) &&
45
- (0, exports.isOptionalString)(value.note);
28
+ (value.recordCount === undefined || (0, validationHelpers_1.isCount)(value.recordCount)) &&
29
+ (0, validationHelpers_1.isOptionalString)(value.note);
46
30
  exports.isSourceFileStatus = isSourceFileStatus;
47
- const isTagCoverage = (value) => (0, exports.isRecord)(value) &&
48
- (0, exports.isCount)(value.withTags) &&
49
- (0, exports.isCount)(value.withoutTags) &&
50
- (0, exports.isFiniteNumber)(value.coveragePercentage) &&
31
+ const isTagCoverage = (value) => (0, validationHelpers_1.isRecord)(value) &&
32
+ (0, validationHelpers_1.isCount)(value.withTags) &&
33
+ (0, validationHelpers_1.isCount)(value.withoutTags) &&
34
+ (0, validationHelpers_1.isFiniteNumber)(value.coveragePercentage) &&
51
35
  Array.isArray(value.topTagKeys) &&
52
- value.topTagKeys.every(row => (0, exports.isRecord)(row) && (0, exports.isString)(row.key) && (0, exports.isCount)(row.count));
36
+ value.topTagKeys.every(row => (0, validationHelpers_1.isRecord)(row) && (0, validationHelpers_1.isString)(row.key) && (0, validationHelpers_1.isCount)(row.count));
53
37
  exports.isTagCoverage = isTagCoverage;
54
- const isTopSpendResource = (value) => (0, exports.isRecord)(value) &&
55
- (0, exports.isString)(value.id) &&
56
- (0, exports.isString)(value.name) &&
57
- (0, exports.isString)(value.type) &&
58
- (0, exports.isOptionalString)(value.location) &&
59
- (0, exports.isFiniteNumber)(value.spend30Days) &&
60
- (0, exports.isOptionalFiniteNumber)(value.spend30DaysAmortized);
61
- const isResourceSummary = (value) => (0, exports.isRecord)(value) &&
62
- (0, exports.isCount)(value.total) &&
38
+ const isTopSpendResource = (value) => (0, validationHelpers_1.isRecord)(value) &&
39
+ (0, validationHelpers_1.isString)(value.id) &&
40
+ (0, validationHelpers_1.isString)(value.name) &&
41
+ (0, validationHelpers_1.isString)(value.type) &&
42
+ (0, validationHelpers_1.isOptionalString)(value.location) &&
43
+ (0, validationHelpers_1.isFiniteNumber)(value.spend30Days) &&
44
+ (0, validationHelpers_1.isOptionalFiniteNumber)(value.spend30DaysAmortized);
45
+ const isResourceSummary = (value) => (0, validationHelpers_1.isRecord)(value) &&
46
+ (0, validationHelpers_1.isCount)(value.total) &&
63
47
  Array.isArray(value.byType) &&
64
48
  value.byType.length <= reportEvidence_1.REPORT_EVIDENCE_LIMITS.summaryDimensions &&
65
- value.byType.every(row => (0, exports.isRecord)(row) && (0, exports.isString)(row.type) && (0, exports.isCount)(row.count) && (0, exports.isOptionalFiniteNumber)(row.spend30Days)) &&
49
+ value.byType.every(row => (0, validationHelpers_1.isRecord)(row) && (0, validationHelpers_1.isString)(row.type) && (0, validationHelpers_1.isCount)(row.count) && (0, validationHelpers_1.isOptionalFiniteNumber)(row.spend30Days)) &&
66
50
  Array.isArray(value.byLocation) &&
67
51
  value.byLocation.length <= reportEvidence_1.REPORT_EVIDENCE_LIMITS.summaryDimensions &&
68
- value.byLocation.every(row => (0, exports.isRecord)(row) && (0, exports.isString)(row.location) && (0, exports.isCount)(row.count) && (0, exports.isOptionalFiniteNumber)(row.spend30Days)) &&
69
- (0, exports.isRecord)(value.tagCoverage) &&
52
+ value.byLocation.every(row => (0, validationHelpers_1.isRecord)(row) && (0, validationHelpers_1.isString)(row.location) && (0, validationHelpers_1.isCount)(row.count) && (0, validationHelpers_1.isOptionalFiniteNumber)(row.spend30Days)) &&
53
+ (0, validationHelpers_1.isRecord)(value.tagCoverage) &&
70
54
  (0, exports.isTagCoverage)(value.tagCoverage) &&
71
55
  Array.isArray(value.tagCoverage.topTagKeys) &&
72
56
  value.tagCoverage.topTagKeys.length <= reportEvidence_1.REPORT_EVIDENCE_LIMITS.summaryRows &&
@@ -74,64 +58,64 @@ const isResourceSummary = (value) => (0, exports.isRecord)(value) &&
74
58
  value.topSpendResources.length <= reportEvidence_1.REPORT_EVIDENCE_LIMITS.summaryRows &&
75
59
  value.topSpendResources.every(isTopSpendResource);
76
60
  exports.isResourceSummary = isResourceSummary;
77
- const isReportBudgetProjection = (value) => (0, exports.isRecord)(value) &&
78
- (0, exports.hasOptionalStrings)(value, ['name', 'startDate', 'endDate', 'timeGrain', 'category', 'currencyCode']) &&
79
- (0, exports.hasOptionalNumbers)(value, ['amount', 'currentSpend', 'forecastedSpend']) &&
80
- (value.filter === undefined || (0, exports.isRecord)(value.filter));
61
+ const isReportBudgetProjection = (value) => (0, validationHelpers_1.isRecord)(value) &&
62
+ (0, validationHelpers_1.hasOptionalStrings)(value, ['name', 'startDate', 'endDate', 'timeGrain', 'category', 'currencyCode']) &&
63
+ (0, validationHelpers_1.hasOptionalNumbers)(value, ['amount', 'currentSpend', 'forecastedSpend']) &&
64
+ (value.filter === undefined || (0, validationHelpers_1.isRecord)(value.filter));
81
65
  const isCostSummary = (value) => {
82
- if (!(0, exports.isRecord)(value) || !(0, exports.isRecord)(value.sourceMetadata) || !Array.isArray(value.topSpendResources))
66
+ if (!(0, validationHelpers_1.isRecord)(value) || !(0, validationHelpers_1.isRecord)(value.sourceMetadata) || !Array.isArray(value.topSpendResources))
83
67
  return false;
84
- if (!(0, exports.hasOptionalStrings)(value, ['currency', 'currencySymbol']) ||
85
- !(0, exports.hasOptionalNumbers)(value, ['spend30Days', 'spend30DaysAmortized', 'totalRetailCost', 'miscCost', 'rollingCostRecordCount']) ||
68
+ if (!(0, validationHelpers_1.hasOptionalStrings)(value, ['currency', 'currencySymbol']) ||
69
+ !(0, validationHelpers_1.hasOptionalNumbers)(value, ['spend30Days', 'spend30DaysAmortized', 'totalRetailCost', 'miscCost', 'rollingCostRecordCount']) ||
86
70
  (value.budget !== undefined && !isReportBudgetProjection(value.budget)) ||
87
- !(0, exports.isString)(value.sourceMetadata.spend30DaysSource) ||
88
- !(0, exports.isString)(value.sourceMetadata.spend30DaysAmortizedSource) ||
89
- !(0, exports.isString)(value.sourceMetadata.totalRetailCostSource) ||
90
- !(0, exports.isString)(value.sourceMetadata.rollingCostFile) ||
91
- !(0, exports.isOptionalFiniteNumber)(value.sourceMetadata.rollingCostRecordCount) ||
71
+ !(0, validationHelpers_1.isString)(value.sourceMetadata.spend30DaysSource) ||
72
+ !(0, validationHelpers_1.isString)(value.sourceMetadata.spend30DaysAmortizedSource) ||
73
+ !(0, validationHelpers_1.isString)(value.sourceMetadata.totalRetailCostSource) ||
74
+ !(0, validationHelpers_1.isString)(value.sourceMetadata.rollingCostFile) ||
75
+ !(0, validationHelpers_1.isOptionalFiniteNumber)(value.sourceMetadata.rollingCostRecordCount) ||
92
76
  !value.topSpendResources.every(isTopSpendResource)) {
93
77
  return false;
94
78
  }
95
79
  return (value.period === undefined ||
96
- ((0, exports.isRecord)(value.period) &&
80
+ ((0, validationHelpers_1.isRecord)(value.period) &&
97
81
  value.period.type === 'rolling_30_days' &&
98
- (0, exports.isString)(value.period.source) &&
99
- (0, exports.hasOptionalStrings)(value.period, ['startDate', 'endDate'])));
82
+ (0, validationHelpers_1.isString)(value.period.source) &&
83
+ (0, validationHelpers_1.hasOptionalStrings)(value.period, ['startDate', 'endDate'])));
100
84
  };
101
85
  exports.isCostSummary = isCostSummary;
102
- const isRecommendationSummary = (value) => (0, exports.isRecord)(value) &&
103
- (0, exports.isCount)(value.total) &&
104
- (0, exports.isCountRecord)(value.byPillar) &&
105
- (0, exports.isCountRecord)(value.byImpact) &&
106
- (0, exports.isCountRecord)(value.byEffort) &&
107
- (0, exports.isStringArray)(value.topRecommendationIds) &&
86
+ const isRecommendationSummary = (value) => (0, validationHelpers_1.isRecord)(value) &&
87
+ (0, validationHelpers_1.isCount)(value.total) &&
88
+ (0, validationHelpers_1.isCountRecord)(value.byPillar) &&
89
+ (0, validationHelpers_1.isCountRecord)(value.byImpact) &&
90
+ (0, validationHelpers_1.isCountRecord)(value.byEffort) &&
91
+ (0, validationHelpers_1.isStringArray)(value.topRecommendationIds) &&
108
92
  value.topRecommendationIds.length <= reportEvidence_1.REPORT_EVIDENCE_LIMITS.topRecommendationIds &&
109
- (0, exports.isRecord)(value.topRecommendationIdsByPillar) &&
110
- Object.values(value.topRecommendationIdsByPillar).every(ids => (0, exports.isStringArray)(ids) && ids.length <= reportEvidence_1.REPORT_EVIDENCE_LIMITS.topRecommendationIdsPerPillar);
93
+ (0, validationHelpers_1.isRecord)(value.topRecommendationIdsByPillar) &&
94
+ Object.values(value.topRecommendationIdsByPillar).every(ids => (0, validationHelpers_1.isStringArray)(ids) && ids.length <= reportEvidence_1.REPORT_EVIDENCE_LIMITS.topRecommendationIdsPerPillar);
111
95
  exports.isRecommendationSummary = isRecommendationSummary;
112
- const isRetirementSummary = (value) => (0, exports.isRecord)(value) &&
113
- (0, exports.isCount)(value.total) &&
114
- (0, exports.isCount)(value.sourceRecordCount) &&
115
- (0, exports.isCount)(value.excludedUnlinked) &&
116
- (0, exports.isCount)(value.excludedCommitmentExpiries) &&
117
- (0, exports.isCount)(value.within180Days) &&
118
- (0, exports.isCount)(value.expiredOrPastDue) &&
96
+ const isRetirementSummary = (value) => (0, validationHelpers_1.isRecord)(value) &&
97
+ (0, validationHelpers_1.isCount)(value.total) &&
98
+ (0, validationHelpers_1.isCount)(value.sourceRecordCount) &&
99
+ (0, validationHelpers_1.isCount)(value.excludedUnlinked) &&
100
+ (0, validationHelpers_1.isCount)(value.excludedCommitmentExpiries) &&
101
+ (0, validationHelpers_1.isCount)(value.within180Days) &&
102
+ (0, validationHelpers_1.isCount)(value.expiredOrPastDue) &&
119
103
  Array.isArray(value.upcoming) &&
120
104
  value.upcoming.length <= reportEvidence_1.REPORT_EVIDENCE_LIMITS.upcomingEvents &&
121
- value.upcoming.every(row => (0, exports.isRecord)(row) && (0, exports.isOptionalString)(row.id) && (0, exports.isOptionalString)(row.title) && (0, exports.isOptionalString)(row.retirementDate) && (0, exports.isCount)(row.resourceCount));
105
+ value.upcoming.every(row => (0, validationHelpers_1.isRecord)(row) && (0, validationHelpers_1.isOptionalString)(row.id) && (0, validationHelpers_1.isOptionalString)(row.title) && (0, validationHelpers_1.isOptionalString)(row.retirementDate) && (0, validationHelpers_1.isCount)(row.resourceCount));
122
106
  exports.isRetirementSummary = isRetirementSummary;
123
- const isCommitmentExpirySummary = (value) => (0, exports.isRecord)(value) &&
124
- (0, exports.isCount)(value.total) &&
125
- (0, exports.isCount)(value.sourceRecordCount) &&
126
- (0, exports.isCount)(value.within180Days) &&
127
- (0, exports.isCount)(value.expiredOrPastDue) &&
107
+ const isCommitmentExpirySummary = (value) => (0, validationHelpers_1.isRecord)(value) &&
108
+ (0, validationHelpers_1.isCount)(value.total) &&
109
+ (0, validationHelpers_1.isCount)(value.sourceRecordCount) &&
110
+ (0, validationHelpers_1.isCount)(value.within180Days) &&
111
+ (0, validationHelpers_1.isCount)(value.expiredOrPastDue) &&
128
112
  Array.isArray(value.upcoming) &&
129
113
  value.upcoming.length <= reportEvidence_1.REPORT_EVIDENCE_LIMITS.upcomingEvents &&
130
- value.upcoming.every(row => (0, exports.isRecord)(row) && (0, exports.isOptionalString)(row.id) && (0, exports.isOptionalString)(row.title) && (0, exports.isOptionalString)(row.expiryDate) && (0, exports.isCount)(row.resourceCount));
114
+ value.upcoming.every(row => (0, validationHelpers_1.isRecord)(row) && (0, validationHelpers_1.isOptionalString)(row.id) && (0, validationHelpers_1.isOptionalString)(row.title) && (0, validationHelpers_1.isOptionalString)(row.expiryDate) && (0, validationHelpers_1.isCount)(row.resourceCount));
131
115
  exports.isCommitmentExpirySummary = isCommitmentExpirySummary;
132
- const isEvidenceReference = (value) => (0, exports.isRecord)(value) &&
133
- (0, exports.isString)(value.source) &&
134
- (0, exports.isString)(value.summary) &&
116
+ const isEvidenceReference = (value) => (0, validationHelpers_1.isRecord)(value) &&
117
+ (0, validationHelpers_1.isString)(value.source) &&
118
+ (0, validationHelpers_1.isString)(value.summary) &&
135
119
  (value.value === undefined || ['string', 'number', 'boolean'].includes(typeof value.value)) &&
136
120
  (typeof value.value !== 'number' || Number.isFinite(value.value));
137
121
  exports.isEvidenceReference = isEvidenceReference;
@@ -1 +1 @@
1
- {"version":3,"file":"reportEvidenceValidationHelpers.js","sourceRoot":"","sources":["../../src/azure/reportEvidenceValidationHelpers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reportEvidenceValidationHelpers.js","sourceRoot":"","sources":["../../src/azure/reportEvidenceValidationHelpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,100 @@
1
+ /**
2
+ * Resilience facts: the small per-resource property reads the resilience story needs that no other collection
3
+ * carries — storage blob-service data-protection settings and lifecycle management, Azure SQL database backup
4
+ * retention and failover groups. Collected in the reliability component beside the data-protection posture and
5
+ * published as `azure-portal/subscriptions/{id}/resilience-facts.json`. Consumed by the cloud-engine
6
+ * `ProtectionProfileBuilder` (`data-protection:<selector>` capability sources) and available to the resilience story page.
7
+ *
8
+ * Spec: `Specs/reporting/utilization-stories-types-package.md` (parent: core `specs/reporting/utilization-stories.md`).
9
+ * Additive: consumers tolerate unknown fields. Field semantics: `undefined` = not read (the request failed, was not
10
+ * applicable or was skipped) and resolves to an `unknown` capability; `null` = read and absent/disabled. A failed
11
+ * read must never be presented as "disabled".
12
+ */
13
+ export declare const RESILIENCE_FACTS_SCHEMA_VERSION: 1;
14
+ export declare const RESILIENCE_FACTS_SOURCE: "AzureResilienceFacts";
15
+ export declare const RESILIENCE_FACTS_PORTAL_FILE: "resilience-facts.json";
16
+ export declare const RESILIENCE_FACTS_RAW_FILE: "data-protection/resilience-facts.json.gz";
17
+ export type ResilienceFactsStatus = 'collected' | 'partial' | 'failed' | 'not-applicable';
18
+ export interface RetentionPolicyFacts {
19
+ enabled: boolean;
20
+ days?: number | null;
21
+ }
22
+ export interface StorageAccountResilienceFacts {
23
+ blobSoftDelete?: RetentionPolicyFacts | null;
24
+ containerSoftDelete?: RetentionPolicyFacts | null;
25
+ versioning?: boolean | null;
26
+ changeFeed?: RetentionPolicyFacts | null;
27
+ pointInTimeRestore?: RetentionPolicyFacts | null;
28
+ /** Lifecycle management policy (`managementPolicies/default`); `present: false` when the account has none. Not read in v1. */
29
+ managementPolicy?: {
30
+ present: boolean;
31
+ ruleCount?: number;
32
+ } | null;
33
+ /** Account kind; `FileStorage` accounts have no blob service and are reported not applicable. */
34
+ kind?: string | null;
35
+ }
36
+ export interface SqlDatabaseResilienceFacts {
37
+ /** Point-in-time restore retention (`backupShortTermRetentionPolicies/default`); undefined when the read failed. */
38
+ shortTermRetentionDays?: number | null;
39
+ diffBackupIntervalHours?: number | null;
40
+ /** Long-term retention (`backupLongTermRetentionPolicies/default`); `enabled` when any of the ISO 8601 periods is set. */
41
+ longTermRetention?: {
42
+ enabled: boolean;
43
+ weekly?: string | null;
44
+ monthly?: string | null;
45
+ yearly?: string | null;
46
+ weekOfYear?: number | null;
47
+ } | null;
48
+ /**
49
+ * Failover group membership resolved from the server's failover groups: `null` = the server's groups were read and
50
+ * the database is not a member; undefined = the listing failed or was skipped.
51
+ */
52
+ failoverGroup?: {
53
+ id: string;
54
+ name: string;
55
+ partnerServers: string[];
56
+ readWriteFailoverPolicy?: string | null;
57
+ role?: string | null;
58
+ } | null;
59
+ backupStorageRedundancy?: string | null;
60
+ }
61
+ export interface ResilienceFactsItem {
62
+ resourceId: string;
63
+ /** Lowercase ARM type, e.g. "microsoft.storage/storageaccounts". */
64
+ resourceType: string;
65
+ status: ResilienceFactsStatus;
66
+ observedAt: string;
67
+ /** Management requests spent on this resource. */
68
+ requestCount: number;
69
+ errors?: string[];
70
+ storage?: StorageAccountResilienceFacts;
71
+ sql?: SqlDatabaseResilienceFacts;
72
+ }
73
+ export interface ResilienceFactsSummary {
74
+ storageAccounts: number;
75
+ sqlDatabases: number;
76
+ sqlServers: number;
77
+ collected: number;
78
+ partial: number;
79
+ failed: number;
80
+ /** Items skipped as not applicable (FileStorage accounts, DataWarehouse pools). */
81
+ notApplicable?: number;
82
+ requestCount: number;
83
+ }
84
+ export interface ResilienceFactsIssue {
85
+ severity: 'warning' | 'error';
86
+ resourceId?: string;
87
+ code: string;
88
+ message: string;
89
+ }
90
+ export interface ResilienceFactsProjection {
91
+ schemaVersion: typeof RESILIENCE_FACTS_SCHEMA_VERSION;
92
+ source: typeof RESILIENCE_FACTS_SOURCE;
93
+ subscriptionId: string;
94
+ tenantId?: string;
95
+ generatedAt: string;
96
+ summary: ResilienceFactsSummary;
97
+ items: ResilienceFactsItem[];
98
+ issues: ResilienceFactsIssue[];
99
+ }
100
+ //# sourceMappingURL=resilienceFacts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resilienceFacts.d.ts","sourceRoot":"","sources":["../../src/azure/resilienceFacts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RESILIENCE_FACTS_RAW_FILE = exports.RESILIENCE_FACTS_PORTAL_FILE = exports.RESILIENCE_FACTS_SOURCE = exports.RESILIENCE_FACTS_SCHEMA_VERSION = void 0;
4
+ /**
5
+ * Resilience facts: the small per-resource property reads the resilience story needs that no other collection
6
+ * carries — storage blob-service data-protection settings and lifecycle management, Azure SQL database backup
7
+ * retention and failover groups. Collected in the reliability component beside the data-protection posture and
8
+ * published as `azure-portal/subscriptions/{id}/resilience-facts.json`. Consumed by the cloud-engine
9
+ * `ProtectionProfileBuilder` (`data-protection:<selector>` capability sources) and available to the resilience story page.
10
+ *
11
+ * Spec: `Specs/reporting/utilization-stories-types-package.md` (parent: core `specs/reporting/utilization-stories.md`).
12
+ * Additive: consumers tolerate unknown fields. Field semantics: `undefined` = not read (the request failed, was not
13
+ * applicable or was skipped) and resolves to an `unknown` capability; `null` = read and absent/disabled. A failed
14
+ * read must never be presented as "disabled".
15
+ */
16
+ exports.RESILIENCE_FACTS_SCHEMA_VERSION = 1;
17
+ exports.RESILIENCE_FACTS_SOURCE = 'AzureResilienceFacts';
18
+ exports.RESILIENCE_FACTS_PORTAL_FILE = 'resilience-facts.json';
19
+ exports.RESILIENCE_FACTS_RAW_FILE = 'data-protection/resilience-facts.json.gz';
20
+ //# sourceMappingURL=resilienceFacts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resilienceFacts.js","sourceRoot":"","sources":["../../src/azure/resilienceFacts.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;;;GAWG;AACU,QAAA,+BAA+B,GAAG,CAAU,CAAC;AAC7C,QAAA,uBAAuB,GAAG,sBAA+B,CAAC;AAC1D,QAAA,4BAA4B,GAAG,uBAAgC,CAAC;AAChE,QAAA,yBAAyB,GAAG,0CAAmD,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { type ResilienceFactsItem, type ResilienceFactsProjection } from './resilienceFacts';
2
+ export declare const isResilienceFactsItem: (value: unknown) => value is ResilienceFactsItem;
3
+ export declare const isResilienceFactsProjection: (value: unknown) => value is ResilienceFactsProjection;
4
+ //# sourceMappingURL=resilienceFactsValidation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resilienceFactsValidation.d.ts","sourceRoot":"","sources":["../../src/azure/resilienceFactsValidation.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,KAAK,mBAAmB,EACxB,KAAK,yBAAyB,EAC/B,MAAM,mBAAmB,CAAC;AA+C3B,eAAO,MAAM,qBAAqB,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,mBAUZ,CAAC;AAErD,eAAO,MAAM,2BAA2B,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,yBAiBnE,CAAC"}
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isResilienceFactsProjection = exports.isResilienceFactsItem = void 0;
4
+ const validationHelpers_1 = require("../common/validationHelpers");
5
+ const resilienceFacts_1 = require("./resilienceFacts");
6
+ const STATUSES = new Set(['collected', 'partial', 'failed', 'not-applicable']);
7
+ const isNullableBoolean = (value) => value === null || typeof value === 'boolean';
8
+ const isNullableNumber = (value) => value === null || (0, validationHelpers_1.isFiniteNumber)(value);
9
+ const isOptionalNullableNumber = (value) => value === undefined || isNullableNumber(value);
10
+ const isOptionalNullableString = (value) => value === undefined || value === null || (0, validationHelpers_1.isString)(value);
11
+ const isRetention = (value) => value === undefined || value === null || ((0, validationHelpers_1.isRecord)(value) && typeof value.enabled === 'boolean' && isOptionalNullableNumber(value.days));
12
+ const isOptionalNullableBoolean = (value) => value === undefined || isNullableBoolean(value);
13
+ const isStorageFacts = (value) => (0, validationHelpers_1.isRecord)(value) &&
14
+ isRetention(value.blobSoftDelete) &&
15
+ isRetention(value.containerSoftDelete) &&
16
+ isOptionalNullableBoolean(value.versioning) &&
17
+ isRetention(value.changeFeed) &&
18
+ isRetention(value.pointInTimeRestore) &&
19
+ isOptionalNullableString(value.kind) &&
20
+ (value.managementPolicy === undefined ||
21
+ value.managementPolicy === null ||
22
+ ((0, validationHelpers_1.isRecord)(value.managementPolicy) &&
23
+ typeof value.managementPolicy.present === 'boolean' &&
24
+ (value.managementPolicy.ruleCount === undefined || (0, validationHelpers_1.isCount)(value.managementPolicy.ruleCount))));
25
+ const isSqlFacts = (value) => (0, validationHelpers_1.isRecord)(value) &&
26
+ isOptionalNullableNumber(value.shortTermRetentionDays) &&
27
+ isOptionalNullableNumber(value.diffBackupIntervalHours) &&
28
+ (value.longTermRetention === undefined ||
29
+ value.longTermRetention === null ||
30
+ ((0, validationHelpers_1.isRecord)(value.longTermRetention) &&
31
+ typeof value.longTermRetention.enabled === 'boolean' &&
32
+ isOptionalNullableString(value.longTermRetention.weekly) &&
33
+ isOptionalNullableString(value.longTermRetention.monthly) &&
34
+ isOptionalNullableString(value.longTermRetention.yearly) &&
35
+ isOptionalNullableNumber(value.longTermRetention.weekOfYear))) &&
36
+ (value.failoverGroup === undefined ||
37
+ value.failoverGroup === null ||
38
+ ((0, validationHelpers_1.isRecord)(value.failoverGroup) &&
39
+ (0, validationHelpers_1.isString)(value.failoverGroup.id) &&
40
+ (0, validationHelpers_1.isString)(value.failoverGroup.name) &&
41
+ (0, validationHelpers_1.isStringArray)(value.failoverGroup.partnerServers) &&
42
+ isOptionalNullableString(value.failoverGroup.readWriteFailoverPolicy) &&
43
+ isOptionalNullableString(value.failoverGroup.role))) &&
44
+ isOptionalNullableString(value.backupStorageRedundancy);
45
+ const isResilienceFactsItem = (value) => (0, validationHelpers_1.isRecord)(value) &&
46
+ (0, validationHelpers_1.isString)(value.resourceId) &&
47
+ (0, validationHelpers_1.isString)(value.resourceType) &&
48
+ (0, validationHelpers_1.isString)(value.status) &&
49
+ STATUSES.has(value.status) &&
50
+ (0, validationHelpers_1.isDateTime)(value.observedAt) &&
51
+ (0, validationHelpers_1.isCount)(value.requestCount) &&
52
+ (value.errors === undefined || (0, validationHelpers_1.isStringArray)(value.errors)) &&
53
+ (value.storage === undefined || isStorageFacts(value.storage)) &&
54
+ (value.sql === undefined || isSqlFacts(value.sql));
55
+ exports.isResilienceFactsItem = isResilienceFactsItem;
56
+ const isResilienceFactsProjection = (value) => (0, validationHelpers_1.isRecord)(value) &&
57
+ value.schemaVersion === resilienceFacts_1.RESILIENCE_FACTS_SCHEMA_VERSION &&
58
+ value.source === resilienceFacts_1.RESILIENCE_FACTS_SOURCE &&
59
+ (0, validationHelpers_1.isString)(value.subscriptionId) &&
60
+ (value.tenantId === undefined || (0, validationHelpers_1.isString)(value.tenantId)) &&
61
+ (0, validationHelpers_1.isDateTime)(value.generatedAt) &&
62
+ (0, validationHelpers_1.isRecord)(value.summary) &&
63
+ (value.summary.notApplicable === undefined || (0, validationHelpers_1.isCount)(value.summary.notApplicable)) &&
64
+ ['storageAccounts', 'sqlDatabases', 'sqlServers', 'collected', 'partial', 'failed', 'requestCount'].every(key => (0, validationHelpers_1.isCount)(value.summary[key])) &&
65
+ Array.isArray(value.items) &&
66
+ value.items.every(exports.isResilienceFactsItem) &&
67
+ Array.isArray(value.issues) &&
68
+ value.issues.every(issue => (0, validationHelpers_1.isRecord)(issue) && (issue.severity === 'warning' || issue.severity === 'error') && (0, validationHelpers_1.isString)(issue.code) && (0, validationHelpers_1.isString)(issue.message));
69
+ exports.isResilienceFactsProjection = isResilienceFactsProjection;
70
+ //# sourceMappingURL=resilienceFactsValidation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resilienceFactsValidation.js","sourceRoot":"","sources":["../../src/azure/resilienceFactsValidation.ts"],"names":[],"mappings":"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"}
@@ -8,6 +8,7 @@ import type { ResourceOptimizationProfile, ResourceSimpleOptimizationProfile } f
8
8
  import { Tags } from '../tags/tags.js';
9
9
  import type { AdvisorScoreSummary } from './advisorScore.js';
10
10
  import type { AzurePortalArtifactGeneration, AzurePortalVersionedArtifact } from './portalArtifacts.js';
11
+ import type { UtilizationProfile, UtilizationSignal } from '../common/utilizationStories.js';
11
12
  import type { AzurePortalHealthEventsSummary, AzureResourceHealthAvailabilityStatusSummary } from './resourceHealth.js';
12
13
  import type { CostComposition, EstimateLens } from './costComposition.js';
13
14
  import { type ArtifactOwnershipBinding, type ArtifactPublicationDecision, type ArtifactRevisionVector } from '../common/artifactEvidence.js';
@@ -141,6 +142,8 @@ export interface AzureResourcePortalItem {
141
142
  vmPricePerformance?: VmPricePerformanceInsights;
142
143
  /** Current Azure Resource Health availability status for this resource, when available. */
143
144
  resourceHealth?: AzureResourceHealthAvailabilityStatusSummary;
145
+ /** Compact utilization verdict + sparklines (engine-produced; absent until the resource has been scanned by the new producer). */
146
+ utilizationSignal?: UtilizationSignal;
144
147
  }
145
148
  export interface SavingsOpportunity {
146
149
  /** Stable identifier for the customer-facing savings opportunity. */
@@ -236,6 +239,8 @@ export interface AzureResourcePluginItem {
236
239
  optimizationProfile?: ResourceOptimizationProfile;
237
240
  /** VM-specific same-region price/performance lookup data. */
238
241
  vmPricePerformance?: VmPricePerformanceInsights;
242
+ /** Full utilization profile (engine-produced; absent until scanned by the new producer). */
243
+ utilizationProfile?: UtilizationProfile;
239
244
  }
240
245
  export interface AzureResourcePluginItemDetailed {
241
246
  currency: string;
@@ -288,6 +293,8 @@ export interface AzureResourcePluginItemDetailed {
288
293
  vmPricePerformance?: VmPricePerformanceInsights;
289
294
  /** Generic compute hosting model alternatives, including cross-platform options. */
290
295
  computeAlternatives?: ComputeAlternativesInsights;
296
+ /** Full utilization profile (engine-produced; absent until scanned by the new producer). */
297
+ utilizationProfile?: UtilizationProfile;
291
298
  }
292
299
  export type VmPricePerformanceOsType = 'linux' | 'windows';
293
300
  /** Operating system installed on the VM or VM scale set. */