@spottoai/types-package 1.0.2-dev1138.3 → 1.0.2-dev1138.5
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 +9 -0
- package/dist/accounts/accounts.d.ts +77 -4
- 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 +128 -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 +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/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/validation.d.ts +24 -0
- package/dist/accounts/validation.d.ts.map +1 -1
- package/dist/ai/index.d.ts +14 -1
- package/dist/ai/index.d.ts.map +1 -1
- package/dist/ai/index.js +12 -0
- package/dist/ai/index.js.map +1 -1
- package/dist/aws/commitments-planning.d.ts +5 -0
- package/dist/aws/commitments-planning.d.ts.map +1 -1
- package/dist/aws/commitments-planning.js +19 -0
- package/dist/aws/commitments-planning.js.map +1 -1
- 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 +5 -0
- package/dist/aws/index.d.ts.map +1 -1
- package/dist/aws/index.js +5 -0
- 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 +260 -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 +228 -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 +407 -0
- package/dist/aws/portalOrganizationCommitmentsPlanningPublicArtifactValidation.js.map +1 -0
- package/dist/aws/portalOrganizationCommitmentsPlanningPublicArtifacts.d.ts +17 -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/requests.d.ts +13 -2
- package/dist/aws/requests.d.ts.map +1 -1
- package/dist/aws/requests.js +1 -1
- package/dist/aws/requests.js.map +1 -1
- package/dist/azure/commitmentsPlanning.d.ts +2 -2
- package/dist/azure/commitmentsPlanning.d.ts.map +1 -1
- package/dist/azure/financialAuthorityProjectionKernel.d.ts +7 -0
- package/dist/azure/financialAuthorityProjectionKernel.d.ts.map +1 -0
- package/dist/azure/financialAuthorityProjectionKernel.js +165 -0
- package/dist/azure/financialAuthorityProjectionKernel.js.map +1 -0
- package/dist/azure/financialAuthorityViewValidation.d.ts +3 -1
- package/dist/azure/financialAuthorityViewValidation.d.ts.map +1 -1
- package/dist/azure/financialAuthorityViewValidation.js +167 -2
- package/dist/azure/financialAuthorityViewValidation.js.map +1 -1
- package/dist/azure/financialChargeCompositionKernel.d.ts.map +1 -1
- package/dist/azure/financialChargeCompositionKernel.js +5 -1
- package/dist/azure/financialChargeCompositionKernel.js.map +1 -1
- package/dist/azure/financialDataflowKernel.d.ts.map +1 -1
- package/dist/azure/financialDataflowKernel.js +2 -1
- package/dist/azure/financialDataflowKernel.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/financialSavingsAuthority.d.ts +25 -4
- package/dist/azure/financialSavingsAuthority.d.ts.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 +126 -2
- package/dist/azure/financialSavingsAuthorityValidation.js.map +1 -1
- package/dist/azure/financialSavingsCoordinateValidation.d.ts.map +1 -1
- package/dist/azure/financialSavingsCoordinateValidation.js +62 -19
- package/dist/azure/financialSavingsCoordinateValidation.js.map +1 -1
- package/dist/azure/financialSavingsSurfaceProjection.d.ts +58 -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 +14 -0
- package/dist/azure/financialSavingsSurfaceProjectionKernel.d.ts.map +1 -0
- package/dist/azure/financialSavingsSurfaceProjectionKernel.js +326 -0
- package/dist/azure/financialSavingsSurfaceProjectionKernel.js.map +1 -0
- package/dist/azure/financialSavingsSurfaceProjectionValidation.d.ts.map +1 -1
- package/dist/azure/financialSavingsSurfaceProjectionValidation.js +126 -12
- package/dist/azure/financialSavingsSurfaceProjectionValidation.js.map +1 -1
- package/dist/azure/financialScope.d.ts +2 -0
- package/dist/azure/financialScope.d.ts.map +1 -1
- package/dist/azure/financialScope.js +2 -0
- package/dist/azure/financialScope.js.map +1 -1
- package/dist/azure/governance.d.ts +145 -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/payloads.d.ts +19 -0
- package/dist/azure/payloads.d.ts.map +1 -1
- package/dist/azure/recommendationState.d.ts +1 -1
- package/dist/azure/recommendationState.d.ts.map +1 -1
- package/dist/azure/recommendations.d.ts +3 -1
- package/dist/azure/recommendations.d.ts.map +1 -1
- package/dist/azure/serviceRetirement.d.ts +33 -2
- package/dist/azure/serviceRetirement.d.ts.map +1 -1
- package/dist/azure/subscriptions.d.ts +9 -0
- package/dist/azure/subscriptions.d.ts.map +1 -1
- package/dist/azure/views.d.ts +19 -1
- package/dist/azure/views.d.ts.map +1 -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/provider.d.ts +53 -0
- package/dist/common/provider.d.ts.map +1 -1
- package/dist/common/provider.js.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 +196 -0
- package/dist/environment/contracts.d.ts.map +1 -0
- package/dist/environment/contracts.js +21 -0
- package/dist/environment/contracts.js.map +1 -0
- package/dist/environment/index.d.ts +5 -0
- package/dist/environment/index.d.ts.map +1 -0
- package/dist/environment/index.js +21 -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 +18 -0
- package/dist/environment/references.d.ts.map +1 -0
- package/dist/environment/references.js +206 -0
- package/dist/environment/references.js.map +1 -0
- package/dist/environment/validation.d.ts +28 -0
- package/dist/environment/validation.d.ts.map +1 -0
- package/dist/environment/validation.js +320 -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 +1 -0
- package/dist/esm/ai/index.js +10 -1
- package/dist/esm/aws/commitments-planning.js +5 -0
- package/dist/esm/aws/estates.js +7 -1
- package/dist/esm/aws/index.js +5 -0
- package/dist/esm/aws/organizationCommitments.js +48 -0
- package/dist/esm/aws/organizationCommitmentsApiValidation.js +220 -0
- package/dist/esm/aws/organizationCommitmentsValidation.js +224 -0
- package/dist/esm/aws/portalOrganizationCommitmentsPlanningPublicArtifactValidation.js +402 -0
- package/dist/esm/aws/portalOrganizationCommitmentsPlanningPublicArtifacts.js +2 -0
- package/dist/esm/aws/requests.js +1 -1
- package/dist/esm/azure/financialAuthorityProjectionKernel.js +159 -0
- package/dist/esm/azure/financialAuthorityViewValidation.js +165 -1
- package/dist/esm/azure/financialChargeCompositionKernel.js +5 -1
- package/dist/esm/azure/financialDataflowKernel.js +2 -1
- package/dist/esm/azure/financialProjectionValidation.js +43 -3
- package/dist/esm/azure/financialSavingsAuthorityValidation.js +124 -2
- package/dist/esm/azure/financialSavingsCoordinateValidation.js +62 -19
- package/dist/esm/azure/financialSavingsSurfaceProjection.js +2 -0
- package/dist/esm/azure/financialSavingsSurfaceProjectionKernel.js +318 -0
- package/dist/esm/azure/financialSavingsSurfaceProjectionValidation.js +126 -12
- package/dist/esm/azure/financialScope.js +2 -0
- package/dist/esm/azure/governance.js +1 -0
- package/dist/esm/azure/vmPatchManagement.js +3 -0
- package/dist/esm/entries/commitments-planning.js +2 -2
- package/dist/esm/entries/environment.js +3 -0
- package/dist/esm/environment/canonicalization.js +34 -0
- package/dist/esm/environment/contracts.js +17 -0
- package/dist/esm/environment/index.js +4 -0
- package/dist/esm/environment/internal.js +97 -0
- package/dist/esm/environment/references.js +194 -0
- package/dist/esm/environment/validation.js +303 -0
- package/dist/esm/index.js +2 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/portfolio/portfolioOperations.d.ts +1 -1
- package/dist/portfolio/portfolioOperations.d.ts.map +1 -1
- package/package.json +14 -3
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.validateAwsOrganizationCommitmentsRefreshAcceptedResponse = validateAwsOrganizationCommitmentsRefreshAcceptedResponse;
|
|
4
|
+
exports.validateAwsOrganizationCommitmentsScopeListResponse = validateAwsOrganizationCommitmentsScopeListResponse;
|
|
5
|
+
exports.validateAwsOrganizationCommitmentsRefreshStatusResponse = validateAwsOrganizationCommitmentsRefreshStatusResponse;
|
|
6
|
+
const organizationCommitments_js_1 = require("./organizationCommitments.js");
|
|
7
|
+
const portalPublicArtifactValidationCommon_js_1 = require("./portalPublicArtifactValidationCommon.js");
|
|
8
|
+
const pluginPublicArtifactValidationHelpers_js_1 = require("./pluginPublicArtifactValidationHelpers.js");
|
|
9
|
+
const ORGANIZATION_ID = /^o-[a-z0-9]{10,32}$/u;
|
|
10
|
+
/** Validates one API-authored organization commitments refresh receipt. */
|
|
11
|
+
function validateAwsOrganizationCommitmentsRefreshAcceptedResponse(value, expected) {
|
|
12
|
+
const response = (0, portalPublicArtifactValidationCommon_js_1.asRecord)(value, 'organizationCommitmentsAdmission');
|
|
13
|
+
const disposition = (0, portalPublicArtifactValidationCommon_js_1.requiredEnum)(response.disposition, ['accepted', 'already-running', 'cooldown'], 'organizationCommitmentsAdmission.disposition');
|
|
14
|
+
(0, portalPublicArtifactValidationCommon_js_1.assertExactKeys)(response, [
|
|
15
|
+
'schemaVersion',
|
|
16
|
+
'provider',
|
|
17
|
+
'scopeType',
|
|
18
|
+
'companyId',
|
|
19
|
+
'estateId',
|
|
20
|
+
'organizationId',
|
|
21
|
+
'managementAccountId',
|
|
22
|
+
'requestId',
|
|
23
|
+
'correlationId',
|
|
24
|
+
'manifestRevision',
|
|
25
|
+
'disposition',
|
|
26
|
+
'acceptedAt',
|
|
27
|
+
...(disposition === 'cooldown' ? ['nextEligibleAt'] : []),
|
|
28
|
+
], 'organizationCommitmentsAdmission');
|
|
29
|
+
validateOrganizationApiIdentity(response, expected, 'organizationCommitmentsAdmission');
|
|
30
|
+
(0, portalPublicArtifactValidationCommon_js_1.assertValue)(response.manifestRevision, expected.manifestRevision, 'organizationCommitmentsAdmission.manifestRevision');
|
|
31
|
+
(0, portalPublicArtifactValidationCommon_js_1.requiredString)(response.requestId, 'organizationCommitmentsAdmission.requestId');
|
|
32
|
+
(0, portalPublicArtifactValidationCommon_js_1.requiredString)(response.correlationId, 'organizationCommitmentsAdmission.correlationId');
|
|
33
|
+
const acceptedAt = (0, portalPublicArtifactValidationCommon_js_1.isoTimestamp)(response.acceptedAt, 'organizationCommitmentsAdmission.acceptedAt');
|
|
34
|
+
if (disposition === 'cooldown') {
|
|
35
|
+
const nextEligibleAt = (0, portalPublicArtifactValidationCommon_js_1.isoTimestamp)(response.nextEligibleAt, 'organizationCommitmentsAdmission.nextEligibleAt');
|
|
36
|
+
if (Date.parse(nextEligibleAt) <= Date.parse(acceptedAt)) {
|
|
37
|
+
throw new Error('organizationCommitmentsAdmission.nextEligibleAt must be later than acceptedAt.');
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
(0, portalPublicArtifactValidationCommon_js_1.assertPublicJson)(response, 'organizationCommitmentsAdmission');
|
|
41
|
+
return value;
|
|
42
|
+
}
|
|
43
|
+
/** Validates the safe organization scope selector response for one company. */
|
|
44
|
+
function validateAwsOrganizationCommitmentsScopeListResponse(value, expectedCompanyId) {
|
|
45
|
+
const response = (0, portalPublicArtifactValidationCommon_js_1.asRecord)(value, 'organizationCommitmentsScopes');
|
|
46
|
+
(0, portalPublicArtifactValidationCommon_js_1.assertExactKeys)(response, ['schemaVersion', 'provider', 'companyId', 'organizations'], 'organizationCommitmentsScopes');
|
|
47
|
+
(0, portalPublicArtifactValidationCommon_js_1.assertValue)(response.schemaVersion, organizationCommitments_js_1.AWS_ORGANIZATION_COMMITMENTS_SCHEMA_VERSION, 'organizationCommitmentsScopes.schemaVersion');
|
|
48
|
+
(0, portalPublicArtifactValidationCommon_js_1.assertValue)(response.provider, 'AWS', 'organizationCommitmentsScopes.provider');
|
|
49
|
+
(0, portalPublicArtifactValidationCommon_js_1.assertValue)(response.companyId, (0, portalPublicArtifactValidationCommon_js_1.requiredString)(expectedCompanyId, 'expectedCompanyId'), 'organizationCommitmentsScopes.companyId');
|
|
50
|
+
if (!Array.isArray(response.organizations))
|
|
51
|
+
throw new Error('organizationCommitmentsScopes.organizations must be an array.');
|
|
52
|
+
const estateIds = [];
|
|
53
|
+
const organizationIds = [];
|
|
54
|
+
response.organizations.forEach((entry, index) => {
|
|
55
|
+
const field = `organizationCommitmentsScopes.organizations[${index}]`;
|
|
56
|
+
const scope = (0, portalPublicArtifactValidationCommon_js_1.asRecord)(entry, field);
|
|
57
|
+
(0, portalPublicArtifactValidationCommon_js_1.assertExactKeys)(scope, ['scopeType', 'estateId', 'name', 'organizationId', 'managementAccountId', 'accountCount', 'availability', 'canView', 'canRefresh', 'reason'], field);
|
|
58
|
+
(0, portalPublicArtifactValidationCommon_js_1.assertValue)(scope.scopeType, 'organization', `${field}.scopeType`);
|
|
59
|
+
estateIds.push((0, portalPublicArtifactValidationCommon_js_1.requiredString)(scope.estateId, `${field}.estateId`));
|
|
60
|
+
(0, portalPublicArtifactValidationCommon_js_1.requiredString)(scope.name, `${field}.name`);
|
|
61
|
+
organizationIds.push(requiredOrganizationId(scope.organizationId, `${field}.organizationId`));
|
|
62
|
+
requiredAccountId(scope.managementAccountId, `${field}.managementAccountId`);
|
|
63
|
+
const accountCount = (0, portalPublicArtifactValidationCommon_js_1.nonNegativeInteger)(scope.accountCount, `${field}.accountCount`);
|
|
64
|
+
if (accountCount < 1)
|
|
65
|
+
throw new Error(`${field}.accountCount must include the management account.`);
|
|
66
|
+
const availability = (0, portalPublicArtifactValidationCommon_js_1.requiredEnum)(scope.availability, ['available', 'unavailable'], `${field}.availability`);
|
|
67
|
+
(0, portalPublicArtifactValidationCommon_js_1.requiredBoolean)(scope.canView, `${field}.canView`);
|
|
68
|
+
const canRefresh = (0, portalPublicArtifactValidationCommon_js_1.requiredBoolean)(scope.canRefresh, `${field}.canRefresh`);
|
|
69
|
+
if (availability === 'available') {
|
|
70
|
+
if (scope.reason !== undefined)
|
|
71
|
+
throw new Error(`${field}.reason is not allowed when the scope is available.`);
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
(0, portalPublicArtifactValidationCommon_js_1.requiredEnum)(scope.reason, organizationCommitments_js_1.AWS_ORGANIZATION_COMMITMENTS_SCOPE_UNAVAILABLE_REASONS, `${field}.reason`);
|
|
75
|
+
if (canRefresh)
|
|
76
|
+
throw new Error(`${field}.canRefresh must be false when the scope is unavailable.`);
|
|
77
|
+
}
|
|
78
|
+
});
|
|
79
|
+
assertUniqueSorted(estateIds, 'organizationCommitmentsScopes.organizations estateId');
|
|
80
|
+
assertUnique(organizationIds, 'organizationCommitmentsScopes.organizations organizationId');
|
|
81
|
+
(0, portalPublicArtifactValidationCommon_js_1.assertPublicJson)(response, 'organizationCommitmentsScopes');
|
|
82
|
+
return value;
|
|
83
|
+
}
|
|
84
|
+
/** Validates one sanitized Blob-backed organization commitments status projection. */
|
|
85
|
+
function validateAwsOrganizationCommitmentsRefreshStatusResponse(value, expected) {
|
|
86
|
+
const response = (0, portalPublicArtifactValidationCommon_js_1.asRecord)(value, 'organizationCommitmentsStatus');
|
|
87
|
+
(0, portalPublicArtifactValidationCommon_js_1.assertExactKeys)(response, [
|
|
88
|
+
'schemaVersion',
|
|
89
|
+
'provider',
|
|
90
|
+
'scopeType',
|
|
91
|
+
'companyId',
|
|
92
|
+
'estateId',
|
|
93
|
+
'organizationId',
|
|
94
|
+
'managementAccountId',
|
|
95
|
+
'targetManifestRevision',
|
|
96
|
+
'state',
|
|
97
|
+
'requestId',
|
|
98
|
+
'correlationId',
|
|
99
|
+
'requestedAt',
|
|
100
|
+
'updatedAt',
|
|
101
|
+
'stages',
|
|
102
|
+
'failureCode',
|
|
103
|
+
'retryable',
|
|
104
|
+
'nextEligibleAt',
|
|
105
|
+
'latestArtifact',
|
|
106
|
+
], 'organizationCommitmentsStatus');
|
|
107
|
+
validateOrganizationApiIdentity(response, expected, 'organizationCommitmentsStatus');
|
|
108
|
+
(0, portalPublicArtifactValidationCommon_js_1.assertValue)(response.targetManifestRevision, (0, portalPublicArtifactValidationCommon_js_1.requiredString)(expected.targetManifestRevision, 'expected.targetManifestRevision'), 'organizationCommitmentsStatus.targetManifestRevision');
|
|
109
|
+
const state = (0, portalPublicArtifactValidationCommon_js_1.requiredEnum)(response.state, organizationCommitments_js_1.AWS_ORGANIZATION_COMMITMENTS_REFRESH_STATES, 'organizationCommitmentsStatus.state');
|
|
110
|
+
(0, portalPublicArtifactValidationCommon_js_1.isoTimestamp)(response.updatedAt, 'organizationCommitmentsStatus.updatedAt');
|
|
111
|
+
if (state === 'not-started') {
|
|
112
|
+
for (const key of ['requestId', 'correlationId', 'requestedAt', 'failureCode', 'retryable']) {
|
|
113
|
+
if (response[key] !== undefined)
|
|
114
|
+
throw new Error(`organizationCommitmentsStatus.${key} is not allowed before a refresh starts.`);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
const requestId = (0, portalPublicArtifactValidationCommon_js_1.requiredString)(response.requestId, 'organizationCommitmentsStatus.requestId');
|
|
119
|
+
if (expected.requestId !== undefined)
|
|
120
|
+
(0, portalPublicArtifactValidationCommon_js_1.assertValue)(requestId, expected.requestId, 'organizationCommitmentsStatus.requestId');
|
|
121
|
+
(0, portalPublicArtifactValidationCommon_js_1.requiredString)(response.correlationId, 'organizationCommitmentsStatus.correlationId');
|
|
122
|
+
(0, portalPublicArtifactValidationCommon_js_1.isoTimestamp)(response.requestedAt, 'organizationCommitmentsStatus.requestedAt');
|
|
123
|
+
}
|
|
124
|
+
if (response.failureCode !== undefined) {
|
|
125
|
+
(0, portalPublicArtifactValidationCommon_js_1.requiredEnum)(response.failureCode, organizationCommitments_js_1.AWS_ORGANIZATION_COMMITMENTS_ISSUE_CODES, 'organizationCommitmentsStatus.failureCode');
|
|
126
|
+
}
|
|
127
|
+
if (state === 'failed' && response.failureCode === undefined) {
|
|
128
|
+
throw new Error('organizationCommitmentsStatus.failureCode is required when the refresh failed.');
|
|
129
|
+
}
|
|
130
|
+
if (response.retryable !== undefined)
|
|
131
|
+
(0, portalPublicArtifactValidationCommon_js_1.requiredBoolean)(response.retryable, 'organizationCommitmentsStatus.retryable');
|
|
132
|
+
if (response.nextEligibleAt !== undefined)
|
|
133
|
+
(0, portalPublicArtifactValidationCommon_js_1.isoTimestamp)(response.nextEligibleAt, 'organizationCommitmentsStatus.nextEligibleAt');
|
|
134
|
+
validateStages(response.stages);
|
|
135
|
+
if (response.latestArtifact !== undefined)
|
|
136
|
+
validateLatestArtifact(response.latestArtifact, state);
|
|
137
|
+
if (state === 'fresh' && response.latestArtifact === undefined) {
|
|
138
|
+
throw new Error('organizationCommitmentsStatus.latestArtifact is required when the refresh is fresh.');
|
|
139
|
+
}
|
|
140
|
+
(0, portalPublicArtifactValidationCommon_js_1.assertPublicJson)(response, 'organizationCommitmentsStatus');
|
|
141
|
+
return value;
|
|
142
|
+
}
|
|
143
|
+
function validateStages(value) {
|
|
144
|
+
if (!Array.isArray(value) || value.length !== organizationCommitments_js_1.AWS_ORGANIZATION_COMMITMENTS_REFRESH_STAGES.length) {
|
|
145
|
+
throw new Error('organizationCommitmentsStatus.stages must contain every canonical stage exactly once.');
|
|
146
|
+
}
|
|
147
|
+
value.forEach((entry, index) => {
|
|
148
|
+
const field = `organizationCommitmentsStatus.stages[${index}]`;
|
|
149
|
+
const stage = (0, portalPublicArtifactValidationCommon_js_1.asRecord)(entry, field);
|
|
150
|
+
(0, portalPublicArtifactValidationCommon_js_1.assertExactKeys)(stage, ['id', 'status', 'completedCount', 'totalCount', 'failureCode', 'retryable', 'updatedAt'], field);
|
|
151
|
+
(0, portalPublicArtifactValidationCommon_js_1.assertValue)(stage.id, organizationCommitments_js_1.AWS_ORGANIZATION_COMMITMENTS_REFRESH_STAGES[index], `${field}.id`);
|
|
152
|
+
const status = (0, portalPublicArtifactValidationCommon_js_1.requiredEnum)(stage.status, organizationCommitments_js_1.AWS_ORGANIZATION_COMMITMENTS_REFRESH_STAGE_STATUSES, `${field}.status`);
|
|
153
|
+
if ((stage.completedCount === undefined) !== (stage.totalCount === undefined)) {
|
|
154
|
+
throw new Error(`${field}.completedCount and totalCount must be supplied together.`);
|
|
155
|
+
}
|
|
156
|
+
if (stage.completedCount !== undefined) {
|
|
157
|
+
const completed = (0, portalPublicArtifactValidationCommon_js_1.nonNegativeInteger)(stage.completedCount, `${field}.completedCount`);
|
|
158
|
+
const total = (0, portalPublicArtifactValidationCommon_js_1.nonNegativeInteger)(stage.totalCount, `${field}.totalCount`);
|
|
159
|
+
if (completed > total)
|
|
160
|
+
throw new Error(`${field}.completedCount must not exceed totalCount.`);
|
|
161
|
+
}
|
|
162
|
+
if (stage.failureCode !== undefined)
|
|
163
|
+
(0, portalPublicArtifactValidationCommon_js_1.requiredEnum)(stage.failureCode, organizationCommitments_js_1.AWS_ORGANIZATION_COMMITMENTS_ISSUE_CODES, `${field}.failureCode`);
|
|
164
|
+
if (status === 'failed' && stage.failureCode === undefined)
|
|
165
|
+
throw new Error(`${field}.failureCode is required when the stage failed.`);
|
|
166
|
+
if (stage.retryable !== undefined)
|
|
167
|
+
(0, portalPublicArtifactValidationCommon_js_1.requiredBoolean)(stage.retryable, `${field}.retryable`);
|
|
168
|
+
(0, portalPublicArtifactValidationCommon_js_1.isoTimestamp)(stage.updatedAt, `${field}.updatedAt`);
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
function validateLatestArtifact(value, refreshState) {
|
|
172
|
+
const artifact = (0, portalPublicArtifactValidationCommon_js_1.asRecord)(value, 'organizationCommitmentsStatus.latestArtifact');
|
|
173
|
+
(0, portalPublicArtifactValidationCommon_js_1.assertExactKeys)(artifact, ['state', 'generatedAt', 'artifactGeneration'], 'organizationCommitmentsStatus.latestArtifact');
|
|
174
|
+
const state = (0, portalPublicArtifactValidationCommon_js_1.requiredEnum)(artifact.state, ['available', 'stale', 'unavailable'], 'organizationCommitmentsStatus.latestArtifact.state');
|
|
175
|
+
if (state === 'unavailable') {
|
|
176
|
+
if (artifact.generatedAt !== undefined || artifact.artifactGeneration !== undefined) {
|
|
177
|
+
throw new Error('organizationCommitmentsStatus.latestArtifact unavailable state cannot claim generation evidence.');
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
else {
|
|
181
|
+
const generatedAt = (0, portalPublicArtifactValidationCommon_js_1.isoTimestamp)(artifact.generatedAt, 'organizationCommitmentsStatus.latestArtifact.generatedAt');
|
|
182
|
+
const generation = (0, portalPublicArtifactValidationCommon_js_1.validateGeneration)(artifact.artifactGeneration, 'organizationCommitmentsStatus.latestArtifact.artifactGeneration');
|
|
183
|
+
if (Date.parse(generatedAt) > Date.parse(generation.generatedAt)) {
|
|
184
|
+
throw new Error('organizationCommitmentsStatus.latestArtifact.generatedAt must not exceed its generation time.');
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
if (refreshState === 'fresh' && state !== 'available') {
|
|
188
|
+
throw new Error('organizationCommitmentsStatus fresh state requires an available latest artifact.');
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
function validateOrganizationApiIdentity(value, expected, field) {
|
|
192
|
+
(0, portalPublicArtifactValidationCommon_js_1.assertValue)(value.schemaVersion, organizationCommitments_js_1.AWS_ORGANIZATION_COMMITMENTS_SCHEMA_VERSION, `${field}.schemaVersion`);
|
|
193
|
+
(0, portalPublicArtifactValidationCommon_js_1.assertValue)(value.provider, 'AWS', `${field}.provider`);
|
|
194
|
+
(0, portalPublicArtifactValidationCommon_js_1.assertValue)(value.scopeType, 'organization', `${field}.scopeType`);
|
|
195
|
+
(0, portalPublicArtifactValidationCommon_js_1.assertValue)(value.companyId, (0, portalPublicArtifactValidationCommon_js_1.requiredString)(expected.companyId, 'expected.companyId'), `${field}.companyId`);
|
|
196
|
+
(0, portalPublicArtifactValidationCommon_js_1.assertValue)(value.estateId, (0, portalPublicArtifactValidationCommon_js_1.requiredString)(expected.estateId, 'expected.estateId'), `${field}.estateId`);
|
|
197
|
+
const organizationId = requiredOrganizationId(value.organizationId, `${field}.organizationId`);
|
|
198
|
+
const managementAccountId = requiredAccountId(value.managementAccountId, `${field}.managementAccountId`);
|
|
199
|
+
if (expected.organizationId !== undefined)
|
|
200
|
+
(0, portalPublicArtifactValidationCommon_js_1.assertValue)(organizationId, expected.organizationId, `${field}.organizationId`);
|
|
201
|
+
if (expected.managementAccountId !== undefined) {
|
|
202
|
+
(0, portalPublicArtifactValidationCommon_js_1.assertValue)(managementAccountId, expected.managementAccountId, `${field}.managementAccountId`);
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
function requiredAccountId(value, field) {
|
|
206
|
+
const accountId = (0, portalPublicArtifactValidationCommon_js_1.requiredString)(value, field);
|
|
207
|
+
(0, pluginPublicArtifactValidationHelpers_js_1.assertAccount)(value, accountId, field);
|
|
208
|
+
return accountId;
|
|
209
|
+
}
|
|
210
|
+
function requiredOrganizationId(value, field) {
|
|
211
|
+
const organizationId = (0, portalPublicArtifactValidationCommon_js_1.requiredString)(value, field);
|
|
212
|
+
if (!ORGANIZATION_ID.test(organizationId))
|
|
213
|
+
throw new Error(`${field} must be a canonical AWS organization id.`);
|
|
214
|
+
return organizationId;
|
|
215
|
+
}
|
|
216
|
+
function assertUniqueSorted(values, field) {
|
|
217
|
+
assertUnique(values, field);
|
|
218
|
+
const sorted = [...values].sort((left, right) => left.localeCompare(right));
|
|
219
|
+
if (JSON.stringify(values) !== JSON.stringify(sorted))
|
|
220
|
+
throw new Error(`${field} must be sorted.`);
|
|
221
|
+
}
|
|
222
|
+
function assertUnique(values, field) {
|
|
223
|
+
if (new Set(values).size !== values.length)
|
|
224
|
+
throw new Error(`${field} must not contain duplicates.`);
|
|
225
|
+
}
|
|
226
|
+
//# sourceMappingURL=organizationCommitmentsApiValidation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"organizationCommitmentsApiValidation.js","sourceRoot":"","sources":["../../src/aws/organizationCommitmentsApiValidation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { AwsOrganizationCommitmentsPlanningView } from './organizationCommitments.js';
|
|
2
|
+
export interface AwsOrganizationCommitmentsExpectedIdentity {
|
|
3
|
+
companyId: string;
|
|
4
|
+
estateId: string;
|
|
5
|
+
organizationId: string;
|
|
6
|
+
managementAccountId: string;
|
|
7
|
+
manifestRevision: string;
|
|
8
|
+
memberAccountIds: readonly string[];
|
|
9
|
+
}
|
|
10
|
+
/** Validates the multi-account identity boundary of an AWS organization commitments view. */
|
|
11
|
+
export declare function validateAwsOrganizationCommitmentsPlanningViewIdentity(value: unknown, expected: AwsOrganizationCommitmentsExpectedIdentity): asserts value is AwsOrganizationCommitmentsPlanningView;
|
|
12
|
+
//# sourceMappingURL=organizationCommitmentsValidation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"organizationCommitmentsValidation.d.ts","sourceRoot":"","sources":["../../src/aws/organizationCommitmentsValidation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sCAAsC,EAAE,MAAM,8BAA8B,CAAC;AAgC3F,MAAM,WAAW,0CAA0C;IACzD,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,SAAS,MAAM,EAAE,CAAC;CACrC;AAED,6FAA6F;AAC7F,wBAAgB,sDAAsD,CACpE,KAAK,EAAE,OAAO,EACd,QAAQ,EAAE,0CAA0C,GACnD,OAAO,CAAC,KAAK,IAAI,sCAAsC,CA8CzD"}
|
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.validateAwsOrganizationCommitmentsPlanningViewIdentity = validateAwsOrganizationCommitmentsPlanningViewIdentity;
|
|
4
|
+
const provider_js_1 = require("../common/provider.js");
|
|
5
|
+
const pluginPublicArtifactValidationHelpers_js_1 = require("./pluginPublicArtifactValidationHelpers.js");
|
|
6
|
+
const ORGANIZATION_ID = /^o-[a-z0-9]{10,32}$/u;
|
|
7
|
+
const FORBIDDEN_ORGANIZATION_COMMITMENTS_KEYS = new Set([
|
|
8
|
+
'billingScopeId',
|
|
9
|
+
'blobPath',
|
|
10
|
+
'checkpoint',
|
|
11
|
+
'cloudAccountId',
|
|
12
|
+
'connectionString',
|
|
13
|
+
'credentialHealth',
|
|
14
|
+
'credentialId',
|
|
15
|
+
'credentialReference',
|
|
16
|
+
'externalId',
|
|
17
|
+
'managementGroupId',
|
|
18
|
+
'pricingQuote',
|
|
19
|
+
'quotePolicy',
|
|
20
|
+
'resourceGroupId',
|
|
21
|
+
'roleArn',
|
|
22
|
+
'saga',
|
|
23
|
+
'sasToken',
|
|
24
|
+
'secretArn',
|
|
25
|
+
'secretReference',
|
|
26
|
+
'storageCapacity',
|
|
27
|
+
'storagePath',
|
|
28
|
+
'subscription',
|
|
29
|
+
'subscriptionId',
|
|
30
|
+
'tenantId',
|
|
31
|
+
'unlockFinancialLedger',
|
|
32
|
+
]);
|
|
33
|
+
/** Validates the multi-account identity boundary of an AWS organization commitments view. */
|
|
34
|
+
function validateAwsOrganizationCommitmentsPlanningViewIdentity(value, expected) {
|
|
35
|
+
const view = (0, pluginPublicArtifactValidationHelpers_js_1.asRecord)(value, 'organizationCommitmentsPlanning');
|
|
36
|
+
const providerScope = (0, pluginPublicArtifactValidationHelpers_js_1.asRecord)(view.providerScope, 'organizationCommitmentsPlanning.providerScope');
|
|
37
|
+
(0, pluginPublicArtifactValidationHelpers_js_1.assertExactKeys)(providerScope, ['providerName', 'providerScopeId', 'scopeType', 'companyId', 'estateId', 'organizationId', 'managementAccountId'], 'organizationCommitmentsPlanning.providerScope');
|
|
38
|
+
(0, pluginPublicArtifactValidationHelpers_js_1.assertValue)(providerScope.providerName, provider_js_1.ProviderName.Aws, 'organizationCommitmentsPlanning.providerScope.providerName');
|
|
39
|
+
(0, pluginPublicArtifactValidationHelpers_js_1.assertValue)(providerScope.scopeType, 'organization', 'organizationCommitmentsPlanning.providerScope.scopeType');
|
|
40
|
+
const companyId = (0, pluginPublicArtifactValidationHelpers_js_1.requiredString)(providerScope.companyId, 'organizationCommitmentsPlanning.providerScope.companyId');
|
|
41
|
+
const estateId = (0, pluginPublicArtifactValidationHelpers_js_1.requiredString)(providerScope.estateId, 'organizationCommitmentsPlanning.providerScope.estateId');
|
|
42
|
+
const organizationId = requiredOrganizationId(providerScope.organizationId, 'organizationCommitmentsPlanning.providerScope.organizationId');
|
|
43
|
+
(0, pluginPublicArtifactValidationHelpers_js_1.assertValue)(providerScope.providerScopeId, organizationId, 'organizationCommitmentsPlanning.providerScope.providerScopeId');
|
|
44
|
+
const managementAccountId = requiredAccountId(providerScope.managementAccountId, 'organizationCommitmentsPlanning.providerScope.managementAccountId');
|
|
45
|
+
(0, pluginPublicArtifactValidationHelpers_js_1.assertValue)(expected.companyId, companyId, 'expected.companyId');
|
|
46
|
+
(0, pluginPublicArtifactValidationHelpers_js_1.assertValue)(expected.estateId, estateId, 'expected.estateId');
|
|
47
|
+
(0, pluginPublicArtifactValidationHelpers_js_1.assertValue)(expected.organizationId, organizationId, 'expected.organizationId');
|
|
48
|
+
(0, pluginPublicArtifactValidationHelpers_js_1.assertValue)(expected.managementAccountId, managementAccountId, 'expected.managementAccountId');
|
|
49
|
+
(0, pluginPublicArtifactValidationHelpers_js_1.assertValue)(expected.manifestRevision, (0, pluginPublicArtifactValidationHelpers_js_1.requiredString)(view.manifestRevision, 'organizationCommitmentsPlanning.manifestRevision'), 'expected.manifestRevision');
|
|
50
|
+
const accountMembership = validateAccounts(view.accounts, managementAccountId);
|
|
51
|
+
validateExpectedMembers(expected.memberAccountIds, accountMembership.accountIds);
|
|
52
|
+
validateInventory(view.inventory, accountMembership.members);
|
|
53
|
+
validatePayerAggregates(view.payerAggregates, accountMembership.members, managementAccountId);
|
|
54
|
+
validatePurchaseRecommendations(view.purchaseRecommendations, accountMembership.members, managementAccountId);
|
|
55
|
+
validateAttribution(view.allocation, accountMembership.members, false, 'organizationCommitmentsPlanning.allocation');
|
|
56
|
+
validateAttribution(view.resourceAttribution, accountMembership.members, true, 'organizationCommitmentsPlanning.resourceAttribution');
|
|
57
|
+
validateBoundIdentities(view, accountMembership.members, organizationId, companyId, estateId, managementAccountId, 'organizationCommitmentsPlanning');
|
|
58
|
+
}
|
|
59
|
+
function validateAccounts(value, managementAccountId) {
|
|
60
|
+
if (!Array.isArray(value) || value.length === 0)
|
|
61
|
+
throw new Error('organizationCommitmentsPlanning.accounts must be a non-empty array.');
|
|
62
|
+
const accountIds = value.map((entry, index) => {
|
|
63
|
+
const field = `organizationCommitmentsPlanning.accounts[${index}]`;
|
|
64
|
+
const account = (0, pluginPublicArtifactValidationHelpers_js_1.asRecord)(entry, field);
|
|
65
|
+
(0, pluginPublicArtifactValidationHelpers_js_1.assertExactKeys)(account, ['accountId', 'displayName', 'role', 'inventoryStatus', 'lastSuccessfulRefreshAt'], field);
|
|
66
|
+
const accountId = requiredAccountId(account.accountId, `${field}.accountId`);
|
|
67
|
+
const role = (0, pluginPublicArtifactValidationHelpers_js_1.requiredEnum)(account.role, ['management', 'member'], `${field}.role`);
|
|
68
|
+
if ((accountId === managementAccountId) !== (role === 'management')) {
|
|
69
|
+
throw new Error(`${field}.role must identify the exact management account.`);
|
|
70
|
+
}
|
|
71
|
+
return accountId;
|
|
72
|
+
});
|
|
73
|
+
if (new Set(accountIds).size !== accountIds.length)
|
|
74
|
+
throw new Error('organizationCommitmentsPlanning.accounts must not contain duplicates.');
|
|
75
|
+
const sorted = [...accountIds].sort((left, right) => left.localeCompare(right));
|
|
76
|
+
if (JSON.stringify(sorted) !== JSON.stringify(accountIds))
|
|
77
|
+
throw new Error('organizationCommitmentsPlanning.accounts must be sorted by accountId.');
|
|
78
|
+
if (!accountIds.includes(managementAccountId))
|
|
79
|
+
throw new Error('organizationCommitmentsPlanning.accounts must contain the management account.');
|
|
80
|
+
return { accountIds, members: new Set(accountIds) };
|
|
81
|
+
}
|
|
82
|
+
function validateInventory(value, members) {
|
|
83
|
+
if (!Array.isArray(value))
|
|
84
|
+
throw new Error('organizationCommitmentsPlanning.inventory must be an array.');
|
|
85
|
+
value.forEach((entry, index) => {
|
|
86
|
+
const field = `organizationCommitmentsPlanning.inventory[${index}]`;
|
|
87
|
+
const item = (0, pluginPublicArtifactValidationHelpers_js_1.asRecord)(entry, field);
|
|
88
|
+
(0, pluginPublicArtifactValidationHelpers_js_1.assertValue)(item.sourceKind, 'aws-native', `${field}.sourceKind`);
|
|
89
|
+
(0, pluginPublicArtifactValidationHelpers_js_1.assertValue)(item.provider, provider_js_1.ProviderName.Aws, `${field}.provider`);
|
|
90
|
+
requiredMember(item.ownerAccountId, members, `${field}.ownerAccountId`);
|
|
91
|
+
if (item.shape !== undefined)
|
|
92
|
+
validateAwsShape(item.shape, `${field}.shape`);
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
function validatePayerAggregates(value, members, managementAccountId) {
|
|
96
|
+
if (!Array.isArray(value))
|
|
97
|
+
throw new Error('organizationCommitmentsPlanning.payerAggregates must be an array.');
|
|
98
|
+
value.forEach((entry, index) => {
|
|
99
|
+
const field = `organizationCommitmentsPlanning.payerAggregates[${index}]`;
|
|
100
|
+
const aggregate = (0, pluginPublicArtifactValidationHelpers_js_1.asRecord)(entry, field);
|
|
101
|
+
const payerAccountId = requiredMember(aggregate.payerAccountId, members, `${field}.payerAccountId`);
|
|
102
|
+
(0, pluginPublicArtifactValidationHelpers_js_1.assertValue)(payerAccountId, managementAccountId, `${field}.payerAccountId`);
|
|
103
|
+
validateAwsSource(aggregate.source, `${field}.source`);
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
function validatePurchaseRecommendations(value, members, managementAccountId) {
|
|
107
|
+
if (value === undefined)
|
|
108
|
+
return;
|
|
109
|
+
if (!Array.isArray(value))
|
|
110
|
+
throw new Error('organizationCommitmentsPlanning.purchaseRecommendations must be an array.');
|
|
111
|
+
value.forEach((entry, index) => {
|
|
112
|
+
const field = `organizationCommitmentsPlanning.purchaseRecommendations[${index}]`;
|
|
113
|
+
const recommendation = (0, pluginPublicArtifactValidationHelpers_js_1.asRecord)(entry, field);
|
|
114
|
+
(0, pluginPublicArtifactValidationHelpers_js_1.assertValue)(recommendation.purchaseScope, 'payer', `${field}.purchaseScope`);
|
|
115
|
+
const payerAccountId = requiredMember(recommendation.payerAccountId, members, `${field}.payerAccountId`);
|
|
116
|
+
(0, pluginPublicArtifactValidationHelpers_js_1.assertValue)(payerAccountId, managementAccountId, `${field}.payerAccountId`);
|
|
117
|
+
if (recommendation.recommendedAccountId !== undefined) {
|
|
118
|
+
requiredMember(recommendation.recommendedAccountId, members, `${field}.recommendedAccountId`);
|
|
119
|
+
}
|
|
120
|
+
validateAwsSource(recommendation.source, `${field}.source`);
|
|
121
|
+
validateAwsShape(recommendation.targetShape, `${field}.targetShape`);
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
function validateAttribution(value, members, resource, field) {
|
|
125
|
+
const evidence = (0, pluginPublicArtifactValidationHelpers_js_1.asRecord)(value, field);
|
|
126
|
+
if (evidence.status === 'unavailable') {
|
|
127
|
+
(0, pluginPublicArtifactValidationHelpers_js_1.assertExactKeys)(evidence, ['status', 'reason'], field);
|
|
128
|
+
(0, pluginPublicArtifactValidationHelpers_js_1.requiredEnum)(evidence.reason, ['not-collected', 'not-proved', 'source-unavailable'], `${field}.reason`);
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
131
|
+
(0, pluginPublicArtifactValidationHelpers_js_1.assertValue)(evidence.status, 'available', `${field}.status`);
|
|
132
|
+
(0, pluginPublicArtifactValidationHelpers_js_1.assertExactKeys)(evidence, ['status', 'source', 'records'], field);
|
|
133
|
+
validateAwsSource(evidence.source, `${field}.source`, true);
|
|
134
|
+
if (!Array.isArray(evidence.records) || evidence.records.length === 0) {
|
|
135
|
+
throw new Error(`${field}.records must be non-empty when attribution is available.`);
|
|
136
|
+
}
|
|
137
|
+
evidence.records.forEach((entry, index) => {
|
|
138
|
+
const record = (0, pluginPublicArtifactValidationHelpers_js_1.asRecord)(entry, `${field}.records[${index}]`);
|
|
139
|
+
if (resource) {
|
|
140
|
+
requiredMember(record.accountId, members, `${field}.records[${index}].accountId`);
|
|
141
|
+
}
|
|
142
|
+
else {
|
|
143
|
+
requiredMember(record.beneficiaryAccountId, members, `${field}.records[${index}].beneficiaryAccountId`);
|
|
144
|
+
if (record.ownerAccountId !== undefined)
|
|
145
|
+
requiredMember(record.ownerAccountId, members, `${field}.records[${index}].ownerAccountId`);
|
|
146
|
+
}
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
function validateAwsSource(value, field, allowDerived = false) {
|
|
150
|
+
const source = (0, pluginPublicArtifactValidationHelpers_js_1.asRecord)(value, field);
|
|
151
|
+
const allowed = allowDerived ? ['aws-native', 'spotto-derived'] : ['aws-native'];
|
|
152
|
+
(0, pluginPublicArtifactValidationHelpers_js_1.requiredEnum)(source.sourceKind, allowed, `${field}.sourceKind`);
|
|
153
|
+
}
|
|
154
|
+
function validateAwsShape(value, field) {
|
|
155
|
+
const shape = (0, pluginPublicArtifactValidationHelpers_js_1.asRecord)(value, field);
|
|
156
|
+
(0, pluginPublicArtifactValidationHelpers_js_1.assertValue)(shape.provider, 'aws', `${field}.provider`);
|
|
157
|
+
}
|
|
158
|
+
function validateBoundIdentities(value, members, organizationId, companyId, estateId, managementAccountId, field) {
|
|
159
|
+
if (Array.isArray(value)) {
|
|
160
|
+
value.forEach((entry, index) => validateBoundIdentities(entry, members, organizationId, companyId, estateId, managementAccountId, `${field}[${index}]`));
|
|
161
|
+
return;
|
|
162
|
+
}
|
|
163
|
+
if (!value || typeof value !== 'object') {
|
|
164
|
+
if (typeof value === 'string')
|
|
165
|
+
validateArnAccount(value, members, field);
|
|
166
|
+
return;
|
|
167
|
+
}
|
|
168
|
+
for (const [key, child] of Object.entries(value)) {
|
|
169
|
+
if (FORBIDDEN_ORGANIZATION_COMMITMENTS_KEYS.has(key)) {
|
|
170
|
+
throw new Error(`${field}.${key} is not allowed in an AWS organization commitments artifact.`);
|
|
171
|
+
}
|
|
172
|
+
if (key === 'accountId' || key === 'ownerAccountId' || key === 'beneficiaryAccountId' || key === 'payerAccountId') {
|
|
173
|
+
requiredMember(child, members, `${field}.${key}`);
|
|
174
|
+
}
|
|
175
|
+
if (key === 'organizationId')
|
|
176
|
+
(0, pluginPublicArtifactValidationHelpers_js_1.assertValue)(child, organizationId, `${field}.${key}`);
|
|
177
|
+
if (key === 'companyId')
|
|
178
|
+
(0, pluginPublicArtifactValidationHelpers_js_1.assertValue)(child, companyId, `${field}.${key}`);
|
|
179
|
+
if (key === 'estateId')
|
|
180
|
+
(0, pluginPublicArtifactValidationHelpers_js_1.assertValue)(child, estateId, `${field}.${key}`);
|
|
181
|
+
if (key === 'managementAccountId')
|
|
182
|
+
(0, pluginPublicArtifactValidationHelpers_js_1.assertAccount)(child, managementAccountId, `${field}.${key}`);
|
|
183
|
+
if (key === 'providerName')
|
|
184
|
+
(0, pluginPublicArtifactValidationHelpers_js_1.assertValue)(child, provider_js_1.ProviderName.Aws, `${field}.${key}`);
|
|
185
|
+
if (key === 'provider')
|
|
186
|
+
(0, pluginPublicArtifactValidationHelpers_js_1.assertValue)(child, 'aws', `${field}.${key}`);
|
|
187
|
+
if (key === 'sourceKind' && child === 'azure-native') {
|
|
188
|
+
throw new Error(`${field}.${key} cannot contain Azure-native evidence.`);
|
|
189
|
+
}
|
|
190
|
+
validateBoundIdentities(child, members, organizationId, companyId, estateId, managementAccountId, `${field}.${key}`);
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
function validateArnAccount(value, members, field) {
|
|
194
|
+
if (!value.startsWith('arn:'))
|
|
195
|
+
return;
|
|
196
|
+
const arnAccountId = value.split(':', 6)[4];
|
|
197
|
+
if (arnAccountId && !members.has(arnAccountId))
|
|
198
|
+
throw new Error(`${field} contains an ARN outside the declared organization membership.`);
|
|
199
|
+
}
|
|
200
|
+
function requiredMember(value, members, field) {
|
|
201
|
+
const accountId = requiredAccountId(value, field);
|
|
202
|
+
if (!members.has(accountId))
|
|
203
|
+
throw new Error(`${field} must belong to the declared organization membership.`);
|
|
204
|
+
return accountId;
|
|
205
|
+
}
|
|
206
|
+
function requiredAccountId(value, field) {
|
|
207
|
+
const accountId = (0, pluginPublicArtifactValidationHelpers_js_1.requiredString)(value, field);
|
|
208
|
+
(0, pluginPublicArtifactValidationHelpers_js_1.assertAccount)(value, accountId, field);
|
|
209
|
+
return accountId;
|
|
210
|
+
}
|
|
211
|
+
function requiredOrganizationId(value, field) {
|
|
212
|
+
const organizationId = (0, pluginPublicArtifactValidationHelpers_js_1.requiredString)(value, field);
|
|
213
|
+
if (!ORGANIZATION_ID.test(organizationId))
|
|
214
|
+
throw new Error(`${field} must be a canonical AWS organization id.`);
|
|
215
|
+
return organizationId;
|
|
216
|
+
}
|
|
217
|
+
function validateExpectedMembers(expected, actual) {
|
|
218
|
+
const normalized = expected.map((accountId, index) => requiredAccountId(accountId, `expected.memberAccountIds[${index}]`));
|
|
219
|
+
if (new Set(normalized).size !== normalized.length)
|
|
220
|
+
throw new Error('expected.memberAccountIds must not contain duplicates.');
|
|
221
|
+
const sorted = [...normalized].sort((left, right) => left.localeCompare(right));
|
|
222
|
+
if (JSON.stringify(sorted) !== JSON.stringify(normalized))
|
|
223
|
+
throw new Error('expected.memberAccountIds must be sorted.');
|
|
224
|
+
if (JSON.stringify(normalized) !== JSON.stringify(actual)) {
|
|
225
|
+
throw new Error('expected.memberAccountIds must match the artifact membership exactly.');
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
//# sourceMappingURL=organizationCommitmentsValidation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"organizationCommitmentsValidation.js","sourceRoot":"","sources":["../../src/aws/organizationCommitmentsValidation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { type AwsOrganizationCommitmentsPlanningView } from './organizationCommitments.js';
|
|
2
|
+
import { type AwsOrganizationCommitmentsExpectedIdentity } from './organizationCommitmentsValidation.js';
|
|
3
|
+
import { type AwsPortalOrganizationCommitmentsPlanningArtifact } from './portalOrganizationCommitmentsPlanningPublicArtifacts.js';
|
|
4
|
+
export type AwsPortalOrganizationCommitmentsExpectedIdentity = AwsOrganizationCommitmentsExpectedIdentity;
|
|
5
|
+
/** Validates one untrusted organization Commitments Planning view without its Portal envelope. */
|
|
6
|
+
export declare function validateAwsOrganizationCommitmentsPlanningView(value: unknown, expected: AwsOrganizationCommitmentsExpectedIdentity): AwsOrganizationCommitmentsPlanningView;
|
|
7
|
+
/** Validates one untrusted immutable AWS organization Commitments Planning artifact. */
|
|
8
|
+
export declare function validateAwsPortalOrganizationCommitmentsPlanningArtifact(value: unknown, expected: AwsPortalOrganizationCommitmentsExpectedIdentity): AwsPortalOrganizationCommitmentsPlanningArtifact;
|
|
9
|
+
//# sourceMappingURL=portalOrganizationCommitmentsPlanningPublicArtifactValidation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"portalOrganizationCommitmentsPlanningPublicArtifactValidation.d.ts","sourceRoot":"","sources":["../../src/aws/portalOrganizationCommitmentsPlanningPublicArtifactValidation.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,sCAAsC,EAC5C,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAEL,KAAK,0CAA0C,EAChD,MAAM,wCAAwC,CAAC;AAChD,OAAO,EAGL,KAAK,gDAAgD,EACtD,MAAM,2DAA2D,CAAC;AAuCnE,MAAM,MAAM,gDAAgD,GAAG,0CAA0C,CAAC;AAE1G,kGAAkG;AAClG,wBAAgB,8CAA8C,CAC5D,KAAK,EAAE,OAAO,EACd,QAAQ,EAAE,0CAA0C,GACnD,sCAAsC,CAKxC;AAED,wFAAwF;AACxF,wBAAgB,wDAAwD,CACtE,KAAK,EAAE,OAAO,EACd,QAAQ,EAAE,gDAAgD,GACzD,gDAAgD,CAoBlD"}
|