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

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 (58) hide show
  1. package/dist/azure/payloads.d.ts +7 -7
  2. package/dist/azure/payloads.d.ts.map +1 -1
  3. package/dist/azure/payloads.js +22 -23
  4. package/dist/azure/payloads.js.map +1 -1
  5. package/dist/esm/azure/payloads.js +19 -20
  6. package/dist/esm/index.js +0 -3
  7. package/dist/esm/scheduler/index.js +2 -1
  8. package/dist/esm/scheduler/resourceStrategyCapabilityValidation.js +4 -20
  9. package/dist/esm/scheduler/resourceStrategyContracts.js +4 -2
  10. package/dist/esm/scheduler/resourceStrategyScheduleValidation.js +109 -4
  11. package/dist/esm/scheduler/schedulerValidation.js +363 -0
  12. package/dist/index.d.ts +0 -3
  13. package/dist/index.d.ts.map +1 -1
  14. package/dist/index.js +0 -3
  15. package/dist/index.js.map +1 -1
  16. package/dist/scheduler/index.d.ts +2 -1
  17. package/dist/scheduler/index.d.ts.map +1 -1
  18. package/dist/scheduler/index.js +2 -1
  19. package/dist/scheduler/index.js.map +1 -1
  20. package/dist/scheduler/resourceStrategyCapabilityValidation.d.ts.map +1 -1
  21. package/dist/scheduler/resourceStrategyCapabilityValidation.js +4 -20
  22. package/dist/scheduler/resourceStrategyCapabilityValidation.js.map +1 -1
  23. package/dist/scheduler/resourceStrategyContracts.d.ts +26 -9
  24. package/dist/scheduler/resourceStrategyContracts.d.ts.map +1 -1
  25. package/dist/scheduler/resourceStrategyContracts.js +4 -2
  26. package/dist/scheduler/resourceStrategyContracts.js.map +1 -1
  27. package/dist/scheduler/resourceStrategyScheduleValidation.d.ts +3 -1
  28. package/dist/scheduler/resourceStrategyScheduleValidation.d.ts.map +1 -1
  29. package/dist/scheduler/resourceStrategyScheduleValidation.js +110 -4
  30. package/dist/scheduler/resourceStrategyScheduleValidation.js.map +1 -1
  31. package/dist/scheduler/schedulerContracts.d.ts +178 -0
  32. package/dist/scheduler/schedulerContracts.d.ts.map +1 -0
  33. package/dist/scheduler/{bastionSchedule.js → schedulerContracts.js} +1 -1
  34. package/dist/scheduler/schedulerContracts.js.map +1 -0
  35. package/dist/scheduler/schedulerValidation.d.ts +14 -0
  36. package/dist/scheduler/schedulerValidation.d.ts.map +1 -0
  37. package/dist/scheduler/schedulerValidation.js +378 -0
  38. package/dist/scheduler/schedulerValidation.js.map +1 -0
  39. package/package.json +4 -3
  40. package/dist/esm/scheduler/bastionScheduleProfile.js +0 -206
  41. package/dist/esm/scheduler/bastionScheduleValidation.js +0 -399
  42. package/dist/esm/scheduler/scheduler.js +0 -1
  43. package/dist/scheduler/bastionSchedule.d.ts +0 -113
  44. package/dist/scheduler/bastionSchedule.d.ts.map +0 -1
  45. package/dist/scheduler/bastionSchedule.js.map +0 -1
  46. package/dist/scheduler/bastionScheduleProfile.d.ts +0 -24
  47. package/dist/scheduler/bastionScheduleProfile.d.ts.map +0 -1
  48. package/dist/scheduler/bastionScheduleProfile.js +0 -210
  49. package/dist/scheduler/bastionScheduleProfile.js.map +0 -1
  50. package/dist/scheduler/bastionScheduleValidation.d.ts +0 -10
  51. package/dist/scheduler/bastionScheduleValidation.d.ts.map +0 -1
  52. package/dist/scheduler/bastionScheduleValidation.js +0 -410
  53. package/dist/scheduler/bastionScheduleValidation.js.map +0 -1
  54. package/dist/scheduler/scheduler.d.ts +0 -267
  55. package/dist/scheduler/scheduler.d.ts.map +0 -1
  56. package/dist/scheduler/scheduler.js +0 -3
  57. package/dist/scheduler/scheduler.js.map +0 -1
  58. /package/dist/esm/scheduler/{bastionSchedule.js → schedulerContracts.js} +0 -0
