@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,172 @@
|
|
|
1
|
+
import { ACTIVITY_LOG_TAG_IDS, ACTIVITY_LOG_TAXONOMY_VERSION, PORTAL_ACTIVITY_ANALYSIS_LIMITS_V1, } from './activityLogAnalysis.js';
|
|
2
|
+
export const MONTH = /^\d{4}-(0[1-9]|1[0-2])$/;
|
|
3
|
+
const TIMESTAMP = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}Z$/;
|
|
4
|
+
const EVIDENCE_ID = /^aev1_[a-f0-9]{64}$/;
|
|
5
|
+
const GROUP_ID = /^aag1_[a-f0-9]{64}$/;
|
|
6
|
+
export const TAG_IDS = new Set(ACTIVITY_LOG_TAG_IDS);
|
|
7
|
+
export const ORIGINS = new Set(['manual', 'workloadAutomation', 'azurePlatform', 'unknown']);
|
|
8
|
+
export const EFFECTS = new Set(['write', 'delete', 'action', 'read', 'other']);
|
|
9
|
+
export const CONFIDENCES = new Set(['high', 'medium', 'low']);
|
|
10
|
+
export const POWER_SUFFICIENCY = new Set(['oneSided', 'oneOff', 'sameDayRepeat', 'repeated']);
|
|
11
|
+
export const LIMITATIONS = new Set([
|
|
12
|
+
'source-coverage-partial',
|
|
13
|
+
'unclassified-events',
|
|
14
|
+
'facet-values-truncated',
|
|
15
|
+
'resource-summaries-truncated',
|
|
16
|
+
'operation-summaries-truncated',
|
|
17
|
+
'security-sensitive-truncated',
|
|
18
|
+
'power-patterns-truncated',
|
|
19
|
+
'artifact-size-budget',
|
|
20
|
+
'month-missing',
|
|
21
|
+
'month-partial',
|
|
22
|
+
'month-stale',
|
|
23
|
+
'month-freshness-unknown',
|
|
24
|
+
'nested-values-truncated',
|
|
25
|
+
'mixed-analysis-versions',
|
|
26
|
+
'mixed-taxonomy-versions',
|
|
27
|
+
'response-truncated',
|
|
28
|
+
]);
|
|
29
|
+
const SCOPE_LEVELS = new Set(['subscription', 'resourceGroup', 'resource', 'unknown']);
|
|
30
|
+
const RESERVED_KEYS = new Set(['__proto__', 'prototype', 'constructor']);
|
|
31
|
+
export const isRecord = (value) => {
|
|
32
|
+
if (value === null || typeof value !== 'object' || Array.isArray(value))
|
|
33
|
+
return false;
|
|
34
|
+
const prototype = Object.getPrototypeOf(value);
|
|
35
|
+
return prototype === Object.prototype || prototype === null;
|
|
36
|
+
};
|
|
37
|
+
export const hasExactKeys = (value, required, optional = []) => {
|
|
38
|
+
if (!isRecord(value))
|
|
39
|
+
return false;
|
|
40
|
+
const allowed = new Set([...required, ...optional]);
|
|
41
|
+
const keys = Object.keys(value);
|
|
42
|
+
return required.every(key => Object.prototype.hasOwnProperty.call(value, key)) && keys.every(key => allowed.has(key) && !RESERVED_KEYS.has(key));
|
|
43
|
+
};
|
|
44
|
+
export const isText = (value, maximum) => typeof value === 'string' && value.length > 0 && value.length <= maximum && value.trim() === value;
|
|
45
|
+
export const isCount = (value) => Number.isSafeInteger(value) && value >= 0;
|
|
46
|
+
export const isPositiveCount = (value) => isCount(value) && value > 0;
|
|
47
|
+
export const isTimestamp = (value) => {
|
|
48
|
+
if (typeof value !== 'string' || !TIMESTAMP.test(value))
|
|
49
|
+
return false;
|
|
50
|
+
const milliseconds = Date.parse(value);
|
|
51
|
+
return Number.isFinite(milliseconds) && new Date(milliseconds).toISOString() === value;
|
|
52
|
+
};
|
|
53
|
+
export const isDate = (value) => {
|
|
54
|
+
if (typeof value !== 'string' || !/^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])$/.test(value))
|
|
55
|
+
return false;
|
|
56
|
+
return new Date(`${value}T00:00:00.000Z`).toISOString().slice(0, 10) === value;
|
|
57
|
+
};
|
|
58
|
+
export const isSortedUniqueStrings = (value, maximum, predicate) => Array.isArray(value) &&
|
|
59
|
+
value.length <= maximum &&
|
|
60
|
+
value.every((item, index) => typeof item === 'string' && predicate(item) && (index === 0 || value[index - 1] < item));
|
|
61
|
+
export const countRowsTotal = (rows) => {
|
|
62
|
+
let total = 0;
|
|
63
|
+
for (const row of rows) {
|
|
64
|
+
total += row.count;
|
|
65
|
+
if (!Number.isSafeInteger(total))
|
|
66
|
+
return undefined;
|
|
67
|
+
}
|
|
68
|
+
return total;
|
|
69
|
+
};
|
|
70
|
+
export const isCountRows = (value, maximum, valueMaximum, allowed) => {
|
|
71
|
+
if (!Array.isArray(value) || value.length > maximum)
|
|
72
|
+
return false;
|
|
73
|
+
for (let index = 0; index < value.length; index += 1) {
|
|
74
|
+
const row = value[index];
|
|
75
|
+
if (!hasExactKeys(row, ['value', 'count']) || !isText(row.value, valueMaximum) || !isPositiveCount(row.count))
|
|
76
|
+
return false;
|
|
77
|
+
if (allowed && !allowed.has(row.value))
|
|
78
|
+
return false;
|
|
79
|
+
const previous = value[index - 1];
|
|
80
|
+
if (previous && (previous.count < row.count || (previous.count === row.count && previous.value >= row.value)))
|
|
81
|
+
return false;
|
|
82
|
+
}
|
|
83
|
+
return true;
|
|
84
|
+
};
|
|
85
|
+
export const isChronologicalCountRows = (value, predicate) => Array.isArray(value) &&
|
|
86
|
+
value.every((row, index) => hasExactKeys(row, ['value', 'count']) &&
|
|
87
|
+
typeof row.value === 'string' &&
|
|
88
|
+
predicate(row.value) &&
|
|
89
|
+
isPositiveCount(row.count) &&
|
|
90
|
+
(index === 0 || value[index - 1].value < row.value));
|
|
91
|
+
export const isScope = (value, subscriptionId, resourceId) => {
|
|
92
|
+
if (!hasExactKeys(value, ['subscriptionId', 'level'], ['resourceId', 'resourceGroup', 'provider', 'resourceType', 'resourceName']) ||
|
|
93
|
+
value.subscriptionId !== subscriptionId ||
|
|
94
|
+
typeof value.level !== 'string' ||
|
|
95
|
+
!SCOPE_LEVELS.has(value.level))
|
|
96
|
+
return false;
|
|
97
|
+
if (value.resourceId !== undefined && !isText(value.resourceId, PORTAL_ACTIVITY_ANALYSIS_LIMITS_V1.resourceIdCodeUnits))
|
|
98
|
+
return false;
|
|
99
|
+
if (value.resourceGroup !== undefined && !isText(value.resourceGroup, PORTAL_ACTIVITY_ANALYSIS_LIMITS_V1.resourceNameCodeUnits))
|
|
100
|
+
return false;
|
|
101
|
+
if (value.provider !== undefined && !isText(value.provider, PORTAL_ACTIVITY_ANALYSIS_LIMITS_V1.providerCodeUnits))
|
|
102
|
+
return false;
|
|
103
|
+
if (value.resourceType !== undefined && !isText(value.resourceType, PORTAL_ACTIVITY_ANALYSIS_LIMITS_V1.resourceTypeCodeUnits))
|
|
104
|
+
return false;
|
|
105
|
+
if (value.resourceName !== undefined && !isText(value.resourceName, PORTAL_ACTIVITY_ANALYSIS_LIMITS_V1.resourceNameCodeUnits))
|
|
106
|
+
return false;
|
|
107
|
+
if (value.level === 'resource' && typeof value.resourceId !== 'string')
|
|
108
|
+
return false;
|
|
109
|
+
if (value.level === 'resource') {
|
|
110
|
+
const scopedSubscriptionId = /^\/subscriptions\/([^/]+)\//i.exec(value.resourceId)?.[1];
|
|
111
|
+
if (!scopedSubscriptionId || scopedSubscriptionId.toLowerCase() !== subscriptionId.toLowerCase())
|
|
112
|
+
return false;
|
|
113
|
+
}
|
|
114
|
+
if (value.level === 'resourceGroup' && typeof value.resourceGroup !== 'string')
|
|
115
|
+
return false;
|
|
116
|
+
if (value.level === 'subscription' && (value.resourceId !== undefined || value.resourceGroup !== undefined))
|
|
117
|
+
return false;
|
|
118
|
+
return resourceId === undefined || value.resourceId === resourceId;
|
|
119
|
+
};
|
|
120
|
+
/** Validates the exact additive classification carried by one Portal Activity Log entry. */
|
|
121
|
+
export const isPortalActivityLogClassification = (value) => {
|
|
122
|
+
if (!hasExactKeys(value, ['taxonomyVersion', 'executionOrigin', 'operationEffect', 'scope', 'tags']) ||
|
|
123
|
+
value.taxonomyVersion !== ACTIVITY_LOG_TAXONOMY_VERSION ||
|
|
124
|
+
typeof value.executionOrigin !== 'string' ||
|
|
125
|
+
!ORIGINS.has(value.executionOrigin) ||
|
|
126
|
+
typeof value.operationEffect !== 'string' ||
|
|
127
|
+
!EFFECTS.has(value.operationEffect) ||
|
|
128
|
+
!isRecord(value.scope) ||
|
|
129
|
+
typeof value.scope.subscriptionId !== 'string' ||
|
|
130
|
+
!isScope(value.scope, value.scope.subscriptionId) ||
|
|
131
|
+
!Array.isArray(value.tags) ||
|
|
132
|
+
value.tags.length > PORTAL_ACTIVITY_ANALYSIS_LIMITS_V1.tagAssignmentsPerEvent)
|
|
133
|
+
return false;
|
|
134
|
+
const tags = value.tags;
|
|
135
|
+
return tags.every((tag, index) => {
|
|
136
|
+
if (!hasExactKeys(tag, ['tagId', 'dimension', 'confidence']) ||
|
|
137
|
+
typeof tag.tagId !== 'string' ||
|
|
138
|
+
!TAG_IDS.has(tag.tagId) ||
|
|
139
|
+
tag.dimension !== tag.tagId.slice(0, tag.tagId.indexOf('.')) ||
|
|
140
|
+
typeof tag.confidence !== 'string' ||
|
|
141
|
+
!CONFIDENCES.has(tag.confidence))
|
|
142
|
+
return false;
|
|
143
|
+
return index === 0 || tags[index - 1].tagId < tag.tagId;
|
|
144
|
+
});
|
|
145
|
+
};
|
|
146
|
+
/** Validates the opaque V1 public Activity Log evidence ID syntax. */
|
|
147
|
+
export const isPortalActivityEvidenceId = (value) => typeof value === 'string' && EVIDENCE_ID.test(value);
|
|
148
|
+
/** Validates the opaque V1 public Activity Analysis group ID syntax. */
|
|
149
|
+
export const isPortalActivityAnalysisGroupId = (value) => typeof value === 'string' && GROUP_ID.test(value);
|
|
150
|
+
export const isEvidenceIds = (value) => Array.isArray(value) &&
|
|
151
|
+
value.length <= PORTAL_ACTIVITY_ANALYSIS_LIMITS_V1.evidenceIdsPerItem &&
|
|
152
|
+
value.every(isPortalActivityEvidenceId) &&
|
|
153
|
+
new Set(value).size === value.length;
|
|
154
|
+
export const isGroupIds = (value) => isSortedUniqueStrings(value, PORTAL_ACTIVITY_ANALYSIS_LIMITS_V1.evidenceIdsPerItem, isPortalActivityAnalysisGroupId);
|
|
155
|
+
export const isTags = (value) => isSortedUniqueStrings(value, PORTAL_ACTIVITY_ANALYSIS_LIMITS_V1.tagCountsPerItem, tag => TAG_IDS.has(tag));
|
|
156
|
+
export const isReasons = (value) => isSortedUniqueStrings(value, PORTAL_ACTIVITY_ANALYSIS_LIMITS_V1.reasonCodesPerItem, reason => {
|
|
157
|
+
if (!isText(reason, PORTAL_ACTIVITY_ANALYSIS_LIMITS_V1.reasonCodeUnits))
|
|
158
|
+
return false;
|
|
159
|
+
return (reason === 'derived.operation-summary' ||
|
|
160
|
+
reason === 'derived.security-sensitive-activity' ||
|
|
161
|
+
reason === 'derived.power-pattern-evidence' ||
|
|
162
|
+
(reason.startsWith('tag.') && TAG_IDS.has(reason.slice(4))));
|
|
163
|
+
});
|
|
164
|
+
export const hasValidTimes = (value) => isTimestamp(value.firstTimestamp) && isTimestamp(value.lastTimestamp) && value.firstTimestamp <= value.lastTimestamp;
|
|
165
|
+
export const utf8ByteLength = (value) => {
|
|
166
|
+
let bytes = 0;
|
|
167
|
+
for (const character of value) {
|
|
168
|
+
const codePoint = character.codePointAt(0);
|
|
169
|
+
bytes += codePoint <= 0x7f ? 1 : codePoint <= 0x7ff ? 2 : codePoint <= 0xffff ? 3 : 4;
|
|
170
|
+
}
|
|
171
|
+
return bytes;
|
|
172
|
+
};
|
|
@@ -0,0 +1,365 @@
|
|
|
1
|
+
import { ACTIVITY_LOG_ANALYSIS_VERSION, ACTIVITY_LOG_TAG_IDS, ACTIVITY_LOG_TAXONOMY_VERSION, CONFORMED_ACTIVITY_ANALYSIS_LIMITS_V1, CONFORMED_ACTIVITY_ANALYSIS_SCHEMA_VERSION, } from './activityLogAnalysis.js';
|
|
2
|
+
const MONTH = /^\d{4}-(0[1-9]|1[0-2])$/;
|
|
3
|
+
const DATE = /^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])$/;
|
|
4
|
+
const TAG_IDS = new Set(ACTIVITY_LOG_TAG_IDS);
|
|
5
|
+
const ORIGINS = new Set(['manual', 'workloadAutomation', 'azurePlatform', 'unknown']);
|
|
6
|
+
const EFFECTS = new Set(['write', 'delete', 'action', 'read', 'other']);
|
|
7
|
+
const CONFIDENCES = new Set(['high', 'medium', 'low']);
|
|
8
|
+
const SCOPE_LEVELS = new Set(['subscription', 'resourceGroup', 'resource', 'unknown']);
|
|
9
|
+
const RESERVED_KEYS = new Set(['__proto__', 'prototype', 'constructor']);
|
|
10
|
+
function isRecord(value) {
|
|
11
|
+
if (!value || typeof value !== 'object' || Array.isArray(value))
|
|
12
|
+
return false;
|
|
13
|
+
const prototype = Object.getPrototypeOf(value);
|
|
14
|
+
return prototype === Object.prototype || prototype === null;
|
|
15
|
+
}
|
|
16
|
+
function hasExactKeys(value, required, optional = []) {
|
|
17
|
+
if (!isRecord(value))
|
|
18
|
+
return false;
|
|
19
|
+
const keys = Object.keys(value);
|
|
20
|
+
const allowed = new Set([...required, ...optional]);
|
|
21
|
+
return required.every(key => Object.prototype.hasOwnProperty.call(value, key)) && keys.every(key => allowed.has(key));
|
|
22
|
+
}
|
|
23
|
+
function isText(value, maximum = 2048) {
|
|
24
|
+
return typeof value === 'string' && value.length > 0 && value.length <= maximum;
|
|
25
|
+
}
|
|
26
|
+
function isCount(value) {
|
|
27
|
+
return Number.isSafeInteger(value) && value >= 0;
|
|
28
|
+
}
|
|
29
|
+
function isIsoTimestamp(value) {
|
|
30
|
+
if (!isText(value, 64))
|
|
31
|
+
return false;
|
|
32
|
+
const parsed = new Date(value);
|
|
33
|
+
return !Number.isNaN(parsed.valueOf()) && parsed.toISOString() === value;
|
|
34
|
+
}
|
|
35
|
+
function isUniqueTextArray(value, maximum = 100000, predicate = () => true) {
|
|
36
|
+
return (Array.isArray(value) && value.length <= maximum && value.every(item => isText(item) && predicate(item)) && new Set(value).size === value.length);
|
|
37
|
+
}
|
|
38
|
+
function isSortedUniqueTextArray(value, maximum, predicate) {
|
|
39
|
+
return isUniqueTextArray(value, maximum, predicate) && value.every((item, index) => index === 0 || value[index - 1].localeCompare(item) < 0);
|
|
40
|
+
}
|
|
41
|
+
function isScope(value) {
|
|
42
|
+
if (!hasExactKeys(value, ['subscriptionId', 'level'], ['resourceId', 'resourceGroup', 'provider', 'resourceType', 'resourceName']) ||
|
|
43
|
+
!isText(value.subscriptionId) ||
|
|
44
|
+
typeof value.level !== 'string' ||
|
|
45
|
+
!SCOPE_LEVELS.has(value.level)) {
|
|
46
|
+
return false;
|
|
47
|
+
}
|
|
48
|
+
for (const key of ['resourceId', 'resourceGroup', 'provider', 'resourceType', 'resourceName']) {
|
|
49
|
+
if (value[key] !== undefined && !isText(value[key]))
|
|
50
|
+
return false;
|
|
51
|
+
}
|
|
52
|
+
if (value.level === 'resource' && !isText(value.resourceId))
|
|
53
|
+
return false;
|
|
54
|
+
if (value.level === 'resource') {
|
|
55
|
+
const scopedSubscriptionId = /^\/subscriptions\/([^/]+)\//i.exec(value.resourceId)?.[1];
|
|
56
|
+
if (!scopedSubscriptionId || scopedSubscriptionId.toLowerCase() !== value.subscriptionId.toLowerCase())
|
|
57
|
+
return false;
|
|
58
|
+
}
|
|
59
|
+
if (value.level === 'subscription' && value.resourceId !== undefined)
|
|
60
|
+
return false;
|
|
61
|
+
return true;
|
|
62
|
+
}
|
|
63
|
+
function isCountRows(value, allowed) {
|
|
64
|
+
if (!Array.isArray(value) || value.length > 100000)
|
|
65
|
+
return false;
|
|
66
|
+
let previous;
|
|
67
|
+
for (const row of value) {
|
|
68
|
+
if (!hasExactKeys(row, ['value', 'count']) || !isText(row.value) || !isCount(row.count) || row.count === 0)
|
|
69
|
+
return false;
|
|
70
|
+
if (allowed && !allowed.has(row.value))
|
|
71
|
+
return false;
|
|
72
|
+
if (previous !== undefined && previous.localeCompare(row.value) >= 0)
|
|
73
|
+
return false;
|
|
74
|
+
previous = row.value;
|
|
75
|
+
}
|
|
76
|
+
return true;
|
|
77
|
+
}
|
|
78
|
+
function countRowsTotal(value) {
|
|
79
|
+
return value.reduce((total, row) => total + row.count, 0);
|
|
80
|
+
}
|
|
81
|
+
function isFacets(value, retainedEventCount) {
|
|
82
|
+
if (!hasExactKeys(value, ['tags', 'operations', 'providers', 'resourceTypes', 'results', 'operationEffects', 'executionOrigins']) ||
|
|
83
|
+
!isCountRows(value.tags, TAG_IDS) ||
|
|
84
|
+
!isCountRows(value.operations) ||
|
|
85
|
+
!isCountRows(value.providers) ||
|
|
86
|
+
!isCountRows(value.resourceTypes) ||
|
|
87
|
+
!isCountRows(value.results) ||
|
|
88
|
+
!isCountRows(value.operationEffects, EFFECTS) ||
|
|
89
|
+
!isCountRows(value.executionOrigins, ORIGINS)) {
|
|
90
|
+
return false;
|
|
91
|
+
}
|
|
92
|
+
return [value.operations, value.results, value.operationEffects, value.executionOrigins].every(rows => countRowsTotal(rows) === retainedEventCount);
|
|
93
|
+
}
|
|
94
|
+
function isSeries(value, subscriptionId, month) {
|
|
95
|
+
if (!hasExactKeys(value, [
|
|
96
|
+
'id',
|
|
97
|
+
'analysisVersion',
|
|
98
|
+
'taxonomyVersion',
|
|
99
|
+
'subscriptionId',
|
|
100
|
+
'month',
|
|
101
|
+
'scope',
|
|
102
|
+
'operation',
|
|
103
|
+
'result',
|
|
104
|
+
'executionOrigin',
|
|
105
|
+
'operationEffect',
|
|
106
|
+
'tagIds',
|
|
107
|
+
'eventCount',
|
|
108
|
+
'firstTimestamp',
|
|
109
|
+
'lastTimestamp',
|
|
110
|
+
'dailyCounts',
|
|
111
|
+
'utcWeekdayHourDistribution',
|
|
112
|
+
'distinctActorCount',
|
|
113
|
+
'confidence',
|
|
114
|
+
'evidenceEventKeys',
|
|
115
|
+
'evidenceTruncated',
|
|
116
|
+
]) ||
|
|
117
|
+
!isText(value.id) ||
|
|
118
|
+
value.analysisVersion !== ACTIVITY_LOG_ANALYSIS_VERSION ||
|
|
119
|
+
value.taxonomyVersion !== ACTIVITY_LOG_TAXONOMY_VERSION ||
|
|
120
|
+
value.subscriptionId !== subscriptionId ||
|
|
121
|
+
value.month !== month ||
|
|
122
|
+
!isScope(value.scope) ||
|
|
123
|
+
value.scope.subscriptionId !== subscriptionId ||
|
|
124
|
+
!isText(value.operation, 512) ||
|
|
125
|
+
!isText(value.result, 256) ||
|
|
126
|
+
typeof value.executionOrigin !== 'string' ||
|
|
127
|
+
!ORIGINS.has(value.executionOrigin) ||
|
|
128
|
+
typeof value.operationEffect !== 'string' ||
|
|
129
|
+
!EFFECTS.has(value.operationEffect) ||
|
|
130
|
+
!isSortedUniqueTextArray(value.tagIds, 32, tag => TAG_IDS.has(tag)) ||
|
|
131
|
+
!isCount(value.eventCount) ||
|
|
132
|
+
value.eventCount === 0 ||
|
|
133
|
+
!isIsoTimestamp(value.firstTimestamp) ||
|
|
134
|
+
!isIsoTimestamp(value.lastTimestamp) ||
|
|
135
|
+
value.firstTimestamp > value.lastTimestamp ||
|
|
136
|
+
!isCount(value.distinctActorCount) ||
|
|
137
|
+
value.distinctActorCount > value.eventCount ||
|
|
138
|
+
typeof value.confidence !== 'string' ||
|
|
139
|
+
!CONFIDENCES.has(value.confidence) ||
|
|
140
|
+
!isUniqueTextArray(value.evidenceEventKeys, 20) ||
|
|
141
|
+
typeof value.evidenceTruncated !== 'boolean')
|
|
142
|
+
return false;
|
|
143
|
+
if (!Array.isArray(value.dailyCounts) || !Array.isArray(value.utcWeekdayHourDistribution))
|
|
144
|
+
return false;
|
|
145
|
+
let dailyTotal = 0;
|
|
146
|
+
let previousDate;
|
|
147
|
+
for (const row of value.dailyCounts) {
|
|
148
|
+
if (!hasExactKeys(row, ['date', 'count']) || typeof row.date !== 'string' || !DATE.test(row.date) || !isCount(row.count) || row.count === 0)
|
|
149
|
+
return false;
|
|
150
|
+
if (previousDate !== undefined && previousDate.localeCompare(row.date) >= 0)
|
|
151
|
+
return false;
|
|
152
|
+
previousDate = row.date;
|
|
153
|
+
dailyTotal += row.count;
|
|
154
|
+
}
|
|
155
|
+
let timeTotal = 0;
|
|
156
|
+
let previousBucket = -1;
|
|
157
|
+
for (const row of value.utcWeekdayHourDistribution) {
|
|
158
|
+
if (!hasExactKeys(row, ['weekday', 'hour', 'count']) ||
|
|
159
|
+
!isCount(row.weekday) ||
|
|
160
|
+
row.weekday > 6 ||
|
|
161
|
+
!isCount(row.hour) ||
|
|
162
|
+
row.hour > 23 ||
|
|
163
|
+
!isCount(row.count) ||
|
|
164
|
+
row.count === 0)
|
|
165
|
+
return false;
|
|
166
|
+
const bucket = row.weekday * 24 + row.hour;
|
|
167
|
+
if (bucket <= previousBucket)
|
|
168
|
+
return false;
|
|
169
|
+
previousBucket = bucket;
|
|
170
|
+
timeTotal += row.count;
|
|
171
|
+
}
|
|
172
|
+
return dailyTotal === value.eventCount && timeTotal === value.eventCount;
|
|
173
|
+
}
|
|
174
|
+
function isResource(value, subscriptionId) {
|
|
175
|
+
return (hasExactKeys(value, ['scope', 'eventCount', 'operationCounts', 'resultCounts', 'tagCounts', 'executionOriginCounts', 'relatedEvidenceIds']) &&
|
|
176
|
+
isScope(value.scope) &&
|
|
177
|
+
value.scope.level === 'resource' &&
|
|
178
|
+
value.scope.subscriptionId === subscriptionId &&
|
|
179
|
+
isCount(value.eventCount) &&
|
|
180
|
+
value.eventCount > 0 &&
|
|
181
|
+
isCountRows(value.operationCounts) &&
|
|
182
|
+
countRowsTotal(value.operationCounts) === value.eventCount &&
|
|
183
|
+
isCountRows(value.resultCounts) &&
|
|
184
|
+
countRowsTotal(value.resultCounts) === value.eventCount &&
|
|
185
|
+
isCountRows(value.tagCounts, TAG_IDS) &&
|
|
186
|
+
isCountRows(value.executionOriginCounts, ORIGINS) &&
|
|
187
|
+
countRowsTotal(value.executionOriginCounts) === value.eventCount &&
|
|
188
|
+
isSortedUniqueTextArray(value.relatedEvidenceIds));
|
|
189
|
+
}
|
|
190
|
+
function isCountRecord(value) {
|
|
191
|
+
return isRecord(value) && Object.keys(value).every(key => !RESERVED_KEYS.has(key) && isText(key, 512) && isCount(value[key]));
|
|
192
|
+
}
|
|
193
|
+
function countRecordTotal(value) {
|
|
194
|
+
let total = 0;
|
|
195
|
+
for (const count of Object.values(value)) {
|
|
196
|
+
total += count;
|
|
197
|
+
if (!Number.isSafeInteger(total))
|
|
198
|
+
return undefined;
|
|
199
|
+
}
|
|
200
|
+
return total;
|
|
201
|
+
}
|
|
202
|
+
function isPowerHourCountRecord(value) {
|
|
203
|
+
return (isCountRecord(value) &&
|
|
204
|
+
Object.keys(value).length <= 24 &&
|
|
205
|
+
Object.entries(value).every(([hour, count]) => /^(?:0|[1-9]|1\d|2[0-3])$/.test(hour) && count > 0));
|
|
206
|
+
}
|
|
207
|
+
function hasValidGroupBase(value, subscriptionId, month) {
|
|
208
|
+
return (isText(value.id) &&
|
|
209
|
+
value.analysisVersion === ACTIVITY_LOG_ANALYSIS_VERSION &&
|
|
210
|
+
value.taxonomyVersion === ACTIVITY_LOG_TAXONOMY_VERSION &&
|
|
211
|
+
value.subscriptionId === subscriptionId &&
|
|
212
|
+
value.month === month &&
|
|
213
|
+
isScope(value.scope) &&
|
|
214
|
+
value.scope.subscriptionId === subscriptionId &&
|
|
215
|
+
isCount(value.eventCount) &&
|
|
216
|
+
value.eventCount > 0 &&
|
|
217
|
+
isIsoTimestamp(value.firstTimestamp) &&
|
|
218
|
+
isIsoTimestamp(value.lastTimestamp) &&
|
|
219
|
+
value.firstTimestamp <= value.lastTimestamp &&
|
|
220
|
+
typeof value.confidence === 'string' &&
|
|
221
|
+
CONFIDENCES.has(value.confidence) &&
|
|
222
|
+
isSortedUniqueTextArray(value.reasons, 32) &&
|
|
223
|
+
isSortedUniqueTextArray(value.tagIds, 32, tag => TAG_IDS.has(tag)) &&
|
|
224
|
+
isUniqueTextArray(value.evidenceEventKeys, 20) &&
|
|
225
|
+
typeof value.evidenceTruncated === 'boolean');
|
|
226
|
+
}
|
|
227
|
+
function isGroup(value, subscriptionId, month) {
|
|
228
|
+
if (!isRecord(value) || typeof value.type !== 'string')
|
|
229
|
+
return false;
|
|
230
|
+
const common = [
|
|
231
|
+
'id',
|
|
232
|
+
'type',
|
|
233
|
+
'analysisVersion',
|
|
234
|
+
'taxonomyVersion',
|
|
235
|
+
'subscriptionId',
|
|
236
|
+
'month',
|
|
237
|
+
'scope',
|
|
238
|
+
'eventCount',
|
|
239
|
+
'firstTimestamp',
|
|
240
|
+
'lastTimestamp',
|
|
241
|
+
'confidence',
|
|
242
|
+
'reasons',
|
|
243
|
+
'tagIds',
|
|
244
|
+
'evidenceEventKeys',
|
|
245
|
+
'evidenceTruncated',
|
|
246
|
+
];
|
|
247
|
+
if (value.type === 'operation-summary') {
|
|
248
|
+
return (hasExactKeys(value, [...common, 'operation', 'operationEffect', 'executionOrigin', 'distinctResourceCount', 'resultCounts'], ['provider', 'resourceType']) &&
|
|
249
|
+
hasValidGroupBase(value, subscriptionId, month) &&
|
|
250
|
+
isText(value.operation, 512) &&
|
|
251
|
+
typeof value.operationEffect === 'string' &&
|
|
252
|
+
EFFECTS.has(value.operationEffect) &&
|
|
253
|
+
typeof value.executionOrigin === 'string' &&
|
|
254
|
+
ORIGINS.has(value.executionOrigin) &&
|
|
255
|
+
isCount(value.distinctResourceCount) &&
|
|
256
|
+
value.distinctResourceCount <= value.eventCount &&
|
|
257
|
+
isCountRecord(value.resultCounts));
|
|
258
|
+
}
|
|
259
|
+
if (value.type === 'security-sensitive-activity') {
|
|
260
|
+
return (hasExactKeys(value, [...common, 'capabilityTag', 'operation', 'executionOrigin', 'resultCounts']) &&
|
|
261
|
+
hasValidGroupBase(value, subscriptionId, month) &&
|
|
262
|
+
typeof value.capabilityTag === 'string' &&
|
|
263
|
+
value.capabilityTag.startsWith('security.') &&
|
|
264
|
+
value.capabilityTag !== 'security.sensitive-operation' &&
|
|
265
|
+
TAG_IDS.has(value.capabilityTag) &&
|
|
266
|
+
isText(value.operation, 512) &&
|
|
267
|
+
typeof value.executionOrigin === 'string' &&
|
|
268
|
+
ORIGINS.has(value.executionOrigin) &&
|
|
269
|
+
isCountRecord(value.resultCounts));
|
|
270
|
+
}
|
|
271
|
+
if (value.type !== 'power-pattern-evidence')
|
|
272
|
+
return false;
|
|
273
|
+
if (!hasExactKeys(value, [
|
|
274
|
+
...common,
|
|
275
|
+
'patternId',
|
|
276
|
+
'resourceId',
|
|
277
|
+
'startCount',
|
|
278
|
+
'stopCount',
|
|
279
|
+
'opposingPairCount',
|
|
280
|
+
'utcActiveDayCount',
|
|
281
|
+
'utcHourDistribution',
|
|
282
|
+
'executionOriginCounts',
|
|
283
|
+
'resultCounts',
|
|
284
|
+
'dataSufficiency',
|
|
285
|
+
]) ||
|
|
286
|
+
!hasValidGroupBase(value, subscriptionId, month) ||
|
|
287
|
+
value.scope.level !== 'resource' ||
|
|
288
|
+
!isText(value.patternId) ||
|
|
289
|
+
!isText(value.resourceId) ||
|
|
290
|
+
value.resourceId !== value.scope.resourceId ||
|
|
291
|
+
!isCount(value.startCount) ||
|
|
292
|
+
!isCount(value.stopCount) ||
|
|
293
|
+
value.startCount + value.stopCount !== value.eventCount ||
|
|
294
|
+
!isCount(value.opposingPairCount) ||
|
|
295
|
+
value.opposingPairCount !== Math.min(value.startCount, value.stopCount) ||
|
|
296
|
+
!isCount(value.utcActiveDayCount) ||
|
|
297
|
+
!isPowerHourCountRecord(value.utcHourDistribution) ||
|
|
298
|
+
!isCountRecord(value.executionOriginCounts) ||
|
|
299
|
+
!Object.keys(value.executionOriginCounts).every(origin => ORIGINS.has(origin)) ||
|
|
300
|
+
!isCountRecord(value.resultCounts) ||
|
|
301
|
+
!['oneSided', 'oneOff', 'sameDayRepeat', 'repeated'].includes(value.dataSufficiency))
|
|
302
|
+
return false;
|
|
303
|
+
return (countRecordTotal(value.utcHourDistribution) === value.eventCount &&
|
|
304
|
+
countRecordTotal(value.executionOriginCounts) === value.eventCount &&
|
|
305
|
+
countRecordTotal(value.resultCounts) === value.eventCount);
|
|
306
|
+
}
|
|
307
|
+
export function isConformedActivityAnalysisArtifact(value) {
|
|
308
|
+
if (!hasExactKeys(value, [
|
|
309
|
+
'schemaVersion',
|
|
310
|
+
'analysisVersion',
|
|
311
|
+
'taxonomyVersion',
|
|
312
|
+
'projection',
|
|
313
|
+
'subscriptionId',
|
|
314
|
+
'month',
|
|
315
|
+
'generatedAt',
|
|
316
|
+
'source',
|
|
317
|
+
'facets',
|
|
318
|
+
'activitySeries',
|
|
319
|
+
'resources',
|
|
320
|
+
'groups',
|
|
321
|
+
]))
|
|
322
|
+
return false;
|
|
323
|
+
if (value.schemaVersion !== CONFORMED_ACTIVITY_ANALYSIS_SCHEMA_VERSION ||
|
|
324
|
+
value.analysisVersion !== ACTIVITY_LOG_ANALYSIS_VERSION ||
|
|
325
|
+
value.taxonomyVersion !== ACTIVITY_LOG_TAXONOMY_VERSION ||
|
|
326
|
+
value.projection !== 'activity-analysis' ||
|
|
327
|
+
!isText(value.subscriptionId) ||
|
|
328
|
+
typeof value.month !== 'string' ||
|
|
329
|
+
!MONTH.test(value.month) ||
|
|
330
|
+
!isIsoTimestamp(value.generatedAt))
|
|
331
|
+
return false;
|
|
332
|
+
const subscriptionId = value.subscriptionId;
|
|
333
|
+
const month = value.month;
|
|
334
|
+
if (!hasExactKeys(value.source, [
|
|
335
|
+
'portalProjectionSchemaVersion',
|
|
336
|
+
'retainedEventCount',
|
|
337
|
+
'classifiedRetainedEventCount',
|
|
338
|
+
'unclassifiedRetainedEventCount',
|
|
339
|
+
'classificationState',
|
|
340
|
+
], ['sourceHighWatermark', 'sourceShardFingerprint']) ||
|
|
341
|
+
!isCount(value.source.portalProjectionSchemaVersion) ||
|
|
342
|
+
!isCount(value.source.retainedEventCount) ||
|
|
343
|
+
!isCount(value.source.classifiedRetainedEventCount) ||
|
|
344
|
+
!isCount(value.source.unclassifiedRetainedEventCount) ||
|
|
345
|
+
value.source.retainedEventCount !== value.source.classifiedRetainedEventCount + value.source.unclassifiedRetainedEventCount ||
|
|
346
|
+
!['complete', 'partial', 'unavailable'].includes(value.source.classificationState) ||
|
|
347
|
+
(value.source.sourceHighWatermark !== undefined && !isIsoTimestamp(value.source.sourceHighWatermark)) ||
|
|
348
|
+
(value.source.sourceShardFingerprint !== undefined &&
|
|
349
|
+
!isText(value.source.sourceShardFingerprint, CONFORMED_ACTIVITY_ANALYSIS_LIMITS_V1.sourceShardFingerprintCodeUnits)))
|
|
350
|
+
return false;
|
|
351
|
+
if (!isFacets(value.facets, value.source.retainedEventCount) ||
|
|
352
|
+
!Array.isArray(value.activitySeries) ||
|
|
353
|
+
!Array.isArray(value.resources) ||
|
|
354
|
+
!Array.isArray(value.groups))
|
|
355
|
+
return false;
|
|
356
|
+
if (!value.activitySeries.every(item => isSeries(item, subscriptionId, month)) ||
|
|
357
|
+
value.activitySeries.reduce((sum, item) => sum + item.eventCount, 0) !== value.source.classifiedRetainedEventCount)
|
|
358
|
+
return false;
|
|
359
|
+
return value.resources.every(item => isResource(item, subscriptionId)) && value.groups.every(item => isGroup(item, subscriptionId, month));
|
|
360
|
+
}
|
|
361
|
+
export function assertConformedActivityAnalysisArtifact(value) {
|
|
362
|
+
if (!isConformedActivityAnalysisArtifact(value))
|
|
363
|
+
throw new Error('Invalid conformed Activity Analysis artifact.');
|
|
364
|
+
}
|
|
365
|
+
export { assertPortalActivityAnalysisResponse, isPortalActivityAnalysisGroupId, isPortalActivityAnalysisResponse, isPortalActivityEvidenceId, isPortalActivityLogClassification, } from './activityLogAnalysisPublicValidation.js';
|
|
@@ -5,6 +5,7 @@ import { isArtifactOwnershipBinding } from '../common/artifactEvidence.js';
|
|
|
5
5
|
import { containsForbiddenArtifactControlData } from '../common/artifactControlData.js';
|
|
6
6
|
import { isArtifactRevisionVector } from '../common/artifactEvidenceValidation.js';
|
|
7
7
|
import { isBillingCompletedArtifactPublicationDecision, isBillingPartialArtifactPublicationDecision, } from './billingArtifactEvidence.js';
|
|
8
|
+
import { isAzureFinancialChargeCoverageV1, } from './financialChargePolicy.js';
|
|
8
9
|
const LEGACY_FALLBACK_FORBIDDEN_OWN_FIELDS = [
|
|
9
10
|
'schemaVersion',
|
|
10
11
|
'ownership',
|
|
@@ -133,6 +134,33 @@ const allowedBillingCostAnalysisFields = (value, validationBranch) => {
|
|
|
133
134
|
allowText(value, 'subscriptionId', 'billingGenerationId', 'currencyCode', 'currencySymbol', 'forecastMethod');
|
|
134
135
|
allowControl(value, 'schemaVersion', 'ownership', 'revision', 'artifactEvidence');
|
|
135
136
|
allowChildren(value, 'ownership', 'revision', 'artifactEvidence', 'chartData', 'anomalies');
|
|
137
|
+
if (isRecord(value.financialChargeCoverage)) {
|
|
138
|
+
const coverage = value.financialChargeCoverage;
|
|
139
|
+
allowControl(value, 'financialChargeCoverage');
|
|
140
|
+
allowChildren(value, 'financialChargeCoverage');
|
|
141
|
+
allowControl(coverage, 'contractVersion', 'policyRef', 'status', 'coordinate', 'sourceTotals', 'unknownObjects');
|
|
142
|
+
allowText(coverage, 'contractVersion', 'policyRef', 'status');
|
|
143
|
+
allowChildren(coverage, 'coordinate', 'sourceTotals', 'unknownObjects');
|
|
144
|
+
if (isRecord(coverage.coordinate)) {
|
|
145
|
+
allowControl(coverage.coordinate, 'generationId', 'providerName', 'providerScopeId', 'basis', 'period', 'currencyCode', 'minorUnitScale');
|
|
146
|
+
allowText(coverage.coordinate, 'generationId', 'providerName', 'providerScopeId', 'basis', 'currencyCode');
|
|
147
|
+
allowChildren(coverage.coordinate, 'period');
|
|
148
|
+
if (isRecord(coverage.coordinate.period)) {
|
|
149
|
+
allowText(coverage.coordinate.period, 'startDate', 'endDateExclusive');
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
if (isRecord(coverage.sourceTotals))
|
|
153
|
+
allowControl(coverage.sourceTotals, ...Object.keys(coverage.sourceTotals));
|
|
154
|
+
if (Array.isArray(coverage.unknownObjects)) {
|
|
155
|
+
for (const item of coverage.unknownObjects) {
|
|
156
|
+
if (!isRecord(item))
|
|
157
|
+
continue;
|
|
158
|
+
allowControl(item, ...Object.keys(item));
|
|
159
|
+
allowText(item, 'objectKey', 'name', 'resourceType', 'resourceId', 'billableComponentKey');
|
|
160
|
+
allowTextArray(item, 'reasonCodes');
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
}
|
|
136
164
|
if (validationBranch !== 'business-v1')
|
|
137
165
|
allowControl(value, 'artifactState');
|
|
138
166
|
if (validationBranch === 'legacy-fallback')
|
|
@@ -384,11 +412,12 @@ const hasValidBillingCostAnalysisBusinessFields = (value) => {
|
|
|
384
412
|
return false;
|
|
385
413
|
return [value.forecastMonthTotal, value.forecastRemaining, value.forecastPeriodEnd].every(isOptionalFiniteNumber);
|
|
386
414
|
};
|
|
387
|
-
const BILLING_PUBLIC_DATA_STATES = new Set(['current', 'stale', 'previous-verified']);
|
|
415
|
+
const BILLING_PUBLIC_DATA_STATES = new Set(['current', 'partial', 'stale', 'previous-verified']);
|
|
388
416
|
const BILLING_PUBLIC_BUSINESS_FIELDS = new Set([
|
|
389
417
|
'schemaVersion',
|
|
390
418
|
'subscriptionId',
|
|
391
419
|
'dataState',
|
|
420
|
+
'financialChargeCoverage',
|
|
392
421
|
'chartData',
|
|
393
422
|
'anomalies',
|
|
394
423
|
'currencyCode',
|
|
@@ -398,7 +427,7 @@ const BILLING_PUBLIC_BUSINESS_FIELDS = new Set([
|
|
|
398
427
|
'forecastRemaining',
|
|
399
428
|
'forecastPeriodEnd',
|
|
400
429
|
]);
|
|
401
|
-
const BILLING_PUBLIC_NO_ACTIVITY_FIELDS = new Set(['schemaVersion', 'subscriptionId', 'dataState']);
|
|
430
|
+
const BILLING_PUBLIC_NO_ACTIVITY_FIELDS = new Set(['schemaVersion', 'subscriptionId', 'dataState', 'financialChargeCoverage']);
|
|
402
431
|
const hasOnlyFields = (value, allowedFields) => Object.keys(value).every(field => allowedFields.has(field));
|
|
403
432
|
const hasValidBillingCostAnalysisPublicBusinessFields = (value) => {
|
|
404
433
|
if (!isPathSegment(value.subscriptionId))
|
|
@@ -417,12 +446,17 @@ export const isBillingCostAnalysisPublicResponse = (value) => {
|
|
|
417
446
|
return false;
|
|
418
447
|
}
|
|
419
448
|
if (value.dataState === 'no-activity') {
|
|
420
|
-
return hasOnlyFields(value, BILLING_PUBLIC_NO_ACTIVITY_FIELDS)
|
|
449
|
+
return (hasOnlyFields(value, BILLING_PUBLIC_NO_ACTIVITY_FIELDS) &&
|
|
450
|
+
isAzureFinancialChargeCoverageV1(value.financialChargeCoverage) &&
|
|
451
|
+
value.financialChargeCoverage.coordinate.providerScopeId === value.subscriptionId);
|
|
421
452
|
}
|
|
422
453
|
return (BILLING_PUBLIC_DATA_STATES.has(value.dataState) &&
|
|
423
454
|
hasOnlyFields(value, BILLING_PUBLIC_BUSINESS_FIELDS) &&
|
|
424
455
|
!containsForbiddenBillingCostAnalysisControlData(value, 'business-v1') &&
|
|
425
|
-
hasValidBillingCostAnalysisPublicBusinessFields(value)
|
|
456
|
+
hasValidBillingCostAnalysisPublicBusinessFields(value) &&
|
|
457
|
+
isAzureFinancialChargeCoverageV1(value.financialChargeCoverage) &&
|
|
458
|
+
value.financialChargeCoverage.coordinate.providerScopeId === value.subscriptionId &&
|
|
459
|
+
value.financialChargeCoverage.coordinate.currencyCode === value.currencyCode);
|
|
426
460
|
};
|
|
427
461
|
const isBillingCostAnalysisBusinessPayloadForBranch = (value, validationBranch) => !containsForbiddenBillingCostAnalysisControlData(value, validationBranch) &&
|
|
428
462
|
!LEGACY_FALLBACK_FORBIDDEN_OWN_FIELDS.some(field => hasOwn(value, field)) &&
|
|
@@ -454,6 +488,13 @@ export const isBillingCostAnalysisMetadataV2 = (value) => {
|
|
|
454
488
|
}
|
|
455
489
|
if (!hasValidBillingCostAnalysisBusinessFields(value))
|
|
456
490
|
return false;
|
|
491
|
+
if (value.financialChargeCoverage !== undefined &&
|
|
492
|
+
(!isAzureFinancialChargeCoverageV1(value.financialChargeCoverage) ||
|
|
493
|
+
value.financialChargeCoverage.coordinate.generationId !== value.billingGenerationId ||
|
|
494
|
+
value.financialChargeCoverage.coordinate.providerScopeId !== value.subscriptionId ||
|
|
495
|
+
value.financialChargeCoverage.coordinate.currencyCode !== value.currencyCode)) {
|
|
496
|
+
return false;
|
|
497
|
+
}
|
|
457
498
|
if (!hasValidMetadataEvidenceState(value.artifactState, value.artifactEvidence, value.billingGenerationId, value.inputManifestDigest, value.chartData, value.anomalies)) {
|
|
458
499
|
return false;
|
|
459
500
|
}
|