@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.
Files changed (206) hide show
  1. package/README.md +9 -0
  2. package/dist/accounts/accounts.d.ts +77 -4
  3. package/dist/accounts/accounts.d.ts.map +1 -1
  4. package/dist/accounts/accounts.js +2 -1
  5. package/dist/accounts/accounts.js.map +1 -1
  6. package/dist/accounts/azureManualOnboarding.d.ts +114 -0
  7. package/dist/accounts/azureManualOnboarding.d.ts.map +1 -0
  8. package/dist/accounts/azureManualOnboarding.js +12 -0
  9. package/dist/accounts/azureManualOnboarding.js.map +1 -0
  10. package/dist/accounts/azureSpSetup.d.ts +128 -31
  11. package/dist/accounts/azureSpSetup.d.ts.map +1 -1
  12. package/dist/accounts/azureSpSetup.js +15 -0
  13. package/dist/accounts/azureSpSetup.js.map +1 -1
  14. package/dist/accounts/azureSpSetupDurable.d.ts +8 -0
  15. package/dist/accounts/azureSpSetupDurable.d.ts.map +1 -1
  16. package/dist/accounts/azureSpSetupDurable.js +28 -0
  17. package/dist/accounts/azureSpSetupDurable.js.map +1 -1
  18. package/dist/accounts/index.d.ts +1 -0
  19. package/dist/accounts/index.d.ts.map +1 -1
  20. package/dist/accounts/index.js +1 -0
  21. package/dist/accounts/index.js.map +1 -1
  22. package/dist/accounts/readPermissions.d.ts +1 -1
  23. package/dist/accounts/readPermissions.d.ts.map +1 -1
  24. package/dist/accounts/readPermissions.js.map +1 -1
  25. package/dist/accounts/validation.d.ts +24 -0
  26. package/dist/accounts/validation.d.ts.map +1 -1
  27. package/dist/ai/index.d.ts +14 -1
  28. package/dist/ai/index.d.ts.map +1 -1
  29. package/dist/ai/index.js +12 -0
  30. package/dist/ai/index.js.map +1 -1
  31. package/dist/aws/commitments-planning.d.ts +5 -0
  32. package/dist/aws/commitments-planning.d.ts.map +1 -1
  33. package/dist/aws/commitments-planning.js +19 -0
  34. package/dist/aws/commitments-planning.js.map +1 -1
  35. package/dist/aws/estates.d.ts +1 -1
  36. package/dist/aws/estates.d.ts.map +1 -1
  37. package/dist/aws/estates.js +7 -1
  38. package/dist/aws/estates.js.map +1 -1
  39. package/dist/aws/index.d.ts +5 -0
  40. package/dist/aws/index.d.ts.map +1 -1
  41. package/dist/aws/index.js +5 -0
  42. package/dist/aws/index.js.map +1 -1
  43. package/dist/aws/onboarding.d.ts +3 -0
  44. package/dist/aws/onboarding.d.ts.map +1 -1
  45. package/dist/aws/organizationCommitments.d.ts +260 -0
  46. package/dist/aws/organizationCommitments.d.ts.map +1 -0
  47. package/dist/aws/organizationCommitments.js +53 -0
  48. package/dist/aws/organizationCommitments.js.map +1 -0
  49. package/dist/aws/organizationCommitmentsApiValidation.d.ts +21 -0
  50. package/dist/aws/organizationCommitmentsApiValidation.d.ts.map +1 -0
  51. package/dist/aws/organizationCommitmentsApiValidation.js +226 -0
  52. package/dist/aws/organizationCommitmentsApiValidation.js.map +1 -0
  53. package/dist/aws/organizationCommitmentsValidation.d.ts +12 -0
  54. package/dist/aws/organizationCommitmentsValidation.d.ts.map +1 -0
  55. package/dist/aws/organizationCommitmentsValidation.js +228 -0
  56. package/dist/aws/organizationCommitmentsValidation.js.map +1 -0
  57. package/dist/aws/portalOrganizationCommitmentsPlanningPublicArtifactValidation.d.ts +9 -0
  58. package/dist/aws/portalOrganizationCommitmentsPlanningPublicArtifactValidation.d.ts.map +1 -0
  59. package/dist/aws/portalOrganizationCommitmentsPlanningPublicArtifactValidation.js +407 -0
  60. package/dist/aws/portalOrganizationCommitmentsPlanningPublicArtifactValidation.js.map +1 -0
  61. package/dist/aws/portalOrganizationCommitmentsPlanningPublicArtifacts.d.ts +17 -0
  62. package/dist/aws/portalOrganizationCommitmentsPlanningPublicArtifacts.d.ts.map +1 -0
  63. package/dist/aws/portalOrganizationCommitmentsPlanningPublicArtifacts.js +6 -0
  64. package/dist/aws/portalOrganizationCommitmentsPlanningPublicArtifacts.js.map +1 -0
  65. package/dist/aws/requests.d.ts +13 -2
  66. package/dist/aws/requests.d.ts.map +1 -1
  67. package/dist/aws/requests.js +1 -1
  68. package/dist/aws/requests.js.map +1 -1
  69. package/dist/azure/commitmentsPlanning.d.ts +2 -2
  70. package/dist/azure/commitmentsPlanning.d.ts.map +1 -1
  71. package/dist/azure/financialAuthorityProjectionKernel.d.ts +7 -0
  72. package/dist/azure/financialAuthorityProjectionKernel.d.ts.map +1 -0
  73. package/dist/azure/financialAuthorityProjectionKernel.js +165 -0
  74. package/dist/azure/financialAuthorityProjectionKernel.js.map +1 -0
  75. package/dist/azure/financialAuthorityViewValidation.d.ts +3 -1
  76. package/dist/azure/financialAuthorityViewValidation.d.ts.map +1 -1
  77. package/dist/azure/financialAuthorityViewValidation.js +167 -2
  78. package/dist/azure/financialAuthorityViewValidation.js.map +1 -1
  79. package/dist/azure/financialChargeCompositionKernel.d.ts.map +1 -1
  80. package/dist/azure/financialChargeCompositionKernel.js +5 -1
  81. package/dist/azure/financialChargeCompositionKernel.js.map +1 -1
  82. package/dist/azure/financialDataflowKernel.d.ts.map +1 -1
  83. package/dist/azure/financialDataflowKernel.js +2 -1
  84. package/dist/azure/financialDataflowKernel.js.map +1 -1
  85. package/dist/azure/financialProjection.d.ts +11 -1
  86. package/dist/azure/financialProjection.d.ts.map +1 -1
  87. package/dist/azure/financialProjection.js.map +1 -1
  88. package/dist/azure/financialProjectionValidation.d.ts.map +1 -1
  89. package/dist/azure/financialProjectionValidation.js +43 -3
  90. package/dist/azure/financialProjectionValidation.js.map +1 -1
  91. package/dist/azure/financialSavingsAuthority.d.ts +25 -4
  92. package/dist/azure/financialSavingsAuthority.d.ts.map +1 -1
  93. package/dist/azure/financialSavingsAuthorityValidation.d.ts +6 -2
  94. package/dist/azure/financialSavingsAuthorityValidation.d.ts.map +1 -1
  95. package/dist/azure/financialSavingsAuthorityValidation.js +126 -2
  96. package/dist/azure/financialSavingsAuthorityValidation.js.map +1 -1
  97. package/dist/azure/financialSavingsCoordinateValidation.d.ts.map +1 -1
  98. package/dist/azure/financialSavingsCoordinateValidation.js +62 -19
  99. package/dist/azure/financialSavingsCoordinateValidation.js.map +1 -1
  100. package/dist/azure/financialSavingsSurfaceProjection.d.ts +58 -3
  101. package/dist/azure/financialSavingsSurfaceProjection.d.ts.map +1 -1
  102. package/dist/azure/financialSavingsSurfaceProjection.js +3 -1
  103. package/dist/azure/financialSavingsSurfaceProjection.js.map +1 -1
  104. package/dist/azure/financialSavingsSurfaceProjectionKernel.d.ts +14 -0
  105. package/dist/azure/financialSavingsSurfaceProjectionKernel.d.ts.map +1 -0
  106. package/dist/azure/financialSavingsSurfaceProjectionKernel.js +326 -0
  107. package/dist/azure/financialSavingsSurfaceProjectionKernel.js.map +1 -0
  108. package/dist/azure/financialSavingsSurfaceProjectionValidation.d.ts.map +1 -1
  109. package/dist/azure/financialSavingsSurfaceProjectionValidation.js +126 -12
  110. package/dist/azure/financialSavingsSurfaceProjectionValidation.js.map +1 -1
  111. package/dist/azure/financialScope.d.ts +2 -0
  112. package/dist/azure/financialScope.d.ts.map +1 -1
  113. package/dist/azure/financialScope.js +2 -0
  114. package/dist/azure/financialScope.js.map +1 -1
  115. package/dist/azure/governance.d.ts +145 -0
  116. package/dist/azure/governance.d.ts.map +1 -1
  117. package/dist/azure/governance.js +2 -1
  118. package/dist/azure/governance.js.map +1 -1
  119. package/dist/azure/payloads.d.ts +19 -0
  120. package/dist/azure/payloads.d.ts.map +1 -1
  121. package/dist/azure/recommendationState.d.ts +1 -1
  122. package/dist/azure/recommendationState.d.ts.map +1 -1
  123. package/dist/azure/recommendations.d.ts +3 -1
  124. package/dist/azure/recommendations.d.ts.map +1 -1
  125. package/dist/azure/serviceRetirement.d.ts +33 -2
  126. package/dist/azure/serviceRetirement.d.ts.map +1 -1
  127. package/dist/azure/subscriptions.d.ts +9 -0
  128. package/dist/azure/subscriptions.d.ts.map +1 -1
  129. package/dist/azure/views.d.ts +19 -1
  130. package/dist/azure/views.d.ts.map +1 -1
  131. package/dist/azure/views.js.map +1 -1
  132. package/dist/azure/vmPatchManagement.d.ts +109 -0
  133. package/dist/azure/vmPatchManagement.d.ts.map +1 -0
  134. package/dist/azure/vmPatchManagement.js +7 -0
  135. package/dist/azure/vmPatchManagement.js.map +1 -0
  136. package/dist/common/provider.d.ts +53 -0
  137. package/dist/common/provider.d.ts.map +1 -1
  138. package/dist/common/provider.js.map +1 -1
  139. package/dist/environment/canonicalization.d.ts +12 -0
  140. package/dist/environment/canonicalization.d.ts.map +1 -0
  141. package/dist/environment/canonicalization.js +40 -0
  142. package/dist/environment/canonicalization.js.map +1 -0
  143. package/dist/environment/contracts.d.ts +196 -0
  144. package/dist/environment/contracts.d.ts.map +1 -0
  145. package/dist/environment/contracts.js +21 -0
  146. package/dist/environment/contracts.js.map +1 -0
  147. package/dist/environment/index.d.ts +5 -0
  148. package/dist/environment/index.d.ts.map +1 -0
  149. package/dist/environment/index.js +21 -0
  150. package/dist/environment/index.js.map +1 -0
  151. package/dist/environment/internal.d.ts +21 -0
  152. package/dist/environment/internal.d.ts.map +1 -0
  153. package/dist/environment/internal.js +113 -0
  154. package/dist/environment/internal.js.map +1 -0
  155. package/dist/environment/references.d.ts +18 -0
  156. package/dist/environment/references.d.ts.map +1 -0
  157. package/dist/environment/references.js +206 -0
  158. package/dist/environment/references.js.map +1 -0
  159. package/dist/environment/validation.d.ts +28 -0
  160. package/dist/environment/validation.d.ts.map +1 -0
  161. package/dist/environment/validation.js +320 -0
  162. package/dist/environment/validation.js.map +1 -0
  163. package/dist/esm/accounts/accounts.js +1 -0
  164. package/dist/esm/accounts/azureManualOnboarding.js +8 -0
  165. package/dist/esm/accounts/azureSpSetup.js +14 -1
  166. package/dist/esm/accounts/azureSpSetupDurable.js +27 -1
  167. package/dist/esm/accounts/index.js +1 -0
  168. package/dist/esm/ai/index.js +10 -1
  169. package/dist/esm/aws/commitments-planning.js +5 -0
  170. package/dist/esm/aws/estates.js +7 -1
  171. package/dist/esm/aws/index.js +5 -0
  172. package/dist/esm/aws/organizationCommitments.js +48 -0
  173. package/dist/esm/aws/organizationCommitmentsApiValidation.js +220 -0
  174. package/dist/esm/aws/organizationCommitmentsValidation.js +224 -0
  175. package/dist/esm/aws/portalOrganizationCommitmentsPlanningPublicArtifactValidation.js +402 -0
  176. package/dist/esm/aws/portalOrganizationCommitmentsPlanningPublicArtifacts.js +2 -0
  177. package/dist/esm/aws/requests.js +1 -1
  178. package/dist/esm/azure/financialAuthorityProjectionKernel.js +159 -0
  179. package/dist/esm/azure/financialAuthorityViewValidation.js +165 -1
  180. package/dist/esm/azure/financialChargeCompositionKernel.js +5 -1
  181. package/dist/esm/azure/financialDataflowKernel.js +2 -1
  182. package/dist/esm/azure/financialProjectionValidation.js +43 -3
  183. package/dist/esm/azure/financialSavingsAuthorityValidation.js +124 -2
  184. package/dist/esm/azure/financialSavingsCoordinateValidation.js +62 -19
  185. package/dist/esm/azure/financialSavingsSurfaceProjection.js +2 -0
  186. package/dist/esm/azure/financialSavingsSurfaceProjectionKernel.js +318 -0
  187. package/dist/esm/azure/financialSavingsSurfaceProjectionValidation.js +126 -12
  188. package/dist/esm/azure/financialScope.js +2 -0
  189. package/dist/esm/azure/governance.js +1 -0
  190. package/dist/esm/azure/vmPatchManagement.js +3 -0
  191. package/dist/esm/entries/commitments-planning.js +2 -2
  192. package/dist/esm/entries/environment.js +3 -0
  193. package/dist/esm/environment/canonicalization.js +34 -0
  194. package/dist/esm/environment/contracts.js +17 -0
  195. package/dist/esm/environment/index.js +4 -0
  196. package/dist/esm/environment/internal.js +97 -0
  197. package/dist/esm/environment/references.js +194 -0
  198. package/dist/esm/environment/validation.js +303 -0
  199. package/dist/esm/index.js +2 -0
  200. package/dist/index.d.ts +2 -0
  201. package/dist/index.d.ts.map +1 -1
  202. package/dist/index.js +2 -0
  203. package/dist/index.js.map +1 -1
  204. package/dist/portfolio/portfolioOperations.d.ts +1 -1
  205. package/dist/portfolio/portfolioOperations.d.ts.map +1 -1
  206. 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"}