@@ -1,399 +0,0 @@
1
- const MAX_ID_LENGTH = 2048;
2
- const MAX_NAME_LENGTH = 120;
3
- const MAX_NOTES_LENGTH = 1000;
4
- const MAX_ACTION_COUNT = 64;
5
- const MAX_WINDOWS = 14;
6
- const MAX_WRITE_REQUEST_BYTES = 32 * 1024;
7
- const MAX_PUBLIC_DTO_BYTES = 16 * 1024;
8
- const MINUTES_PER_WEEK = 7 * 24 * 60;
9
- const readinessStatuses = new Set(['confirmed', 'missing', 'unknown', 'unsupported']);
10
- const readinessReasonCodes = new Set([
11
- 'feature-disabled',
12
- 'resource-not-found',
13
- 'unsupported-profile',
14
- 'unsupported-region',
15
- 'missing-permission',
16
- 'permission-unknown',
17
- 'management-lock',
18
- ]);
19
- const availabilityPhases = new Set(['available', 'removing', 'absent', 'restoring']);
20
- const availabilityResults = new Set(['succeeded', 'skipped', 'blocked', 'failed', 'pending']);
21
- const availabilityReasonCodes = new Set([
22
- ...readinessReasonCodes,
23
- 'active-sessions',
24
- 'session-state-unknown',
25
- 'snapshot-failed',
26
- 'active-snapshot-missing',
27
- 'source-drift',
28
- 'dependency-missing',
29
- 'dependency-drift',
30
- 'stale-run',
31
- 'continuation-overdue',
32
- 'azure-operation-failed',
33
- 'restore-timeout',
34
- ]);
35
- function isPlainRecord(value) {
36
- if (typeof value !== 'object' || value === null || Array.isArray(value)) {
37
- return false;
38
- }
39
- try {
40
- const prototype = Object.getPrototypeOf(value);
41
- return prototype === Object.prototype || prototype === null;
42
- }
43
- catch {
44
- return false;
45
- }
46
- }
47
- function hasExactFields(value, requiredFields, optionalFields = []) {
48
- if (!isPlainRecord(value)) {
49
- return false;
50
- }
51
- try {
52
- const allowedFields = new Set([...requiredFields, ...optionalFields]);
53
- const keys = Object.keys(value);
54
- return requiredFields.every(field => Object.prototype.hasOwnProperty.call(value, field)) && keys.every(field => allowedFields.has(field));
55
- }
56
- catch {
57
- return false;
58
- }
59
- }
60
- function utf8ByteLength(value) {
61
- let bytes = 0;
62
- for (let index = 0; index < value.length; index += 1) {
63
- const code = value.charCodeAt(index);
64
- if (code <= 0x7f) {
65
- bytes += 1;
66
- }
67
- else if (code <= 0x7ff) {
68
- bytes += 2;
69
- }
70
- else if (code >= 0xd800 &&
71
- code <= 0xdbff &&
72
- index + 1 < value.length &&
73
- value.charCodeAt(index + 1) >= 0xdc00 &&
74
- value.charCodeAt(index + 1) <= 0xdfff) {
75
- bytes += 4;
76
- index += 1;
77
- }
78
- else {
79
- bytes += 3;
80
- }
81
- }
82
- return bytes;
83
- }
84
- function isWithinJsonSize(value, maximumBytes) {
85
- try {
86
- const json = JSON.stringify(value);
87
- return typeof json === 'string' && utf8ByteLength(json) <= maximumBytes;
88
- }
89
- catch {
90
- return false;
91
- }
92
- }
93
- function isBoundedString(value, maximumLength, allowEmpty = false) {
94
- return typeof value === 'string' && value.length <= maximumLength && (allowEmpty || value.trim().length > 0);
95
- }
96
- function isPositiveSafeInteger(value) {
97
- return Number.isSafeInteger(value) && typeof value === 'number' && value > 0;
98
- }
99
- function isIsoUtcTimestamp(value) {
100
- if (typeof value !== 'string' || !/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d{1,3})?Z$/.test(value)) {
101
- return false;
102
- }
103
- const parsed = new Date(value);
104
- if (!Number.isFinite(parsed.getTime())) {
105
- return false;
106
- }
107
- const normalizedInput = value.includes('.')
108
- ? value.replace(/\.(\d{1,3})Z$/, (_, fraction) => `.${fraction.padEnd(3, '0')}Z`)
109
- : value.replace('Z', '.000Z');
110
- return parsed.toISOString() === normalizedInput;
111
- }
112
- function localTimeToMinutes(value) {
113
- if (typeof value !== 'string' || !/^(?:[01]\d|2[0-3]):[0-5]\d$/.test(value)) {
114
- return undefined;
115
- }
116
- const [hours, minutes] = value.split(':');
117
- return Number(hours) * 60 + Number(minutes);
118
- }
119
- function isUniqueBoundedStringArray(value, minimumLength, maximumLength) {
120
- if (!Array.isArray(value) ||
121
- value.length < minimumLength ||
122
- value.length > maximumLength ||
123
- !value.every(item => isBoundedString(item, MAX_ID_LENGTH))) {
124
- return false;
125
- }
126
- return new Set(value).size === value.length;
127
- }
128
- function isAvailabilityConfiguration(value) {
129
- if (!hasExactFields(value, ['accessWindows'])) {
130
- return false;
131
- }
132
- const windows = value.accessWindows;
133
- if (!Array.isArray(windows) || windows.length < 1 || windows.length > MAX_WINDOWS) {
134
- return false;
135
- }
136
- const windowIds = new Set();
137
- const intervals = [];
138
- for (const window of windows) {
139
- if (!hasExactFields(window, ['windowId', 'daysOfWeek', 'accessStartTimeLocal', 'accessEndTimeLocal']) ||
140
- !isBoundedString(window.windowId, MAX_ID_LENGTH) ||
141
- windowIds.has(window.windowId)) {
142
- return false;
143
- }
144
- windowIds.add(window.windowId);
145
- if (!Array.isArray(window.daysOfWeek) ||
146
- window.daysOfWeek.length < 1 ||
147
- window.daysOfWeek.length > 7 ||
148
- !window.daysOfWeek.every(day => Number.isInteger(day) && typeof day === 'number' && day >= 0 && day <= 6) ||
149
- new Set(window.daysOfWeek).size !== window.daysOfWeek.length) {
150
- return false;
151
- }
152
- const startTime = localTimeToMinutes(window.accessStartTimeLocal);
153
- const endTime = localTimeToMinutes(window.accessEndTimeLocal);
154
- if (startTime === undefined || endTime === undefined || startTime === endTime) {
155
- return false;
156
- }
157
- for (const day of window.daysOfWeek) {
158
- const start = day * 24 * 60 + startTime;
159
- const end = day * 24 * 60 + endTime + (endTime <= startTime ? 24 * 60 : 0);
160
- intervals.push({ start, end });
161
- }
162
- }
163
- return !intervals.some((left, leftIndex) => intervals.some((right, rightIndex) => {
164
- if (rightIndex <= leftIndex) {
165
- return false;
166
- }
167
- return [-MINUTES_PER_WEEK, 0, MINUTES_PER_WEEK].some(offset => {
168
- const shiftedStart = right.start + offset;
169
- const shiftedEnd = right.end + offset;
170
- return left.start < shiftedEnd && shiftedStart < left.end;
171
- });
172
- }));
173
- }
174
- export function isBastionAvailabilityWeeklyScheduleWriteRequest(value) {
175
- if (!isWithinJsonSize(value, MAX_WRITE_REQUEST_BYTES) ||
176
- !hasExactFields(value, [
177
- 'definitionType',
178
- 'name',
179
- 'providerName',
180
- 'providerScopeId',
181
- 'cloudAccountId',
182
- 'resourceId',
183
- 'timezone',
184
- 'acknowledgementVersion',
185
- 'configuration',
186
- ], ['targetResourceType', 'notes'])) {
187
- return false;
188
- }
189
- return (value.definitionType === 'bastion-availability-weekly' &&
190
- isBoundedString(value.name, MAX_NAME_LENGTH) &&
191
- isBoundedString(value.providerName, MAX_ID_LENGTH) &&
192
- isBoundedString(value.providerScopeId, MAX_ID_LENGTH) &&
193
- isBoundedString(value.cloudAccountId, MAX_ID_LENGTH) &&
194
- isBoundedString(value.resourceId, MAX_ID_LENGTH) &&
195
- isBoundedString(value.timezone, MAX_ID_LENGTH) &&
196
- (value.targetResourceType === undefined || value.targetResourceType === 'Microsoft.Network/bastionHosts') &&
197
- (value.notes === undefined || isBoundedString(value.notes, MAX_NOTES_LENGTH, true)) &&
198
- value.acknowledgementVersion === 'bastion-delete-recreate-v1' &&
199
- isAvailabilityConfiguration(value.configuration));
200
- }
201
- export function isBastionAvailabilityWeeklyScheduleDefinition(value) {
202
- if (!isWithinJsonSize(value, MAX_PUBLIC_DTO_BYTES) ||
203
- !hasExactFields(value, [
204
- 'definitionId',
205
- 'definitionClass',
206
- 'definitionType',
207
- 'companyId',
208
- 'providerName',
209
- 'providerScopeId',
210
- 'cloudAccountId',
211
- 'resourceId',
212
- 'targetResourceType',
213
- 'name',
214
- 'timezone',
215
- 'status',
216
- 'definitionRevision',
217
- 'acknowledgementVersion',
218
- 'configuration',
219
- 'createdAtUtc',
220
- 'updatedAtUtc',
221
- ], ['notes', 'compiledScheduleIds', 'nextRunUtc', 'lastRunAtUtc', 'lastSuccessfulRunAtUtc', 'lastRunStatus', 'createdByUserId', 'updatedByUserId'])) {
222
- return false;
223
- }
224
- return (value.definitionId !== undefined &&
225
- isBoundedString(value.definitionId, MAX_ID_LENGTH) &&
226
- value.definitionClass === 'composite' &&
227
- value.definitionType === 'bastion-availability-weekly' &&
228
- isBoundedString(value.companyId, MAX_ID_LENGTH) &&
229
- isBoundedString(value.providerName, MAX_ID_LENGTH) &&
230
- isBoundedString(value.providerScopeId, MAX_ID_LENGTH) &&
231
- isBoundedString(value.cloudAccountId, MAX_ID_LENGTH) &&
232
- isBoundedString(value.resourceId, MAX_ID_LENGTH) &&
233
- value.targetResourceType === 'Microsoft.Network/bastionHosts' &&
234
- isBoundedString(value.name, MAX_NAME_LENGTH) &&
235
- isBoundedString(value.timezone, MAX_ID_LENGTH) &&
236
- (value.status === 'active' || value.status === 'paused') &&
237
- isPositiveSafeInteger(value.definitionRevision) &&
238
- value.acknowledgementVersion === 'bastion-delete-recreate-v1' &&
239
- isAvailabilityConfiguration(value.configuration) &&
240
- (value.notes === undefined || isBoundedString(value.notes, MAX_NOTES_LENGTH, true)) &&
241
- (value.compiledScheduleIds === undefined || isUniqueBoundedStringArray(value.compiledScheduleIds, 0, 28)) &&
242
- (value.nextRunUtc === undefined || isIsoUtcTimestamp(value.nextRunUtc)) &&
243
- (value.lastRunAtUtc === undefined || isIsoUtcTimestamp(value.lastRunAtUtc)) &&
244
- (value.lastSuccessfulRunAtUtc === undefined || isIsoUtcTimestamp(value.lastSuccessfulRunAtUtc)) &&
245
- (value.lastRunStatus === undefined ||
246
- value.lastRunStatus === 'success' ||
247
- value.lastRunStatus === 'dispatch-failed' ||
248
- value.lastRunStatus === 'dispatching') &&
249
- isIsoUtcTimestamp(value.createdAtUtc) &&
250
- isIsoUtcTimestamp(value.updatedAtUtc) &&
251
- (value.createdByUserId === undefined || isBoundedString(value.createdByUserId, MAX_ID_LENGTH)) &&
252
- (value.updatedByUserId === undefined || isBoundedString(value.updatedByUserId, MAX_ID_LENGTH)));
253
- }
254
- export function isBastionScheduleRun(value) {
255
- if (!isWithinJsonSize(value, MAX_PUBLIC_DTO_BYTES) ||
256
- !isPlainRecord(value) ||
257
- (value['compiledOperation'] !== 'remove' && value['compiledOperation'] !== 'restore')) {
258
- return false;
259
- }
260
- const commonRequiredFields = [
261
- 'scheduleId',
262
- 'scheduleRunId',
263
- 'targetType',
264
- 'selectorType',
265
- 'scheduleType',
266
- 'providerScopeId',
267
- 'cloudAccountId',
268
- 'resourceId',
269
- 'definitionId',
270
- 'definitionClass',
271
- 'definitionType',
272
- 'compiledRuleId',
273
- 'compiledOperation',
274
- 'definitionRevision',
275
- 'scheduledForUtc',
276
- ];
277
- const requiredFields = value['compiledOperation'] === 'remove' ? [...commonRequiredFields, 'controlGeneration'] : commonRequiredFields;
278
- if (!hasExactFields(value, requiredFields, [
279
- 'scheduleName',
280
- 'scheduleGroupId',
281
- 'scheduleGroupType',
282
- 'targetCount',
283
- 'createdByUserId',
284
- 'updatedByUserId',
285
- ])) {
286
- return false;
287
- }
288
- return (isBoundedString(value.scheduleId, MAX_ID_LENGTH) &&
289
- isBoundedString(value.scheduleRunId, MAX_ID_LENGTH) &&
290
- (value.scheduleName === undefined || isBoundedString(value.scheduleName, MAX_NAME_LENGTH)) &&
291
- value.targetType === 'resource-operation' &&
292
- value.selectorType === 'single-resource' &&
293
- value.scheduleType === 'recurring' &&
294
- isBoundedString(value.providerScopeId, MAX_ID_LENGTH) &&
295
- isBoundedString(value.cloudAccountId, MAX_ID_LENGTH) &&
296
- isBoundedString(value.resourceId, MAX_ID_LENGTH) &&
297
- isBoundedString(value.definitionId, MAX_ID_LENGTH) &&
298
- value.definitionClass === 'composite' &&
299
- value.definitionType === 'bastion-availability-weekly' &&
300
- isBoundedString(value.compiledRuleId, MAX_ID_LENGTH) &&
301
- isPositiveSafeInteger(value.definitionRevision) &&
302
- isIsoUtcTimestamp(value.scheduledForUtc) &&
303
- (value.scheduleGroupId === undefined || isBoundedString(value.scheduleGroupId, MAX_ID_LENGTH)) &&
304
- (value.scheduleGroupType === undefined || value.scheduleGroupType === 'resource-schedule-definition') &&
305
- (value.targetCount === undefined || value.targetCount === 1) &&
306
- (value.createdByUserId === undefined || isBoundedString(value.createdByUserId, MAX_ID_LENGTH)) &&
307
- (value.updatedByUserId === undefined || isBoundedString(value.updatedByUserId, MAX_ID_LENGTH)) &&
308
- (value.compiledOperation === 'restore' || isPositiveSafeInteger(value.controlGeneration)));
309
- }
310
- export function isBastionScheduleControlV1(value) {
311
- return (isWithinJsonSize(value, MAX_PUBLIC_DTO_BYTES) &&
312
- hasExactFields(value, [
313
- 'schemaVersion',
314
- 'companyId',
315
- 'resourceId',
316
- 'definitionId',
317
- 'definitionRevision',
318
- 'controlGeneration',
319
- 'desiredStatus',
320
- 'updatedAtUtc',
321
- ]) &&
322
- value.schemaVersion === 1 &&
323
- isBoundedString(value.companyId, MAX_ID_LENGTH) &&
324
- isBoundedString(value.resourceId, MAX_ID_LENGTH) &&
325
- isBoundedString(value.definitionId, MAX_ID_LENGTH) &&
326
- isPositiveSafeInteger(value.definitionRevision) &&
327
- isPositiveSafeInteger(value.controlGeneration) &&
328
- (value.desiredStatus === 'active' || value.desiredStatus === 'paused') &&
329
- isIsoUtcTimestamp(value.updatedAtUtc));
330
- }
331
- export function isBastionScheduleReadinessV1(value) {
332
- if (!isWithinJsonSize(value, MAX_PUBLIC_DTO_BYTES) ||
333
- !hasExactFields(value, ['schemaVersion', 'status', 'companyId', 'cloudAccountId', 'subscriptionId', 'resourceId', 'requiredActions', 'missingActions', 'checkedAtUtc'], ['reasonCode'])) {
334
- return false;
335
- }
336
- const requiredActions = value.requiredActions;
337
- const missingActions = value.missingActions;
338
- if (value.schemaVersion !== 1 ||
339
- typeof value.status !== 'string' ||
340
- !readinessStatuses.has(value.status) ||
341
- !isBoundedString(value.companyId, MAX_ID_LENGTH) ||
342
- !isBoundedString(value.cloudAccountId, MAX_ID_LENGTH) ||
343
- !isBoundedString(value.subscriptionId, MAX_ID_LENGTH) ||
344
- !isBoundedString(value.resourceId, MAX_ID_LENGTH) ||
345
- !isUniqueBoundedStringArray(requiredActions, 1, MAX_ACTION_COUNT) ||
346
- !isUniqueBoundedStringArray(missingActions, 0, MAX_ACTION_COUNT) ||
347
- !missingActions.every(action => requiredActions.includes(action)) ||
348
- (value.status === 'confirmed' && missingActions.length !== 0) ||
349
- (value.status === 'missing' && missingActions.length === 0) ||
350
- !isIsoUtcTimestamp(value.checkedAtUtc)) {
351
- return false;
352
- }
353
- return value.reasonCode === undefined || (typeof value.reasonCode === 'string' && readinessReasonCodes.has(value.reasonCode));
354
- }
355
- export function isBastionAvailabilityStatusV1(value) {
356
- return (isWithinJsonSize(value, MAX_PUBLIC_DTO_BYTES) &&
357
- hasExactFields(value, [
358
- 'schemaVersion',
359
- 'companyId',
360
- 'resourceId',
361
- 'definitionId',
362
- 'definitionRevision',
363
- 'phase',
364
- 'lastOperation',
365
- 'lastResult',
366
- 'restoreAvailable',
367
- 'updatedAtUtc',
368
- ], ['reasonCode', 'snapshotCapturedAtUtc']) &&
369
- value.schemaVersion === 1 &&
370
- isBoundedString(value.companyId, MAX_ID_LENGTH) &&
371
- isBoundedString(value.resourceId, MAX_ID_LENGTH) &&
372
- isBoundedString(value.definitionId, MAX_ID_LENGTH) &&
373
- isPositiveSafeInteger(value.definitionRevision) &&
374
- typeof value.phase === 'string' &&
375
- availabilityPhases.has(value.phase) &&
376
- (value.lastOperation === 'remove' || value.lastOperation === 'restore') &&
377
- typeof value.lastResult === 'string' &&
378
- availabilityResults.has(value.lastResult) &&
379
- (value.reasonCode === undefined || (typeof value.reasonCode === 'string' && availabilityReasonCodes.has(value.reasonCode))) &&
380
- (value.snapshotCapturedAtUtc === undefined || isIsoUtcTimestamp(value.snapshotCapturedAtUtc)) &&
381
- typeof value.restoreAvailable === 'boolean' &&
382
- isIsoUtcTimestamp(value.updatedAtUtc));
383
- }
384
- export function isBastionPauseResponse(value) {
385
- return (isWithinJsonSize(value, MAX_PUBLIC_DTO_BYTES) &&
386
- hasExactFields(value, ['status', 'resourceId', 'controlGeneration', 'requestedAtUtc']) &&
387
- (value.status === 'paused' || value.status === 'pause-pending') &&
388
- isBoundedString(value.resourceId, MAX_ID_LENGTH) &&
389
- isPositiveSafeInteger(value.controlGeneration) &&
390
- isIsoUtcTimestamp(value.requestedAtUtc));
391
- }
392
- export function isBastionRestoreNowResponse(value) {
393
- return (isWithinJsonSize(value, MAX_PUBLIC_DTO_BYTES) &&
394
- hasExactFields(value, ['accepted', 'scheduleRunId', 'resourceId', 'requestedAtUtc']) &&
395
- typeof value.accepted === 'boolean' &&
396
- isBoundedString(value.scheduleRunId, MAX_ID_LENGTH) &&
397
- isBoundedString(value.resourceId, MAX_ID_LENGTH) &&
398
- isIsoUtcTimestamp(value.requestedAtUtc));
399
- }
@@ -1 +0,0 @@
1
- export {};
@@ -1,113 +0,0 @@
1
- import type { ResourceScheduleDefinitionBase, SchedulerBatchRunItemBase, WeekdayNumber } from './scheduler';
2
- export type BastionScheduleDefinitionType = 'bastion-availability-weekly';
3
- export type BastionAvailabilityOperation = 'remove' | 'restore';
4
- export interface BastionAvailabilityWindow {
5
- windowId: string;
6
- daysOfWeek: WeekdayNumber[];
7
- accessStartTimeLocal: string;
8
- accessEndTimeLocal: string;
9
- }
10
- export interface BastionAvailabilityWeeklyConfiguration {
11
- accessWindows: BastionAvailabilityWindow[];
12
- }
13
- export interface BastionAvailabilityWeeklyScheduleWriteRequest {
14
- definitionType: BastionScheduleDefinitionType;
15
- name: string;
16
- providerName: string;
17
- providerScopeId: string;
18
- cloudAccountId: string;
19
- resourceId: string;
20
- targetResourceType?: 'Microsoft.Network/bastionHosts';
21
- timezone: string;
22
- notes?: string;
23
- acknowledgementVersion: 'bastion-delete-recreate-v1';
24
- configuration: BastionAvailabilityWeeklyConfiguration;
25
- }
26
- export interface BastionAvailabilityWeeklyScheduleDefinition extends ResourceScheduleDefinitionBase {
27
- definitionClass: 'composite';
28
- definitionType: BastionScheduleDefinitionType;
29
- cloudAccountId: string;
30
- resourceId: string;
31
- targetResourceType: 'Microsoft.Network/bastionHosts';
32
- definitionRevision: number;
33
- acknowledgementVersion: 'bastion-delete-recreate-v1';
34
- configuration: BastionAvailabilityWeeklyConfiguration;
35
- executionPolicy?: never;
36
- }
37
- interface BastionScheduleRunBase extends SchedulerBatchRunItemBase {
38
- targetType: 'resource-operation';
39
- selectorType: 'single-resource';
40
- scheduleType: 'recurring';
41
- cloudAccountId: string;
42
- resourceId: string;
43
- definitionId: string;
44
- definitionClass: 'composite';
45
- definitionType: BastionScheduleDefinitionType;
46
- compiledRuleId: string;
47
- definitionRevision: number;
48
- scheduledForUtc: string;
49
- }
50
- export interface BastionRemoveScheduleRun extends BastionScheduleRunBase {
51
- compiledOperation: 'remove';
52
- controlGeneration: number;
53
- }
54
- export interface BastionRestoreScheduleRun extends BastionScheduleRunBase {
55
- compiledOperation: 'restore';
56
- controlGeneration?: never;
57
- }
58
- export type BastionScheduleRun = BastionRemoveScheduleRun | BastionRestoreScheduleRun;
59
- export interface BastionScheduleControlV1 {
60
- schemaVersion: 1;
61
- companyId: string;
62
- resourceId: string;
63
- definitionId: string;
64
- definitionRevision: number;
65
- controlGeneration: number;
66
- desiredStatus: 'active' | 'paused';
67
- updatedAtUtc: string;
68
- }
69
- export type BastionScheduleReadinessStatus = 'confirmed' | 'missing' | 'unknown' | 'unsupported';
70
- export type BastionScheduleReadinessReasonCode = 'feature-disabled' | 'resource-not-found' | 'unsupported-profile' | 'unsupported-region' | 'missing-permission' | 'permission-unknown' | 'management-lock';
71
- export interface BastionScheduleReadinessV1 {
72
- schemaVersion: 1;
73
- status: BastionScheduleReadinessStatus;
74
- companyId: string;
75
- cloudAccountId: string;
76
- subscriptionId: string;
77
- resourceId: string;
78
- requiredActions: string[];
79
- missingActions: string[];
80
- reasonCode?: BastionScheduleReadinessReasonCode;
81
- checkedAtUtc: string;
82
- }
83
- export type BastionAvailabilityPhase = 'available' | 'removing' | 'absent' | 'restoring';
84
- export type BastionAvailabilityResult = 'succeeded' | 'skipped' | 'blocked' | 'failed' | 'pending';
85
- export type BastionAvailabilityReasonCode = 'feature-disabled' | 'resource-not-found' | 'unsupported-profile' | 'unsupported-region' | 'missing-permission' | 'permission-unknown' | 'management-lock' | 'active-sessions' | 'session-state-unknown' | 'snapshot-failed' | 'active-snapshot-missing' | 'source-drift' | 'dependency-missing' | 'dependency-drift' | 'stale-run' | 'continuation-overdue' | 'azure-operation-failed' | 'restore-timeout';
86
- export interface BastionAvailabilityStatusV1 {
87
- schemaVersion: 1;
88
- companyId: string;
89
- resourceId: string;
90
- definitionId: string;
91
- definitionRevision: number;
92
- phase: BastionAvailabilityPhase;
93
- lastOperation: BastionAvailabilityOperation;
94
- lastResult: BastionAvailabilityResult;
95
- reasonCode?: BastionAvailabilityReasonCode;
96
- snapshotCapturedAtUtc?: string;
97
- restoreAvailable: boolean;
98
- updatedAtUtc: string;
99
- }
100
- export interface BastionPauseResponse {
101
- status: 'paused' | 'pause-pending';
102
- resourceId: string;
103
- controlGeneration: number;
104
- requestedAtUtc: string;
105
- }
106
- export interface BastionRestoreNowResponse {
107
- accepted: boolean;
108
- scheduleRunId: string;
109
- resourceId: string;
110
- requestedAtUtc: string;
111
- }
112
- export {};
113
- //# sourceMappingURL=bastionSchedule.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"bastionSchedule.d.ts","sourceRoot":"","sources":["../../src/scheduler/bastionSchedule.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"bastionSchedule.js","sourceRoot":"","sources":["../../src/scheduler/bastionSchedule.ts"],"names":[],"mappings":""}
@@ -1,24 +0,0 @@
1
- export type BastionScheduleSupportedSkuV1 = 'Basic' | 'Standard' | 'Premium';
2
- export interface BastionScheduleSupportedProfileV1 {
3
- skuName: BastionScheduleSupportedSkuV1;
4
- location: string;
5
- zones?: string[];
6
- scaleUnits: number;
7
- disableCopyPaste: boolean;
8
- enableFileCopy: boolean;
9
- enableIpConnect: boolean;
10
- enableShareableLink: boolean;
11
- enableTunneling: boolean;
12
- enableKerberos: boolean;
13
- enableSessionRecording: false;
14
- enablePrivateOnlyBastion: false;
15
- tags: Record<string, string>;
16
- ipConfigurationName: string;
17
- publicIpId: string;
18
- subnetId: string;
19
- virtualNetworkId: string;
20
- sourceEtag: string;
21
- }
22
- /** Normalizes an eligible public dedicated Azure Bastion profile for schedule readiness and recovery. */
23
- export declare function readSupportedBastionScheduleProfileV1(value: unknown, expectedResourceId: string): BastionScheduleSupportedProfileV1 | undefined;
24
- //# sourceMappingURL=bastionScheduleProfile.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"bastionScheduleProfile.d.ts","sourceRoot":"","sources":["../../src/scheduler/bastionScheduleProfile.ts"],"names":[],"mappings":"AAUA,MAAM,MAAM,6BAA6B,GAAG,OAAO,GAAG,UAAU,GAAG,SAAS,CAAC;AAE7E,MAAM,WAAW,iCAAiC;IAChD,OAAO,EAAE,6BAA6B,CAAC;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,cAAc,EAAE,OAAO,CAAC;IACxB,eAAe,EAAE,OAAO,CAAC;IACzB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,eAAe,EAAE,OAAO,CAAC;IACzB,cAAc,EAAE,OAAO,CAAC;IACxB,sBAAsB,EAAE,KAAK,CAAC;IAC9B,wBAAwB,EAAE,KAAK,CAAC;IAChC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;CACpB;AAqED,yGAAyG;AACzG,wBAAgB,qCAAqC,CAAC,KAAK,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,GAAG,iCAAiC,GAAG,SAAS,CAmK/I"}