@spottoai/types-package 1.0.2-dev1138.12 → 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 +3 -0
- package/dist/accounts/accounts.d.ts +13 -0
- package/dist/accounts/accounts.d.ts.map +1 -1
- package/dist/accounts/azureSpSetup.d.ts +5 -0
- package/dist/accounts/azureSpSetup.d.ts.map +1 -1
- package/dist/accounts/azureSpSetup.js.map +1 -1
- package/dist/accounts/index.d.ts +1 -0
- package/dist/accounts/index.d.ts.map +1 -1
- package/dist/accounts/index.js +1 -0
- package/dist/accounts/index.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/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/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 +42 -5
- package/dist/ai/grounding.d.ts.map +1 -1
- package/dist/ai/grounding.js +76 -8
- package/dist/ai/grounding.js.map +1 -1
- package/dist/ai/index.d.ts +4 -0
- package/dist/ai/index.d.ts.map +1 -1
- package/dist/ai/index.js +1 -0
- package/dist/ai/index.js.map +1 -1
- package/dist/aws/commitments-planning.d.ts +1 -1
- package/dist/aws/commitments-planning.d.ts.map +1 -1
- package/dist/aws/commitments-planning.js +1 -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/index.d.ts +2 -14
- package/dist/aws/index.d.ts.map +1 -1
- package/dist/aws/index.js +2 -13
- package/dist/aws/index.js.map +1 -1
- package/dist/aws/organizationCommitments.d.ts +2 -1
- package/dist/aws/organizationCommitments.d.ts.map +1 -1
- package/dist/aws/organizationCommitments.js +2 -2
- package/dist/aws/organizationCommitments.js.map +1 -1
- package/dist/aws/organizationCommitmentsApiValidation.d.ts.map +1 -1
- package/dist/aws/organizationCommitmentsApiValidation.js +64 -64
- package/dist/aws/organizationCommitmentsApiValidation.js.map +1 -1
- package/dist/aws/organizationCommitmentsValidation.d.ts.map +1 -1
- package/dist/aws/organizationCommitmentsValidation.js +45 -44
- package/dist/aws/organizationCommitmentsValidation.js.map +1 -1
- package/dist/aws/portalOrganizationCommitmentsPlanningPublicArtifactValidation.d.ts.map +1 -1
- package/dist/aws/portalOrganizationCommitmentsPlanningPublicArtifactValidation.js +79 -76
- package/dist/aws/portalOrganizationCommitmentsPlanningPublicArtifactValidation.js.map +1 -1
- package/dist/aws/portalOrganizationCommitmentsPlanningPublicArtifacts.d.ts +1 -2
- package/dist/aws/portalOrganizationCommitmentsPlanningPublicArtifacts.d.ts.map +1 -1
- package/dist/aws/portalOrganizationCommitmentsPlanningPublicArtifacts.js.map +1 -1
- 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 +35 -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/commitmentsPlanning.d.ts +15 -46
- 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/dataProtection.d.ts +40 -0
- package/dist/azure/dataProtection.d.ts.map +1 -1
- package/dist/azure/governance.d.ts +5 -0
- package/dist/azure/governance.d.ts.map +1 -1
- package/dist/azure/metrics.d.ts +2 -27
- package/dist/azure/metrics.d.ts.map +1 -1
- package/dist/azure/payloads.d.ts +24 -0
- 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/recommendationTracks.d.ts +1 -1
- package/dist/azure/recommendationTracks.d.ts.map +1 -1
- package/dist/azure/reportEvidence.d.ts +192 -11
- package/dist/azure/reportEvidence.d.ts.map +1 -1
- package/dist/azure/reportEvidence.js +9 -1
- package/dist/azure/reportEvidence.js.map +1 -1
- package/dist/azure/reportEvidenceValidation.d.ts.map +1 -1
- package/dist/azure/reportEvidenceValidation.js +201 -5
- package/dist/azure/reportEvidenceValidation.js.map +1 -1
- package/dist/azure/reportEvidenceValidationHelpers.d.ts +3 -16
- package/dist/azure/reportEvidenceValidationHelpers.d.ts.map +1 -1
- package/dist/azure/reportEvidenceValidationHelpers.js +80 -92
- package/dist/azure/reportEvidenceValidationHelpers.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/savings.d.ts +4 -2
- package/dist/azure/savings.d.ts.map +1 -1
- package/dist/azure/serviceRetirement.d.ts +21 -2
- package/dist/azure/serviceRetirement.d.ts.map +1 -1
- package/dist/azure/views.d.ts +24 -1
- package/dist/azure/views.d.ts.map +1 -1
- package/dist/azure/views.js.map +1 -1
- 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/{scheduler/bastionSchedule.js → common/metricStats.js} +1 -1
- package/dist/common/metricStats.js.map +1 -0
- package/dist/common/provider.d.ts +2 -0
- package/dist/common/provider.d.ts.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/esm/accounts/index.js +1 -0
- package/dist/esm/accounts/subscriptionWriteAccess.js +112 -0
- package/dist/esm/accounts/writePermissions.js +46 -0
- package/dist/esm/ai/followUps.js +16 -0
- package/dist/esm/ai/grounding.js +74 -7
- package/dist/esm/ai/index.js +1 -0
- package/dist/esm/aws/commitments-planning.js +1 -0
- package/dist/esm/aws/commitmentsPlanningValidation.js +2 -1
- package/dist/esm/aws/index.js +2 -13
- package/dist/esm/aws/organizationCommitments.js +2 -2
- package/dist/esm/aws/organizationCommitmentsApiValidation.js +5 -5
- package/dist/esm/aws/organizationCommitmentsValidation.js +2 -1
- package/dist/esm/aws/portalOrganizationCommitmentsPlanningPublicArtifactValidation.js +8 -5
- 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/commitmentsPlanning.js +8 -1
- package/dist/esm/azure/commitmentsPlanningValidation.js +39 -0
- package/dist/esm/azure/payloads.js +84 -1
- package/dist/esm/azure/reportEvidence.js +8 -0
- package/dist/esm/azure/reportEvidenceValidation.js +202 -6
- package/dist/esm/azure/reportEvidenceValidationHelpers.js +7 -19
- package/dist/esm/azure/resilienceFacts.js +16 -0
- package/dist/esm/azure/resilienceFactsValidation.js +64 -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/relationships.js +2 -2
- package/dist/esm/index.js +5 -0
- package/dist/esm/index.vite.js +1 -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 -4
- 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/schedulerValidation.js +372 -0
- package/dist/esm/scheduler/weeklyAvailabilityFixtures.js +140 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/dist/index.vite.d.ts +1 -0
- package/dist/index.vite.d.ts.map +1 -1
- package/dist/index.vite.js +1 -0
- package/dist/index.vite.js.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 -4
- package/dist/scheduler/index.d.ts.map +1 -1
- package/dist/scheduler/index.js +4 -4
- 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/{aws/portalPublicArtifactNestedEvidence.js → scheduler/schedulerContracts.js} +1 -1
- 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 +26 -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 +0 -3
- 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/esm/scheduler/bastionScheduleProfile.js +0 -206
- package/dist/esm/scheduler/bastionScheduleValidation.js +0 -401
- package/dist/esm/scheduler/scheduler.js +0 -1
- package/dist/scheduler/bastionSchedule.d.ts +0 -113
- package/dist/scheduler/bastionSchedule.d.ts.map +0 -1
- package/dist/scheduler/bastionSchedule.js.map +0 -1
- package/dist/scheduler/bastionScheduleProfile.d.ts +0 -24
- package/dist/scheduler/bastionScheduleProfile.d.ts.map +0 -1
- package/dist/scheduler/bastionScheduleProfile.js +0 -210
- package/dist/scheduler/bastionScheduleProfile.js.map +0 -1
- package/dist/scheduler/bastionScheduleValidation.d.ts +0 -10
- package/dist/scheduler/bastionScheduleValidation.d.ts.map +0 -1
- package/dist/scheduler/bastionScheduleValidation.js +0 -412
- package/dist/scheduler/bastionScheduleValidation.js.map +0 -1
- package/dist/scheduler/scheduler.d.ts +0 -267
- 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/{bastionSchedule.js → schedulerContracts.js} +0 -0
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
import type { ArtifactAccountBinding, ArtifactGeneration, ArtifactProvider } from './artifactGeneration.js';
|
|
2
|
+
import type { CapabilityReasonCode } from './capabilityPassport.js';
|
|
3
|
+
import type { ProviderResourceType, ResourceAttributes, ResourceFamilyId } from './resourceIdentity.js';
|
|
4
|
+
/**
|
|
5
|
+
* Provider-neutral resource relationship graph published for one provider
|
|
6
|
+
* account. Families, relationship types, and synthetic types are open
|
|
7
|
+
* identifiers: a new provider service needs no package change.
|
|
8
|
+
*/
|
|
9
|
+
export declare const RESOURCE_GRAPH_SCHEMA_VERSION: 1;
|
|
10
|
+
/** Package-owned logical artifact name; storage paths remain producer-owned. */
|
|
11
|
+
export declare const RESOURCE_GRAPH_LOGICAL_NAME: "relationships.json.gz";
|
|
12
|
+
export declare const RESOURCE_GRAPH_NODE_KINDS: readonly ["scope", "region", "zone", "group", "resource", "synthetic"];
|
|
13
|
+
export declare const RESOURCE_GRAPH_NODE_ROLES: readonly ["network-baseline", "topology", "workload"];
|
|
14
|
+
export declare const RESOURCE_GRAPH_EDGE_KINDS: readonly ["contains", "depends_on"];
|
|
15
|
+
export declare const RESOURCE_GRAPH_EDGE_CONFIDENCES: readonly ["high", "medium", "low"];
|
|
16
|
+
export declare const RESOURCE_GRAPH_EVIDENCE_METHODS: readonly ["field-derived", "field-reference", "persisted-inventory", "request-scope"];
|
|
17
|
+
export type ResourceGraphSchemaVersion = typeof RESOURCE_GRAPH_SCHEMA_VERSION;
|
|
18
|
+
export type ResourceGraphNodeKind = (typeof RESOURCE_GRAPH_NODE_KINDS)[number];
|
|
19
|
+
/** Presentation role that lets readers separate baseline networking from workloads without a family list. */
|
|
20
|
+
export type ResourceGraphNodeRole = (typeof RESOURCE_GRAPH_NODE_ROLES)[number];
|
|
21
|
+
export type ResourceGraphEdgeKind = (typeof RESOURCE_GRAPH_EDGE_KINDS)[number];
|
|
22
|
+
export type ResourceGraphEdgeConfidence = (typeof RESOURCE_GRAPH_EDGE_CONFIDENCES)[number];
|
|
23
|
+
export type ResourceGraphEvidenceMethod = (typeof RESOURCE_GRAPH_EVIDENCE_METHODS)[number];
|
|
24
|
+
/** Open, kebab-case relationship identifier, for example `subnet-membership`. */
|
|
25
|
+
export type ResourceGraphRelationshipType = string;
|
|
26
|
+
/** Open, kebab-case synthetic node identifier, for example `db-subnet-group`. */
|
|
27
|
+
export type ResourceGraphSyntheticType = string;
|
|
28
|
+
export interface ResourceGraphNodeCosts {
|
|
29
|
+
spend30d?: number;
|
|
30
|
+
spend30dAmortized?: number;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* One graph node. `family` and `resourceType` are required on resource nodes,
|
|
34
|
+
* `syntheticType` on synthetic nodes, and `region` on every node except the
|
|
35
|
+
* single scope node.
|
|
36
|
+
*/
|
|
37
|
+
export interface ResourceGraphNode {
|
|
38
|
+
id: string;
|
|
39
|
+
kind: ResourceGraphNodeKind;
|
|
40
|
+
family?: ResourceFamilyId;
|
|
41
|
+
resourceType?: ProviderResourceType;
|
|
42
|
+
syntheticType?: ResourceGraphSyntheticType;
|
|
43
|
+
region?: string;
|
|
44
|
+
name: string;
|
|
45
|
+
displayName?: string;
|
|
46
|
+
icon?: string;
|
|
47
|
+
/** Provider-native identity such as an AWS ARN. */
|
|
48
|
+
nativeId?: string;
|
|
49
|
+
role?: ResourceGraphNodeRole;
|
|
50
|
+
tags?: Record<string, string>;
|
|
51
|
+
attributes?: ResourceAttributes;
|
|
52
|
+
costs?: ResourceGraphNodeCosts;
|
|
53
|
+
}
|
|
54
|
+
export interface ResourceGraphEvidence {
|
|
55
|
+
method: ResourceGraphEvidenceMethod;
|
|
56
|
+
/** Family whose data proved the edge; `graph-scope` for structural scope edges. */
|
|
57
|
+
sourceFamily: ResourceFamilyId;
|
|
58
|
+
field?: string;
|
|
59
|
+
matchedValue?: string;
|
|
60
|
+
}
|
|
61
|
+
/** `contains` edges point from the child to its parent. */
|
|
62
|
+
export interface ResourceGraphEdge {
|
|
63
|
+
id: string;
|
|
64
|
+
from: string;
|
|
65
|
+
to: string;
|
|
66
|
+
kind: ResourceGraphEdgeKind;
|
|
67
|
+
relationshipTypes: [ResourceGraphRelationshipType, ...ResourceGraphRelationshipType[]];
|
|
68
|
+
confidence: ResourceGraphEdgeConfidence;
|
|
69
|
+
evidence: [ResourceGraphEvidence, ...ResourceGraphEvidence[]];
|
|
70
|
+
}
|
|
71
|
+
/** A reference a producer observed but could not resolve to a node. */
|
|
72
|
+
export interface ResourceGraphUnresolved {
|
|
73
|
+
sourceNodeId: string;
|
|
74
|
+
relationshipType: ResourceGraphRelationshipType;
|
|
75
|
+
sourceFamily: ResourceFamilyId;
|
|
76
|
+
field: string;
|
|
77
|
+
matchedValue: string;
|
|
78
|
+
expectedTargetFamily: ResourceFamilyId;
|
|
79
|
+
}
|
|
80
|
+
interface ResourceGraphFamilyCoverageBase {
|
|
81
|
+
family: ResourceFamilyId;
|
|
82
|
+
/** Regions the family covers; a subset of the artifact scope Regions. */
|
|
83
|
+
regions: string[];
|
|
84
|
+
}
|
|
85
|
+
export type ResourceGraphFamilyCoverage = (ResourceGraphFamilyCoverageBase & {
|
|
86
|
+
status: 'available';
|
|
87
|
+
lastSuccessfulRefreshAt: string;
|
|
88
|
+
emptyScope: boolean;
|
|
89
|
+
reason?: never;
|
|
90
|
+
}) | (ResourceGraphFamilyCoverageBase & {
|
|
91
|
+
status: 'incomplete';
|
|
92
|
+
lastSuccessfulRefreshAt?: never;
|
|
93
|
+
emptyScope?: never;
|
|
94
|
+
reason: CapabilityReasonCode;
|
|
95
|
+
});
|
|
96
|
+
/** Self-closing coverage: every resource node family must be declared here. */
|
|
97
|
+
export interface ResourceGraphCoverage {
|
|
98
|
+
families: ResourceGraphFamilyCoverage[];
|
|
99
|
+
}
|
|
100
|
+
interface ResourceGraphStatsBase {
|
|
101
|
+
totalNodes: number;
|
|
102
|
+
totalEdges: number;
|
|
103
|
+
unresolvedCount: number;
|
|
104
|
+
buildMs?: number;
|
|
105
|
+
snapshotBytes?: number;
|
|
106
|
+
}
|
|
107
|
+
export type ResourceGraphStats = ResourceGraphStatsBase & ({
|
|
108
|
+
truncated: false;
|
|
109
|
+
truncation?: never;
|
|
110
|
+
} | {
|
|
111
|
+
truncated: true;
|
|
112
|
+
truncation: {
|
|
113
|
+
reason: 'snapshot-size-limit';
|
|
114
|
+
edgesDroppedCount: number;
|
|
115
|
+
unresolvedDroppedCount: number;
|
|
116
|
+
tagsRemovedFromNodeCount: number;
|
|
117
|
+
};
|
|
118
|
+
});
|
|
119
|
+
export interface ResourceGraphScope {
|
|
120
|
+
regions: string[];
|
|
121
|
+
}
|
|
122
|
+
export type ResourceGraphArtifact<Provider extends ArtifactProvider = ArtifactProvider, AccountId extends string = string, RunId extends string = string> = ArtifactAccountBinding<Provider, AccountId> & {
|
|
123
|
+
schemaVersion: ResourceGraphSchemaVersion;
|
|
124
|
+
artifactGeneration: ArtifactGeneration<RunId>;
|
|
125
|
+
generatedAt: string;
|
|
126
|
+
scope: ResourceGraphScope;
|
|
127
|
+
/** Required when any node carries costs. */
|
|
128
|
+
currency?: string;
|
|
129
|
+
currencySymbol?: string;
|
|
130
|
+
nodes: ResourceGraphNode[];
|
|
131
|
+
edges: ResourceGraphEdge[];
|
|
132
|
+
unresolved: ResourceGraphUnresolved[];
|
|
133
|
+
coverage: ResourceGraphCoverage;
|
|
134
|
+
stats: ResourceGraphStats;
|
|
135
|
+
};
|
|
136
|
+
export {};
|
|
137
|
+
//# sourceMappingURL=resourceGraph.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resourceGraph.d.ts","sourceRoot":"","sources":["../../src/common/resourceGraph.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RESOURCE_GRAPH_EVIDENCE_METHODS = exports.RESOURCE_GRAPH_EDGE_CONFIDENCES = exports.RESOURCE_GRAPH_EDGE_KINDS = exports.RESOURCE_GRAPH_NODE_ROLES = exports.RESOURCE_GRAPH_NODE_KINDS = exports.RESOURCE_GRAPH_LOGICAL_NAME = exports.RESOURCE_GRAPH_SCHEMA_VERSION = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Provider-neutral resource relationship graph published for one provider
|
|
6
|
+
* account. Families, relationship types, and synthetic types are open
|
|
7
|
+
* identifiers: a new provider service needs no package change.
|
|
8
|
+
*/
|
|
9
|
+
exports.RESOURCE_GRAPH_SCHEMA_VERSION = 1;
|
|
10
|
+
/** Package-owned logical artifact name; storage paths remain producer-owned. */
|
|
11
|
+
exports.RESOURCE_GRAPH_LOGICAL_NAME = 'relationships.json.gz';
|
|
12
|
+
exports.RESOURCE_GRAPH_NODE_KINDS = ['scope', 'region', 'zone', 'group', 'resource', 'synthetic'];
|
|
13
|
+
exports.RESOURCE_GRAPH_NODE_ROLES = ['network-baseline', 'topology', 'workload'];
|
|
14
|
+
exports.RESOURCE_GRAPH_EDGE_KINDS = ['contains', 'depends_on'];
|
|
15
|
+
exports.RESOURCE_GRAPH_EDGE_CONFIDENCES = ['high', 'medium', 'low'];
|
|
16
|
+
exports.RESOURCE_GRAPH_EVIDENCE_METHODS = ['field-derived', 'field-reference', 'persisted-inventory', 'request-scope'];
|
|
17
|
+
//# sourceMappingURL=resourceGraph.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resourceGraph.js","sourceRoot":"","sources":["../../src/common/resourceGraph.ts"],"names":[],"mappings":";;;AAIA;;;;GAIG;AACU,QAAA,6BAA6B,GAAG,CAAU,CAAC;AAExD,gFAAgF;AACnE,QAAA,2BAA2B,GAAG,uBAAgC,CAAC;AAE/D,QAAA,yBAAyB,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,CAAU,CAAC;AACnG,QAAA,yBAAyB,GAAG,CAAC,kBAAkB,EAAE,UAAU,EAAE,UAAU,CAAU,CAAC;AAClF,QAAA,yBAAyB,GAAG,CAAC,UAAU,EAAE,YAAY,CAAU,CAAC;AAChE,QAAA,+BAA+B,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAU,CAAC;AACrE,QAAA,+BAA+B,GAAG,CAAC,eAAe,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,eAAe,CAAU,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { ArtifactProvider } from './artifactGeneration.js';
|
|
2
|
+
import { type ResourceGraphArtifact } from './resourceGraph.js';
|
|
3
|
+
import { type AttributeValue } from './resourceIdentity.js';
|
|
4
|
+
/** Account and Region a node's provider-native values must stay within. */
|
|
5
|
+
export interface ResourceGraphNodeScope {
|
|
6
|
+
accountId: string;
|
|
7
|
+
region?: string;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Provider format rules. The generic validator checks structure only; each
|
|
11
|
+
* provider supplies identifier formats here. Every callback throws on failure.
|
|
12
|
+
*/
|
|
13
|
+
export interface ResourceGraphValidationOptions<Provider extends ArtifactProvider = ArtifactProvider> {
|
|
14
|
+
provider: Provider;
|
|
15
|
+
isAccountId?: (value: string) => boolean;
|
|
16
|
+
isRegion?: (value: string) => boolean;
|
|
17
|
+
isResourceType?: (value: string) => boolean;
|
|
18
|
+
validateNativeId?: (nativeId: string, scope: ResourceGraphNodeScope, field: string) => void;
|
|
19
|
+
/** Validates a zone node name against its Region. */
|
|
20
|
+
validateZone?: (zone: string, region: string, field: string) => void;
|
|
21
|
+
validateAttribute?: (key: string, value: AttributeValue, scope: ResourceGraphNodeScope, field: string) => void;
|
|
22
|
+
/** Rejects keys at every depth; `inAttributes` is true inside a node's provider-native attributes. */
|
|
23
|
+
isForbiddenKey?: (key: string, inAttributes: boolean) => boolean;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Validates one untrusted resource graph artifact. It checks structure and
|
|
27
|
+
* identifier formats only; families are never checked against a service list.
|
|
28
|
+
*/
|
|
29
|
+
export declare function validateResourceGraphArtifact<Provider extends ArtifactProvider>(value: unknown, options: ResourceGraphValidationOptions<Provider>): ResourceGraphArtifact<Provider>;
|
|
30
|
+
//# sourceMappingURL=resourceGraphValidation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resourceGraphValidation.d.ts","sourceRoot":"","sources":["../../src/common/resourceGraphValidation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,OAAO,EAOL,KAAK,qBAAqB,EAE3B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAwD,KAAK,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAkBlH,2EAA2E;AAC3E,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,MAAM,WAAW,8BAA8B,CAAC,QAAQ,SAAS,gBAAgB,GAAG,gBAAgB;IAClG,QAAQ,EAAE,QAAQ,CAAC;IACnB,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IACzC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IACtC,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IAC5C,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,sBAAsB,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5F,qDAAqD;IACrD,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACrE,iBAAiB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,sBAAsB,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/G,sGAAsG;IACtG,cAAc,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,KAAK,OAAO,CAAC;CAClE;AA6DD;;;GAGG;AACH,wBAAgB,6BAA6B,CAAC,QAAQ,SAAS,gBAAgB,EAC7E,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,8BAA8B,CAAC,QAAQ,CAAC,GAChD,qBAAqB,CAAC,QAAQ,CAAC,CAuBjC"}
|
|
@@ -0,0 +1,369 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.validateResourceGraphArtifact = validateResourceGraphArtifact;
|
|
4
|
+
const capabilityPassport_js_1 = require("./capabilityPassport.js");
|
|
5
|
+
const resourceGraph_js_1 = require("./resourceGraph.js");
|
|
6
|
+
const resourceIdentity_js_1 = require("./resourceIdentity.js");
|
|
7
|
+
const validationHelpers_js_1 = require("./validationHelpers.js");
|
|
8
|
+
const ARTIFACT_KEYS = [
|
|
9
|
+
'schemaVersion',
|
|
10
|
+
'provider',
|
|
11
|
+
'accountId',
|
|
12
|
+
'artifactGeneration',
|
|
13
|
+
'generatedAt',
|
|
14
|
+
'scope',
|
|
15
|
+
'currency',
|
|
16
|
+
'currencySymbol',
|
|
17
|
+
'nodes',
|
|
18
|
+
'edges',
|
|
19
|
+
'unresolved',
|
|
20
|
+
'coverage',
|
|
21
|
+
'stats',
|
|
22
|
+
];
|
|
23
|
+
const NODE_KEYS = [
|
|
24
|
+
'id',
|
|
25
|
+
'kind',
|
|
26
|
+
'family',
|
|
27
|
+
'resourceType',
|
|
28
|
+
'syntheticType',
|
|
29
|
+
'region',
|
|
30
|
+
'name',
|
|
31
|
+
'displayName',
|
|
32
|
+
'icon',
|
|
33
|
+
'nativeId',
|
|
34
|
+
'role',
|
|
35
|
+
'tags',
|
|
36
|
+
'attributes',
|
|
37
|
+
'costs',
|
|
38
|
+
];
|
|
39
|
+
/** Node fields each kind may carry; anything else is rejected. */
|
|
40
|
+
const NODE_FIELDS = {
|
|
41
|
+
scope: ['nativeId', 'attributes'],
|
|
42
|
+
region: [],
|
|
43
|
+
zone: ['nativeId', 'attributes'],
|
|
44
|
+
group: ['family', 'nativeId', 'role', 'tags', 'attributes'],
|
|
45
|
+
resource: ['family', 'resourceType', 'nativeId', 'role', 'tags', 'attributes', 'costs'],
|
|
46
|
+
synthetic: ['family', 'syntheticType', 'nativeId', 'role', 'tags', 'attributes'],
|
|
47
|
+
};
|
|
48
|
+
/** Allowed `contains` parents: containment is strictly downward, so the graph stays acyclic. */
|
|
49
|
+
const CONTAINMENT_PARENTS = {
|
|
50
|
+
scope: [],
|
|
51
|
+
region: ['scope'],
|
|
52
|
+
zone: ['region'],
|
|
53
|
+
group: ['region', 'zone'],
|
|
54
|
+
resource: ['region', 'zone', 'group'],
|
|
55
|
+
synthetic: ['region', 'zone', 'group'],
|
|
56
|
+
};
|
|
57
|
+
const DEPENDENCY_KINDS = ['group', 'resource', 'synthetic'];
|
|
58
|
+
/**
|
|
59
|
+
* Validates one untrusted resource graph artifact. It checks structure and
|
|
60
|
+
* identifier formats only; families are never checked against a service list.
|
|
61
|
+
*/
|
|
62
|
+
function validateResourceGraphArtifact(value, options) {
|
|
63
|
+
const artifact = (0, validationHelpers_js_1.asRecord)(value, 'artifact');
|
|
64
|
+
(0, validationHelpers_js_1.assertExactKeys)(artifact, ARTIFACT_KEYS, 'artifact');
|
|
65
|
+
(0, validationHelpers_js_1.assertValue)(artifact.schemaVersion, resourceGraph_js_1.RESOURCE_GRAPH_SCHEMA_VERSION, 'artifact.schemaVersion');
|
|
66
|
+
(0, validationHelpers_js_1.assertValue)(artifact.provider, options.provider, 'artifact.provider');
|
|
67
|
+
const accountId = (0, validationHelpers_js_1.requiredString)(artifact.accountId, 'artifact.accountId');
|
|
68
|
+
if (options.isAccountId && !options.isAccountId(accountId))
|
|
69
|
+
throw new Error('artifact.accountId is not a valid provider account id.');
|
|
70
|
+
const generation = (0, validationHelpers_js_1.validateGeneration)(artifact.artifactGeneration, 'artifact.artifactGeneration');
|
|
71
|
+
const outputAt = Date.parse(generation.generatedAt);
|
|
72
|
+
const generatedAt = (0, validationHelpers_js_1.isoTimestamp)(artifact.generatedAt, 'artifact.generatedAt');
|
|
73
|
+
if (Date.parse(generatedAt) > outputAt)
|
|
74
|
+
throw new Error('artifact.generatedAt must not be newer than the artifact generation.');
|
|
75
|
+
const regions = validateScope(artifact.scope, options);
|
|
76
|
+
if (artifact.currency !== undefined)
|
|
77
|
+
(0, validationHelpers_js_1.requiredString)(artifact.currency, 'artifact.currency');
|
|
78
|
+
if (artifact.currencySymbol !== undefined)
|
|
79
|
+
(0, validationHelpers_js_1.requiredString)(artifact.currencySymbol, 'artifact.currencySymbol');
|
|
80
|
+
const nodes = validateNodes(artifact.nodes, accountId, regions, options);
|
|
81
|
+
if (nodes.hasCosts && artifact.currency === undefined)
|
|
82
|
+
throw new Error('artifact.currency is required when nodes carry costs.');
|
|
83
|
+
const edgeCount = validateEdges(artifact.edges, nodes.byId);
|
|
84
|
+
const unresolvedCount = validateUnresolved(artifact.unresolved, nodes.byId);
|
|
85
|
+
validateCoverage(artifact.coverage, regions, outputAt, nodes.byId);
|
|
86
|
+
validateStats(artifact.stats, nodes.byId.size, edgeCount, unresolvedCount);
|
|
87
|
+
assertPublicGraphJson(artifact, options.isForbiddenKey);
|
|
88
|
+
return value;
|
|
89
|
+
}
|
|
90
|
+
function validateScope(value, options) {
|
|
91
|
+
const scope = (0, validationHelpers_js_1.asRecord)(value, 'artifact.scope');
|
|
92
|
+
(0, validationHelpers_js_1.assertExactKeys)(scope, ['regions'], 'artifact.scope');
|
|
93
|
+
const regions = (0, validationHelpers_js_1.asArray)(scope.regions, 'artifact.scope.regions', true).map((region, index) => {
|
|
94
|
+
const field = `artifact.scope.regions[${index}]`;
|
|
95
|
+
const name = (0, validationHelpers_js_1.requiredString)(region, field);
|
|
96
|
+
if (options.isRegion && !options.isRegion(name))
|
|
97
|
+
throw new Error(`${field} is not a valid provider Region.`);
|
|
98
|
+
return name;
|
|
99
|
+
});
|
|
100
|
+
(0, validationHelpers_js_1.assertUnique)(regions, 'artifact.scope.regions');
|
|
101
|
+
return new Set(regions);
|
|
102
|
+
}
|
|
103
|
+
function validateNodes(value, accountId, regions, options) {
|
|
104
|
+
const byId = new Map();
|
|
105
|
+
const regionNodes = [];
|
|
106
|
+
let scopeCount = 0;
|
|
107
|
+
let hasCosts = false;
|
|
108
|
+
(0, validationHelpers_js_1.asArray)(value, 'artifact.nodes').forEach((entry, index) => {
|
|
109
|
+
const field = `artifact.nodes[${index}]`;
|
|
110
|
+
const node = (0, validationHelpers_js_1.asRecord)(entry, field);
|
|
111
|
+
(0, validationHelpers_js_1.assertExactKeys)(node, NODE_KEYS, field);
|
|
112
|
+
const id = (0, validationHelpers_js_1.requiredString)(node.id, `${field}.id`);
|
|
113
|
+
if (byId.has(id))
|
|
114
|
+
throw new Error('artifact node ids must be unique.');
|
|
115
|
+
const kind = (0, validationHelpers_js_1.requiredEnum)(node.kind, resourceGraph_js_1.RESOURCE_GRAPH_NODE_KINDS, `${field}.kind`);
|
|
116
|
+
const allowed = NODE_FIELDS[kind];
|
|
117
|
+
const undeclared = ['family', 'resourceType', 'syntheticType', 'nativeId', 'role', 'tags', 'attributes', 'costs'].filter(key => node[key] !== undefined && !allowed.includes(key));
|
|
118
|
+
if (undeclared.length > 0)
|
|
119
|
+
throw new Error(`${field} ${kind} nodes must not carry: ${undeclared.join(', ')}.`);
|
|
120
|
+
(0, validationHelpers_js_1.requiredString)(node.name, `${field}.name`);
|
|
121
|
+
if (node.displayName !== undefined)
|
|
122
|
+
(0, validationHelpers_js_1.requiredString)(node.displayName, `${field}.displayName`);
|
|
123
|
+
if (node.icon !== undefined)
|
|
124
|
+
(0, validationHelpers_js_1.requiredString)(node.icon, `${field}.icon`);
|
|
125
|
+
let region;
|
|
126
|
+
if (kind === 'scope') {
|
|
127
|
+
scopeCount += 1;
|
|
128
|
+
if (node.region !== undefined)
|
|
129
|
+
throw new Error(`${field}.region is not allowed on the scope node.`);
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
region = (0, validationHelpers_js_1.requiredString)(node.region, `${field}.region`);
|
|
133
|
+
if (!regions.has(region))
|
|
134
|
+
throw new Error(`${field}.region is outside artifact scope.`);
|
|
135
|
+
}
|
|
136
|
+
if (kind === 'region')
|
|
137
|
+
regionNodes.push(region);
|
|
138
|
+
if (kind === 'zone')
|
|
139
|
+
options.validateZone?.(String(node.name), region, `${field}.name`);
|
|
140
|
+
if (kind === 'resource' || node.family !== undefined)
|
|
141
|
+
kebab(node.family, `${field}.family`);
|
|
142
|
+
if (kind === 'resource') {
|
|
143
|
+
const resourceType = (0, validationHelpers_js_1.requiredString)(node.resourceType, `${field}.resourceType`);
|
|
144
|
+
if (options.isResourceType && !options.isResourceType(resourceType))
|
|
145
|
+
throw new Error(`${field}.resourceType is not a valid provider resource type.`);
|
|
146
|
+
}
|
|
147
|
+
if (kind === 'synthetic')
|
|
148
|
+
kebab(node.syntheticType, `${field}.syntheticType`);
|
|
149
|
+
if (node.role !== undefined)
|
|
150
|
+
(0, validationHelpers_js_1.requiredEnum)(node.role, resourceGraph_js_1.RESOURCE_GRAPH_NODE_ROLES, `${field}.role`);
|
|
151
|
+
const scope = { accountId, region };
|
|
152
|
+
if (node.nativeId !== undefined)
|
|
153
|
+
options.validateNativeId?.((0, validationHelpers_js_1.requiredString)(node.nativeId, `${field}.nativeId`), scope, `${field}.nativeId`);
|
|
154
|
+
if (node.tags !== undefined)
|
|
155
|
+
validateTags(node.tags, `${field}.tags`);
|
|
156
|
+
if (node.attributes !== undefined)
|
|
157
|
+
validateAttributes(node.attributes, scope, options, `${field}.attributes`);
|
|
158
|
+
if (node.costs !== undefined) {
|
|
159
|
+
validateCosts(node.costs, `${field}.costs`);
|
|
160
|
+
hasCosts = true;
|
|
161
|
+
}
|
|
162
|
+
byId.set(id, { kind, region, family: node.family === undefined ? undefined : String(node.family) });
|
|
163
|
+
});
|
|
164
|
+
if (scopeCount !== 1)
|
|
165
|
+
throw new Error('artifact must contain exactly one scope node.');
|
|
166
|
+
(0, validationHelpers_js_1.assertUnique)(regionNodes, 'artifact Region nodes');
|
|
167
|
+
if (regionNodes.length !== regions.size)
|
|
168
|
+
throw new Error('artifact Region nodes must exactly match artifact scope Regions.');
|
|
169
|
+
return { byId, hasCosts };
|
|
170
|
+
}
|
|
171
|
+
function kebab(value, field) {
|
|
172
|
+
if (!(0, resourceIdentity_js_1.isKebabIdentifier)(value))
|
|
173
|
+
throw new Error(`${field} must be a kebab-case identifier.`);
|
|
174
|
+
return value;
|
|
175
|
+
}
|
|
176
|
+
function validateTags(value, field) {
|
|
177
|
+
Object.entries((0, validationHelpers_js_1.asRecord)(value, field)).forEach(([key, tagValue]) => {
|
|
178
|
+
if (key.length === 0)
|
|
179
|
+
throw new Error(`${field} keys must be non-empty.`);
|
|
180
|
+
if (typeof tagValue !== 'string')
|
|
181
|
+
throw new Error(`${field}.${key} must be a string.`);
|
|
182
|
+
});
|
|
183
|
+
}
|
|
184
|
+
function validateAttributes(value, scope, options, field) {
|
|
185
|
+
Object.entries((0, validationHelpers_js_1.asRecord)(value, field)).forEach(([key, item]) => {
|
|
186
|
+
const itemField = `${field}.${key}`;
|
|
187
|
+
if (!(0, resourceIdentity_js_1.isAttributeKey)(key))
|
|
188
|
+
throw new Error(`${itemField} key must be camelCase.`);
|
|
189
|
+
validateAttributeValue(item, itemField);
|
|
190
|
+
options.validateAttribute?.(key, item, scope, itemField);
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
function validateAttributeValue(value, field) {
|
|
194
|
+
if ((0, resourceIdentity_js_1.isAttributeScalar)(value))
|
|
195
|
+
return;
|
|
196
|
+
if (!Array.isArray(value))
|
|
197
|
+
throw new Error(`${field} must be a scalar, a scalar array, or an array of flat records.`);
|
|
198
|
+
if (value.every(resourceIdentity_js_1.isAttributeScalar))
|
|
199
|
+
return;
|
|
200
|
+
value.forEach((entry, index) => {
|
|
201
|
+
const entryField = `${field}[${index}]`;
|
|
202
|
+
Object.entries((0, validationHelpers_js_1.asRecord)(entry, entryField)).forEach(([key, item]) => {
|
|
203
|
+
if (!(0, resourceIdentity_js_1.isAttributeKey)(key))
|
|
204
|
+
throw new Error(`${entryField}.${key} key must be camelCase.`);
|
|
205
|
+
if (!(0, resourceIdentity_js_1.isAttributeScalar)(item))
|
|
206
|
+
throw new Error(`${entryField}.${key} must be a string, finite number, or boolean.`);
|
|
207
|
+
});
|
|
208
|
+
});
|
|
209
|
+
}
|
|
210
|
+
function validateCosts(value, field) {
|
|
211
|
+
const costs = (0, validationHelpers_js_1.asRecord)(value, field);
|
|
212
|
+
(0, validationHelpers_js_1.assertExactKeys)(costs, ['spend30d', 'spend30dAmortized'], field);
|
|
213
|
+
if (Object.keys(costs).length === 0)
|
|
214
|
+
throw new Error(`${field} must report at least one amount.`);
|
|
215
|
+
Object.entries(costs).forEach(([key, amount]) => (0, validationHelpers_js_1.finiteNumber)(amount, `${field}.${key}`));
|
|
216
|
+
}
|
|
217
|
+
function validateEdges(value, nodes) {
|
|
218
|
+
const edges = (0, validationHelpers_js_1.asArray)(value, 'artifact.edges');
|
|
219
|
+
const ids = new Set();
|
|
220
|
+
const parents = new Map();
|
|
221
|
+
edges.forEach((entry, index) => {
|
|
222
|
+
const field = `artifact.edges[${index}]`;
|
|
223
|
+
const edge = (0, validationHelpers_js_1.asRecord)(entry, field);
|
|
224
|
+
(0, validationHelpers_js_1.assertExactKeys)(edge, ['id', 'from', 'to', 'kind', 'relationshipTypes', 'confidence', 'evidence'], field);
|
|
225
|
+
const id = (0, validationHelpers_js_1.requiredString)(edge.id, `${field}.id`);
|
|
226
|
+
if (ids.has(id))
|
|
227
|
+
throw new Error('artifact edge ids must be unique.');
|
|
228
|
+
ids.add(id);
|
|
229
|
+
const from = (0, validationHelpers_js_1.requiredString)(edge.from, `${field}.from`);
|
|
230
|
+
const to = (0, validationHelpers_js_1.requiredString)(edge.to, `${field}.to`);
|
|
231
|
+
const child = nodes.get(from);
|
|
232
|
+
const parent = nodes.get(to);
|
|
233
|
+
if (!child || !parent)
|
|
234
|
+
throw new Error(`${field} references a missing node.`);
|
|
235
|
+
if (from === to)
|
|
236
|
+
throw new Error(`${field} must not be a self edge.`);
|
|
237
|
+
const kind = (0, validationHelpers_js_1.requiredEnum)(edge.kind, resourceGraph_js_1.RESOURCE_GRAPH_EDGE_KINDS, `${field}.kind`);
|
|
238
|
+
const relationshipTypes = (0, validationHelpers_js_1.asArray)(edge.relationshipTypes, `${field}.relationshipTypes`, true).map((type, typeIndex) => kebab(type, `${field}.relationshipTypes[${typeIndex}]`));
|
|
239
|
+
(0, validationHelpers_js_1.assertUnique)(relationshipTypes, `${field}.relationshipTypes`);
|
|
240
|
+
(0, validationHelpers_js_1.requiredEnum)(edge.confidence, resourceGraph_js_1.RESOURCE_GRAPH_EDGE_CONFIDENCES, `${field}.confidence`);
|
|
241
|
+
validateEvidence(edge.evidence, `${field}.evidence`);
|
|
242
|
+
if (kind === 'contains') {
|
|
243
|
+
if (!CONTAINMENT_PARENTS[child.kind].includes(parent.kind))
|
|
244
|
+
throw new Error(`${field} ${child.kind} nodes cannot be contained by ${parent.kind} nodes; contains edges point child to parent.`);
|
|
245
|
+
if (parent.region !== undefined && child.region !== parent.region)
|
|
246
|
+
throw new Error(`${field} containment must not cross Regions.`);
|
|
247
|
+
parents.set(from, (parents.get(from) ?? 0) + 1);
|
|
248
|
+
}
|
|
249
|
+
else if (!DEPENDENCY_KINDS.includes(child.kind) || !DEPENDENCY_KINDS.includes(parent.kind)) {
|
|
250
|
+
throw new Error(`${field} depends_on edges must connect group, resource, or synthetic nodes.`);
|
|
251
|
+
}
|
|
252
|
+
});
|
|
253
|
+
nodes.forEach((node, id) => {
|
|
254
|
+
const expected = node.kind === 'scope' ? 0 : 1;
|
|
255
|
+
if ((parents.get(id) ?? 0) !== expected)
|
|
256
|
+
throw new Error(`artifact node ${id} must have exactly ${expected} contains parent edge${expected === 1 ? '' : 's'}.`);
|
|
257
|
+
});
|
|
258
|
+
return edges.length;
|
|
259
|
+
}
|
|
260
|
+
function validateEvidence(value, field) {
|
|
261
|
+
(0, validationHelpers_js_1.asArray)(value, field, true).forEach((entry, index) => {
|
|
262
|
+
const itemField = `${field}[${index}]`;
|
|
263
|
+
const item = (0, validationHelpers_js_1.asRecord)(entry, itemField);
|
|
264
|
+
(0, validationHelpers_js_1.assertExactKeys)(item, ['method', 'sourceFamily', 'field', 'matchedValue'], itemField);
|
|
265
|
+
(0, validationHelpers_js_1.requiredEnum)(item.method, resourceGraph_js_1.RESOURCE_GRAPH_EVIDENCE_METHODS, `${itemField}.method`);
|
|
266
|
+
kebab(item.sourceFamily, `${itemField}.sourceFamily`);
|
|
267
|
+
if (item.field !== undefined)
|
|
268
|
+
(0, validationHelpers_js_1.requiredString)(item.field, `${itemField}.field`);
|
|
269
|
+
if (item.matchedValue !== undefined)
|
|
270
|
+
(0, validationHelpers_js_1.requiredString)(item.matchedValue, `${itemField}.matchedValue`);
|
|
271
|
+
});
|
|
272
|
+
}
|
|
273
|
+
function validateUnresolved(value, nodes) {
|
|
274
|
+
const unresolved = (0, validationHelpers_js_1.asArray)(value, 'artifact.unresolved');
|
|
275
|
+
unresolved.forEach((entry, index) => {
|
|
276
|
+
const field = `artifact.unresolved[${index}]`;
|
|
277
|
+
const reference = (0, validationHelpers_js_1.asRecord)(entry, field);
|
|
278
|
+
(0, validationHelpers_js_1.assertExactKeys)(reference, ['sourceNodeId', 'relationshipType', 'sourceFamily', 'field', 'matchedValue', 'expectedTargetFamily'], field);
|
|
279
|
+
const source = nodes.get((0, validationHelpers_js_1.requiredString)(reference.sourceNodeId, `${field}.sourceNodeId`));
|
|
280
|
+
if (!source)
|
|
281
|
+
throw new Error(`${field}.sourceNodeId references a missing node.`);
|
|
282
|
+
kebab(reference.relationshipType, `${field}.relationshipType`);
|
|
283
|
+
const sourceFamily = kebab(reference.sourceFamily, `${field}.sourceFamily`);
|
|
284
|
+
if (source.family !== undefined && source.family !== sourceFamily)
|
|
285
|
+
throw new Error(`${field}.sourceFamily must match its source node family.`);
|
|
286
|
+
(0, validationHelpers_js_1.requiredString)(reference.field, `${field}.field`);
|
|
287
|
+
(0, validationHelpers_js_1.requiredString)(reference.matchedValue, `${field}.matchedValue`);
|
|
288
|
+
kebab(reference.expectedTargetFamily, `${field}.expectedTargetFamily`);
|
|
289
|
+
});
|
|
290
|
+
return unresolved.length;
|
|
291
|
+
}
|
|
292
|
+
/** Coverage is self-closing: it must declare every family that appears on a resource node. */
|
|
293
|
+
function validateCoverage(value, regions, outputAt, nodes) {
|
|
294
|
+
const coverage = (0, validationHelpers_js_1.asRecord)(value, 'artifact.coverage');
|
|
295
|
+
(0, validationHelpers_js_1.assertExactKeys)(coverage, ['families'], 'artifact.coverage');
|
|
296
|
+
const declared = new Map();
|
|
297
|
+
(0, validationHelpers_js_1.asArray)(coverage.families, 'artifact.coverage.families').forEach((entry, index) => {
|
|
298
|
+
const field = `artifact.coverage.families[${index}]`;
|
|
299
|
+
const family = (0, validationHelpers_js_1.asRecord)(entry, field);
|
|
300
|
+
(0, validationHelpers_js_1.assertExactKeys)(family, ['family', 'regions', 'status', 'lastSuccessfulRefreshAt', 'emptyScope', 'reason'], field);
|
|
301
|
+
const name = kebab(family.family, `${field}.family`);
|
|
302
|
+
if (declared.has(name))
|
|
303
|
+
throw new Error('artifact.coverage family identities must not contain duplicates.');
|
|
304
|
+
const familyRegions = (0, validationHelpers_js_1.asArray)(family.regions, `${field}.regions`, true).map((region, regionIndex) => (0, validationHelpers_js_1.requiredString)(region, `${field}.regions[${regionIndex}]`));
|
|
305
|
+
(0, validationHelpers_js_1.assertUnique)(familyRegions, `${field}.regions`);
|
|
306
|
+
if (familyRegions.some(region => !regions.has(region)))
|
|
307
|
+
throw new Error(`${field}.regions must be within artifact scope Regions.`);
|
|
308
|
+
let emptyScope = false;
|
|
309
|
+
if ((0, validationHelpers_js_1.requiredEnum)(family.status, ['available', 'incomplete'], `${field}.status`) === 'available') {
|
|
310
|
+
const refreshedAt = (0, validationHelpers_js_1.isoTimestamp)(family.lastSuccessfulRefreshAt, `${field}.lastSuccessfulRefreshAt`);
|
|
311
|
+
if (Date.parse(refreshedAt) > outputAt)
|
|
312
|
+
throw new Error(`${field}.lastSuccessfulRefreshAt must not be newer than the artifact generation.`);
|
|
313
|
+
emptyScope = (0, validationHelpers_js_1.requiredBoolean)(family.emptyScope, `${field}.emptyScope`);
|
|
314
|
+
if (family.reason !== undefined)
|
|
315
|
+
throw new Error(`${field}.reason is not allowed for available coverage.`);
|
|
316
|
+
}
|
|
317
|
+
else {
|
|
318
|
+
(0, validationHelpers_js_1.requiredEnum)(family.reason, capabilityPassport_js_1.CAPABILITY_REASON_CODES, `${field}.reason`);
|
|
319
|
+
if (family.lastSuccessfulRefreshAt !== undefined || family.emptyScope !== undefined)
|
|
320
|
+
throw new Error(`${field} incomplete coverage cannot claim successful refresh evidence.`);
|
|
321
|
+
}
|
|
322
|
+
declared.set(name, { regions: new Set(familyRegions), emptyScope });
|
|
323
|
+
});
|
|
324
|
+
nodes.forEach((node, id) => {
|
|
325
|
+
if (node.kind !== 'resource')
|
|
326
|
+
return;
|
|
327
|
+
const family = declared.get(node.family);
|
|
328
|
+
if (!family)
|
|
329
|
+
throw new Error(`artifact.coverage must declare family ${node.family} of resource node ${id}.`);
|
|
330
|
+
if (!family.regions.has(node.region))
|
|
331
|
+
throw new Error(`artifact.coverage for ${node.family} must include Region ${node.region}.`);
|
|
332
|
+
if (family.emptyScope)
|
|
333
|
+
throw new Error(`artifact.coverage for ${node.family} claims an empty scope but resource node ${id} exists.`);
|
|
334
|
+
});
|
|
335
|
+
}
|
|
336
|
+
function validateStats(value, nodeCount, edgeCount, unresolvedCount) {
|
|
337
|
+
const stats = (0, validationHelpers_js_1.asRecord)(value, 'artifact.stats');
|
|
338
|
+
(0, validationHelpers_js_1.assertExactKeys)(stats, ['totalNodes', 'totalEdges', 'unresolvedCount', 'truncated', 'truncation', 'buildMs', 'snapshotBytes'], 'artifact.stats');
|
|
339
|
+
(0, validationHelpers_js_1.assertValue)((0, validationHelpers_js_1.nonNegativeInteger)(stats.totalNodes, 'artifact.stats.totalNodes'), nodeCount, 'artifact.stats.totalNodes');
|
|
340
|
+
(0, validationHelpers_js_1.assertValue)((0, validationHelpers_js_1.nonNegativeInteger)(stats.totalEdges, 'artifact.stats.totalEdges'), edgeCount, 'artifact.stats.totalEdges');
|
|
341
|
+
(0, validationHelpers_js_1.assertValue)((0, validationHelpers_js_1.nonNegativeInteger)(stats.unresolvedCount, 'artifact.stats.unresolvedCount'), unresolvedCount, 'artifact.stats.unresolvedCount');
|
|
342
|
+
if ((0, validationHelpers_js_1.requiredBoolean)(stats.truncated, 'artifact.stats.truncated')) {
|
|
343
|
+
const truncation = (0, validationHelpers_js_1.asRecord)(stats.truncation, 'artifact.stats.truncation');
|
|
344
|
+
const counts = ['edgesDroppedCount', 'unresolvedDroppedCount', 'tagsRemovedFromNodeCount'];
|
|
345
|
+
(0, validationHelpers_js_1.assertExactKeys)(truncation, ['reason', ...counts], 'artifact.stats.truncation');
|
|
346
|
+
(0, validationHelpers_js_1.assertValue)(truncation.reason, 'snapshot-size-limit', 'artifact.stats.truncation.reason');
|
|
347
|
+
if (counts.map(key => (0, validationHelpers_js_1.nonNegativeInteger)(truncation[key], `artifact.stats.truncation.${key}`)).every(count => count === 0))
|
|
348
|
+
throw new Error('artifact.stats.truncation must report at least one omitted item.');
|
|
349
|
+
}
|
|
350
|
+
else if (stats.truncation !== undefined) {
|
|
351
|
+
throw new Error('artifact.stats.truncation is only allowed when truncated is true.');
|
|
352
|
+
}
|
|
353
|
+
if (stats.buildMs !== undefined)
|
|
354
|
+
(0, validationHelpers_js_1.nonNegativeInteger)(stats.buildMs, 'artifact.stats.buildMs');
|
|
355
|
+
if (stats.snapshotBytes !== undefined)
|
|
356
|
+
(0, validationHelpers_js_1.nonNegativeInteger)(stats.snapshotBytes, 'artifact.stats.snapshotBytes');
|
|
357
|
+
}
|
|
358
|
+
/** Rejects non-plain JSON everywhere, applying the provider key guard with attribute context. */
|
|
359
|
+
function assertPublicGraphJson(artifact, isForbiddenKey) {
|
|
360
|
+
const { nodes, ...envelope } = artifact;
|
|
361
|
+
(0, validationHelpers_js_1.assertPlainJson)(envelope, 'artifact', key => isForbiddenKey?.(key, false) ?? false);
|
|
362
|
+
nodes.forEach((node, index) => {
|
|
363
|
+
const { attributes, ...rest } = node;
|
|
364
|
+
(0, validationHelpers_js_1.assertPlainJson)(rest, `artifact.nodes[${index}]`, key => isForbiddenKey?.(key, false) ?? false);
|
|
365
|
+
if (attributes !== undefined)
|
|
366
|
+
(0, validationHelpers_js_1.assertPlainJson)(attributes, `artifact.nodes[${index}].attributes`, key => isForbiddenKey?.(key, true) ?? false);
|
|
367
|
+
});
|
|
368
|
+
}
|
|
369
|
+
//# sourceMappingURL=resourceGraphValidation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resourceGraphValidation.js","sourceRoot":"","sources":["../../src/common/resourceGraphValidation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Provider-neutral resource identity vocabulary.
|
|
3
|
+
*
|
|
4
|
+
* Families, relationship types, and synthetic types are open kebab-case
|
|
5
|
+
* identifiers so a provider can add a service without a package change.
|
|
6
|
+
* Validators check identifier format only, never membership in a list.
|
|
7
|
+
*/
|
|
8
|
+
/** Open, kebab-case discovery family identifier, for example `ec2-instance`. */
|
|
9
|
+
export type ResourceFamilyId = string;
|
|
10
|
+
/** Provider-native resource type, for example `AWS::EC2::Instance`. */
|
|
11
|
+
export type ProviderResourceType = string;
|
|
12
|
+
/** Open, kebab-case identifier of the capability or source that produced evidence. */
|
|
13
|
+
export type CapabilitySourceId = string;
|
|
14
|
+
export type AttributeScalar = string | number | boolean;
|
|
15
|
+
/** A scalar, a list of scalars, or a list of flat records of scalars. */
|
|
16
|
+
export type AttributeValue = AttributeScalar | AttributeScalar[] | Array<Record<string, AttributeScalar>>;
|
|
17
|
+
/** Provider-native resource attributes keyed by camelCase names. */
|
|
18
|
+
export type ResourceAttributes = Record<string, AttributeValue>;
|
|
19
|
+
export declare const KEBAB_IDENTIFIER_PATTERN: RegExp;
|
|
20
|
+
export declare const ATTRIBUTE_KEY_PATTERN: RegExp;
|
|
21
|
+
export declare const isKebabIdentifier: (value: unknown) => value is string;
|
|
22
|
+
export declare const isResourceFamilyId: (value: unknown) => value is ResourceFamilyId;
|
|
23
|
+
export declare const isCapabilitySourceId: (value: unknown) => value is CapabilitySourceId;
|
|
24
|
+
export declare const isAttributeKey: (value: unknown) => value is string;
|
|
25
|
+
export declare const isAttributeScalar: (value: unknown) => value is AttributeScalar;
|
|
26
|
+
export declare const isAttributeValue: (value: unknown) => value is AttributeValue;
|
|
27
|
+
export declare const isResourceAttributes: (value: unknown) => value is ResourceAttributes;
|
|
28
|
+
//# sourceMappingURL=resourceIdentity.d.ts.map
|