@spottoai/types-package 1.0.2-dev1138.13 → 1.0.2-dev1138.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +12 -0
- package/dist/accounts/accounts.d.ts +97 -5
- package/dist/accounts/accounts.d.ts.map +1 -1
- package/dist/accounts/accounts.js +2 -1
- package/dist/accounts/accounts.js.map +1 -1
- package/dist/accounts/azureManualOnboarding.d.ts +114 -0
- package/dist/accounts/azureManualOnboarding.d.ts.map +1 -0
- package/dist/accounts/azureManualOnboarding.js +12 -0
- package/dist/accounts/azureManualOnboarding.js.map +1 -0
- package/dist/accounts/azureSpSetup.d.ts +147 -31
- package/dist/accounts/azureSpSetup.d.ts.map +1 -1
- package/dist/accounts/azureSpSetup.js +15 -0
- package/dist/accounts/azureSpSetup.js.map +1 -1
- package/dist/accounts/azureSpSetupDurable.d.ts +8 -0
- package/dist/accounts/azureSpSetupDurable.d.ts.map +1 -1
- package/dist/accounts/azureSpSetupDurable.js +28 -0
- package/dist/accounts/azureSpSetupDurable.js.map +1 -1
- package/dist/accounts/index.d.ts +2 -0
- package/dist/accounts/index.d.ts.map +1 -1
- package/dist/accounts/index.js +2 -0
- package/dist/accounts/index.js.map +1 -1
- package/dist/accounts/readPermissions.d.ts +1 -1
- package/dist/accounts/readPermissions.d.ts.map +1 -1
- package/dist/accounts/readPermissions.js.map +1 -1
- package/dist/accounts/subscriptionWriteAccess.d.ts +76 -0
- package/dist/accounts/subscriptionWriteAccess.d.ts.map +1 -0
- package/dist/accounts/subscriptionWriteAccess.js +119 -0
- package/dist/accounts/subscriptionWriteAccess.js.map +1 -0
- package/dist/accounts/validation.d.ts +24 -0
- package/dist/accounts/validation.d.ts.map +1 -1
- package/dist/accounts/writePermissions.d.ts +17 -1
- package/dist/accounts/writePermissions.d.ts.map +1 -1
- package/dist/accounts/writePermissions.js +47 -1
- package/dist/accounts/writePermissions.js.map +1 -1
- package/dist/ai/conversationHistory.d.ts +52 -0
- package/dist/ai/conversationHistory.d.ts.map +1 -0
- package/dist/ai/conversationHistory.js +10 -0
- package/dist/ai/conversationHistory.js.map +1 -0
- package/dist/ai/followUps.d.ts +16 -0
- package/dist/ai/followUps.d.ts.map +1 -0
- package/dist/ai/followUps.js +21 -0
- package/dist/ai/followUps.js.map +1 -0
- package/dist/ai/grounding.d.ts +78 -0
- package/dist/ai/grounding.d.ts.map +1 -0
- package/dist/ai/grounding.js +154 -0
- package/dist/ai/grounding.js.map +1 -0
- package/dist/ai/index.d.ts +306 -6
- package/dist/ai/index.d.ts.map +1 -1
- package/dist/ai/index.js +26 -0
- package/dist/ai/index.js.map +1 -1
- package/dist/ai/workspaceArtifacts.d.ts +587 -0
- package/dist/ai/workspaceArtifacts.d.ts.map +1 -0
- package/dist/ai/workspaceArtifacts.js +162 -0
- package/dist/ai/workspaceArtifacts.js.map +1 -0
- package/dist/aws/commitments-planning.d.ts +6 -1
- package/dist/aws/commitments-planning.d.ts.map +1 -1
- package/dist/aws/commitments-planning.js +20 -0
- package/dist/aws/commitments-planning.js.map +1 -1
- package/dist/aws/commitmentsPlanningValidation.d.ts +1 -1
- package/dist/aws/commitmentsPlanningValidation.d.ts.map +1 -1
- package/dist/aws/commitmentsPlanningValidation.js +26 -25
- package/dist/aws/commitmentsPlanningValidation.js.map +1 -1
- package/dist/aws/commitmentsPlanningView.d.ts +49 -0
- package/dist/aws/commitmentsPlanningView.d.ts.map +1 -0
- package/dist/aws/{pluginPublicArtifactEvidence.js → commitmentsPlanningView.js} +1 -1
- package/dist/aws/commitmentsPlanningView.js.map +1 -0
- package/dist/aws/estates.d.ts +1 -1
- package/dist/aws/estates.d.ts.map +1 -1
- package/dist/aws/estates.js +7 -1
- package/dist/aws/estates.js.map +1 -1
- package/dist/aws/index.d.ts +7 -14
- package/dist/aws/index.d.ts.map +1 -1
- package/dist/aws/index.js +7 -13
- package/dist/aws/index.js.map +1 -1
- package/dist/aws/onboarding.d.ts +3 -0
- package/dist/aws/onboarding.d.ts.map +1 -1
- package/dist/aws/organizationCommitments.d.ts +261 -0
- package/dist/aws/organizationCommitments.d.ts.map +1 -0
- package/dist/aws/organizationCommitments.js +53 -0
- package/dist/aws/organizationCommitments.js.map +1 -0
- package/dist/aws/organizationCommitmentsApiValidation.d.ts +21 -0
- package/dist/aws/organizationCommitmentsApiValidation.d.ts.map +1 -0
- package/dist/aws/organizationCommitmentsApiValidation.js +226 -0
- package/dist/aws/organizationCommitmentsApiValidation.js.map +1 -0
- package/dist/aws/organizationCommitmentsValidation.d.ts +12 -0
- package/dist/aws/organizationCommitmentsValidation.d.ts.map +1 -0
- package/dist/aws/organizationCommitmentsValidation.js +229 -0
- package/dist/aws/organizationCommitmentsValidation.js.map +1 -0
- package/dist/aws/portalOrganizationCommitmentsPlanningPublicArtifactValidation.d.ts +9 -0
- package/dist/aws/portalOrganizationCommitmentsPlanningPublicArtifactValidation.d.ts.map +1 -0
- package/dist/aws/portalOrganizationCommitmentsPlanningPublicArtifactValidation.js +410 -0
- package/dist/aws/portalOrganizationCommitmentsPlanningPublicArtifactValidation.js.map +1 -0
- package/dist/aws/portalOrganizationCommitmentsPlanningPublicArtifacts.d.ts +16 -0
- package/dist/aws/portalOrganizationCommitmentsPlanningPublicArtifacts.d.ts.map +1 -0
- package/dist/aws/portalOrganizationCommitmentsPlanningPublicArtifacts.js +6 -0
- package/dist/aws/portalOrganizationCommitmentsPlanningPublicArtifacts.js.map +1 -0
- package/dist/aws/publicArtifacts.d.ts +2 -37
- package/dist/aws/publicArtifacts.d.ts.map +1 -1
- package/dist/aws/publicArtifacts.js +3 -1
- package/dist/aws/publicArtifacts.js.map +1 -1
- package/dist/aws/relationships.d.ts +5 -3
- package/dist/aws/relationships.d.ts.map +1 -1
- package/dist/aws/relationships.js +18 -3
- package/dist/aws/relationships.js.map +1 -1
- package/dist/aws/requests.d.ts +46 -3
- package/dist/aws/requests.d.ts.map +1 -1
- package/dist/aws/requests.js +5 -3
- package/dist/aws/requests.js.map +1 -1
- package/dist/aws/resourceGraph.d.ts +14 -0
- package/dist/aws/resourceGraph.d.ts.map +1 -0
- package/dist/aws/resourceGraph.js +68 -0
- package/dist/aws/resourceGraph.js.map +1 -0
- package/dist/aws/validationHelpers.d.ts +8 -0
- package/dist/aws/validationHelpers.d.ts.map +1 -0
- package/dist/aws/validationHelpers.js +54 -0
- package/dist/aws/validationHelpers.js.map +1 -0
- package/dist/azure/activityLogAnalysis.d.ts +320 -0
- package/dist/azure/activityLogAnalysis.d.ts.map +1 -0
- package/dist/azure/activityLogAnalysis.js +70 -0
- package/dist/azure/activityLogAnalysis.js.map +1 -0
- package/dist/azure/activityLogAnalysisPublicValidation.d.ts +8 -0
- package/dist/azure/activityLogAnalysisPublicValidation.d.ts.map +1 -0
- package/dist/azure/activityLogAnalysisPublicValidation.js +368 -0
- package/dist/azure/activityLogAnalysisPublicValidation.js.map +1 -0
- package/dist/azure/activityLogAnalysisPublicValidationHelpers.d.ts +33 -0
- package/dist/azure/activityLogAnalysisPublicValidationHelpers.d.ts.map +1 -0
- package/dist/azure/activityLogAnalysisPublicValidationHelpers.js +197 -0
- package/dist/azure/activityLogAnalysisPublicValidationHelpers.js.map +1 -0
- package/dist/azure/activityLogAnalysisValidation.d.ts +5 -0
- package/dist/azure/activityLogAnalysisValidation.d.ts.map +1 -0
- package/dist/azure/activityLogAnalysisValidation.js +376 -0
- package/dist/azure/activityLogAnalysisValidation.js.map +1 -0
- package/dist/azure/activityLogs.d.ts +8 -0
- package/dist/azure/activityLogs.d.ts.map +1 -1
- package/dist/azure/activityLogs.js.map +1 -1
- package/dist/azure/benefits.d.ts +1 -1
- package/dist/azure/benefits.d.ts.map +1 -1
- package/dist/azure/billingPlots.d.ts +7 -1
- package/dist/azure/billingPlots.d.ts.map +1 -1
- package/dist/azure/billingPlots.js +45 -4
- package/dist/azure/billingPlots.js.map +1 -1
- package/dist/azure/commitmentsPlanning.d.ts +23 -48
- package/dist/azure/commitmentsPlanning.d.ts.map +1 -1
- package/dist/azure/commitmentsPlanning.js +9 -0
- package/dist/azure/commitmentsPlanning.js.map +1 -1
- package/dist/azure/commitmentsPlanningValidation.d.ts +18 -0
- package/dist/azure/commitmentsPlanningValidation.d.ts.map +1 -0
- package/dist/azure/commitmentsPlanningValidation.js +50 -0
- package/dist/azure/commitmentsPlanningValidation.js.map +1 -0
- package/dist/azure/common.d.ts +26 -5
- package/dist/azure/common.d.ts.map +1 -1
- package/dist/azure/common.js +30 -0
- package/dist/azure/common.js.map +1 -1
- package/dist/azure/costComposition.d.ts +11 -1
- package/dist/azure/costComposition.d.ts.map +1 -1
- package/dist/azure/costComposition.js +84 -1
- package/dist/azure/costComposition.js.map +1 -1
- package/dist/azure/dataProtection.d.ts +44 -4
- package/dist/azure/dataProtection.d.ts.map +1 -1
- package/dist/azure/financialAnalytics.d.ts +80 -8
- package/dist/azure/financialAnalytics.d.ts.map +1 -1
- package/dist/azure/financialAnalyticsDelivery.d.ts +72 -3
- package/dist/azure/financialAnalyticsDelivery.d.ts.map +1 -1
- package/dist/azure/financialAnalyticsDelivery.js +7 -1
- package/dist/azure/financialAnalyticsDelivery.js.map +1 -1
- package/dist/azure/financialAnalyticsDeliveryValidation.d.ts +9 -1
- package/dist/azure/financialAnalyticsDeliveryValidation.d.ts.map +1 -1
- package/dist/azure/financialAnalyticsDeliveryValidation.js +190 -10
- package/dist/azure/financialAnalyticsDeliveryValidation.js.map +1 -1
- package/dist/azure/financialAnalyticsDisplayKernel.d.ts +12 -0
- package/dist/azure/financialAnalyticsDisplayKernel.d.ts.map +1 -0
- package/dist/azure/financialAnalyticsDisplayKernel.js +144 -0
- package/dist/azure/financialAnalyticsDisplayKernel.js.map +1 -0
- package/dist/azure/financialAnalyticsValidation.d.ts.map +1 -1
- package/dist/azure/financialAnalyticsValidation.js +101 -19
- package/dist/azure/financialAnalyticsValidation.js.map +1 -1
- package/dist/azure/financialAuthorityProjectionKernel.d.ts +8 -0
- package/dist/azure/financialAuthorityProjectionKernel.d.ts.map +1 -0
- package/dist/azure/financialAuthorityProjectionKernel.js +269 -0
- package/dist/azure/financialAuthorityProjectionKernel.js.map +1 -0
- package/dist/azure/financialAuthorityView.d.ts +13 -0
- package/dist/azure/financialAuthorityView.d.ts.map +1 -1
- package/dist/azure/financialAuthorityView.js.map +1 -1
- package/dist/azure/financialAuthorityViewValidation.d.ts +3 -1
- package/dist/azure/financialAuthorityViewValidation.d.ts.map +1 -1
- package/dist/azure/financialAuthorityViewValidation.js +273 -2
- package/dist/azure/financialAuthorityViewValidation.js.map +1 -1
- package/dist/azure/financialChargeComposition.d.ts +81 -0
- package/dist/azure/financialChargeComposition.d.ts.map +1 -0
- package/dist/azure/financialChargeComposition.js +41 -0
- package/dist/azure/financialChargeComposition.js.map +1 -0
- package/dist/azure/financialChargeCompositionKernel.d.ts +3 -0
- package/dist/azure/financialChargeCompositionKernel.d.ts.map +1 -0
- package/dist/azure/financialChargeCompositionKernel.js +53 -0
- package/dist/azure/financialChargeCompositionKernel.js.map +1 -0
- package/dist/azure/financialChargeCompositionValidation.d.ts +8 -0
- package/dist/azure/financialChargeCompositionValidation.d.ts.map +1 -0
- package/dist/azure/financialChargeCompositionValidation.js +164 -0
- package/dist/azure/financialChargeCompositionValidation.js.map +1 -0
- package/dist/azure/financialChargePolicy.d.ts +215 -0
- package/dist/azure/financialChargePolicy.d.ts.map +1 -0
- package/dist/azure/financialChargePolicy.js +488 -0
- package/dist/azure/financialChargePolicy.js.map +1 -0
- package/dist/azure/financialCurrentSpendSurfaceProjection.d.ts +76 -0
- package/dist/azure/financialCurrentSpendSurfaceProjection.d.ts.map +1 -0
- package/dist/azure/financialCurrentSpendSurfaceProjection.js +6 -0
- package/dist/azure/financialCurrentSpendSurfaceProjection.js.map +1 -0
- package/dist/azure/financialCurrentSpendSurfaceProjectionValidation.d.ts +10 -0
- package/dist/azure/financialCurrentSpendSurfaceProjectionValidation.d.ts.map +1 -0
- package/dist/azure/financialCurrentSpendSurfaceProjectionValidation.js +196 -0
- package/dist/azure/financialCurrentSpendSurfaceProjectionValidation.js.map +1 -0
- package/dist/azure/financialDataflow.d.ts +45 -2
- package/dist/azure/financialDataflow.d.ts.map +1 -1
- package/dist/azure/financialDataflow.js.map +1 -1
- package/dist/azure/financialDataflowKernel.d.ts +31 -0
- package/dist/azure/financialDataflowKernel.d.ts.map +1 -0
- package/dist/azure/financialDataflowKernel.js +170 -0
- package/dist/azure/financialDataflowKernel.js.map +1 -0
- package/dist/azure/financialDataflowValidation.d.ts +5 -2
- package/dist/azure/financialDataflowValidation.d.ts.map +1 -1
- package/dist/azure/financialDataflowValidation.js +203 -30
- package/dist/azure/financialDataflowValidation.js.map +1 -1
- package/dist/azure/financialEvidenceAssessmentValidation.d.ts.map +1 -1
- package/dist/azure/financialEvidenceAssessmentValidation.js +7 -0
- package/dist/azure/financialEvidenceAssessmentValidation.js.map +1 -1
- package/dist/azure/financialEvidenceCoverage.d.ts +36 -0
- package/dist/azure/financialEvidenceCoverage.d.ts.map +1 -0
- package/dist/azure/financialEvidenceCoverage.js +111 -0
- package/dist/azure/financialEvidenceCoverage.js.map +1 -0
- package/dist/azure/financialPolicy.d.ts +19 -3
- package/dist/azure/financialPolicy.d.ts.map +1 -1
- package/dist/azure/financialPolicy.js.map +1 -1
- package/dist/azure/financialPolicyDelivery.d.ts +75 -1
- package/dist/azure/financialPolicyDelivery.d.ts.map +1 -1
- package/dist/azure/financialPolicyDelivery.js +5 -1
- package/dist/azure/financialPolicyDelivery.js.map +1 -1
- package/dist/azure/financialPolicyDeliveryValidation.d.ts +16 -2
- package/dist/azure/financialPolicyDeliveryValidation.d.ts.map +1 -1
- package/dist/azure/financialPolicyDeliveryValidation.js +238 -5
- package/dist/azure/financialPolicyDeliveryValidation.js.map +1 -1
- package/dist/azure/financialPolicyKernel.d.ts +38 -0
- package/dist/azure/financialPolicyKernel.d.ts.map +1 -0
- package/dist/azure/financialPolicyKernel.js +232 -0
- package/dist/azure/financialPolicyKernel.js.map +1 -0
- package/dist/azure/financialPolicyValidation.d.ts +1 -0
- package/dist/azure/financialPolicyValidation.d.ts.map +1 -1
- package/dist/azure/financialPolicyValidation.js +111 -16
- package/dist/azure/financialPolicyValidation.js.map +1 -1
- package/dist/azure/financialProjection.d.ts +11 -1
- package/dist/azure/financialProjection.d.ts.map +1 -1
- package/dist/azure/financialProjection.js.map +1 -1
- package/dist/azure/financialProjectionValidation.d.ts.map +1 -1
- package/dist/azure/financialProjectionValidation.js +43 -3
- package/dist/azure/financialProjectionValidation.js.map +1 -1
- package/dist/azure/financialResourceSurfaceProjection.d.ts +66 -0
- package/dist/azure/financialResourceSurfaceProjection.d.ts.map +1 -0
- package/dist/azure/financialResourceSurfaceProjection.js +6 -0
- package/dist/azure/financialResourceSurfaceProjection.js.map +1 -0
- package/dist/azure/financialResourceSurfaceProjectionValidation.d.ts +16 -0
- package/dist/azure/financialResourceSurfaceProjectionValidation.d.ts.map +1 -0
- package/dist/azure/financialResourceSurfaceProjectionValidation.js +252 -0
- package/dist/azure/financialResourceSurfaceProjectionValidation.js.map +1 -0
- package/dist/azure/financialSavingsAuthority.d.ts +68 -4
- package/dist/azure/financialSavingsAuthority.d.ts.map +1 -1
- package/dist/azure/financialSavingsAuthority.js +2 -1
- package/dist/azure/financialSavingsAuthority.js.map +1 -1
- package/dist/azure/financialSavingsAuthorityValidation.d.ts +6 -2
- package/dist/azure/financialSavingsAuthorityValidation.d.ts.map +1 -1
- package/dist/azure/financialSavingsAuthorityValidation.js +188 -2
- package/dist/azure/financialSavingsAuthorityValidation.js.map +1 -1
- package/dist/azure/financialSavingsChargePolicyKernel.d.ts +12 -0
- package/dist/azure/financialSavingsChargePolicyKernel.d.ts.map +1 -0
- package/dist/azure/financialSavingsChargePolicyKernel.js +34 -0
- package/dist/azure/financialSavingsChargePolicyKernel.js.map +1 -0
- package/dist/azure/financialSavingsCoordinateValidation.d.ts.map +1 -1
- package/dist/azure/financialSavingsCoordinateValidation.js +98 -19
- package/dist/azure/financialSavingsCoordinateValidation.js.map +1 -1
- package/dist/azure/financialSavingsPercentageKernel.d.ts +20 -0
- package/dist/azure/financialSavingsPercentageKernel.d.ts.map +1 -0
- package/dist/azure/financialSavingsPercentageKernel.js +49 -0
- package/dist/azure/financialSavingsPercentageKernel.js.map +1 -0
- package/dist/azure/financialSavingsSurfaceProjection.d.ts +82 -3
- package/dist/azure/financialSavingsSurfaceProjection.d.ts.map +1 -1
- package/dist/azure/financialSavingsSurfaceProjection.js +3 -1
- package/dist/azure/financialSavingsSurfaceProjection.js.map +1 -1
- package/dist/azure/financialSavingsSurfaceProjectionKernel.d.ts +26 -0
- package/dist/azure/financialSavingsSurfaceProjectionKernel.d.ts.map +1 -0
- package/dist/azure/financialSavingsSurfaceProjectionKernel.js +435 -0
- package/dist/azure/financialSavingsSurfaceProjectionKernel.js.map +1 -0
- package/dist/azure/financialSavingsSurfaceProjectionValidation.d.ts.map +1 -1
- package/dist/azure/financialSavingsSurfaceProjectionValidation.js +199 -13
- package/dist/azure/financialSavingsSurfaceProjectionValidation.js.map +1 -1
- package/dist/azure/financialScope.d.ts +14 -0
- package/dist/azure/financialScope.d.ts.map +1 -1
- package/dist/azure/financialScope.js +14 -0
- package/dist/azure/financialScope.js.map +1 -1
- package/dist/azure/financialScopeBaseline.d.ts +11 -3
- package/dist/azure/financialScopeBaseline.d.ts.map +1 -1
- package/dist/azure/financialScopeBaseline.js +14 -1
- package/dist/azure/financialScopeBaseline.js.map +1 -1
- package/dist/azure/financialScopeBaselineIdentity.d.ts.map +1 -1
- package/dist/azure/financialScopeBaselineIdentity.js +24 -4
- package/dist/azure/financialScopeBaselineIdentity.js.map +1 -1
- package/dist/azure/financialScopeBaselineValidation.d.ts.map +1 -1
- package/dist/azure/financialScopeBaselineValidation.js +21 -4
- package/dist/azure/financialScopeBaselineValidation.js.map +1 -1
- package/dist/azure/financialScopeEvidence.d.ts +1 -1
- package/dist/azure/financialScopeEvidence.d.ts.map +1 -1
- package/dist/azure/governance.d.ts +150 -0
- package/dist/azure/governance.d.ts.map +1 -1
- package/dist/azure/governance.js +2 -1
- package/dist/azure/governance.js.map +1 -1
- package/dist/azure/metrics.d.ts +4 -29
- package/dist/azure/metrics.d.ts.map +1 -1
- package/dist/azure/payloads.d.ts +79 -1
- package/dist/azure/payloads.d.ts.map +1 -1
- package/dist/azure/payloads.js +87 -0
- package/dist/azure/payloads.js.map +1 -1
- package/dist/azure/prices.d.ts +41 -12
- package/dist/azure/prices.d.ts.map +1 -1
- package/dist/azure/recommendationLifecycleOverlayValidation.d.ts +5 -0
- package/dist/azure/recommendationLifecycleOverlayValidation.d.ts.map +1 -0
- package/dist/azure/recommendationLifecycleOverlayValidation.js +82 -0
- package/dist/azure/recommendationLifecycleOverlayValidation.js.map +1 -0
- package/dist/azure/recommendationState.d.ts +1 -1
- package/dist/azure/recommendationState.d.ts.map +1 -1
- package/dist/azure/recommendationTracks.d.ts +1 -1
- package/dist/azure/recommendationTracks.d.ts.map +1 -1
- package/dist/azure/recommendations.d.ts +141 -5
- package/dist/azure/recommendations.d.ts.map +1 -1
- package/dist/azure/recommendations.js +3 -1
- package/dist/azure/recommendations.js.map +1 -1
- package/dist/azure/relationships.d.ts +1 -1
- package/dist/azure/relationships.d.ts.map +1 -1
- package/dist/azure/reportDailySpend.d.ts +48 -0
- package/dist/azure/reportDailySpend.d.ts.map +1 -0
- package/dist/azure/reportDailySpend.js +6 -0
- package/dist/azure/reportDailySpend.js.map +1 -0
- package/dist/azure/reportDailySpendValidation.d.ts +3 -0
- package/dist/azure/reportDailySpendValidation.d.ts.map +1 -0
- package/dist/azure/reportDailySpendValidation.js +72 -0
- package/dist/azure/reportDailySpendValidation.js.map +1 -0
- package/dist/azure/reportEvidence.d.ts +796 -0
- package/dist/azure/reportEvidence.d.ts.map +1 -0
- package/dist/azure/reportEvidence.js +33 -0
- package/dist/azure/reportEvidence.js.map +1 -0
- package/dist/azure/reportEvidenceCatalogueValidation.d.ts +5 -0
- package/dist/azure/reportEvidenceCatalogueValidation.d.ts.map +1 -0
- package/dist/azure/reportEvidenceCatalogueValidation.js +109 -0
- package/dist/azure/reportEvidenceCatalogueValidation.js.map +1 -0
- package/dist/azure/reportEvidenceValidation.d.ts +7 -0
- package/dist/azure/reportEvidenceValidation.d.ts.map +1 -0
- package/dist/azure/reportEvidenceValidation.js +617 -0
- package/dist/azure/reportEvidenceValidation.js.map +1 -0
- package/dist/azure/reportEvidenceValidationHelpers.d.ts +14 -0
- package/dist/azure/reportEvidenceValidationHelpers.d.ts.map +1 -0
- package/dist/azure/reportEvidenceValidationHelpers.js +122 -0
- package/dist/azure/reportEvidenceValidationHelpers.js.map +1 -0
- package/dist/azure/reportSavingsContributionValidation.d.ts +5 -0
- package/dist/azure/reportSavingsContributionValidation.d.ts.map +1 -0
- package/dist/azure/reportSavingsContributionValidation.js +37 -0
- package/dist/azure/reportSavingsContributionValidation.js.map +1 -0
- package/dist/azure/reportSpend.d.ts +87 -0
- package/dist/azure/reportSpend.d.ts.map +1 -0
- package/dist/azure/reportSpend.js +5 -0
- package/dist/azure/reportSpend.js.map +1 -0
- package/dist/azure/reportSpendValidation.d.ts +7 -0
- package/dist/azure/reportSpendValidation.d.ts.map +1 -0
- package/dist/azure/reportSpendValidation.js +197 -0
- package/dist/azure/reportSpendValidation.js.map +1 -0
- package/dist/azure/reportSpendValidationHelpers.d.ts +7 -0
- package/dist/azure/reportSpendValidationHelpers.d.ts.map +1 -0
- package/dist/azure/reportSpendValidationHelpers.js +31 -0
- package/dist/azure/reportSpendValidationHelpers.js.map +1 -0
- package/dist/azure/reports.d.ts +32 -10
- package/dist/azure/reports.d.ts.map +1 -1
- package/dist/azure/reports.js.map +1 -1
- package/dist/azure/resilienceFacts.d.ts +100 -0
- package/dist/azure/resilienceFacts.d.ts.map +1 -0
- package/dist/azure/resilienceFacts.js +20 -0
- package/dist/azure/resilienceFacts.js.map +1 -0
- package/dist/azure/resilienceFactsValidation.d.ts +4 -0
- package/dist/azure/resilienceFactsValidation.d.ts.map +1 -0
- package/dist/azure/resilienceFactsValidation.js +70 -0
- package/dist/azure/resilienceFactsValidation.js.map +1 -0
- package/dist/azure/resources.d.ts +24 -12
- package/dist/azure/resources.d.ts.map +1 -1
- package/dist/azure/savings.d.ts +4 -2
- package/dist/azure/savings.d.ts.map +1 -1
- package/dist/azure/serviceRetirement.d.ts +52 -2
- package/dist/azure/serviceRetirement.d.ts.map +1 -1
- package/dist/azure/storage-inventory.d.ts +44 -0
- package/dist/azure/storage-inventory.d.ts.map +1 -1
- package/dist/azure/subscriptions.d.ts +57 -11
- package/dist/azure/subscriptions.d.ts.map +1 -1
- package/dist/azure/subscriptions.js +35 -0
- package/dist/azure/subscriptions.js.map +1 -1
- package/dist/azure/views.d.ts +110 -23
- package/dist/azure/views.d.ts.map +1 -1
- package/dist/azure/views.js +8 -1
- package/dist/azure/views.js.map +1 -1
- package/dist/azure/vmPatchManagement.d.ts +109 -0
- package/dist/azure/vmPatchManagement.d.ts.map +1 -0
- package/dist/azure/vmPatchManagement.js +7 -0
- package/dist/azure/vmPatchManagement.js.map +1 -0
- package/dist/common/boundedRows.d.ts +7 -0
- package/dist/common/boundedRows.d.ts.map +1 -0
- package/dist/{scheduler/scheduler.js → common/boundedRows.js} +1 -1
- package/dist/common/boundedRows.js.map +1 -0
- package/dist/common/index.d.ts +3 -0
- package/dist/common/index.d.ts.map +1 -1
- package/dist/common/index.js +3 -0
- package/dist/common/index.js.map +1 -1
- package/dist/common/metricStats.d.ts +29 -0
- package/dist/common/metricStats.d.ts.map +1 -0
- package/dist/{aws/portalPublicArtifactNestedEvidence.js → common/metricStats.js} +1 -1
- package/dist/common/metricStats.js.map +1 -0
- package/dist/common/provider.d.ts +55 -0
- package/dist/common/provider.d.ts.map +1 -1
- package/dist/common/provider.js.map +1 -1
- package/dist/common/relationships.d.ts +3 -3
- package/dist/common/relationships.d.ts.map +1 -1
- package/dist/common/resourceGraph.d.ts +137 -0
- package/dist/common/resourceGraph.d.ts.map +1 -0
- package/dist/common/resourceGraph.js +17 -0
- package/dist/common/resourceGraph.js.map +1 -0
- package/dist/common/resourceGraphValidation.d.ts +30 -0
- package/dist/common/resourceGraphValidation.d.ts.map +1 -0
- package/dist/common/resourceGraphValidation.js +369 -0
- package/dist/common/resourceGraphValidation.js.map +1 -0
- package/dist/common/resourceIdentity.d.ts +28 -0
- package/dist/common/resourceIdentity.d.ts.map +1 -0
- package/dist/common/resourceIdentity.js +35 -0
- package/dist/common/resourceIdentity.js.map +1 -0
- package/dist/common/sha256.d.ts +2 -0
- package/dist/common/sha256.d.ts.map +1 -1
- package/dist/common/sha256.js +3 -0
- package/dist/common/sha256.js.map +1 -1
- package/dist/common/utilizationStories.d.ts +695 -0
- package/dist/common/utilizationStories.d.ts.map +1 -0
- package/dist/common/utilizationStories.js +21 -0
- package/dist/common/utilizationStories.js.map +1 -0
- package/dist/common/utilizationStoriesValidation.d.ts +60 -0
- package/dist/common/utilizationStoriesValidation.d.ts.map +1 -0
- package/dist/common/utilizationStoriesValidation.js +762 -0
- package/dist/common/utilizationStoriesValidation.js.map +1 -0
- package/dist/common/validationHelpers.d.ts +37 -0
- package/dist/common/validationHelpers.d.ts.map +1 -0
- package/dist/common/validationHelpers.js +147 -0
- package/dist/common/validationHelpers.js.map +1 -0
- package/dist/company/company.d.ts +1 -0
- package/dist/company/company.d.ts.map +1 -1
- package/dist/environment/canonicalization.d.ts +12 -0
- package/dist/environment/canonicalization.d.ts.map +1 -0
- package/dist/environment/canonicalization.js +40 -0
- package/dist/environment/canonicalization.js.map +1 -0
- package/dist/environment/contracts.d.ts +472 -0
- package/dist/environment/contracts.d.ts.map +1 -0
- package/dist/environment/contracts.js +73 -0
- package/dist/environment/contracts.js.map +1 -0
- package/dist/environment/index.d.ts +6 -0
- package/dist/environment/index.d.ts.map +1 -0
- package/dist/environment/index.js +22 -0
- package/dist/environment/index.js.map +1 -0
- package/dist/environment/internal.d.ts +21 -0
- package/dist/environment/internal.d.ts.map +1 -0
- package/dist/environment/internal.js +113 -0
- package/dist/environment/internal.js.map +1 -0
- package/dist/environment/references.d.ts +24 -0
- package/dist/environment/references.d.ts.map +1 -0
- package/dist/environment/references.js +243 -0
- package/dist/environment/references.js.map +1 -0
- package/dist/environment/tenant.d.ts +128 -0
- package/dist/environment/tenant.d.ts.map +1 -0
- package/dist/environment/tenant.js +203 -0
- package/dist/environment/tenant.js.map +1 -0
- package/dist/environment/validation.d.ts +34 -0
- package/dist/environment/validation.d.ts.map +1 -0
- package/dist/environment/validation.js +655 -0
- package/dist/environment/validation.js.map +1 -0
- package/dist/esm/accounts/accounts.js +1 -0
- package/dist/esm/accounts/azureManualOnboarding.js +8 -0
- package/dist/esm/accounts/azureSpSetup.js +14 -1
- package/dist/esm/accounts/azureSpSetupDurable.js +27 -1
- package/dist/esm/accounts/index.js +2 -0
- package/dist/esm/accounts/subscriptionWriteAccess.js +112 -0
- package/dist/esm/accounts/writePermissions.js +46 -0
- package/dist/esm/ai/conversationHistory.js +6 -0
- package/dist/esm/ai/followUps.js +16 -0
- package/dist/esm/ai/grounding.js +147 -0
- package/dist/esm/ai/index.js +11 -1
- package/dist/esm/ai/workspaceArtifacts.js +158 -0
- package/dist/esm/aws/commitments-planning.js +6 -0
- package/dist/esm/aws/commitmentsPlanningValidation.js +2 -1
- package/dist/esm/aws/estates.js +7 -1
- package/dist/esm/aws/index.js +7 -13
- package/dist/esm/aws/organizationCommitments.js +48 -0
- package/dist/esm/aws/organizationCommitmentsApiValidation.js +220 -0
- package/dist/esm/aws/organizationCommitmentsValidation.js +225 -0
- package/dist/esm/aws/portalOrganizationCommitmentsPlanningPublicArtifactValidation.js +405 -0
- package/dist/esm/aws/portalOrganizationCommitmentsPlanningPublicArtifacts.js +2 -0
- package/dist/esm/aws/publicArtifacts.js +2 -0
- package/dist/esm/aws/relationships.js +4 -1
- package/dist/esm/aws/requests.js +4 -2
- package/dist/esm/aws/resourceGraph.js +63 -0
- package/dist/esm/aws/validationHelpers.js +46 -0
- package/dist/esm/azure/activityLogAnalysis.js +64 -0
- package/dist/esm/azure/activityLogAnalysisPublicValidation.js +360 -0
- package/dist/esm/azure/activityLogAnalysisPublicValidationHelpers.js +172 -0
- package/dist/esm/azure/activityLogAnalysisValidation.js +365 -0
- package/dist/esm/azure/billingPlots.js +45 -4
- package/dist/esm/azure/commitmentsPlanning.js +8 -1
- package/dist/esm/azure/commitmentsPlanningValidation.js +39 -0
- package/dist/esm/azure/common.js +28 -1
- package/dist/esm/azure/costComposition.js +80 -0
- package/dist/esm/azure/financialAnalyticsDelivery.js +5 -0
- package/dist/esm/azure/financialAnalyticsDeliveryValidation.js +184 -11
- package/dist/esm/azure/financialAnalyticsDisplayKernel.js +139 -0
- package/dist/esm/azure/financialAnalyticsValidation.js +101 -19
- package/dist/esm/azure/financialAuthorityProjectionKernel.js +263 -0
- package/dist/esm/azure/financialAuthorityViewValidation.js +271 -1
- package/dist/esm/azure/financialChargeComposition.js +36 -0
- package/dist/esm/azure/financialChargeCompositionKernel.js +48 -0
- package/dist/esm/azure/financialChargeCompositionValidation.js +155 -0
- package/dist/esm/azure/financialChargePolicy.js +473 -0
- package/dist/esm/azure/financialCurrentSpendSurfaceProjection.js +2 -0
- package/dist/esm/azure/financialCurrentSpendSurfaceProjectionValidation.js +184 -0
- package/dist/esm/azure/financialDataflowKernel.js +164 -0
- package/dist/esm/azure/financialDataflowValidation.js +199 -29
- package/dist/esm/azure/financialEvidenceAssessmentValidation.js +7 -0
- package/dist/esm/azure/financialEvidenceCoverage.js +106 -0
- package/dist/esm/azure/financialPolicyDelivery.js +4 -0
- package/dist/esm/azure/financialPolicyDeliveryValidation.js +227 -7
- package/dist/esm/azure/financialPolicyKernel.js +225 -0
- package/dist/esm/azure/financialPolicyValidation.js +110 -16
- package/dist/esm/azure/financialProjectionValidation.js +43 -3
- package/dist/esm/azure/financialResourceSurfaceProjection.js +2 -0
- package/dist/esm/azure/financialResourceSurfaceProjectionValidation.js +243 -0
- package/dist/esm/azure/financialSavingsAuthority.js +1 -0
- package/dist/esm/azure/financialSavingsAuthorityValidation.js +186 -2
- package/dist/esm/azure/financialSavingsChargePolicyKernel.js +29 -0
- package/dist/esm/azure/financialSavingsCoordinateValidation.js +98 -19
- package/dist/esm/azure/financialSavingsPercentageKernel.js +44 -0
- package/dist/esm/azure/financialSavingsSurfaceProjection.js +2 -0
- package/dist/esm/azure/financialSavingsSurfaceProjectionKernel.js +427 -0
- package/dist/esm/azure/financialSavingsSurfaceProjectionValidation.js +199 -13
- package/dist/esm/azure/financialScope.js +14 -0
- package/dist/esm/azure/financialScopeBaseline.js +12 -0
- package/dist/esm/azure/financialScopeBaselineIdentity.js +24 -4
- package/dist/esm/azure/financialScopeBaselineValidation.js +21 -4
- package/dist/esm/azure/governance.js +1 -0
- package/dist/esm/azure/payloads.js +84 -1
- package/dist/esm/azure/recommendationLifecycleOverlayValidation.js +75 -0
- package/dist/esm/azure/recommendations.js +2 -0
- package/dist/esm/azure/reportDailySpend.js +2 -0
- package/dist/esm/azure/reportDailySpendValidation.js +67 -0
- package/dist/esm/azure/reportEvidence.js +29 -0
- package/dist/esm/azure/reportEvidenceCatalogueValidation.js +103 -0
- package/dist/esm/azure/reportEvidenceValidation.js +609 -0
- package/dist/esm/azure/reportEvidenceValidationHelpers.js +94 -0
- package/dist/esm/azure/reportSavingsContributionValidation.js +30 -0
- package/dist/esm/azure/reportSpend.js +1 -0
- package/dist/esm/azure/reportSpendValidation.js +189 -0
- package/dist/esm/azure/reportSpendValidationHelpers.js +22 -0
- package/dist/esm/azure/resilienceFacts.js +16 -0
- package/dist/esm/azure/resilienceFactsValidation.js +64 -0
- package/dist/esm/azure/subscriptions.js +33 -1
- package/dist/esm/azure/views.js +8 -1
- package/dist/esm/azure/vmPatchManagement.js +3 -0
- package/dist/esm/common/index.js +3 -0
- package/dist/esm/common/resourceGraph.js +13 -0
- package/dist/esm/common/resourceGraphValidation.js +365 -0
- package/dist/esm/common/resourceIdentity.js +24 -0
- package/dist/esm/common/sha256.js +2 -0
- package/dist/esm/common/utilizationStories.js +17 -0
- package/dist/esm/common/utilizationStoriesValidation.js +718 -0
- package/dist/esm/common/validationHelpers.js +115 -0
- package/dist/esm/entries/commitments-planning.js +2 -2
- package/dist/esm/entries/environment.js +3 -0
- package/dist/esm/entries/relationships.js +2 -2
- package/dist/esm/environment/canonicalization.js +34 -0
- package/dist/esm/environment/contracts.js +69 -0
- package/dist/esm/environment/index.js +5 -0
- package/dist/esm/environment/internal.js +97 -0
- package/dist/esm/environment/references.js +230 -0
- package/dist/esm/environment/tenant.js +190 -0
- package/dist/esm/environment/validation.js +635 -0
- package/dist/esm/identity/index.js +1 -0
- package/dist/esm/index.js +18 -0
- package/dist/esm/index.vite.js +12 -0
- package/dist/esm/reporting/jobs/index.js +13 -0
- package/dist/esm/reporting/jobs/reportJobIdentity.js +76 -0
- package/dist/esm/reporting/jobs/reportJobMessages.js +47 -0
- package/dist/esm/reporting/jobs/reportJobRow.js +264 -0
- package/dist/esm/reporting/jobs/reportJobSpec.js +295 -0
- package/dist/esm/reporting/jobs/reportJobStatus.js +87 -0
- package/dist/esm/reporting/shared/reportTableEntities.js +41 -0
- package/dist/esm/reporting/shared/reportingDigest.js +57 -0
- package/dist/esm/reporting/shared/reportingIds.js +88 -0
- package/dist/esm/reporting/shared/reportingPaths.js +23 -0
- package/dist/esm/scheduler/index.js +4 -1
- package/dist/esm/scheduler/resourceStrategy.js +2 -0
- package/dist/esm/scheduler/resourceStrategyCapabilityValidation.js +265 -0
- package/dist/esm/scheduler/resourceStrategyContracts.js +20 -0
- package/dist/esm/scheduler/resourceStrategyFinancialValidation.js +145 -0
- package/dist/esm/scheduler/resourceStrategyPermissionValidation.js +190 -0
- package/dist/esm/scheduler/resourceStrategyScheduleValidation.js +506 -0
- package/dist/esm/scheduler/resourceStrategyValidation.js +4 -0
- package/dist/esm/scheduler/resourceStrategyValidationShared.js +261 -0
- package/dist/esm/scheduler/schedulerContracts.js +1 -0
- package/dist/esm/scheduler/schedulerValidation.js +372 -0
- package/dist/esm/scheduler/weeklyAvailabilityFixtures.js +140 -0
- package/dist/events/alertDefinitionRun.d.ts +4 -0
- package/dist/events/alertDefinitionRun.d.ts.map +1 -1
- package/dist/events/baseAlert.d.ts +1 -0
- package/dist/events/baseAlert.d.ts.map +1 -1
- package/dist/events/cost.d.ts +4 -0
- package/dist/events/cost.d.ts.map +1 -1
- package/dist/events/quickAlerts.d.ts +13 -4
- package/dist/events/quickAlerts.d.ts.map +1 -1
- package/dist/events/quickAlerts.js.map +1 -1
- package/dist/features-and-permissions/access.d.ts +79 -0
- package/dist/features-and-permissions/access.d.ts.map +1 -1
- package/dist/identity/index.d.ts +1 -0
- package/dist/identity/index.d.ts.map +1 -1
- package/dist/identity/index.js +1 -0
- package/dist/identity/index.js.map +1 -1
- package/dist/identity/microsoftSignInAdminConsent.d.ts +59 -0
- package/dist/identity/microsoftSignInAdminConsent.d.ts.map +1 -0
- package/dist/{aws/portalRelationshipResourceNodeTypes.js → identity/microsoftSignInAdminConsent.js} +1 -1
- package/dist/identity/microsoftSignInAdminConsent.js.map +1 -0
- package/dist/index.d.ts +18 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +24 -0
- package/dist/index.js.map +1 -1
- package/dist/index.vite.d.ts +12 -0
- package/dist/index.vite.d.ts.map +1 -1
- package/dist/index.vite.js +16 -0
- package/dist/index.vite.js.map +1 -1
- package/dist/portfolio/portfolioOperations.d.ts +1 -1
- package/dist/portfolio/portfolioOperations.d.ts.map +1 -1
- package/dist/reporting/jobs/index.d.ts +14 -0
- package/dist/reporting/jobs/index.d.ts.map +1 -0
- package/dist/reporting/jobs/index.js +45 -0
- package/dist/reporting/jobs/index.js.map +1 -0
- package/dist/reporting/jobs/reportJobIdentity.d.ts +44 -0
- package/dist/reporting/jobs/reportJobIdentity.d.ts.map +1 -0
- package/dist/reporting/jobs/reportJobIdentity.js +88 -0
- package/dist/reporting/jobs/reportJobIdentity.js.map +1 -0
- package/dist/reporting/jobs/reportJobMessages.d.ts +30 -0
- package/dist/reporting/jobs/reportJobMessages.d.ts.map +1 -0
- package/dist/reporting/jobs/reportJobMessages.js +54 -0
- package/dist/reporting/jobs/reportJobMessages.js.map +1 -0
- package/dist/reporting/jobs/reportJobRow.d.ts +98 -0
- package/dist/reporting/jobs/reportJobRow.d.ts.map +1 -0
- package/dist/reporting/jobs/reportJobRow.js +270 -0
- package/dist/reporting/jobs/reportJobRow.js.map +1 -0
- package/dist/reporting/jobs/reportJobSpec.d.ts +92 -0
- package/dist/reporting/jobs/reportJobSpec.d.ts.map +1 -0
- package/dist/reporting/jobs/reportJobSpec.js +304 -0
- package/dist/reporting/jobs/reportJobSpec.js.map +1 -0
- package/dist/reporting/jobs/reportJobStatus.d.ts +60 -0
- package/dist/reporting/jobs/reportJobStatus.d.ts.map +1 -0
- package/dist/reporting/jobs/reportJobStatus.js +98 -0
- package/dist/reporting/jobs/reportJobStatus.js.map +1 -0
- package/dist/reporting/shared/reportTableEntities.d.ts +23 -0
- package/dist/reporting/shared/reportTableEntities.d.ts.map +1 -0
- package/dist/reporting/shared/reportTableEntities.js +47 -0
- package/dist/reporting/shared/reportTableEntities.js.map +1 -0
- package/dist/reporting/shared/reportingDigest.d.ts +6 -0
- package/dist/reporting/shared/reportingDigest.d.ts.map +1 -0
- package/dist/reporting/shared/reportingDigest.js +63 -0
- package/dist/reporting/shared/reportingDigest.js.map +1 -0
- package/dist/reporting/shared/reportingIds.d.ts +34 -0
- package/dist/reporting/shared/reportingIds.d.ts.map +1 -0
- package/dist/reporting/shared/reportingIds.js +102 -0
- package/dist/reporting/shared/reportingIds.js.map +1 -0
- package/dist/reporting/shared/reportingPaths.d.ts +14 -0
- package/dist/reporting/shared/reportingPaths.d.ts.map +1 -0
- package/dist/reporting/shared/reportingPaths.js +29 -0
- package/dist/reporting/shared/reportingPaths.js.map +1 -0
- package/dist/scheduler/index.d.ts +4 -1
- package/dist/scheduler/index.d.ts.map +1 -1
- package/dist/scheduler/index.js +4 -1
- package/dist/scheduler/index.js.map +1 -1
- package/dist/scheduler/resourceStrategy.d.ts +3 -0
- package/dist/scheduler/resourceStrategy.d.ts.map +1 -0
- package/dist/scheduler/resourceStrategy.js +19 -0
- package/dist/scheduler/resourceStrategy.js.map +1 -0
- package/dist/scheduler/resourceStrategyCapabilityValidation.d.ts +4 -0
- package/dist/scheduler/resourceStrategyCapabilityValidation.d.ts.map +1 -0
- package/dist/scheduler/resourceStrategyCapabilityValidation.js +270 -0
- package/dist/scheduler/resourceStrategyCapabilityValidation.js.map +1 -0
- package/dist/scheduler/resourceStrategyContracts.d.ts +466 -0
- package/dist/scheduler/resourceStrategyContracts.d.ts.map +1 -0
- package/dist/scheduler/resourceStrategyContracts.js +24 -0
- package/dist/scheduler/resourceStrategyContracts.js.map +1 -0
- package/dist/scheduler/resourceStrategyFinancialValidation.d.ts +5 -0
- package/dist/scheduler/resourceStrategyFinancialValidation.d.ts.map +1 -0
- package/dist/scheduler/resourceStrategyFinancialValidation.js +151 -0
- package/dist/scheduler/resourceStrategyFinancialValidation.js.map +1 -0
- package/dist/scheduler/resourceStrategyPermissionValidation.d.ts +4 -0
- package/dist/scheduler/resourceStrategyPermissionValidation.d.ts.map +1 -0
- package/dist/scheduler/resourceStrategyPermissionValidation.js +195 -0
- package/dist/scheduler/resourceStrategyPermissionValidation.js.map +1 -0
- package/dist/scheduler/resourceStrategyScheduleValidation.d.ts +14 -0
- package/dist/scheduler/resourceStrategyScheduleValidation.d.ts.map +1 -0
- package/dist/scheduler/resourceStrategyScheduleValidation.js +519 -0
- package/dist/scheduler/resourceStrategyScheduleValidation.js.map +1 -0
- package/dist/scheduler/resourceStrategyValidation.d.ts +5 -0
- package/dist/scheduler/resourceStrategyValidation.d.ts.map +1 -0
- package/dist/scheduler/resourceStrategyValidation.js +21 -0
- package/dist/scheduler/resourceStrategyValidation.js.map +1 -0
- package/dist/scheduler/resourceStrategyValidationShared.d.ts +19 -0
- package/dist/scheduler/resourceStrategyValidationShared.d.ts.map +1 -0
- package/dist/scheduler/resourceStrategyValidationShared.js +281 -0
- package/dist/scheduler/resourceStrategyValidationShared.js.map +1 -0
- package/dist/scheduler/schedulerContracts.d.ts +184 -0
- package/dist/scheduler/schedulerContracts.d.ts.map +1 -0
- package/dist/scheduler/schedulerContracts.js +3 -0
- package/dist/scheduler/schedulerContracts.js.map +1 -0
- package/dist/scheduler/schedulerValidation.d.ts +15 -0
- package/dist/scheduler/schedulerValidation.d.ts.map +1 -0
- package/dist/scheduler/schedulerValidation.js +388 -0
- package/dist/scheduler/schedulerValidation.js.map +1 -0
- package/dist/scheduler/weeklyAvailabilityFixtures.d.ts +26 -0
- package/dist/scheduler/weeklyAvailabilityFixtures.d.ts.map +1 -0
- package/dist/scheduler/weeklyAvailabilityFixtures.js +144 -0
- package/dist/scheduler/weeklyAvailabilityFixtures.js.map +1 -0
- package/package.json +43 -7
- package/dist/aws/pluginPublicArtifactBodyValidation.d.ts +0 -10
- package/dist/aws/pluginPublicArtifactBodyValidation.d.ts.map +0 -1
- package/dist/aws/pluginPublicArtifactBodyValidation.js +0 -225
- package/dist/aws/pluginPublicArtifactBodyValidation.js.map +0 -1
- package/dist/aws/pluginPublicArtifactEvidence.d.ts +0 -161
- package/dist/aws/pluginPublicArtifactEvidence.d.ts.map +0 -1
- package/dist/aws/pluginPublicArtifactEvidence.js.map +0 -1
- package/dist/aws/pluginPublicArtifactManifestValidation.d.ts +0 -4
- package/dist/aws/pluginPublicArtifactManifestValidation.d.ts.map +0 -1
- package/dist/aws/pluginPublicArtifactManifestValidation.js +0 -259
- package/dist/aws/pluginPublicArtifactManifestValidation.js.map +0 -1
- package/dist/aws/pluginPublicArtifactSectionValidation.d.ts +0 -6
- package/dist/aws/pluginPublicArtifactSectionValidation.d.ts.map +0 -1
- package/dist/aws/pluginPublicArtifactSectionValidation.js +0 -471
- package/dist/aws/pluginPublicArtifactSectionValidation.js.map +0 -1
- package/dist/aws/pluginPublicArtifactValidation.d.ts +0 -3
- package/dist/aws/pluginPublicArtifactValidation.d.ts.map +0 -1
- package/dist/aws/pluginPublicArtifactValidation.js +0 -9
- package/dist/aws/pluginPublicArtifactValidation.js.map +0 -1
- package/dist/aws/pluginPublicArtifactValidationHelpers.d.ts +0 -23
- package/dist/aws/pluginPublicArtifactValidationHelpers.d.ts.map +0 -1
- package/dist/aws/pluginPublicArtifactValidationHelpers.js +0 -240
- package/dist/aws/pluginPublicArtifactValidationHelpers.js.map +0 -1
- package/dist/aws/pluginPublicArtifacts.d.ts +0 -253
- package/dist/aws/pluginPublicArtifacts.d.ts.map +0 -1
- package/dist/aws/pluginPublicArtifacts.js +0 -51
- package/dist/aws/pluginPublicArtifacts.js.map +0 -1
- package/dist/aws/portalCommitmentsPlanningPublicArtifactValidation.d.ts +0 -4
- package/dist/aws/portalCommitmentsPlanningPublicArtifactValidation.d.ts.map +0 -1
- package/dist/aws/portalCommitmentsPlanningPublicArtifactValidation.js +0 -513
- package/dist/aws/portalCommitmentsPlanningPublicArtifactValidation.js.map +0 -1
- package/dist/aws/portalCommitmentsPlanningPublicArtifacts.d.ts +0 -13
- package/dist/aws/portalCommitmentsPlanningPublicArtifacts.d.ts.map +0 -1
- package/dist/aws/portalCommitmentsPlanningPublicArtifacts.js +0 -5
- package/dist/aws/portalCommitmentsPlanningPublicArtifacts.js.map +0 -1
- package/dist/aws/portalPublicArtifactCurrentValidation.d.ts +0 -4
- package/dist/aws/portalPublicArtifactCurrentValidation.d.ts.map +0 -1
- package/dist/aws/portalPublicArtifactCurrentValidation.js +0 -333
- package/dist/aws/portalPublicArtifactCurrentValidation.js.map +0 -1
- package/dist/aws/portalPublicArtifactEvidenceValidation.d.ts +0 -6
- package/dist/aws/portalPublicArtifactEvidenceValidation.d.ts.map +0 -1
- package/dist/aws/portalPublicArtifactEvidenceValidation.js +0 -301
- package/dist/aws/portalPublicArtifactEvidenceValidation.js.map +0 -1
- package/dist/aws/portalPublicArtifactHistoryAiValidation.d.ts +0 -8
- package/dist/aws/portalPublicArtifactHistoryAiValidation.d.ts.map +0 -1
- package/dist/aws/portalPublicArtifactHistoryAiValidation.js +0 -377
- package/dist/aws/portalPublicArtifactHistoryAiValidation.js.map +0 -1
- package/dist/aws/portalPublicArtifactHistoryTypes.d.ts +0 -178
- package/dist/aws/portalPublicArtifactHistoryTypes.d.ts.map +0 -1
- package/dist/aws/portalPublicArtifactHistoryTypes.js +0 -44
- package/dist/aws/portalPublicArtifactHistoryTypes.js.map +0 -1
- package/dist/aws/portalPublicArtifactNestedEvidence.d.ts +0 -127
- package/dist/aws/portalPublicArtifactNestedEvidence.d.ts.map +0 -1
- package/dist/aws/portalPublicArtifactNestedEvidence.js.map +0 -1
- package/dist/aws/portalPublicArtifactNestedEvidenceValidation.d.ts +0 -6
- package/dist/aws/portalPublicArtifactNestedEvidenceValidation.d.ts.map +0 -1
- package/dist/aws/portalPublicArtifactNestedEvidenceValidation.js +0 -405
- package/dist/aws/portalPublicArtifactNestedEvidenceValidation.js.map +0 -1
- package/dist/aws/portalPublicArtifactValidation.d.ts +0 -3
- package/dist/aws/portalPublicArtifactValidation.d.ts.map +0 -1
- package/dist/aws/portalPublicArtifactValidation.js +0 -14
- package/dist/aws/portalPublicArtifactValidation.js.map +0 -1
- package/dist/aws/portalPublicArtifactValidationCommon.d.ts +0 -30
- package/dist/aws/portalPublicArtifactValidationCommon.d.ts.map +0 -1
- package/dist/aws/portalPublicArtifactValidationCommon.js +0 -167
- package/dist/aws/portalPublicArtifactValidationCommon.js.map +0 -1
- package/dist/aws/portalPublicArtifacts.d.ts +0 -400
- package/dist/aws/portalPublicArtifacts.d.ts.map +0 -1
- package/dist/aws/portalPublicArtifacts.js +0 -85
- package/dist/aws/portalPublicArtifacts.js.map +0 -1
- package/dist/aws/portalRelationshipPublicArtifactValidation.d.ts +0 -4
- package/dist/aws/portalRelationshipPublicArtifactValidation.d.ts.map +0 -1
- package/dist/aws/portalRelationshipPublicArtifactValidation.js +0 -338
- package/dist/aws/portalRelationshipPublicArtifactValidation.js.map +0 -1
- package/dist/aws/portalRelationshipPublicArtifacts.d.ts +0 -196
- package/dist/aws/portalRelationshipPublicArtifacts.d.ts.map +0 -1
- package/dist/aws/portalRelationshipPublicArtifacts.js +0 -63
- package/dist/aws/portalRelationshipPublicArtifacts.js.map +0 -1
- package/dist/aws/portalRelationshipResourceNodeTypes.d.ts +0 -269
- package/dist/aws/portalRelationshipResourceNodeTypes.d.ts.map +0 -1
- package/dist/aws/portalRelationshipResourceNodeTypes.js.map +0 -1
- package/dist/aws/portalRelationshipResourceNodeValidation.d.ts +0 -2
- package/dist/aws/portalRelationshipResourceNodeValidation.d.ts.map +0 -1
- package/dist/aws/portalRelationshipResourceNodeValidation.js +0 -372
- package/dist/aws/portalRelationshipResourceNodeValidation.js.map +0 -1
- package/dist/esm/aws/pluginPublicArtifactBodyValidation.js +0 -217
- package/dist/esm/aws/pluginPublicArtifactManifestValidation.js +0 -255
- package/dist/esm/aws/pluginPublicArtifactSectionValidation.js +0 -464
- package/dist/esm/aws/pluginPublicArtifactValidation.js +0 -2
- package/dist/esm/aws/pluginPublicArtifactValidationHelpers.js +0 -216
- package/dist/esm/aws/pluginPublicArtifacts.js +0 -44
- package/dist/esm/aws/portalCommitmentsPlanningPublicArtifactValidation.js +0 -509
- package/dist/esm/aws/portalCommitmentsPlanningPublicArtifacts.js +0 -1
- package/dist/esm/aws/portalPublicArtifactCurrentValidation.js +0 -328
- package/dist/esm/aws/portalPublicArtifactEvidenceValidation.js +0 -294
- package/dist/esm/aws/portalPublicArtifactHistoryAiValidation.js +0 -368
- package/dist/esm/aws/portalPublicArtifactHistoryTypes.js +0 -40
- package/dist/esm/aws/portalPublicArtifactNestedEvidenceValidation.js +0 -397
- package/dist/esm/aws/portalPublicArtifactValidation.js +0 -2
- package/dist/esm/aws/portalPublicArtifactValidationCommon.js +0 -139
- package/dist/esm/aws/portalPublicArtifacts.js +0 -73
- package/dist/esm/aws/portalRelationshipPublicArtifactValidation.js +0 -334
- package/dist/esm/aws/portalRelationshipPublicArtifacts.js +0 -59
- package/dist/esm/aws/portalRelationshipResourceNodeValidation.js +0 -368
- package/dist/scheduler/scheduler.d.ts +0 -263
- package/dist/scheduler/scheduler.d.ts.map +0 -1
- package/dist/scheduler/scheduler.js.map +0 -1
- /package/dist/esm/aws/{pluginPublicArtifactEvidence.js → commitmentsPlanningView.js} +0 -0
- /package/dist/esm/{aws/portalPublicArtifactNestedEvidence.js → common/boundedRows.js} +0 -0
- /package/dist/esm/{aws/portalRelationshipResourceNodeTypes.js → common/metricStats.js} +0 -0
- /package/dist/esm/{scheduler/scheduler.js → identity/microsoftSignInAdminConsent.js} +0 -0
|
@@ -0,0 +1,762 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isResilienceProfileConfig = exports.isUtilizationProfileConfig = exports.isUtilizationProfileEntry = exports.isUtilizationMetricEntry = exports.isReportingStories = exports.isStoryFingerprintRows = exports.isStoryFingerprint = exports.isStorySample = exports.isStoryArtifact = exports.isRowInScope = exports.isStorySummarySection = exports.isStorySection = exports.isStorySummary = exports.storyRowGuard = exports.isCommitmentRow = exports.isHybridBenefitRow = exports.isResilienceRow = exports.isScheduleCandidateRow = exports.isRightSkuRow = exports.isOversizedResourceRow = exports.hasCellsForColumns = exports.isStoryColumn = exports.isStoryCell = exports.isProtectionProfile = exports.isProtectionCapability = exports.isUtilizationSignal = exports.isUtilizationProfile = exports.isSkuOption = exports.isRightSizeRejection = exports.isCommitmentBlock = exports.isSkuProjectedUsage = exports.isSkuOptionSummary = exports.isEvidenceWindow = exports.isCommitmentCoverage = exports.isCommitmentBenefit = exports.isCorroboratedRunningProfile = exports.isRunningProfile = exports.isCapacityDescriptor = exports.isCapacityScalingDescriptor = exports.isMetricSparkline = void 0;
|
|
4
|
+
const validationHelpers_1 = require("./validationHelpers");
|
|
5
|
+
const utilizationStories_1 = require("./utilizationStories");
|
|
6
|
+
const PROVIDERS = new Set(['azure', 'aws']);
|
|
7
|
+
const METRIC_ROLES = new Set(['primary', 'secondary', 'context']);
|
|
8
|
+
const DIMENSION_POLICIES = new Set(['average', 'sum', 'max', 'split']);
|
|
9
|
+
const METRIC_VISUALS = new Set(['sparkline', 'trend', 'capacity-bar', 'mix-bar', 'event-strip']);
|
|
10
|
+
const BILLED_ON = new Set(['allocated', 'used', 'included']);
|
|
11
|
+
const AXIS_MAX_SOURCES = new Set(['config', 'capacity', 'observed']);
|
|
12
|
+
const SCALE_MODES = new Set(['fixed', 'autoscale', 'serverless']);
|
|
13
|
+
const RUN_MODES = new Set(['stop-start', 'auto-pause', 'scale-to-zero', 'always-on']);
|
|
14
|
+
const RUNNING_BASES = new Set(['power-state', 'billing-hours', 'metric-presence']);
|
|
15
|
+
const SIZING_VERDICTS = new Set(['oversized', 'undersized', 'busy', 'rebalance', 'mostly-off', 'idle', 'no-telemetry', 'fits', 'unknown']);
|
|
16
|
+
const SCHEDULE_FITS = new Set(['good', 'fair', 'low', 'done', 'insufficient-data', 'not-applicable']);
|
|
17
|
+
const SCHEDULE_FITS_REQUIRING_CORROBORATION = new Set(['good', 'fair', 'low']);
|
|
18
|
+
const SCHEDULE_ACTIONS = new Set(['stop', 'pause', 'scale']);
|
|
19
|
+
const TELEMETRY_STATUSES = new Set(['collected', 'partial', 'no-series', 'unavailable']);
|
|
20
|
+
const CONFIDENCES = new Set(['high', 'medium', 'low']);
|
|
21
|
+
const BENEFIT_TYPES = new Set(['reservation', 'savings-plan']);
|
|
22
|
+
const SKU_OPTION_KINDS = new Set(['same-shape', 'fits-usage', 'trade-off', 'cross-platform']);
|
|
23
|
+
const SKU_CAPABILITY_SEVERITIES = new Set(['info', 'warning', 'unknown']);
|
|
24
|
+
const SKU_CAPABILITY_BASES = new Set(['sku-capability', 'current-setting', 'active-vcpu-capability', 'unknown']);
|
|
25
|
+
const SKU_CAPABILITY_MATERIALITIES = new Set(['used', 'not-used', 'unknown']);
|
|
26
|
+
const RIGHT_SIZE_ASSESSMENT_STATUSES = new Set(['recommended', 'no-change', 'insufficient-data', 'not-supported']);
|
|
27
|
+
const CAPABILITY_STATES = new Set(['enabled', 'disabled', 'partial', 'unknown', 'not-applicable']);
|
|
28
|
+
const RIGHT_SKU_VERDICTS = new Set(['modernise', 'downsize', 'consider', 'keep', 'blocked-by-commitment']);
|
|
29
|
+
const SKU_SAVINGS_BASES = new Set(['list', 'billed']);
|
|
30
|
+
const COMMITMENT_BLOCK_REASONS = new Set(['reservation', 'cost-not-lower']);
|
|
31
|
+
const RIGHT_SIZE_REJECTION_REASONS = new Set(['observed-fit', 'no-saving']);
|
|
32
|
+
const SIGNAL_ACTION_REASONS = new Set(['observed-fit', 'no-saving', 'blocked-by-commitment']);
|
|
33
|
+
const BACKUP_RUN_STATES = new Set(['ok', 'failed', null]);
|
|
34
|
+
const STORY_KEY_SET = new Set(utilizationStories_1.STORY_KEYS);
|
|
35
|
+
const STORY_CELL_KINDS = new Set([
|
|
36
|
+
'text',
|
|
37
|
+
'number',
|
|
38
|
+
'money',
|
|
39
|
+
'percent',
|
|
40
|
+
'mark',
|
|
41
|
+
'dot',
|
|
42
|
+
'sparkline',
|
|
43
|
+
'dual',
|
|
44
|
+
'capacity-bar',
|
|
45
|
+
'mix-bar',
|
|
46
|
+
'event-strip',
|
|
47
|
+
'weekly-grid',
|
|
48
|
+
]);
|
|
49
|
+
const SERIES_ROLES = new Set(['primary', 'secondary']);
|
|
50
|
+
const STATUS_TONES = new Set(['good', 'warn', 'bad', 'neutral', 'muted']);
|
|
51
|
+
const COLUMN_ROLE_CLASSES = new Set(['res', 'prim', 'sec', 'nums', 'cap', 'read', 'cost', 'save', 'dual']);
|
|
52
|
+
const PRODUCERS = new Set(['parser', 'strategy']);
|
|
53
|
+
const isNullableNumber = (value) => value === null || (0, validationHelpers_1.isFiniteNumber)(value);
|
|
54
|
+
const isOptionalNullableNumber = (value) => value === undefined || isNullableNumber(value);
|
|
55
|
+
const isNullableString = (value) => value === null || (0, validationHelpers_1.isString)(value);
|
|
56
|
+
const isNullableInteger = (value) => value === null || ((0, validationHelpers_1.isFiniteNumber)(value) && Number.isInteger(value));
|
|
57
|
+
const isText = (value) => typeof value === 'string';
|
|
58
|
+
const isOptionalText = (value) => value === undefined || isText(value);
|
|
59
|
+
const isBoolean = (value) => typeof value === 'boolean';
|
|
60
|
+
const isNullableSeries = (value) => Array.isArray(value) && value.every(isNullableNumber);
|
|
61
|
+
const isPercentage = (value) => (0, validationHelpers_1.isFiniteNumber)(value) && value >= 0 && value <= 100;
|
|
62
|
+
const isNullablePercentage = (value) => value === null || isPercentage(value);
|
|
63
|
+
const isPriority = (value) => (0, validationHelpers_1.isCount)(value) && value >= 1 && value <= 5;
|
|
64
|
+
const isStringRecord = (value) => (0, validationHelpers_1.isRecord)(value) && Object.values(value).every(isText);
|
|
65
|
+
const isNumberRecord = (value) => (0, validationHelpers_1.isRecord)(value) && Object.values(value).every(validationHelpers_1.isFiniteNumber);
|
|
66
|
+
const inSet = (set, value) => set.has(value);
|
|
67
|
+
const isWeeklyGrid = (value) => Array.isArray(value) &&
|
|
68
|
+
value.length === utilizationStories_1.STORY_LIMITS.weeklyGridDays &&
|
|
69
|
+
value.every(day => isNullableSeries(day) && day.length === utilizationStories_1.STORY_LIMITS.weeklyGridHours);
|
|
70
|
+
const METRIC_STATS_FIELDS = [
|
|
71
|
+
'average',
|
|
72
|
+
'median',
|
|
73
|
+
'p50',
|
|
74
|
+
'p75',
|
|
75
|
+
'p90',
|
|
76
|
+
'p95',
|
|
77
|
+
'p99',
|
|
78
|
+
'min',
|
|
79
|
+
'max',
|
|
80
|
+
'frequency',
|
|
81
|
+
'trend',
|
|
82
|
+
'variance',
|
|
83
|
+
'count',
|
|
84
|
+
'totalDataPoints',
|
|
85
|
+
'runningDataPoints',
|
|
86
|
+
'nonRunningDataPoints',
|
|
87
|
+
'runningTimePercentage',
|
|
88
|
+
'longestRunningStreak',
|
|
89
|
+
'longestDowntimeStreak',
|
|
90
|
+
'averageUptimeStreak',
|
|
91
|
+
'averageDowntimeStreak',
|
|
92
|
+
];
|
|
93
|
+
const METRIC_STATS_OPTIONAL_FIELDS = ['uptime', 'peakHours', 'offPeakHours'];
|
|
94
|
+
const isMetricStats = (value) => (0, validationHelpers_1.isRecord)(value) &&
|
|
95
|
+
METRIC_STATS_FIELDS.every(key => (0, validationHelpers_1.isFiniteNumber)(value[key])) &&
|
|
96
|
+
METRIC_STATS_OPTIONAL_FIELDS.every(key => value[key] === undefined || (0, validationHelpers_1.isFiniteNumber)(value[key]));
|
|
97
|
+
const isMetricSparkline = (value, days) => {
|
|
98
|
+
if (!(0, validationHelpers_1.isRecord)(value) || !(0, validationHelpers_1.isString)(value.key) || !(0, validationHelpers_1.isString)(value.metricName))
|
|
99
|
+
return false;
|
|
100
|
+
if (!inSet(METRIC_ROLES, value.role) || !inSet(METRIC_VISUALS, value.visual) || !isText(value.unit))
|
|
101
|
+
return false;
|
|
102
|
+
if (!isNullableNumber(value.axisMax) || (value.axisMaxSource !== undefined && !inSet(AXIS_MAX_SOURCES, value.axisMaxSource)))
|
|
103
|
+
return false;
|
|
104
|
+
if (value.billedOn !== undefined && !inSet(BILLED_ON, value.billedOn))
|
|
105
|
+
return false;
|
|
106
|
+
if (value.dimensions !== undefined &&
|
|
107
|
+
(!(0, validationHelpers_1.isRecord)(value.dimensions) ||
|
|
108
|
+
!inSet(DIMENSION_POLICIES, value.dimensions.policy) ||
|
|
109
|
+
!isOptionalText(value.dimensions.name) ||
|
|
110
|
+
!isOptionalText(value.dimensions.value) ||
|
|
111
|
+
!(0, validationHelpers_1.isCount)(value.dimensions.seriesCount)))
|
|
112
|
+
return false;
|
|
113
|
+
if (!(0, validationHelpers_1.isDateTime)(value.start) || value.bucket !== 'P1D')
|
|
114
|
+
return false;
|
|
115
|
+
if (!isNullableSeries(value.avg) || !isNullableSeries(value.p95) || !isNullableSeries(value.max))
|
|
116
|
+
return false;
|
|
117
|
+
if (value.avg.length !== value.p95.length || value.avg.length !== value.max.length)
|
|
118
|
+
return false;
|
|
119
|
+
if (days !== undefined && value.avg.length !== days)
|
|
120
|
+
return false;
|
|
121
|
+
return isMetricStats(value.stats) && (0, validationHelpers_1.isCount)(value.sourcePoints);
|
|
122
|
+
};
|
|
123
|
+
exports.isMetricSparkline = isMetricSparkline;
|
|
124
|
+
const isCapacityScalingDescriptor = (value) => {
|
|
125
|
+
if (!(0, validationHelpers_1.isRecord)(value) || !(value.autoscaleEnabled === null || isBoolean(value.autoscaleEnabled)))
|
|
126
|
+
return false;
|
|
127
|
+
if (!isNullableNumber(value.minimumUnits) ||
|
|
128
|
+
!isNullableNumber(value.defaultUnits) ||
|
|
129
|
+
!isNullableNumber(value.maximumUnits) ||
|
|
130
|
+
!isNullableString(value.source))
|
|
131
|
+
return false;
|
|
132
|
+
const minimum = value.minimumUnits;
|
|
133
|
+
const defaultUnits = value.defaultUnits;
|
|
134
|
+
const maximum = value.maximumUnits;
|
|
135
|
+
if ([minimum, defaultUnits, maximum].some(units => units !== null && units < 0))
|
|
136
|
+
return false;
|
|
137
|
+
if (minimum !== null && maximum !== null && minimum > maximum)
|
|
138
|
+
return false;
|
|
139
|
+
if (defaultUnits !== null && minimum !== null && defaultUnits < minimum)
|
|
140
|
+
return false;
|
|
141
|
+
if (defaultUnits !== null && maximum !== null && defaultUnits > maximum)
|
|
142
|
+
return false;
|
|
143
|
+
return true;
|
|
144
|
+
};
|
|
145
|
+
exports.isCapacityScalingDescriptor = isCapacityScalingDescriptor;
|
|
146
|
+
const isCapacityDescriptor = (value) => {
|
|
147
|
+
if (!(0, validationHelpers_1.isRecord)(value) ||
|
|
148
|
+
!isNullableString(value.sku) ||
|
|
149
|
+
!isNullableString(value.tier) ||
|
|
150
|
+
!isNullableNumber(value.units) ||
|
|
151
|
+
!isText(value.unitName) ||
|
|
152
|
+
!isOptionalNullableNumber(value.memoryGB) ||
|
|
153
|
+
!inSet(SCALE_MODES, value.scaleMode) ||
|
|
154
|
+
!isText(value.label))
|
|
155
|
+
return false;
|
|
156
|
+
if (value.scaling === undefined)
|
|
157
|
+
return true;
|
|
158
|
+
if (!(0, exports.isCapacityScalingDescriptor)(value.scaling))
|
|
159
|
+
return false;
|
|
160
|
+
if (value.scaling.autoscaleEnabled === true && value.scaleMode !== 'autoscale')
|
|
161
|
+
return false;
|
|
162
|
+
if (value.scaling.autoscaleEnabled === false && value.scaleMode !== 'fixed')
|
|
163
|
+
return false;
|
|
164
|
+
return true;
|
|
165
|
+
};
|
|
166
|
+
exports.isCapacityDescriptor = isCapacityDescriptor;
|
|
167
|
+
const isHourShare = (value) => (0, validationHelpers_1.isRecord)(value) && isNullableNumber(value.runningShare) && isNullableNumber(value.usageMean);
|
|
168
|
+
const isRunningProfile = (value, days) => {
|
|
169
|
+
if (!(0, validationHelpers_1.isRecord)(value) || !(0, validationHelpers_1.isString)(value.signalMetric) || !inSet(RUNNING_BASES, value.basis))
|
|
170
|
+
return false;
|
|
171
|
+
if (!Array.isArray(value.corroboration) || !value.corroboration.every(basis => inSet(RUNNING_BASES, basis)))
|
|
172
|
+
return false;
|
|
173
|
+
if (value.corroboration.includes(value.basis))
|
|
174
|
+
return false;
|
|
175
|
+
if (!isNullableSeries(value.daily) || (days !== undefined && value.daily.length !== days) || !isNullableNumber(value.share))
|
|
176
|
+
return false;
|
|
177
|
+
if (value.weekly === undefined)
|
|
178
|
+
return true;
|
|
179
|
+
const weekly = value.weekly;
|
|
180
|
+
return ((0, validationHelpers_1.isRecord)(weekly) &&
|
|
181
|
+
(0, validationHelpers_1.isString)(weekly.timezone) &&
|
|
182
|
+
isWeeklyGrid(weekly.running) &&
|
|
183
|
+
isWeeklyGrid(weekly.usage) &&
|
|
184
|
+
isHourShare(weekly.businessHours) &&
|
|
185
|
+
isHourShare(weekly.offHours));
|
|
186
|
+
};
|
|
187
|
+
exports.isRunningProfile = isRunningProfile;
|
|
188
|
+
/** A running signal derived from metric presence alone is not evidence of stopped time; it needs an independent source. */
|
|
189
|
+
const isCorroboratedRunningProfile = (value) => value.basis !== 'metric-presence' || value.corroboration.some(basis => basis !== 'metric-presence');
|
|
190
|
+
exports.isCorroboratedRunningProfile = isCorroboratedRunningProfile;
|
|
191
|
+
const isCommitmentBenefit = (value) => (0, validationHelpers_1.isRecord)(value) &&
|
|
192
|
+
isNullableString(value.benefitId) &&
|
|
193
|
+
isNullableString(value.benefitName) &&
|
|
194
|
+
(value.benefitId !== null || value.benefitName !== null) &&
|
|
195
|
+
inSet(BENEFIT_TYPES, value.benefitType) &&
|
|
196
|
+
isNullableString(value.status) &&
|
|
197
|
+
isNullableString(value.expiryDate) &&
|
|
198
|
+
(value.expiryDate === null || (0, validationHelpers_1.isDateTime)(value.expiryDate)) &&
|
|
199
|
+
isNullableInteger(value.daysToExpiry) &&
|
|
200
|
+
(value.expiryDate !== null || value.daysToExpiry === null);
|
|
201
|
+
exports.isCommitmentBenefit = isCommitmentBenefit;
|
|
202
|
+
const isCommitmentCoverage = (value) => (0, validationHelpers_1.isRecord)(value) &&
|
|
203
|
+
isNullableNumber(value.coveragePercent) &&
|
|
204
|
+
Array.isArray(value.benefitTypes) &&
|
|
205
|
+
value.benefitTypes.every(type => inSet(BENEFIT_TYPES, type)) &&
|
|
206
|
+
Array.isArray(value.benefitNames) &&
|
|
207
|
+
value.benefitNames.every(isText) &&
|
|
208
|
+
(value.benefits === undefined || (Array.isArray(value.benefits) && value.benefits.every(exports.isCommitmentBenefit))) &&
|
|
209
|
+
isNullableNumber(value.coveredCost) &&
|
|
210
|
+
isNullableNumber(value.uncoveredCost) &&
|
|
211
|
+
(0, validationHelpers_1.isDateTime)(value.windowStart) &&
|
|
212
|
+
(0, validationHelpers_1.isDateTime)(value.windowEnd);
|
|
213
|
+
exports.isCommitmentCoverage = isCommitmentCoverage;
|
|
214
|
+
const isEvidenceWindow = (value) => (0, validationHelpers_1.isRecord)(value) &&
|
|
215
|
+
(0, validationHelpers_1.isDateTime)(value.windowStart) &&
|
|
216
|
+
(0, validationHelpers_1.isDateTime)(value.windowEnd) &&
|
|
217
|
+
(0, validationHelpers_1.isCount)(value.days) &&
|
|
218
|
+
(0, validationHelpers_1.isCount)(value.sampleCount) &&
|
|
219
|
+
inSet(TELEMETRY_STATUSES, value.telemetry) &&
|
|
220
|
+
inSet(CONFIDENCES, value.confidence);
|
|
221
|
+
exports.isEvidenceWindow = isEvidenceWindow;
|
|
222
|
+
const isVerdictReason = (value) => (0, validationHelpers_1.isRecord)(value) && (0, validationHelpers_1.isString)(value.rule) && (0, validationHelpers_1.isRecord)(value.values) && Object.values(value.values).every(isNullableNumber);
|
|
223
|
+
/** Optional basis and billed figure: a billed-basis summary's `billedSavingsPercent` must equal its `savingsPercent`. */
|
|
224
|
+
const isSkuOptionSummary = (value) => (0, validationHelpers_1.isRecord)(value) &&
|
|
225
|
+
inSet(SKU_OPTION_KINDS, value.kind) &&
|
|
226
|
+
(0, validationHelpers_1.isString)(value.label) &&
|
|
227
|
+
isNullableNumber(value.savingsPercent) &&
|
|
228
|
+
(value.savingsBasis === undefined || inSet(SKU_SAVINGS_BASES, value.savingsBasis)) &&
|
|
229
|
+
(value.billedSavingsPercent === undefined || isNullablePercentage(value.billedSavingsPercent)) &&
|
|
230
|
+
(value.savingsBasis !== 'billed' || value.billedSavingsPercent === undefined || Object.is(value.billedSavingsPercent, value.savingsPercent));
|
|
231
|
+
exports.isSkuOptionSummary = isSkuOptionSummary;
|
|
232
|
+
/** An estimate marker plus at least one non-negative projected p95 percentage (may exceed 100). */
|
|
233
|
+
const isSkuProjectedUsage = (value) => (0, validationHelpers_1.isRecord)(value) &&
|
|
234
|
+
value.estimate === true &&
|
|
235
|
+
(value.cpuP95 !== undefined || value.memoryP95 !== undefined) &&
|
|
236
|
+
[value.cpuP95, value.memoryP95].every(p95 => p95 === undefined || ((0, validationHelpers_1.isFiniteNumber)(p95) && p95 >= 0));
|
|
237
|
+
exports.isSkuProjectedUsage = isSkuProjectedUsage;
|
|
238
|
+
const isCommitmentBlock = (value) => (0, validationHelpers_1.isRecord)(value) &&
|
|
239
|
+
inSet(COMMITMENT_BLOCK_REASONS, value.reason) &&
|
|
240
|
+
isNullablePercentage(value.coveragePercent) &&
|
|
241
|
+
isNullableString(value.benefitName) &&
|
|
242
|
+
(value.expiryDate === null || (0, validationHelpers_1.isDateTime)(value.expiryDate)) &&
|
|
243
|
+
isOptionalNullableNumber(value.expectedOptionCost) &&
|
|
244
|
+
isOptionalNullableNumber(value.billedSpend);
|
|
245
|
+
exports.isCommitmentBlock = isCommitmentBlock;
|
|
246
|
+
const isRightSizeRejection = (value) => (0, validationHelpers_1.isRecord)(value) && inSet(RIGHT_SIZE_REJECTION_REASONS, value.reason) && (0, validationHelpers_1.isString)(value.sku);
|
|
247
|
+
exports.isRightSizeRejection = isRightSizeRejection;
|
|
248
|
+
const isSkuCapabilityScalar = (value) => value === null || isText(value) || (0, validationHelpers_1.isFiniteNumber)(value) || isBoolean(value);
|
|
249
|
+
const isSkuCapabilityValue = (value) => isSkuCapabilityScalar(value) || (Array.isArray(value) && value.every(isSkuCapabilityScalar));
|
|
250
|
+
const isSkuCapabilityImpact = (value) => (0, validationHelpers_1.isRecord)(value) &&
|
|
251
|
+
(0, validationHelpers_1.isString)(value.key) &&
|
|
252
|
+
isOptionalText(value.label) &&
|
|
253
|
+
inSet(SKU_CAPABILITY_SEVERITIES, value.severity) &&
|
|
254
|
+
inSet(SKU_CAPABILITY_BASES, value.basis) &&
|
|
255
|
+
inSet(SKU_CAPABILITY_MATERIALITIES, value.materiality) &&
|
|
256
|
+
(value.currentValue === undefined || isSkuCapabilityValue(value.currentValue)) &&
|
|
257
|
+
(value.alternativeValue === undefined || isSkuCapabilityValue(value.alternativeValue)) &&
|
|
258
|
+
isOptionalText(value.message);
|
|
259
|
+
const isSkuOption = (value) => (0, validationHelpers_1.isRecord)(value) &&
|
|
260
|
+
inSet(SKU_OPTION_KINDS, value.kind) &&
|
|
261
|
+
(0, validationHelpers_1.isString)(value.sku) &&
|
|
262
|
+
(0, validationHelpers_1.isString)(value.label) &&
|
|
263
|
+
(value.capacity === undefined ||
|
|
264
|
+
((0, validationHelpers_1.isRecord)(value.capacity) && isNullableNumber(value.capacity.units) && isOptionalNullableNumber(value.capacity.memoryGB))) &&
|
|
265
|
+
isNullableNumber(value.monthlyCost) &&
|
|
266
|
+
(0, validationHelpers_1.isString)(value.currency) &&
|
|
267
|
+
isNullableNumber(value.savingsPercent) &&
|
|
268
|
+
isNullableNumber(value.savingsMonthly) &&
|
|
269
|
+
(0, validationHelpers_1.isStringArray)(value.lostCapabilities) &&
|
|
270
|
+
(value.capabilityImpacts === undefined ||
|
|
271
|
+
(Array.isArray(value.capabilityImpacts) &&
|
|
272
|
+
value.capabilityImpacts.every(isSkuCapabilityImpact) &&
|
|
273
|
+
new Set(value.capabilityImpacts.map(impact => impact.key)).size === value.capabilityImpacts.length)) &&
|
|
274
|
+
(value.confidence === undefined || inSet(CONFIDENCES, value.confidence)) &&
|
|
275
|
+
(value.savingsBasis === undefined || inSet(SKU_SAVINGS_BASES, value.savingsBasis)) &&
|
|
276
|
+
(value.projected === undefined || (0, exports.isSkuProjectedUsage)(value.projected));
|
|
277
|
+
exports.isSkuOption = isSkuOption;
|
|
278
|
+
const isUtilizationProfile = (value, days) => {
|
|
279
|
+
if (!(0, validationHelpers_1.isRecord)(value) || !inSet(PROVIDERS, value.provider) || !(0, validationHelpers_1.isString)(value.family) || !(0, exports.isCapacityDescriptor)(value.capacity))
|
|
280
|
+
return false;
|
|
281
|
+
if (!inSet(RUN_MODES, value.runMode) || !inSet(SIZING_VERDICTS, value.verdict) || !inSet(SCHEDULE_FITS, value.scheduleFit))
|
|
282
|
+
return false;
|
|
283
|
+
if (!(0, exports.isEvidenceWindow)(value.evidenceWindow) || !(0, validationHelpers_1.isString)(value.fingerprint))
|
|
284
|
+
return false;
|
|
285
|
+
const evidenceWindow = value.evidenceWindow;
|
|
286
|
+
const windowDays = days ?? evidenceWindow.days;
|
|
287
|
+
if (!Array.isArray(value.metrics) || !value.metrics.every(metric => (0, exports.isMetricSparkline)(metric, windowDays)))
|
|
288
|
+
return false;
|
|
289
|
+
if (value.running !== undefined && !(0, exports.isRunningProfile)(value.running, windowDays))
|
|
290
|
+
return false;
|
|
291
|
+
if (!Array.isArray(value.verdictReasons) || !value.verdictReasons.every(isVerdictReason) || !(0, validationHelpers_1.isStringArray)(value.evidence))
|
|
292
|
+
return false;
|
|
293
|
+
if (value.scheduleAction !== undefined && !inSet(SCHEDULE_ACTIONS, value.scheduleAction))
|
|
294
|
+
return false;
|
|
295
|
+
if (value.coverage !== undefined && !(0, exports.isCommitmentCoverage)(value.coverage))
|
|
296
|
+
return false;
|
|
297
|
+
if (value.ownerResourceId !== undefined && !(0, validationHelpers_1.isString)(value.ownerResourceId))
|
|
298
|
+
return false;
|
|
299
|
+
const needsCorroboration = inSet(SCHEDULE_FITS_REQUIRING_CORROBORATION, value.scheduleFit) || value.verdict === 'mostly-off';
|
|
300
|
+
if (needsCorroboration) {
|
|
301
|
+
if (evidenceWindow.telemetry !== 'collected')
|
|
302
|
+
return false;
|
|
303
|
+
if (value.running === undefined || !(0, exports.isCorroboratedRunningProfile)(value.running))
|
|
304
|
+
return false;
|
|
305
|
+
}
|
|
306
|
+
return true;
|
|
307
|
+
};
|
|
308
|
+
exports.isUtilizationProfile = isUtilizationProfile;
|
|
309
|
+
const isSignalSeries = (value) => (0, validationHelpers_1.isRecord)(value) && (0, validationHelpers_1.isString)(value.key) && isNullableNumber(value.p95) && isNullableSeries(value.sparkline);
|
|
310
|
+
const isUtilizationSignal = (value) => {
|
|
311
|
+
if (!(0, validationHelpers_1.isRecord)(value) || !inSet(SIZING_VERDICTS, value.verdict) || !inSet(SCHEDULE_FITS, value.scheduleFit))
|
|
312
|
+
return false;
|
|
313
|
+
if (!isSignalSeries(value.primary) || !inSet(TELEMETRY_STATUSES, value.telemetry))
|
|
314
|
+
return false;
|
|
315
|
+
const needsCorroboration = inSet(SCHEDULE_FITS_REQUIRING_CORROBORATION, value.scheduleFit) || value.verdict === 'mostly-off';
|
|
316
|
+
if (needsCorroboration && value.telemetry !== 'collected')
|
|
317
|
+
return false;
|
|
318
|
+
if (value.actionable !== undefined && !isBoolean(value.actionable))
|
|
319
|
+
return false;
|
|
320
|
+
if (value.actionReason !== undefined && (value.actionable !== false || !inSet(SIGNAL_ACTION_REASONS, value.actionReason)))
|
|
321
|
+
return false;
|
|
322
|
+
if (value.secondary !== undefined) {
|
|
323
|
+
if (!isSignalSeries(value.secondary))
|
|
324
|
+
return false;
|
|
325
|
+
const primaryLength = value.primary.sparkline.length;
|
|
326
|
+
if (value.secondary.sparkline.length !== primaryLength)
|
|
327
|
+
return false;
|
|
328
|
+
}
|
|
329
|
+
if (value.coverage !== undefined &&
|
|
330
|
+
(!(0, validationHelpers_1.isRecord)(value.coverage) ||
|
|
331
|
+
!isNullableNumber(value.coverage.coveragePercent) ||
|
|
332
|
+
!Array.isArray(value.coverage.benefitTypes) ||
|
|
333
|
+
!value.coverage.benefitTypes.every(type => inSet(BENEFIT_TYPES, type))))
|
|
334
|
+
return false;
|
|
335
|
+
return value.betterSku === undefined || (0, exports.isSkuOptionSummary)(value.betterSku);
|
|
336
|
+
};
|
|
337
|
+
exports.isUtilizationSignal = isUtilizationSignal;
|
|
338
|
+
const isCapabilityDetails = (value) => (0, validationHelpers_1.isRecord)(value) && Object.values(value).every(detail => detail === null || isText(detail) || (0, validationHelpers_1.isFiniteNumber)(detail) || isBoolean(detail));
|
|
339
|
+
const isProtectionCapability = (value) => (0, validationHelpers_1.isRecord)(value) &&
|
|
340
|
+
(0, validationHelpers_1.isString)(value.key) &&
|
|
341
|
+
inSet(CAPABILITY_STATES, value.state) &&
|
|
342
|
+
isBoolean(value.required) &&
|
|
343
|
+
isText(value.label) &&
|
|
344
|
+
(value.details === undefined || isCapabilityDetails(value.details)) &&
|
|
345
|
+
isOptionalNullableNumber(value.costIfEnabled) &&
|
|
346
|
+
(0, validationHelpers_1.isRecord)(value.evidence) &&
|
|
347
|
+
(0, validationHelpers_1.isString)(value.evidence.source) &&
|
|
348
|
+
(value.evidence.observedAt === undefined || value.evidence.observedAt === null || (0, validationHelpers_1.isDateTime)(value.evidence.observedAt));
|
|
349
|
+
exports.isProtectionCapability = isProtectionCapability;
|
|
350
|
+
const isProtectionProfile = (value) => (0, validationHelpers_1.isRecord)(value) &&
|
|
351
|
+
inSet(PROVIDERS, value.provider) &&
|
|
352
|
+
Array.isArray(value.capabilities) &&
|
|
353
|
+
value.capabilities.every(exports.isProtectionCapability) &&
|
|
354
|
+
(0, validationHelpers_1.isStringArray)(value.missingRequired) &&
|
|
355
|
+
isOptionalNullableNumber(value.slaPercent);
|
|
356
|
+
exports.isProtectionProfile = isProtectionProfile;
|
|
357
|
+
// ---- Cells
|
|
358
|
+
const isSparklineCell = (value) => inSet(SERIES_ROLES, value.role) &&
|
|
359
|
+
isNullableSeries(value.values) &&
|
|
360
|
+
isNullableNumber(value.axisMax) &&
|
|
361
|
+
isText(value.unit) &&
|
|
362
|
+
isNullableNumber(value.p95) &&
|
|
363
|
+
isText(value.label);
|
|
364
|
+
const isStoryCell = (value) => {
|
|
365
|
+
if (!(0, validationHelpers_1.isRecord)(value) || !inSet(STORY_CELL_KINDS, value.kind))
|
|
366
|
+
return false;
|
|
367
|
+
switch (value.kind) {
|
|
368
|
+
case 'text':
|
|
369
|
+
return (value.value === null || isText(value.value)) && (value.detail === undefined || value.detail === null || isText(value.detail));
|
|
370
|
+
case 'number':
|
|
371
|
+
return isNullableNumber(value.value) && isOptionalText(value.unit) && (value.decimals === undefined || (0, validationHelpers_1.isCount)(value.decimals));
|
|
372
|
+
case 'money':
|
|
373
|
+
return (isNullableNumber(value.value) &&
|
|
374
|
+
(0, validationHelpers_1.isString)(value.currency) &&
|
|
375
|
+
(value.secondaryValue === undefined || isNullableNumber(value.secondaryValue)) &&
|
|
376
|
+
isOptionalText(value.secondaryLabel));
|
|
377
|
+
case 'percent':
|
|
378
|
+
return isNullableNumber(value.value);
|
|
379
|
+
case 'mark':
|
|
380
|
+
return ((0, validationHelpers_1.isString)(value.state) && isText(value.label) && inSet(STATUS_TONES, value.tone) && isOptionalText(value.icon) && isOptionalText(value.hint));
|
|
381
|
+
case 'dot':
|
|
382
|
+
return isBoolean(value.present) && inSet(STATUS_TONES, value.tone) && isOptionalText(value.label) && isOptionalText(value.hint);
|
|
383
|
+
case 'sparkline':
|
|
384
|
+
return isSparklineCell(value);
|
|
385
|
+
case 'dual':
|
|
386
|
+
return ((0, validationHelpers_1.isRecord)(value.primary) &&
|
|
387
|
+
value.primary.kind === 'sparkline' &&
|
|
388
|
+
isSparklineCell(value.primary) &&
|
|
389
|
+
(value.secondary === null ||
|
|
390
|
+
((0, validationHelpers_1.isRecord)(value.secondary) &&
|
|
391
|
+
value.secondary.kind === 'sparkline' &&
|
|
392
|
+
isSparklineCell(value.secondary) &&
|
|
393
|
+
value.secondary.values.length === value.primary.values.length)));
|
|
394
|
+
case 'capacity-bar':
|
|
395
|
+
return isNullableNumber(value.used) && isNullableNumber(value.total) && isText(value.unit) && isText(value.label);
|
|
396
|
+
case 'mix-bar':
|
|
397
|
+
return (Array.isArray(value.parts) &&
|
|
398
|
+
value.parts.every(part => (0, validationHelpers_1.isRecord)(part) && (0, validationHelpers_1.isString)(part.key) && isText(part.label) && (0, validationHelpers_1.isFiniteNumber)(part.value)) &&
|
|
399
|
+
isText(value.unit) &&
|
|
400
|
+
(0, validationHelpers_1.isFiniteNumber)(value.total));
|
|
401
|
+
case 'event-strip':
|
|
402
|
+
return (Array.isArray(value.events) &&
|
|
403
|
+
value.events.every(event => inSet(BACKUP_RUN_STATES, event)) &&
|
|
404
|
+
(0, validationHelpers_1.isDateTime)(value.start) &&
|
|
405
|
+
isOptionalText(value.label));
|
|
406
|
+
case 'weekly-grid':
|
|
407
|
+
return ((0, validationHelpers_1.isString)(value.timezone) && isWeeklyGrid(value.running) && isNullableNumber(value.businessHoursShare) && isNullableNumber(value.offHoursShare));
|
|
408
|
+
default:
|
|
409
|
+
return false;
|
|
410
|
+
}
|
|
411
|
+
};
|
|
412
|
+
exports.isStoryCell = isStoryCell;
|
|
413
|
+
const isStoryColumn = (value) => (0, validationHelpers_1.isRecord)(value) &&
|
|
414
|
+
(0, validationHelpers_1.isString)(value.key) &&
|
|
415
|
+
isText(value.label) &&
|
|
416
|
+
inSet(STORY_CELL_KINDS, value.cell) &&
|
|
417
|
+
isPriority(value.priority) &&
|
|
418
|
+
(value.roleClass === undefined || inSet(COLUMN_ROLE_CLASSES, value.roleClass)) &&
|
|
419
|
+
isOptionalText(value.hint);
|
|
420
|
+
exports.isStoryColumn = isStoryColumn;
|
|
421
|
+
/** Every column has a cell on the row, and the cell's kind matches the column's renderer. */
|
|
422
|
+
const hasCellsForColumns = (row, columns) => columns.every(column => {
|
|
423
|
+
const cell = row.cells[column.key];
|
|
424
|
+
return cell !== undefined && cell.kind === column.cell;
|
|
425
|
+
});
|
|
426
|
+
exports.hasCellsForColumns = hasCellsForColumns;
|
|
427
|
+
// ---- Rows
|
|
428
|
+
/** Re-widen a narrowed row so story-specific fields can be inspected without index-signature casts. */
|
|
429
|
+
const fields = (value) => value;
|
|
430
|
+
/** An AWS account has no tenant, so an AWS story row may carry an empty `tenantId`; every other provider requires one. */
|
|
431
|
+
const isTenantId = (value, provider) => (provider === 'aws' ? isText(value) : (0, validationHelpers_1.isString)(value));
|
|
432
|
+
const isStoryRowBase = (value, provider) => (0, validationHelpers_1.isRecord)(value) &&
|
|
433
|
+
['resourceId', 'name', 'type', 'subscriptionId', 'companyId', 'currency', 'fingerprint'].every(key => (0, validationHelpers_1.isString)(value[key])) &&
|
|
434
|
+
isTenantId(value.tenantId, provider) &&
|
|
435
|
+
isText(value.location) &&
|
|
436
|
+
isNullableNumber(value.spend30d) &&
|
|
437
|
+
isNullableNumber(value.savingsMax) &&
|
|
438
|
+
(value.ownerResourceId === undefined || (0, validationHelpers_1.isString)(value.ownerResourceId)) &&
|
|
439
|
+
(value.actionable === undefined || isBoolean(value.actionable)) &&
|
|
440
|
+
// An informational row asks for nothing, so it publishes no saving.
|
|
441
|
+
(value.actionable !== false || value.savingsMax === null) &&
|
|
442
|
+
(0, validationHelpers_1.isRecord)(value.cells) &&
|
|
443
|
+
Object.values(value.cells).every(exports.isStoryCell);
|
|
444
|
+
const isOversizedResourceRow = (value, days, provider) => {
|
|
445
|
+
if (!isStoryRowBase(value, provider))
|
|
446
|
+
return false;
|
|
447
|
+
const row = fields(value);
|
|
448
|
+
if (!(0, exports.isUtilizationProfile)(row.profile, days) || (row.betterSku !== undefined && !(0, exports.isSkuOptionSummary)(row.betterSku)))
|
|
449
|
+
return false;
|
|
450
|
+
if (row.recommendedOption !== undefined && !(0, exports.isSkuOption)(row.recommendedOption))
|
|
451
|
+
return false;
|
|
452
|
+
if (row.vmComputeCostComparison !== undefined) {
|
|
453
|
+
const comparison = row.vmComputeCostComparison;
|
|
454
|
+
if (value.type.toLowerCase() !== 'microsoft.compute/virtualmachines' ||
|
|
455
|
+
!(0, validationHelpers_1.isRecord)(comparison) ||
|
|
456
|
+
comparison.basis !== 'billed-compute' ||
|
|
457
|
+
!(0, validationHelpers_1.isFiniteNumber)(comparison.currentCost) ||
|
|
458
|
+
!(0, validationHelpers_1.isFiniteNumber)(comparison.targetCost) ||
|
|
459
|
+
comparison.currentCost < comparison.targetCost ||
|
|
460
|
+
comparison.targetCost < 0 ||
|
|
461
|
+
comparison.currency !== value.currency ||
|
|
462
|
+
!(0, validationHelpers_1.isFiniteNumber)(comparison.windowDays) ||
|
|
463
|
+
!Number.isInteger(comparison.windowDays) ||
|
|
464
|
+
comparison.windowDays <= 0 ||
|
|
465
|
+
value.savingsMax === null ||
|
|
466
|
+
Math.abs(comparison.currentCost - comparison.targetCost - value.savingsMax) > 0.01 ||
|
|
467
|
+
row.recommendedOption === undefined)
|
|
468
|
+
return false;
|
|
469
|
+
}
|
|
470
|
+
if (row.rightSizeStatus !== undefined && !inSet(RIGHT_SIZE_ASSESSMENT_STATUSES, row.rightSizeStatus))
|
|
471
|
+
return false;
|
|
472
|
+
const hasRecommendation = row.betterSku !== undefined || row.recommendedOption !== undefined;
|
|
473
|
+
if (row.rightSizeStatus === 'recommended' && !hasRecommendation)
|
|
474
|
+
return false;
|
|
475
|
+
if (row.rightSizeStatus !== undefined && row.rightSizeStatus !== 'recommended' && hasRecommendation)
|
|
476
|
+
return false;
|
|
477
|
+
if (row.betterSku !== undefined && row.recommendedOption !== undefined) {
|
|
478
|
+
const summary = row.betterSku;
|
|
479
|
+
const option = row.recommendedOption;
|
|
480
|
+
if (summary.kind !== option.kind || summary.label !== option.label || !Object.is(summary.savingsPercent, option.savingsPercent))
|
|
481
|
+
return false;
|
|
482
|
+
if (summary.savingsBasis !== undefined && option.savingsBasis !== undefined && summary.savingsBasis !== option.savingsBasis)
|
|
483
|
+
return false;
|
|
484
|
+
}
|
|
485
|
+
if (row.rightSizeRejection !== undefined && (!(0, exports.isRightSizeRejection)(row.rightSizeRejection) || hasRecommendation))
|
|
486
|
+
return false;
|
|
487
|
+
// A blocked resize is still the recommended size, but it cannot lower the bill now: no saving, never actionable.
|
|
488
|
+
if (row.commitmentBlock !== undefined) {
|
|
489
|
+
if (!(0, exports.isCommitmentBlock)(row.commitmentBlock) || !hasRecommendation || row.savingsMax !== null || row.actionable === true)
|
|
490
|
+
return false;
|
|
491
|
+
}
|
|
492
|
+
return true;
|
|
493
|
+
};
|
|
494
|
+
exports.isOversizedResourceRow = isOversizedResourceRow;
|
|
495
|
+
/** `blocked-by-commitment` and `commitmentBlock` go together; a blocked row publishes no saving and is not actionable. */
|
|
496
|
+
const isCoherentCommitmentBlock = (row) => {
|
|
497
|
+
const blocked = row.verdict === 'blocked-by-commitment';
|
|
498
|
+
if (!blocked)
|
|
499
|
+
return row.commitmentBlock === undefined;
|
|
500
|
+
return (0, exports.isCommitmentBlock)(row.commitmentBlock) && row.savingsMax === null && row.actionable !== true;
|
|
501
|
+
};
|
|
502
|
+
const isRightSkuRow = (value, days, provider) => {
|
|
503
|
+
if (!isStoryRowBase(value, provider))
|
|
504
|
+
return false;
|
|
505
|
+
const row = fields(value);
|
|
506
|
+
return ((0, exports.isSkuOption)(row.current) &&
|
|
507
|
+
Array.isArray(row.options) &&
|
|
508
|
+
row.options.every(exports.isSkuOption) &&
|
|
509
|
+
inSet(RIGHT_SKU_VERDICTS, row.verdict) &&
|
|
510
|
+
(0, validationHelpers_1.isRecord)(row.usage) &&
|
|
511
|
+
isNullableNumber(row.usage.primaryP95) &&
|
|
512
|
+
isNullableNumber(row.usage.secondaryP95) &&
|
|
513
|
+
inSet(TELEMETRY_STATUSES, row.usage.telemetry) &&
|
|
514
|
+
(row.profile === undefined || (0, exports.isUtilizationProfile)(row.profile, days)) &&
|
|
515
|
+
isCoherentCommitmentBlock(row));
|
|
516
|
+
};
|
|
517
|
+
exports.isRightSkuRow = isRightSkuRow;
|
|
518
|
+
/** Schedule candidates always carry a corroborated weekly running profile. */
|
|
519
|
+
const isScheduleCandidateRow = (value, days, provider) => {
|
|
520
|
+
if (!isStoryRowBase(value, provider))
|
|
521
|
+
return false;
|
|
522
|
+
const row = fields(value);
|
|
523
|
+
if (!(0, exports.isUtilizationProfile)(row.profile, days) || !inSet(SCHEDULE_ACTIONS, row.action))
|
|
524
|
+
return false;
|
|
525
|
+
const profile = row.profile;
|
|
526
|
+
return profile.running !== undefined && profile.running.weekly !== undefined && (0, exports.isCorroboratedRunningProfile)(profile.running);
|
|
527
|
+
};
|
|
528
|
+
exports.isScheduleCandidateRow = isScheduleCandidateRow;
|
|
529
|
+
const resilienceRow = (value, provider) => {
|
|
530
|
+
if (!isStoryRowBase(value, provider))
|
|
531
|
+
return false;
|
|
532
|
+
const row = fields(value);
|
|
533
|
+
return ((0, exports.isProtectionProfile)(row.protection) &&
|
|
534
|
+
(row.backupRuns === undefined || (Array.isArray(row.backupRuns) && row.backupRuns.every(run => inSet(BACKUP_RUN_STATES, run)))) &&
|
|
535
|
+
(row.lastRecoveryPointAt === undefined || row.lastRecoveryPointAt === null || (0, validationHelpers_1.isDateTime)(row.lastRecoveryPointAt)) &&
|
|
536
|
+
isOptionalNullableNumber(row.uptimeDays) &&
|
|
537
|
+
(row.activeHealthEvents === undefined || (0, validationHelpers_1.isCount)(row.activeHealthEvents)));
|
|
538
|
+
};
|
|
539
|
+
const hybridBenefitRow = (value, provider) => {
|
|
540
|
+
if (!isStoryRowBase(value, provider))
|
|
541
|
+
return false;
|
|
542
|
+
const row = fields(value);
|
|
543
|
+
return (['productFamily', 'serviceModel', 'configurationStatus', 'technicalEligibilityStatus', 'coverageStatus', 'entitlementStatus'].every(key => (0, validationHelpers_1.isString)(row[key])) &&
|
|
544
|
+
isNullableString(row.edition) &&
|
|
545
|
+
isNullableNumber(row.vCpuCount) &&
|
|
546
|
+
(0, validationHelpers_1.isRecord)(row.decision) &&
|
|
547
|
+
(0, validationHelpers_1.isString)(row.decision.status) &&
|
|
548
|
+
isText(row.decision.headline) &&
|
|
549
|
+
isNullableNumber(row.decision.paybackMonths) &&
|
|
550
|
+
(0, validationHelpers_1.isString)(row.decision.confidence) &&
|
|
551
|
+
(0, validationHelpers_1.isStringArray)(row.reasonCodes) &&
|
|
552
|
+
isNullableNumber(row.licenceObservedStableDays));
|
|
553
|
+
};
|
|
554
|
+
const commitmentRow = (value, provider) => {
|
|
555
|
+
if (!isStoryRowBase(value, provider))
|
|
556
|
+
return false;
|
|
557
|
+
const row = fields(value);
|
|
558
|
+
return ((0, exports.isCommitmentCoverage)(row.coverage) &&
|
|
559
|
+
(row.utilization === undefined || ((0, validationHelpers_1.isRecord)(row.utilization) && (0, validationHelpers_1.isString)(row.utilization.primaryKey) && isNullableNumber(row.utilization.p95))));
|
|
560
|
+
};
|
|
561
|
+
const isResilienceRow = (value) => resilienceRow(value);
|
|
562
|
+
exports.isResilienceRow = isResilienceRow;
|
|
563
|
+
const isHybridBenefitRow = (value) => hybridBenefitRow(value);
|
|
564
|
+
exports.isHybridBenefitRow = isHybridBenefitRow;
|
|
565
|
+
const isCommitmentRow = (value) => commitmentRow(value);
|
|
566
|
+
exports.isCommitmentRow = isCommitmentRow;
|
|
567
|
+
/** Row guard for a story key; unknown keys reject every row. `provider: 'aws'` admits rows with an empty `tenantId`. */
|
|
568
|
+
const storyRowGuard = (storyKey, days, provider) => {
|
|
569
|
+
switch (storyKey) {
|
|
570
|
+
case 'oversized-resources':
|
|
571
|
+
return (row) => (0, exports.isOversizedResourceRow)(row, days, provider);
|
|
572
|
+
case 'right-sku':
|
|
573
|
+
return (row) => (0, exports.isRightSkuRow)(row, days, provider);
|
|
574
|
+
case 'schedule-candidates':
|
|
575
|
+
return (row) => (0, exports.isScheduleCandidateRow)(row, days, provider);
|
|
576
|
+
case 'resilience-recovery':
|
|
577
|
+
return (row) => resilienceRow(row, provider);
|
|
578
|
+
case 'hybrid-benefit':
|
|
579
|
+
return (row) => hybridBenefitRow(row, provider);
|
|
580
|
+
case 'commitments':
|
|
581
|
+
return (row) => commitmentRow(row, provider);
|
|
582
|
+
default:
|
|
583
|
+
return (_row) => false;
|
|
584
|
+
}
|
|
585
|
+
};
|
|
586
|
+
exports.storyRowGuard = storyRowGuard;
|
|
587
|
+
const isStorySummary = (value) => (0, validationHelpers_1.isRecord)(value) &&
|
|
588
|
+
(0, validationHelpers_1.isRecord)(value.counts) &&
|
|
589
|
+
Object.values(value.counts).every(validationHelpers_1.isCount) &&
|
|
590
|
+
(value.actionable === undefined ||
|
|
591
|
+
((0, validationHelpers_1.isCount)(value.actionable) && (value.counts.resources === undefined || value.actionable <= value.counts.resources))) &&
|
|
592
|
+
isNumberRecord(value.spend) &&
|
|
593
|
+
(0, validationHelpers_1.isString)(value.currency) &&
|
|
594
|
+
isOptionalText(value.note);
|
|
595
|
+
exports.isStorySummary = isStorySummary;
|
|
596
|
+
const isStorySectionFinancials = (value) => value === undefined || ((0, validationHelpers_1.isRecord)(value) && (0, validationHelpers_1.isFiniteNumber)(value.spend30d) && (0, validationHelpers_1.isFiniteNumber)(value.savingsMax) && (0, validationHelpers_1.isString)(value.currency));
|
|
597
|
+
const isStorySection = (value, storyKey, limit, days, provider) => {
|
|
598
|
+
if (!(0, validationHelpers_1.isRecord)(value) || !(0, validationHelpers_1.isString)(value.resourceType) || !(0, validationHelpers_1.isString)(value.family))
|
|
599
|
+
return false;
|
|
600
|
+
if (!isStorySectionFinancials(value.financials))
|
|
601
|
+
return false;
|
|
602
|
+
if (!Array.isArray(value.columns) || !value.columns.every(exports.isStoryColumn))
|
|
603
|
+
return false;
|
|
604
|
+
if (new Set(value.columns.map(column => column.key)).size !== value.columns.length)
|
|
605
|
+
return false;
|
|
606
|
+
if (!(0, validationHelpers_1.isBoundedRows)(value, limit, (0, exports.storyRowGuard)(storyKey, days, provider)))
|
|
607
|
+
return false;
|
|
608
|
+
const columns = value.columns;
|
|
609
|
+
return value.rows.every(row => (0, exports.hasCellsForColumns)(row, columns));
|
|
610
|
+
};
|
|
611
|
+
exports.isStorySection = isStorySection;
|
|
612
|
+
/**
|
|
613
|
+
* A section of a summary-view projection (`view: 'summary'`): the produced columns and counts with the rows removed,
|
|
614
|
+
* so `rows` must be empty while `totalCount` / `omittedCount` keep the values the engine wrote.
|
|
615
|
+
*/
|
|
616
|
+
const isStorySummarySection = (value) => {
|
|
617
|
+
if (!(0, validationHelpers_1.isRecord)(value) || !(0, validationHelpers_1.isString)(value.resourceType) || !(0, validationHelpers_1.isString)(value.family))
|
|
618
|
+
return false;
|
|
619
|
+
if (!isStorySectionFinancials(value.financials))
|
|
620
|
+
return false;
|
|
621
|
+
if (!Array.isArray(value.columns) || !value.columns.every(exports.isStoryColumn))
|
|
622
|
+
return false;
|
|
623
|
+
if (new Set(value.columns.map(column => column.key)).size !== value.columns.length)
|
|
624
|
+
return false;
|
|
625
|
+
return (Array.isArray(value.rows) &&
|
|
626
|
+
value.rows.length === 0 &&
|
|
627
|
+
(0, validationHelpers_1.isCount)(value.totalCount) &&
|
|
628
|
+
(0, validationHelpers_1.isCount)(value.omittedCount) &&
|
|
629
|
+
value.omittedCount <= value.totalCount &&
|
|
630
|
+
value.totalCount - value.omittedCount <= utilizationStories_1.STORY_LIMITS.sectionRows);
|
|
631
|
+
};
|
|
632
|
+
exports.isStorySummarySection = isStorySummarySection;
|
|
633
|
+
/** Every row of an artifact belongs to the artifact's scope; a row from another company, tenant or subscription is rejected. */
|
|
634
|
+
const isRowInScope = (row, scope) => row.companyId === scope.companyId && row.tenantId === scope.tenantId && row.subscriptionId === scope.subscriptionId;
|
|
635
|
+
exports.isRowInScope = isRowInScope;
|
|
636
|
+
const sectionFinancialsMatchCurrency = (sections, currency) => sections.every(section => section.financials === undefined || section.financials.currency === currency);
|
|
637
|
+
const isScope = (value) => (0, validationHelpers_1.isRecord)(value) &&
|
|
638
|
+
(value.provider === undefined || inSet(PROVIDERS, value.provider)) &&
|
|
639
|
+
['companyId', 'subscriptionId', 'currency'].every(key => (0, validationHelpers_1.isString)(value[key])) &&
|
|
640
|
+
isTenantId(value.tenantId, value.provider) &&
|
|
641
|
+
isText(value.displayName);
|
|
642
|
+
const isStoryArtifact = (value, storyKey) => {
|
|
643
|
+
if (!(0, validationHelpers_1.isRecord)(value) || !(0, validationHelpers_1.isString)(value.storyKey) || !STORY_KEY_SET.has(value.storyKey))
|
|
644
|
+
return false;
|
|
645
|
+
if (storyKey !== undefined && value.storyKey !== storyKey)
|
|
646
|
+
return false;
|
|
647
|
+
if (!isScope(value.scope))
|
|
648
|
+
return false;
|
|
649
|
+
if (!(0, validationHelpers_1.isRecord)(value.generation) || !(0, validationHelpers_1.isString)(value.generation.sourceRunId) || !(0, validationHelpers_1.isDateTime)(value.generation.generatedAt))
|
|
650
|
+
return false;
|
|
651
|
+
if (!(0, validationHelpers_1.isRecord)(value.window) ||
|
|
652
|
+
!(0, validationHelpers_1.isDateTime)(value.window.start) ||
|
|
653
|
+
!(0, validationHelpers_1.isDateTime)(value.window.end) ||
|
|
654
|
+
!(0, validationHelpers_1.isCount)(value.window.days) ||
|
|
655
|
+
value.window.days < 1 ||
|
|
656
|
+
!(0, validationHelpers_1.isString)(value.window.timezone))
|
|
657
|
+
return false;
|
|
658
|
+
if (!(0, exports.isStorySummary)(value.summary))
|
|
659
|
+
return false;
|
|
660
|
+
const days = value.window.days;
|
|
661
|
+
const key = value.storyKey;
|
|
662
|
+
if (value.view !== undefined && value.view !== 'summary')
|
|
663
|
+
return false;
|
|
664
|
+
const summaryCurrency = value.summary.currency;
|
|
665
|
+
if (value.view === 'summary') {
|
|
666
|
+
return (Array.isArray(value.sections) &&
|
|
667
|
+
value.sections.every(exports.isStorySummarySection) &&
|
|
668
|
+
sectionFinancialsMatchCurrency(value.sections, summaryCurrency));
|
|
669
|
+
}
|
|
670
|
+
const scope = value.scope;
|
|
671
|
+
if (!Array.isArray(value.sections) ||
|
|
672
|
+
!value.sections.every(section => (0, exports.isStorySection)(section, key, utilizationStories_1.STORY_LIMITS.sectionRows, days, scope.provider)))
|
|
673
|
+
return false;
|
|
674
|
+
const sections = value.sections;
|
|
675
|
+
return sectionFinancialsMatchCurrency(sections, summaryCurrency) && sections.every(section => section.rows.every(row => (0, exports.isRowInScope)(row, scope)));
|
|
676
|
+
};
|
|
677
|
+
exports.isStoryArtifact = isStoryArtifact;
|
|
678
|
+
/** Bounded sample embedded in the evidence pack; rows are validated for `storyKey`, window days are not known here. */
|
|
679
|
+
const isStorySample = (value, storyKey) => {
|
|
680
|
+
if (!(0, validationHelpers_1.isRecord)(value) || !(0, exports.isStorySummary)(value.summary) || !Array.isArray(value.sections))
|
|
681
|
+
return false;
|
|
682
|
+
if (!value.sections.every(section => (0, exports.isStorySection)(section, storyKey, utilizationStories_1.STORY_LIMITS.sampleRows)))
|
|
683
|
+
return false;
|
|
684
|
+
return sectionFinancialsMatchCurrency(value.sections, value.summary.currency);
|
|
685
|
+
};
|
|
686
|
+
exports.isStorySample = isStorySample;
|
|
687
|
+
const isStoryFingerprint = (value) => (0, validationHelpers_1.isRecord)(value) &&
|
|
688
|
+
(0, validationHelpers_1.isString)(value.storyKey) &&
|
|
689
|
+
STORY_KEY_SET.has(value.storyKey) &&
|
|
690
|
+
(0, validationHelpers_1.isString)(value.resourceId) &&
|
|
691
|
+
(0, validationHelpers_1.isString)(value.fingerprint) &&
|
|
692
|
+
isNullableNumber(value.savingsMax);
|
|
693
|
+
exports.isStoryFingerprint = isStoryFingerprint;
|
|
694
|
+
/** Bounded, de-duplicated (storyKey + fingerprint) fingerprint rows for one history period. */
|
|
695
|
+
const isStoryFingerprintRows = (value) => (0, validationHelpers_1.isBoundedRows)(value, utilizationStories_1.STORY_LIMITS.historyFingerprints, exports.isStoryFingerprint) &&
|
|
696
|
+
new Set(value.rows.map(row => `${row.storyKey}|${row.fingerprint}`)).size === value.rows.length;
|
|
697
|
+
exports.isStoryFingerprintRows = isStoryFingerprintRows;
|
|
698
|
+
const isReportingStories = (value) => (0, validationHelpers_1.isRecord)(value) && Object.entries(value).every(([key, sample]) => STORY_KEY_SET.has(key) && (0, exports.isStorySample)(sample, key));
|
|
699
|
+
exports.isReportingStories = isReportingStories;
|
|
700
|
+
// ---- Engine config schemas
|
|
701
|
+
const isUtilizationMetricEntry = (value) => (0, validationHelpers_1.isRecord)(value) &&
|
|
702
|
+
(0, validationHelpers_1.isString)(value.key) &&
|
|
703
|
+
(0, validationHelpers_1.isString)(value.metricName) &&
|
|
704
|
+
isOptionalText(value.collection) &&
|
|
705
|
+
inSet(METRIC_ROLES, value.role) &&
|
|
706
|
+
(value.visual === undefined || inSet(METRIC_VISUALS, value.visual)) &&
|
|
707
|
+
isOptionalText(value.unit) &&
|
|
708
|
+
(value.axisMax === undefined || (0, validationHelpers_1.isFiniteNumber)(value.axisMax)) &&
|
|
709
|
+
isOptionalText(value.axisMaxExpression) &&
|
|
710
|
+
(value.billedOn === undefined || inSet(BILLED_ON, value.billedOn)) &&
|
|
711
|
+
isOptionalText(value.transform) &&
|
|
712
|
+
isOptionalText(value.requires) &&
|
|
713
|
+
isOptionalText(value.when) &&
|
|
714
|
+
(value.dimensions === undefined ||
|
|
715
|
+
((0, validationHelpers_1.isRecord)(value.dimensions) && inSet(DIMENSION_POLICIES, value.dimensions.policy) && isOptionalText(value.dimensions.name))) &&
|
|
716
|
+
(value.priority === undefined || isPriority(value.priority));
|
|
717
|
+
exports.isUtilizationMetricEntry = isUtilizationMetricEntry;
|
|
718
|
+
const isMetricEntries = (value) => Array.isArray(value) && value.every(exports.isUtilizationMetricEntry);
|
|
719
|
+
const isUtilizationProfileEntry = (value) => (0, validationHelpers_1.isRecord)(value) &&
|
|
720
|
+
(0, validationHelpers_1.isString)(value.family) &&
|
|
721
|
+
(value.producer === undefined || inSet(PRODUCERS, value.producer)) &&
|
|
722
|
+
isOptionalText(value.capacityLabel) &&
|
|
723
|
+
inSet(RUN_MODES, value.runMode) &&
|
|
724
|
+
(value.runningSignal === undefined || isNullableString(value.runningSignal)) &&
|
|
725
|
+
(value.scheduleFit === undefined || isBoolean(value.scheduleFit) || inSet(SCHEDULE_ACTIONS, value.scheduleFit)) &&
|
|
726
|
+
(value.variants === undefined ||
|
|
727
|
+
(Array.isArray(value.variants) &&
|
|
728
|
+
value.variants.every(variant => (0, validationHelpers_1.isRecord)(variant) &&
|
|
729
|
+
(0, validationHelpers_1.isString)(variant.when) &&
|
|
730
|
+
isMetricEntries(variant.metrics) &&
|
|
731
|
+
(variant.verdictRules === undefined || isStringRecord(variant.verdictRules))))) &&
|
|
732
|
+
(value.metrics === undefined || isMetricEntries(value.metrics)) &&
|
|
733
|
+
(value.verdictRules === undefined || isStringRecord(value.verdictRules)) &&
|
|
734
|
+
(value.skuAlternatives === undefined ||
|
|
735
|
+
((0, validationHelpers_1.isRecord)(value.skuAlternatives) &&
|
|
736
|
+
(0, validationHelpers_1.isString)(value.skuAlternatives.source) &&
|
|
737
|
+
(value.skuAlternatives.capabilityKeys === undefined || (0, validationHelpers_1.isStringArray)(value.skuAlternatives.capabilityKeys))));
|
|
738
|
+
exports.isUtilizationProfileEntry = isUtilizationProfileEntry;
|
|
739
|
+
const isUtilizationProfileConfig = (value) => (0, validationHelpers_1.isRecord)(value) &&
|
|
740
|
+
value.version === 1 &&
|
|
741
|
+
(0, validationHelpers_1.isRecord)(value.defaults) &&
|
|
742
|
+
(0, validationHelpers_1.isCount)(value.defaults.windowDays) &&
|
|
743
|
+
value.defaults.windowDays >= 1 &&
|
|
744
|
+
value.defaults.bucket === 'P1D' &&
|
|
745
|
+
isBoolean(value.defaults.weeklyProfile) &&
|
|
746
|
+
isStringRecord(value.defaults.verdictRules) &&
|
|
747
|
+
(0, validationHelpers_1.isRecord)(value.profiles) &&
|
|
748
|
+
Object.entries(value.profiles).every(([type, entry]) => type === type.toLowerCase() && (0, exports.isUtilizationProfileEntry)(entry));
|
|
749
|
+
exports.isUtilizationProfileConfig = isUtilizationProfileConfig;
|
|
750
|
+
const isResilienceProfileConfig = (value) => (0, validationHelpers_1.isRecord)(value) &&
|
|
751
|
+
value.version === 1 &&
|
|
752
|
+
(0, validationHelpers_1.isRecord)(value.profiles) &&
|
|
753
|
+
Object.entries(value.profiles).every(([type, entry]) => type === type.toLowerCase() &&
|
|
754
|
+
(0, validationHelpers_1.isRecord)(entry) &&
|
|
755
|
+
Array.isArray(entry.capabilities) &&
|
|
756
|
+
entry.capabilities.every(capability => (0, validationHelpers_1.isRecord)(capability) &&
|
|
757
|
+
(0, validationHelpers_1.isString)(capability.key) &&
|
|
758
|
+
isBoolean(capability.required) &&
|
|
759
|
+
(0, validationHelpers_1.isString)(capability.source) &&
|
|
760
|
+
isOptionalText(capability.sla)));
|
|
761
|
+
exports.isResilienceProfileConfig = isResilienceProfileConfig;
|
|
762
|
+
//# sourceMappingURL=utilizationStoriesValidation.js.map
|