@spottoai/types-package 1.0.2-beta.427 → 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 (110) 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/payloads.d.ts +7 -7
  6. package/dist/azure/payloads.d.ts.map +1 -1
  7. package/dist/azure/payloads.js +22 -23
  8. package/dist/azure/payloads.js.map +1 -1
  9. package/dist/azure/reportEvidence.d.ts +7 -5
  10. package/dist/azure/reportEvidence.d.ts.map +1 -1
  11. package/dist/azure/reportEvidence.js.map +1 -1
  12. package/dist/azure/reportEvidenceValidation.d.ts.map +1 -1
  13. package/dist/azure/reportEvidenceValidation.js +5 -1
  14. package/dist/azure/reportEvidenceValidation.js.map +1 -1
  15. package/dist/azure/reportEvidenceValidationHelpers.d.ts +3 -16
  16. package/dist/azure/reportEvidenceValidationHelpers.d.ts.map +1 -1
  17. package/dist/azure/reportEvidenceValidationHelpers.js +79 -95
  18. package/dist/azure/reportEvidenceValidationHelpers.js.map +1 -1
  19. package/dist/azure/resilienceFacts.d.ts +100 -0
  20. package/dist/azure/resilienceFacts.d.ts.map +1 -0
  21. package/dist/azure/resilienceFacts.js +20 -0
  22. package/dist/azure/resilienceFacts.js.map +1 -0
  23. package/dist/azure/resilienceFactsValidation.d.ts +4 -0
  24. package/dist/azure/resilienceFactsValidation.d.ts.map +1 -0
  25. package/dist/azure/resilienceFactsValidation.js +70 -0
  26. package/dist/azure/resilienceFactsValidation.js.map +1 -0
  27. package/dist/azure/views.d.ts +7 -0
  28. package/dist/azure/views.d.ts.map +1 -1
  29. package/dist/azure/views.js.map +1 -1
  30. package/dist/common/boundedRows.d.ts +7 -0
  31. package/dist/common/boundedRows.d.ts.map +1 -0
  32. package/dist/{scheduler/scheduler.js → common/boundedRows.js} +1 -1
  33. package/dist/common/boundedRows.js.map +1 -0
  34. package/dist/common/metricStats.d.ts +29 -0
  35. package/dist/common/metricStats.d.ts.map +1 -0
  36. package/dist/{scheduler/bastionSchedule.js → common/metricStats.js} +1 -1
  37. package/dist/common/metricStats.js.map +1 -0
  38. package/dist/common/utilizationStories.d.ts +516 -0
  39. package/dist/common/utilizationStories.d.ts.map +1 -0
  40. package/dist/common/utilizationStories.js +21 -0
  41. package/dist/common/utilizationStories.js.map +1 -0
  42. package/dist/common/utilizationStoriesValidation.d.ts +48 -0
  43. package/dist/common/utilizationStoriesValidation.d.ts.map +1 -0
  44. package/dist/common/utilizationStoriesValidation.js +552 -0
  45. package/dist/common/utilizationStoriesValidation.js.map +1 -0
  46. package/dist/common/validationHelpers.d.ts +18 -0
  47. package/dist/common/validationHelpers.d.ts.map +1 -0
  48. package/dist/common/validationHelpers.js +36 -0
  49. package/dist/common/validationHelpers.js.map +1 -0
  50. package/dist/esm/azure/payloads.js +19 -20
  51. package/dist/esm/azure/reportEvidenceValidation.js +5 -1
  52. package/dist/esm/azure/reportEvidenceValidationHelpers.js +2 -18
  53. package/dist/esm/azure/resilienceFacts.js +16 -0
  54. package/dist/esm/azure/resilienceFactsValidation.js +64 -0
  55. package/dist/esm/common/utilizationStories.js +17 -0
  56. package/dist/esm/common/utilizationStoriesValidation.js +514 -0
  57. package/dist/esm/common/validationHelpers.js +18 -0
  58. package/dist/esm/index.js +4 -3
  59. package/dist/esm/scheduler/index.js +2 -1
  60. package/dist/esm/scheduler/resourceStrategyCapabilityValidation.js +4 -20
  61. package/dist/esm/scheduler/resourceStrategyContracts.js +4 -2
  62. package/dist/esm/scheduler/resourceStrategyScheduleValidation.js +109 -4
  63. package/dist/esm/scheduler/schedulerContracts.js +1 -0
  64. package/dist/esm/scheduler/schedulerValidation.js +363 -0
  65. package/dist/index.d.ts +4 -3
  66. package/dist/index.d.ts.map +1 -1
  67. package/dist/index.js +4 -3
  68. package/dist/index.js.map +1 -1
  69. package/dist/scheduler/index.d.ts +2 -1
  70. package/dist/scheduler/index.d.ts.map +1 -1
  71. package/dist/scheduler/index.js +2 -1
  72. package/dist/scheduler/index.js.map +1 -1
  73. package/dist/scheduler/resourceStrategyCapabilityValidation.d.ts.map +1 -1
  74. package/dist/scheduler/resourceStrategyCapabilityValidation.js +4 -20
  75. package/dist/scheduler/resourceStrategyCapabilityValidation.js.map +1 -1
  76. package/dist/scheduler/resourceStrategyContracts.d.ts +26 -9
  77. package/dist/scheduler/resourceStrategyContracts.d.ts.map +1 -1
  78. package/dist/scheduler/resourceStrategyContracts.js +4 -2
  79. package/dist/scheduler/resourceStrategyContracts.js.map +1 -1
  80. package/dist/scheduler/resourceStrategyScheduleValidation.d.ts +3 -1
  81. package/dist/scheduler/resourceStrategyScheduleValidation.d.ts.map +1 -1
  82. package/dist/scheduler/resourceStrategyScheduleValidation.js +110 -4
  83. package/dist/scheduler/resourceStrategyScheduleValidation.js.map +1 -1
  84. package/dist/scheduler/schedulerContracts.d.ts +178 -0
  85. package/dist/scheduler/schedulerContracts.d.ts.map +1 -0
  86. package/dist/scheduler/schedulerContracts.js +3 -0
  87. package/dist/scheduler/schedulerContracts.js.map +1 -0
  88. package/dist/scheduler/schedulerValidation.d.ts +14 -0
  89. package/dist/scheduler/schedulerValidation.d.ts.map +1 -0
  90. package/dist/scheduler/schedulerValidation.js +378 -0
  91. package/dist/scheduler/schedulerValidation.js.map +1 -0
  92. package/package.json +5 -3
  93. package/dist/esm/scheduler/bastionScheduleProfile.js +0 -206
  94. package/dist/esm/scheduler/bastionScheduleValidation.js +0 -399
  95. package/dist/scheduler/bastionSchedule.d.ts +0 -113
  96. package/dist/scheduler/bastionSchedule.d.ts.map +0 -1
  97. package/dist/scheduler/bastionSchedule.js.map +0 -1
  98. package/dist/scheduler/bastionScheduleProfile.d.ts +0 -24
  99. package/dist/scheduler/bastionScheduleProfile.d.ts.map +0 -1
  100. package/dist/scheduler/bastionScheduleProfile.js +0 -210
  101. package/dist/scheduler/bastionScheduleProfile.js.map +0 -1
  102. package/dist/scheduler/bastionScheduleValidation.d.ts +0 -10
  103. package/dist/scheduler/bastionScheduleValidation.d.ts.map +0 -1
  104. package/dist/scheduler/bastionScheduleValidation.js +0 -410
  105. package/dist/scheduler/bastionScheduleValidation.js.map +0 -1
  106. package/dist/scheduler/scheduler.d.ts +0 -267
  107. package/dist/scheduler/scheduler.d.ts.map +0 -1
  108. package/dist/scheduler/scheduler.js.map +0 -1
  109. /package/dist/esm/{scheduler/bastionSchedule.js → common/boundedRows.js} +0 -0
  110. /package/dist/esm/{scheduler/scheduler.js → common/metricStats.js} +0 -0
@@ -181,7 +181,6 @@ const RESOURCE_SCHEDULE_DRY_RUN_CHECK_NAMES = [
181
181
  'busy-policy',
182
182
  'blackout',
183
183
  'admission-budgets',
184
- 'evidence-freshness',
185
184
  'notification-routing',
186
185
  ];
187
186
  function isResourceScheduleDryRunCheckProjection(value) {
@@ -240,6 +239,110 @@ export function isResourceScheduleDryRunProjection(value) {
240
239
  }
241
240
  return value.status === (value.checks.every(check => check.status === 'ready') ? 'ready' : 'blocked');
242
241
  }
242
+ /** Validates durable progress for exactly one schedule revision dry-run evaluation. */
243
+ export function isResourceScheduleDryRunEvaluationProjection(value) {
244
+ if (!isWithinJsonByteLimit(value, RESOURCE_STRATEGY_CONTRACT_LIMITS.publicDtoBytes) ||
245
+ !isRecord(value) ||
246
+ containsForbiddenKey(value) ||
247
+ !hasOnlyKeys(value, [
248
+ 'scheduleId',
249
+ 'definitionRevision',
250
+ 'controlGeneration',
251
+ 'evaluationId',
252
+ 'status',
253
+ 'queuedAtUtc',
254
+ 'startedAtUtc',
255
+ 'updatedAtUtc',
256
+ 'completedAtUtc',
257
+ 'attemptCount',
258
+ 'nextAttemptAtUtc',
259
+ 'result',
260
+ 'error',
261
+ ]) ||
262
+ !isBoundedString(value.scheduleId, 200) ||
263
+ !isPositiveInteger(value.definitionRevision) ||
264
+ !isPositiveInteger(value.controlGeneration) ||
265
+ !isBoundedString(value.evaluationId, 500) ||
266
+ !['queued', 'running', 'retrying', 'ready', 'blocked', 'failed'].includes(String(value.status)) ||
267
+ !isIsoTimestamp(value.queuedAtUtc) ||
268
+ !isIsoTimestamp(value.updatedAtUtc) ||
269
+ Date.parse(value.updatedAtUtc) < Date.parse(value.queuedAtUtc) ||
270
+ !isNonNegativeInteger(value.attemptCount)) {
271
+ return false;
272
+ }
273
+ const startedAtUtc = value.startedAtUtc;
274
+ if (startedAtUtc !== undefined &&
275
+ (!isIsoTimestamp(startedAtUtc) ||
276
+ Date.parse(startedAtUtc) < Date.parse(value.queuedAtUtc) ||
277
+ Date.parse(startedAtUtc) > Date.parse(value.updatedAtUtc))) {
278
+ return false;
279
+ }
280
+ const completedAtUtc = value.completedAtUtc;
281
+ if (completedAtUtc !== undefined &&
282
+ (!isIsoTimestamp(completedAtUtc) ||
283
+ startedAtUtc === undefined ||
284
+ Date.parse(completedAtUtc) < Date.parse(startedAtUtc) ||
285
+ Date.parse(completedAtUtc) > Date.parse(value.updatedAtUtc))) {
286
+ return false;
287
+ }
288
+ const nextAttemptAtUtc = value.nextAttemptAtUtc;
289
+ if (nextAttemptAtUtc !== undefined && (!isIsoTimestamp(nextAttemptAtUtc) || Date.parse(nextAttemptAtUtc) < Date.parse(value.updatedAtUtc))) {
290
+ return false;
291
+ }
292
+ const result = value.result;
293
+ if (result !== undefined &&
294
+ (!isResourceScheduleDryRunProjection(result) ||
295
+ result.scheduleId !== value.scheduleId ||
296
+ result.definitionRevision !== value.definitionRevision ||
297
+ result.controlGeneration !== value.controlGeneration)) {
298
+ return false;
299
+ }
300
+ const error = value.error;
301
+ if (error !== undefined &&
302
+ (!isRecord(error) || !hasOnlyKeys(error, ['code', 'message']) || !isBoundedString(error.code, 200) || !isBoundedString(error.message))) {
303
+ return false;
304
+ }
305
+ switch (value.status) {
306
+ case 'queued':
307
+ return (value.attemptCount === 0 &&
308
+ startedAtUtc === undefined &&
309
+ completedAtUtc === undefined &&
310
+ nextAttemptAtUtc === undefined &&
311
+ result === undefined &&
312
+ error === undefined);
313
+ case 'running':
314
+ return (value.attemptCount > 0 &&
315
+ startedAtUtc !== undefined &&
316
+ completedAtUtc === undefined &&
317
+ nextAttemptAtUtc === undefined &&
318
+ result === undefined &&
319
+ error === undefined);
320
+ case 'retrying':
321
+ return (value.attemptCount > 0 &&
322
+ startedAtUtc !== undefined &&
323
+ completedAtUtc === undefined &&
324
+ nextAttemptAtUtc !== undefined &&
325
+ result === undefined &&
326
+ error === undefined);
327
+ case 'ready':
328
+ case 'blocked':
329
+ return (value.attemptCount > 0 &&
330
+ startedAtUtc !== undefined &&
331
+ completedAtUtc !== undefined &&
332
+ nextAttemptAtUtc === undefined &&
333
+ result !== undefined &&
334
+ result.status === value.status &&
335
+ error === undefined);
336
+ case 'failed':
337
+ return (value.attemptCount > 0 &&
338
+ startedAtUtc !== undefined &&
339
+ completedAtUtc !== undefined &&
340
+ nextAttemptAtUtc === undefined &&
341
+ result === undefined &&
342
+ error !== undefined);
343
+ }
344
+ return false;
345
+ }
243
346
  function isManifestRef(value) {
244
347
  return (isRecord(value) &&
245
348
  hasOnlyKeys(value, ['version', 'contentHash']) &&
@@ -336,9 +439,9 @@ export function isResourceSchedulingExecutionProjection(value) {
336
439
  isOptionalBoundedString(value.activeRecoveryCycleId, 200) &&
337
440
  typeof value.restoreOwed === 'boolean' &&
338
441
  Array.isArray(value.allowedCommands) &&
339
- value.allowedCommands.length <= 4 &&
442
+ value.allowedCommands.length <= 5 &&
340
443
  new Set(value.allowedCommands).size === value.allowedCommands.length &&
341
- value.allowedCommands.every(command => ['pause', 'resume', 'restore-now', 'leave-current-state'].includes(String(command))) &&
444
+ value.allowedCommands.every(command => typeof command === 'string' && ['pause', 'resume', 'restore-now', 'restore-and-delete', 'leave-current-state'].includes(command)) &&
342
445
  isIsoTimestamp(value.updatedAtUtc));
343
446
  }
344
447
  function isResourceSchedulingExecutionHistoryItem(value) {
@@ -384,7 +487,9 @@ export function isResourceStrategyScheduleCommand(value) {
384
487
  }
385
488
  if (value.command === 'leave-current-state')
386
489
  return isBoundedString(value.acknowledgement, 2000);
387
- return ['pause', 'resume', 'rerun-dry-run', 'restore-now'].includes(String(value.command)) && value.acknowledgement === undefined;
490
+ return (typeof value.command === 'string' &&
491
+ ['pause', 'resume', 'rerun-dry-run', 'restore-now', 'restore-and-delete'].includes(value.command) &&
492
+ value.acknowledgement === undefined);
388
493
  }
389
494
  export function isResourceStrategyWeeklyScheduleListResponse(value) {
390
495
  return (isWithinJsonByteLimit(value, RESOURCE_STRATEGY_CONTRACT_LIMITS.publicDtoBytes) &&
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,363 @@
1
+ import { RESOURCE_STRATEGY_CONTRACT_LIMITS } from './resourceStrategyContracts.js';
2
+ import { isResourceStrategyScheduleCommand, isResourceStrategyWeeklyScheduleProjection, isResourceStrategyWeeklyScheduleWriteRequest, } from './resourceStrategyScheduleValidation.js';
3
+ import { isResourceSchedulingCapabilityProjection, isResourceSchedulingReadinessProjection } from './resourceStrategyCapabilityValidation.js';
4
+ import { isResourceSchedulePreviewRequest, isResourceSchedulePreviewResponse } from './resourceStrategyFinancialValidation.js';
5
+ import { hasOnlyKeys, isBoundedParameters, isBoundedString, isIanaTimezone, isIsoTimestamp, isOptionalBoundedString, isPositiveInteger, isRecord, isWithinJsonByteLimit, } from './resourceStrategyValidationShared.js';
6
+ import { isScheduledResourceTransitionV1 } from './resourceStrategyScheduleValidation.js';
7
+ const LOCAL_DATE_TIME = /^\d{4}-\d{2}-\d{2}T(?:[01]\d|2[0-3]):[0-5]\d$/u;
8
+ function isLocalDateTime(value) {
9
+ if (typeof value !== 'string' || !LOCAL_DATE_TIME.test(value))
10
+ return false;
11
+ const parsed = new Date(`${value}:00.000Z`);
12
+ return Number.isFinite(parsed.getTime()) && parsed.toISOString().slice(0, 16) === value;
13
+ }
14
+ function isFiveFieldCronExpression(value) {
15
+ return isBoundedString(value, 500) && value.trim() === value && value.split(/\s+/u).length === 5;
16
+ }
17
+ function isRecommendationActionScheduleTarget(value) {
18
+ if (!isRecord(value))
19
+ return false;
20
+ if (value.selectorType === 'single-resource') {
21
+ return hasOnlyKeys(value, ['selectorType', 'resourceId']) && isBoundedString(value.resourceId, 2000);
22
+ }
23
+ if (value.selectorType === 'selected-resources') {
24
+ return (hasOnlyKeys(value, ['selectorType', 'resourceIds']) &&
25
+ Array.isArray(value.resourceIds) &&
26
+ value.resourceIds.length > 0 &&
27
+ value.resourceIds.length <= 100 &&
28
+ new Set(value.resourceIds).size === value.resourceIds.length &&
29
+ value.resourceIds.every(resourceId => isBoundedString(resourceId, 2000)));
30
+ }
31
+ return value.selectorType === 'provider-scope' && hasOnlyKeys(value, ['selectorType']);
32
+ }
33
+ export function isRecommendationActionScheduleWriteRequest(value) {
34
+ try {
35
+ if (!isWithinJsonByteLimit(value, RESOURCE_STRATEGY_CONTRACT_LIMITS.publicDtoBytes) || !isRecord(value))
36
+ return false;
37
+ if (!hasOnlyKeys(value, [
38
+ 'definitionType',
39
+ 'name',
40
+ 'timezone',
41
+ 'trigger',
42
+ 'providerScopeId',
43
+ 'cloudAccountId',
44
+ 'recommendationId',
45
+ 'operation',
46
+ 'target',
47
+ 'initialMode',
48
+ 'notes',
49
+ 'configuration',
50
+ ]) ||
51
+ value.definitionType !== 'recommendation-action' ||
52
+ !isBoundedString(value.name, 500) ||
53
+ !isIanaTimezone(value.timezone) ||
54
+ !isBoundedString(value.providerScopeId, 500) ||
55
+ !isOptionalBoundedString(value.cloudAccountId, 500) ||
56
+ !isBoundedString(value.recommendationId, 500) ||
57
+ value.operation !== 'implement' ||
58
+ !isRecommendationActionScheduleTarget(value.target) ||
59
+ (value.initialMode !== 'active' && value.initialMode !== 'paused') ||
60
+ !isOptionalBoundedString(value.notes, 4000) ||
61
+ (value.configuration !== undefined && !isBoundedParameters(value.configuration)) ||
62
+ !isRecord(value.trigger)) {
63
+ return false;
64
+ }
65
+ if (value.trigger.triggerType === 'once') {
66
+ return hasOnlyKeys(value.trigger, ['triggerType', 'localDateTime']) && isLocalDateTime(value.trigger.localDateTime);
67
+ }
68
+ return (value.trigger.triggerType === 'recurring' &&
69
+ hasOnlyKeys(value.trigger, ['triggerType', 'cronExpression']) &&
70
+ isFiveFieldCronExpression(value.trigger.cronExpression));
71
+ }
72
+ catch {
73
+ return false;
74
+ }
75
+ }
76
+ export function isScheduleWriteRequest(value) {
77
+ return isResourceStrategyWeeklyScheduleWriteRequest(value) || isRecommendationActionScheduleWriteRequest(value);
78
+ }
79
+ export function isRecommendationActionScheduleCommand(value) {
80
+ return (isWithinJsonByteLimit(value, RESOURCE_STRATEGY_CONTRACT_LIMITS.publicDtoBytes) &&
81
+ isRecord(value) &&
82
+ hasOnlyKeys(value, ['command', 'idempotencyKey']) &&
83
+ (value.command === 'pause' || value.command === 'resume') &&
84
+ isBoundedString(value.idempotencyKey, 200));
85
+ }
86
+ export function isScheduleCommand(value) {
87
+ return isRecommendationActionScheduleCommand(value) || isResourceStrategyScheduleCommand(value);
88
+ }
89
+ export function isRecommendationActionScheduleProjection(value) {
90
+ try {
91
+ if (!isWithinJsonByteLimit(value, RESOURCE_STRATEGY_CONTRACT_LIMITS.publicDtoBytes) || !isRecord(value))
92
+ return false;
93
+ return (hasOnlyKeys(value, [
94
+ 'scheduleId',
95
+ 'definitionRevision',
96
+ 'controlGeneration',
97
+ 'etag',
98
+ 'status',
99
+ 'definition',
100
+ 'nextOccurrenceAtUtc',
101
+ 'lastOccurrenceAtUtc',
102
+ 'lastOccurrenceOutcome',
103
+ 'createdAtUtc',
104
+ 'createdBy',
105
+ 'updatedAtUtc',
106
+ 'updatedBy',
107
+ ]) &&
108
+ isBoundedString(value.scheduleId, 500) &&
109
+ isPositiveInteger(value.definitionRevision) &&
110
+ isPositiveInteger(value.controlGeneration) &&
111
+ isBoundedString(value.etag, 2000) &&
112
+ ['active', 'paused', 'completed'].includes(String(value.status)) &&
113
+ isRecommendationActionScheduleWriteRequest(value.definition) &&
114
+ (value.nextOccurrenceAtUtc === undefined || isIsoTimestamp(value.nextOccurrenceAtUtc)) &&
115
+ (value.lastOccurrenceAtUtc === undefined || isIsoTimestamp(value.lastOccurrenceAtUtc)) &&
116
+ (value.lastOccurrenceOutcome === undefined || ['succeeded', 'failed', 'skipped'].includes(String(value.lastOccurrenceOutcome))) &&
117
+ (value.lastOccurrenceAtUtc === undefined) === (value.lastOccurrenceOutcome === undefined) &&
118
+ isIsoTimestamp(value.createdAtUtc) &&
119
+ isBoundedString(value.createdBy, 500) &&
120
+ isIsoTimestamp(value.updatedAtUtc) &&
121
+ isBoundedString(value.updatedBy, 500));
122
+ }
123
+ catch {
124
+ return false;
125
+ }
126
+ }
127
+ export function isScheduleProjection(value) {
128
+ return isResourceStrategyWeeklyScheduleProjection(value) || isRecommendationActionScheduleProjection(value);
129
+ }
130
+ export function isScheduleListResponse(value) {
131
+ return (isWithinJsonByteLimit(value, RESOURCE_STRATEGY_CONTRACT_LIMITS.publicDtoBytes) &&
132
+ isRecord(value) &&
133
+ hasOnlyKeys(value, ['results', 'continuation']) &&
134
+ Array.isArray(value.results) &&
135
+ value.results.length <= RESOURCE_STRATEGY_CONTRACT_LIMITS.listResults &&
136
+ value.results.every(isScheduleProjection) &&
137
+ (value.continuation === undefined ||
138
+ (isRecord(value.continuation) && hasOnlyKeys(value.continuation, ['cursor']) && isBoundedString(value.continuation.cursor, 2000))));
139
+ }
140
+ export function isScheduledRecommendationActionV1(value) {
141
+ try {
142
+ return (isWithinJsonByteLimit(value, RESOURCE_STRATEGY_CONTRACT_LIMITS.publicDtoBytes) &&
143
+ isRecord(value) &&
144
+ hasOnlyKeys(value, [
145
+ 'schemaVersion',
146
+ 'definitionType',
147
+ 'companyId',
148
+ 'providerScopeId',
149
+ 'cloudAccountId',
150
+ 'scheduleId',
151
+ 'definitionRevision',
152
+ 'controlGeneration',
153
+ 'occurrenceKey',
154
+ 'scheduleRunId',
155
+ 'dueAtUtc',
156
+ 'recommendationId',
157
+ 'operation',
158
+ 'target',
159
+ 'configuration',
160
+ 'correlationId',
161
+ ]) &&
162
+ value.schemaVersion === 1 &&
163
+ value.definitionType === 'recommendation-action' &&
164
+ isBoundedString(value.companyId, 500) &&
165
+ isBoundedString(value.providerScopeId, 500) &&
166
+ isOptionalBoundedString(value.cloudAccountId, 500) &&
167
+ isBoundedString(value.scheduleId, 500) &&
168
+ isPositiveInteger(value.definitionRevision) &&
169
+ isPositiveInteger(value.controlGeneration) &&
170
+ isBoundedString(value.occurrenceKey, 2000) &&
171
+ isBoundedString(value.scheduleRunId, 500) &&
172
+ isIsoTimestamp(value.dueAtUtc) &&
173
+ isBoundedString(value.recommendationId, 500) &&
174
+ value.operation === 'implement' &&
175
+ isRecommendationActionScheduleTarget(value.target) &&
176
+ isBoundedParameters(value.configuration) &&
177
+ isBoundedString(value.correlationId, 500));
178
+ }
179
+ catch {
180
+ return false;
181
+ }
182
+ }
183
+ export function isScheduledOccurrenceV1(value) {
184
+ return isScheduledResourceTransitionV1(value) || isScheduledRecommendationActionV1(value);
185
+ }
186
+ const schedulerOperationTypes = new Set([
187
+ 'refresh-capabilities',
188
+ 'create-schedule',
189
+ 'update-schedule',
190
+ 'delete-schedule',
191
+ 'apply-schedule-command',
192
+ 'refresh-readiness',
193
+ 'preview-resource-schedule',
194
+ ]);
195
+ function isEmptyOrBoundedString(value, maxLength) {
196
+ return typeof value === 'string' && value.length <= maxLength;
197
+ }
198
+ function isSchedulerControlCommandV1(value) {
199
+ if (!isRecord(value) || typeof value.commandType !== 'string' || !schedulerOperationTypes.has(value.commandType)) {
200
+ return false;
201
+ }
202
+ switch (value.commandType) {
203
+ case 'refresh-capabilities':
204
+ return hasOnlyKeys(value, ['commandType']);
205
+ case 'create-schedule':
206
+ return (hasOnlyKeys(value, ['commandType', 'definition', 'idempotencyKey']) &&
207
+ isScheduleWriteRequest(value.definition) &&
208
+ isBoundedString(value.idempotencyKey, 200));
209
+ case 'update-schedule':
210
+ return (hasOnlyKeys(value, ['commandType', 'scheduleId', 'definition', 'expectedEtag', 'idempotencyKey']) &&
211
+ isBoundedString(value.scheduleId, 500) &&
212
+ isScheduleWriteRequest(value.definition) &&
213
+ isBoundedString(value.expectedEtag, 2000) &&
214
+ isBoundedString(value.idempotencyKey, 200));
215
+ case 'delete-schedule':
216
+ return (hasOnlyKeys(value, ['commandType', 'scheduleId', 'expectedEtag', 'idempotencyKey']) &&
217
+ isBoundedString(value.scheduleId, 500) &&
218
+ isBoundedString(value.expectedEtag, 2000) &&
219
+ isBoundedString(value.idempotencyKey, 200));
220
+ case 'apply-schedule-command':
221
+ return (hasOnlyKeys(value, ['commandType', 'scheduleId', 'expectedEtag', 'scheduleCommand']) &&
222
+ isBoundedString(value.scheduleId, 500) &&
223
+ isBoundedString(value.expectedEtag, 2000) &&
224
+ isScheduleCommand(value.scheduleCommand));
225
+ case 'refresh-readiness':
226
+ return (hasOnlyKeys(value, ['commandType', 'cloudAccountId', 'providerScopeId', 'resourceId', 'capability']) &&
227
+ isBoundedString(value.cloudAccountId, 500) &&
228
+ isBoundedString(value.providerScopeId, 500) &&
229
+ isBoundedString(value.resourceId, 2000) &&
230
+ isRecord(value.capability) &&
231
+ hasOnlyKeys(value.capability, ['capabilityId', 'capabilityVersion']) &&
232
+ isBoundedString(value.capability.capabilityId, 200) &&
233
+ isPositiveInteger(value.capability.capabilityVersion));
234
+ case 'preview-resource-schedule':
235
+ return hasOnlyKeys(value, ['commandType', 'request']) && isResourceSchedulePreviewRequest(value.request);
236
+ }
237
+ return false;
238
+ }
239
+ export function isSchedulerControlRequestMessageV1(value) {
240
+ try {
241
+ return (isWithinJsonByteLimit(value, RESOURCE_STRATEGY_CONTRACT_LIMITS.publicDtoBytes) &&
242
+ isRecord(value) &&
243
+ hasOnlyKeys(value, [
244
+ 'schemaVersion',
245
+ 'entity',
246
+ 'action',
247
+ 'companyId',
248
+ 'cloudAccountId',
249
+ 'tenantId',
250
+ 'clientId',
251
+ 'operationId',
252
+ 'requestedAtUtc',
253
+ 'actorId',
254
+ 'correlationId',
255
+ 'command',
256
+ ]) &&
257
+ value.schemaVersion === 1 &&
258
+ value.entity === 'scheduler' &&
259
+ value.action === 'control' &&
260
+ isBoundedString(value.companyId, 500) &&
261
+ isEmptyOrBoundedString(value.cloudAccountId, 500) &&
262
+ isEmptyOrBoundedString(value.tenantId, 500) &&
263
+ isEmptyOrBoundedString(value.clientId, 500) &&
264
+ isBoundedString(value.operationId, 200) &&
265
+ isIsoTimestamp(value.requestedAtUtc) &&
266
+ isBoundedString(value.actorId, 500) &&
267
+ isBoundedString(value.correlationId, 500) &&
268
+ isSchedulerControlCommandV1(value.command));
269
+ }
270
+ catch {
271
+ return false;
272
+ }
273
+ }
274
+ export function isSchedulerOperationAcceptedResponse(value) {
275
+ return (isRecord(value) &&
276
+ hasOnlyKeys(value, ['schemaVersion', 'operationId', 'status', 'submittedAtUtc']) &&
277
+ value.schemaVersion === 1 &&
278
+ isBoundedString(value.operationId, 200) &&
279
+ value.status === 'accepted' &&
280
+ isIsoTimestamp(value.submittedAtUtc));
281
+ }
282
+ function isSchedulerOperationResult(value, operationType) {
283
+ if (!isRecord(value) || typeof value.resultType !== 'string')
284
+ return false;
285
+ if (value.resultType === 'capabilities') {
286
+ return (operationType === 'refresh-capabilities' &&
287
+ hasOnlyKeys(value, ['resultType', 'capabilities']) &&
288
+ Array.isArray(value.capabilities) &&
289
+ value.capabilities.every(isResourceSchedulingCapabilityProjection));
290
+ }
291
+ if (value.resultType === 'schedule') {
292
+ return (['create-schedule', 'update-schedule', 'apply-schedule-command'].includes(operationType) &&
293
+ hasOnlyKeys(value, ['resultType', 'schedule']) &&
294
+ isScheduleProjection(value.schedule));
295
+ }
296
+ if (value.resultType === 'deleted') {
297
+ return operationType === 'delete-schedule' && hasOnlyKeys(value, ['resultType']);
298
+ }
299
+ if (value.resultType === 'readiness') {
300
+ return (operationType === 'refresh-readiness' &&
301
+ hasOnlyKeys(value, ['resultType', 'readiness']) &&
302
+ isResourceSchedulingReadinessProjection(value.readiness));
303
+ }
304
+ return (value.resultType === 'preview' &&
305
+ operationType === 'preview-resource-schedule' &&
306
+ hasOnlyKeys(value, ['resultType', 'preview']) &&
307
+ isResourceSchedulePreviewResponse(value.preview));
308
+ }
309
+ export function isSchedulerOperationProjection(value) {
310
+ try {
311
+ if (!isWithinJsonByteLimit(value, RESOURCE_STRATEGY_CONTRACT_LIMITS.publicDtoBytes) ||
312
+ !isRecord(value) ||
313
+ value.schemaVersion !== 1 ||
314
+ !isBoundedString(value.companyId, 500) ||
315
+ !isBoundedString(value.operationId, 200) ||
316
+ typeof value.operationType !== 'string' ||
317
+ !schedulerOperationTypes.has(value.operationType) ||
318
+ !isIsoTimestamp(value.submittedAtUtc) ||
319
+ !isIsoTimestamp(value.updatedAtUtc)) {
320
+ return false;
321
+ }
322
+ const operationType = value.operationType;
323
+ if (value.status === 'pending') {
324
+ return hasOnlyKeys(value, ['schemaVersion', 'companyId', 'operationId', 'operationType', 'status', 'submittedAtUtc', 'updatedAtUtc']);
325
+ }
326
+ if (value.status === 'succeeded') {
327
+ return (hasOnlyKeys(value, [
328
+ 'schemaVersion',
329
+ 'companyId',
330
+ 'operationId',
331
+ 'operationType',
332
+ 'status',
333
+ 'submittedAtUtc',
334
+ 'updatedAtUtc',
335
+ 'completedAtUtc',
336
+ 'result',
337
+ ]) &&
338
+ isIsoTimestamp(value.completedAtUtc) &&
339
+ isSchedulerOperationResult(value.result, operationType));
340
+ }
341
+ return (value.status === 'failed' &&
342
+ hasOnlyKeys(value, [
343
+ 'schemaVersion',
344
+ 'companyId',
345
+ 'operationId',
346
+ 'operationType',
347
+ 'status',
348
+ 'submittedAtUtc',
349
+ 'updatedAtUtc',
350
+ 'completedAtUtc',
351
+ 'error',
352
+ ]) &&
353
+ isIsoTimestamp(value.completedAtUtc) &&
354
+ isRecord(value.error) &&
355
+ hasOnlyKeys(value.error, ['code', 'message', 'retryable']) &&
356
+ isBoundedString(value.error.code, 100) &&
357
+ isBoundedString(value.error.message, 500) &&
358
+ typeof value.error.retryable === 'boolean');
359
+ }
360
+ catch {
361
+ return false;
362
+ }
363
+ }
package/dist/index.d.ts CHANGED
@@ -20,6 +20,8 @@ export * from './azure/metrics';
20
20
  export * from './azure/payloads';
21
21
  export * from './azure/portalArtifacts';
22
22
  export * from './azure/dataProtection';
23
+ export * from './azure/resilienceFacts';
24
+ export * from './azure/resilienceFactsValidation';
23
25
  export * from './azure/prices';
24
26
  export * from './azure/relationships';
25
27
  export * from './azure/recommendations';
@@ -32,6 +34,8 @@ export * from './azure/resources';
32
34
  export * from './azure/reports';
33
35
  export * from './azure/reportEvidence';
34
36
  export * from './azure/reportEvidenceValidation';
37
+ export * from './common/utilizationStories';
38
+ export * from './common/utilizationStoriesValidation';
35
39
  export * from './azure/reportDailySpend';
36
40
  export * from './azure/reportDailySpendValidation';
37
41
  export * from './azure/reportSpend';
@@ -63,9 +67,6 @@ export * from './common/artifactEvidence';
63
67
  export * from './company';
64
68
  export * from './customProperties';
65
69
  export * from './scheduler';
66
- export * from './scheduler/bastionSchedule';
67
- export * from './scheduler/bastionScheduleProfile';
68
- export * from './scheduler/bastionScheduleValidation';
69
70
  export * from './ai';
70
71
  export * from './environment';
71
72
  export * from './events';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,iEAAiE;AACjE,cAAc,gBAAgB,CAAC;AAC/B,cAAc,yBAAyB,CAAC;AACxC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,uCAAuC,CAAC;AACtD,cAAc,iBAAiB,CAAC;AAChC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mCAAmC,CAAC;AAClD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,yCAAyC,CAAC;AACxD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,cAAc,kCAAkC,CAAC;AACjD,cAAc,0BAA0B,CAAC;AACzC,cAAc,oCAAoC,CAAC;AACnD,cAAc,qBAAqB,CAAC;AACpC,OAAO,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACpH,cAAc,4BAA4B,CAAC;AAC3C,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,OAAO,EAAE,oCAAoC,EAAE,uBAAuB,EAAE,MAAM,6CAA6C,CAAC;AAC5H,cAAc,2BAA2B,CAAC;AAC1C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,yCAAyC,CAAC;AACxD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,OAAO,CAAC;AACtB,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,2BAA2B,CAAC;AAC1C,cAAc,WAAW,CAAC;AAC1B,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,6BAA6B,CAAC;AAC5C,cAAc,oCAAoC,CAAC;AACnD,cAAc,uCAAuC,CAAC;AACtD,cAAc,MAAM,CAAC;AACrB,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,4BAA4B,CAAC;AAC3C,cAAc,QAAQ,CAAC;AACvB,cAAc,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,iEAAiE;AACjE,cAAc,gBAAgB,CAAC;AAC/B,cAAc,yBAAyB,CAAC;AACxC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,uCAAuC,CAAC;AACtD,cAAc,iBAAiB,CAAC;AAChC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mCAAmC,CAAC;AAClD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,yCAAyC,CAAC;AACxD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,mCAAmC,CAAC;AAClD,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,cAAc,kCAAkC,CAAC;AACjD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,uCAAuC,CAAC;AACtD,cAAc,0BAA0B,CAAC;AACzC,cAAc,oCAAoC,CAAC;AACnD,cAAc,qBAAqB,CAAC;AACpC,OAAO,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACpH,cAAc,4BAA4B,CAAC;AAC3C,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,OAAO,EAAE,oCAAoC,EAAE,uBAAuB,EAAE,MAAM,6CAA6C,CAAC;AAC5H,cAAc,2BAA2B,CAAC;AAC1C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,yCAAyC,CAAC;AACxD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,OAAO,CAAC;AACtB,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,2BAA2B,CAAC;AAC1C,cAAc,WAAW,CAAC;AAC1B,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,MAAM,CAAC;AACrB,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,4BAA4B,CAAC;AAC3C,cAAc,QAAQ,CAAC;AACvB,cAAc,aAAa,CAAC"}
package/dist/index.js CHANGED
@@ -37,6 +37,8 @@ __exportStar(require("./azure/metrics"), exports);
37
37
  __exportStar(require("./azure/payloads"), exports);
38
38
  __exportStar(require("./azure/portalArtifacts"), exports);
39
39
  __exportStar(require("./azure/dataProtection"), exports);
40
+ __exportStar(require("./azure/resilienceFacts"), exports);
41
+ __exportStar(require("./azure/resilienceFactsValidation"), exports);
40
42
  __exportStar(require("./azure/prices"), exports);
41
43
  __exportStar(require("./azure/relationships"), exports);
42
44
  __exportStar(require("./azure/recommendations"), exports);
@@ -49,6 +51,8 @@ __exportStar(require("./azure/resources"), exports);
49
51
  __exportStar(require("./azure/reports"), exports);
50
52
  __exportStar(require("./azure/reportEvidence"), exports);
51
53
  __exportStar(require("./azure/reportEvidenceValidation"), exports);
54
+ __exportStar(require("./common/utilizationStories"), exports);
55
+ __exportStar(require("./common/utilizationStoriesValidation"), exports);
52
56
  __exportStar(require("./azure/reportDailySpend"), exports);
53
57
  __exportStar(require("./azure/reportDailySpendValidation"), exports);
54
58
  __exportStar(require("./azure/reportSpend"), exports);
@@ -85,9 +89,6 @@ __exportStar(require("./common/artifactEvidence"), exports);
85
89
  __exportStar(require("./company"), exports);
86
90
  __exportStar(require("./customProperties"), exports);
87
91
  __exportStar(require("./scheduler"), exports);
88
- __exportStar(require("./scheduler/bastionSchedule"), exports);
89
- __exportStar(require("./scheduler/bastionScheduleProfile"), exports);
90
- __exportStar(require("./scheduler/bastionScheduleValidation"), exports);
91
92
  __exportStar(require("./ai"), exports);
92
93
  __exportStar(require("./environment"), exports);
93
94
  __exportStar(require("./events"), exports);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,iEAAiE;AACjE,iDAA+B;AAC/B,0DAAwC;AACxC,gEAA8C;AAC9C,uDAAqC;AACrC,8DAA4C;AAC5C,wEAAsD;AACtD,kDAAgC;AAChC,4DAA0C;AAC1C,oEAAkD;AAClD,gEAA8C;AAC9C,0EAAwD;AACxD,+DAA6C;AAC7C,uDAAqC;AACrC,mDAAiC;AACjC,8DAA4C;AAC5C,oDAAkC;AAClC,kDAAgC;AAChC,kDAAgC;AAChC,mDAAiC;AACjC,0DAAwC;AACxC,yDAAuC;AACvC,iDAA+B;AAC/B,wDAAsC;AACtC,0DAAwC;AACxC,+DAA6C;AAC7C,8DAA4C;AAC5C,iEAA+C;AAC/C,8DAA4C;AAC5C,+DAA6C;AAC7C,oDAAkC;AAClC,kDAAgC;AAChC,yDAAuC;AACvC,mEAAiD;AACjD,2DAAyC;AACzC,qEAAmD;AACnD,sDAAoC;AACpC,uEAAoH;AAA3G,6HAAA,oBAAoB,OAAA;AAAE,gIAAA,uBAAuB,OAAA;AAAE,6HAAA,oBAAoB,OAAA;AAC5E,6DAA2C;AAC3C,0DAAwC;AACxC,uDAAqC;AACrC,yDAAuC;AACvC,wDAAsC;AACtC,gDAA8B;AAC9B,mDAAiC;AACjC,kDAAgC;AAChC,mGAA4H;AAAnH,2JAAA,oCAAoC,OAAA;AAAE,8IAAA,uBAAuB,OAAA;AACtE,4DAA0C;AAC1C,iEAA+C;AAC/C,0EAAwD;AACxD,+DAA6C;AAC7C,4DAA0C;AAC1C,qDAAmC;AACnC,4DAA0C;AAC1C,yDAAuC;AACvC,4DAA0C;AAC1C,wCAAsB;AACtB,6CAA2B;AAC3B,gDAA8B;AAC9B,0CAAwB;AACxB,2CAAyB;AACzB,4DAA0C;AAC1C,4CAA0B;AAC1B,qDAAmC;AACnC,8CAA4B;AAC5B,8DAA4C;AAC5C,qEAAmD;AACnD,wEAAsD;AACtD,uCAAqB;AACrB,gDAA8B;AAC9B,2CAAyB;AACzB,iDAA+B;AAC/B,6CAA2B;AAC3B,6DAA2C;AAC3C,yCAAuB;AACvB,8CAA4B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,iEAAiE;AACjE,iDAA+B;AAC/B,0DAAwC;AACxC,gEAA8C;AAC9C,uDAAqC;AACrC,8DAA4C;AAC5C,wEAAsD;AACtD,kDAAgC;AAChC,4DAA0C;AAC1C,oEAAkD;AAClD,gEAA8C;AAC9C,0EAAwD;AACxD,+DAA6C;AAC7C,uDAAqC;AACrC,mDAAiC;AACjC,8DAA4C;AAC5C,oDAAkC;AAClC,kDAAgC;AAChC,kDAAgC;AAChC,mDAAiC;AACjC,0DAAwC;AACxC,yDAAuC;AACvC,0DAAwC;AACxC,oEAAkD;AAClD,iDAA+B;AAC/B,wDAAsC;AACtC,0DAAwC;AACxC,+DAA6C;AAC7C,8DAA4C;AAC5C,iEAA+C;AAC/C,8DAA4C;AAC5C,+DAA6C;AAC7C,oDAAkC;AAClC,kDAAgC;AAChC,yDAAuC;AACvC,mEAAiD;AACjD,8DAA4C;AAC5C,wEAAsD;AACtD,2DAAyC;AACzC,qEAAmD;AACnD,sDAAoC;AACpC,uEAAoH;AAA3G,6HAAA,oBAAoB,OAAA;AAAE,gIAAA,uBAAuB,OAAA;AAAE,6HAAA,oBAAoB,OAAA;AAC5E,6DAA2C;AAC3C,0DAAwC;AACxC,uDAAqC;AACrC,yDAAuC;AACvC,wDAAsC;AACtC,gDAA8B;AAC9B,mDAAiC;AACjC,kDAAgC;AAChC,mGAA4H;AAAnH,2JAAA,oCAAoC,OAAA;AAAE,8IAAA,uBAAuB,OAAA;AACtE,4DAA0C;AAC1C,iEAA+C;AAC/C,0EAAwD;AACxD,+DAA6C;AAC7C,4DAA0C;AAC1C,qDAAmC;AACnC,4DAA0C;AAC1C,yDAAuC;AACvC,4DAA0C;AAC1C,wCAAsB;AACtB,6CAA2B;AAC3B,gDAA8B;AAC9B,0CAAwB;AACxB,2CAAyB;AACzB,4DAA0C;AAC1C,4CAA0B;AAC1B,qDAAmC;AACnC,8CAA4B;AAC5B,uCAAqB;AACrB,gDAA8B;AAC9B,2CAAyB;AACzB,iDAA+B;AAC/B,6CAA2B;AAC3B,6DAA2C;AAC3C,yCAAuB;AACvB,8CAA4B"}
@@ -1,4 +1,5 @@
1
- export * from './scheduler';
1
+ export * from './schedulerContracts';
2
+ export * from './schedulerValidation';
2
3
  export * from './resourceStrategy';
3
4
  export * from './weeklyAvailabilityFixtures';
4
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/scheduler/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,8BAA8B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/scheduler/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,8BAA8B,CAAC"}
@@ -14,7 +14,8 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./scheduler"), exports);
17
+ __exportStar(require("./schedulerContracts"), exports);
18
+ __exportStar(require("./schedulerValidation"), exports);
18
19
  __exportStar(require("./resourceStrategy"), exports);
19
20
  __exportStar(require("./weeklyAvailabilityFixtures"), exports);
20
21
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/scheduler/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8CAA4B;AAC5B,qDAAmC;AACnC,+DAA6C"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/scheduler/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,uDAAqC;AACrC,wDAAsC;AACtC,qDAAmC;AACnC,+DAA6C"}
@@ -1 +1 @@
1
- {"version":3,"file":"resourceStrategyCapabilityValidation.d.ts","sourceRoot":"","sources":["../../src/scheduler/resourceStrategyCapabilityValidation.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,sCAAsC,EAC3C,KAAK,qCAAqC,EAE3C,MAAM,6BAA6B,CAAC;AAerC,wBAAgB,wCAAwC,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,sCAAsC,CA8MxH;AAkBD,wBAAgB,uCAAuC,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,qCAAqC,CAmCtH"}
1
+ {"version":3,"file":"resourceStrategyCapabilityValidation.d.ts","sourceRoot":"","sources":["../../src/scheduler/resourceStrategyCapabilityValidation.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,sCAAsC,EAC3C,KAAK,qCAAqC,EAE3C,MAAM,6BAA6B,CAAC;AAerC,wBAAgB,wCAAwC,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,sCAAsC,CA0LxH;AAkBD,wBAAgB,uCAAuC,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,qCAAqC,CAmCtH"}