@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
|
@@ -1,10 +1,29 @@
|
|
|
1
1
|
import type { ArtifactGeneration } from '../common/artifactGeneration';
|
|
2
2
|
import type { CostBasis, EstimateLens } from './costComposition';
|
|
3
|
-
import type { FinancialBaselinePeriodV2 } from './financialScopeBaseline';
|
|
3
|
+
import type { FinancialBaselinePeriodV2, FinancialChargeInclusionPolicyRefV2 } from './financialScopeBaseline';
|
|
4
4
|
import type { FinancialSavingsUnavailableReasonV1 } from './financialSavingsAuthority';
|
|
5
5
|
export declare const FINANCIAL_SAVINGS_SURFACE_PROJECTION_SCHEMA_VERSION_V1: 1;
|
|
6
6
|
export declare const FINANCIAL_SAVINGS_SURFACE_PROJECTION_CONTRACT_VERSION_V1: "financial-savings-surface-projection/v1";
|
|
7
|
-
export type FinancialSavingsSurfaceV1 = 'recommendations' | 'dashboard';
|
|
7
|
+
export type FinancialSavingsSurfaceV1 = 'recommendations' | 'resources' | 'dashboard';
|
|
8
|
+
export declare const FINANCIAL_SAVINGS_QUERY_SELECTION_CONTRACT_VERSION_V1: "financial-savings-query-selection/v1";
|
|
9
|
+
/**
|
|
10
|
+
* Non-monetary query membership selected by an authorized transport. The UI
|
|
11
|
+
* Financial Domain applies this membership to a producer-owned full projection
|
|
12
|
+
* through the shared Kernel; the API never composes financial totals.
|
|
13
|
+
*/
|
|
14
|
+
export interface FinancialSavingsQuerySelectionV1 {
|
|
15
|
+
contractVersion: typeof FINANCIAL_SAVINGS_QUERY_SELECTION_CONTRACT_VERSION_V1;
|
|
16
|
+
filterFingerprint: string;
|
|
17
|
+
recommendationIds: string[];
|
|
18
|
+
}
|
|
19
|
+
export declare const FINANCIAL_SAVINGS_RESOURCE_QUERY_SELECTION_CONTRACT_VERSION_V1: "financial-savings-resource-query-selection/v1";
|
|
20
|
+
/** Non-monetary canonical allocation membership selected by a resource query. */
|
|
21
|
+
export interface FinancialSavingsResourceQuerySelectionV1 {
|
|
22
|
+
contractVersion: typeof FINANCIAL_SAVINGS_RESOURCE_QUERY_SELECTION_CONTRACT_VERSION_V1;
|
|
23
|
+
filterFingerprint: string;
|
|
24
|
+
allocationIds: string[];
|
|
25
|
+
recommendationIds: string[];
|
|
26
|
+
}
|
|
8
27
|
export type FinancialSavingsSurfaceScopeV1 = {
|
|
9
28
|
kind: 'subscription-full';
|
|
10
29
|
} | {
|
|
@@ -12,11 +31,38 @@ export type FinancialSavingsSurfaceScopeV1 = {
|
|
|
12
31
|
filterFingerprint: string;
|
|
13
32
|
/** Complete matched recommendation set before sorting and pagination. */
|
|
14
33
|
recommendationIds: string[];
|
|
34
|
+
} | {
|
|
35
|
+
kind: 'resource-query';
|
|
36
|
+
filterFingerprint: string;
|
|
37
|
+
/** Complete canonical allocation set owned by matched resources before pagination. */
|
|
38
|
+
allocationIds: string[];
|
|
39
|
+
recommendationIds: string[];
|
|
15
40
|
};
|
|
41
|
+
export interface FinancialSavingsAllocationContributionV1 {
|
|
42
|
+
allocationId: string;
|
|
43
|
+
savingsMinorUnits: number;
|
|
44
|
+
}
|
|
16
45
|
export interface FinancialSavingsRecommendationContributionV1 {
|
|
17
46
|
recommendationId: string;
|
|
18
47
|
allocationIds: [string, ...string[]];
|
|
19
48
|
savingsMinorUnits: number;
|
|
49
|
+
/**
|
|
50
|
+
* Exact allocation amounts retained so resource membership can be composed
|
|
51
|
+
* without approximation. Optional only for V1 projections produced before
|
|
52
|
+
* resource-query composition was introduced; resource-query projection
|
|
53
|
+
* fails closed when this evidence is absent.
|
|
54
|
+
*/
|
|
55
|
+
allocations?: [FinancialSavingsAllocationContributionV1, ...FinancialSavingsAllocationContributionV1[]];
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Non-monetary lifecycle membership retained with a full savings surface.
|
|
59
|
+
* It lets a reader invalidate an immutable projection when a resource-scoped
|
|
60
|
+
* recommendation changes state without reading or recomputing financial data.
|
|
61
|
+
*/
|
|
62
|
+
export interface FinancialSavingsLifecycleBindingV1 {
|
|
63
|
+
resourceId: string;
|
|
64
|
+
recommendationId: string;
|
|
65
|
+
allocationIds: [string, ...string[]];
|
|
20
66
|
}
|
|
21
67
|
interface FinancialSavingsSurfaceCoordinateCommonV1 {
|
|
22
68
|
/** Identity of the exact source Financial Authority coordinate. */
|
|
@@ -25,6 +71,8 @@ interface FinancialSavingsSurfaceCoordinateCommonV1 {
|
|
|
25
71
|
period: FinancialBaselinePeriodV2;
|
|
26
72
|
costBasis: CostBasis;
|
|
27
73
|
estimateLens: EstimateLens;
|
|
74
|
+
/** Exact charge scope inherited from the current Financial Authority baseline. */
|
|
75
|
+
chargeInclusionPolicyRef: FinancialChargeInclusionPolicyRefV2;
|
|
28
76
|
requestedCurrencyCode?: string;
|
|
29
77
|
currentAggregateBaselineId?: string;
|
|
30
78
|
}
|
|
@@ -44,11 +92,16 @@ export interface AvailableFinancialSavingsSurfaceCoordinateV1 extends FinancialS
|
|
|
44
92
|
savingsMinorUnits: number;
|
|
45
93
|
};
|
|
46
94
|
}
|
|
95
|
+
/** Proven contributions retained while one or more in-scope scenarios lack target evidence. */
|
|
96
|
+
export interface PartialFinancialSavingsSurfaceCoordinateV1 extends Omit<AvailableFinancialSavingsSurfaceCoordinateV1, 'status'> {
|
|
97
|
+
status: 'partial';
|
|
98
|
+
unavailableRecommendationIds: [string, ...string[]];
|
|
99
|
+
}
|
|
47
100
|
export interface UnavailableFinancialSavingsSurfaceCoordinateV1 extends FinancialSavingsSurfaceCoordinateCommonV1 {
|
|
48
101
|
status: 'unavailable';
|
|
49
102
|
unavailableReason: FinancialSavingsUnavailableReasonV1;
|
|
50
103
|
}
|
|
51
|
-
export type FinancialSavingsSurfaceCoordinateEnvelopeV1 = AvailableFinancialSavingsSurfaceCoordinateV1 | UnavailableFinancialSavingsSurfaceCoordinateV1;
|
|
104
|
+
export type FinancialSavingsSurfaceCoordinateEnvelopeV1 = AvailableFinancialSavingsSurfaceCoordinateV1 | PartialFinancialSavingsSurfaceCoordinateV1 | UnavailableFinancialSavingsSurfaceCoordinateV1;
|
|
52
105
|
export interface FinancialSavingsSurfaceProjectionV1 {
|
|
53
106
|
schemaVersion: typeof FINANCIAL_SAVINGS_SURFACE_PROJECTION_SCHEMA_VERSION_V1;
|
|
54
107
|
contractVersion: typeof FINANCIAL_SAVINGS_SURFACE_PROJECTION_CONTRACT_VERSION_V1;
|
|
@@ -60,6 +113,8 @@ export interface FinancialSavingsSurfaceProjectionV1 {
|
|
|
60
113
|
artifactGeneration: ArtifactGeneration;
|
|
61
114
|
financialAuthorityId: string;
|
|
62
115
|
savingsAuthorityId: string;
|
|
116
|
+
/** Optional for pre-binding V1 artifacts; readers fail savings closed when required evidence is absent. */
|
|
117
|
+
lifecycleBindings?: [FinancialSavingsLifecycleBindingV1, ...FinancialSavingsLifecycleBindingV1[]];
|
|
63
118
|
coordinates: [FinancialSavingsSurfaceCoordinateEnvelopeV1, ...FinancialSavingsSurfaceCoordinateEnvelopeV1[]];
|
|
64
119
|
}
|
|
65
120
|
export type FinancialSavingsSurfaceProjectionIdentityPreimageV1 = Omit<FinancialSavingsSurfaceProjectionV1, 'projectionId'>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"financialSavingsSurfaceProjection.d.ts","sourceRoot":"","sources":["../../src/azure/financialSavingsSurfaceProjection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"financialSavingsSurfaceProjection.d.ts","sourceRoot":"","sources":["../../src/azure/financialSavingsSurfaceProjection.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.FINANCIAL_SAVINGS_SURFACE_PROJECTION_CONTRACT_VERSION_V1 = exports.FINANCIAL_SAVINGS_SURFACE_PROJECTION_SCHEMA_VERSION_V1 = void 0;
|
|
3
|
+
exports.FINANCIAL_SAVINGS_RESOURCE_QUERY_SELECTION_CONTRACT_VERSION_V1 = exports.FINANCIAL_SAVINGS_QUERY_SELECTION_CONTRACT_VERSION_V1 = exports.FINANCIAL_SAVINGS_SURFACE_PROJECTION_CONTRACT_VERSION_V1 = exports.FINANCIAL_SAVINGS_SURFACE_PROJECTION_SCHEMA_VERSION_V1 = void 0;
|
|
4
4
|
exports.FINANCIAL_SAVINGS_SURFACE_PROJECTION_SCHEMA_VERSION_V1 = 1;
|
|
5
5
|
exports.FINANCIAL_SAVINGS_SURFACE_PROJECTION_CONTRACT_VERSION_V1 = 'financial-savings-surface-projection/v1';
|
|
6
|
+
exports.FINANCIAL_SAVINGS_QUERY_SELECTION_CONTRACT_VERSION_V1 = 'financial-savings-query-selection/v1';
|
|
7
|
+
exports.FINANCIAL_SAVINGS_RESOURCE_QUERY_SELECTION_CONTRACT_VERSION_V1 = 'financial-savings-resource-query-selection/v1';
|
|
6
8
|
//# sourceMappingURL=financialSavingsSurfaceProjection.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"financialSavingsSurfaceProjection.js","sourceRoot":"","sources":["../../src/azure/financialSavingsSurfaceProjection.ts"],"names":[],"mappings":";;;AAKa,QAAA,sDAAsD,GAAG,CAAU,CAAC;AACpE,QAAA,wDAAwD,GAAG,yCAAkD,CAAC"}
|
|
1
|
+
{"version":3,"file":"financialSavingsSurfaceProjection.js","sourceRoot":"","sources":["../../src/azure/financialSavingsSurfaceProjection.ts"],"names":[],"mappings":";;;AAKa,QAAA,sDAAsD,GAAG,CAAU,CAAC;AACpE,QAAA,wDAAwD,GAAG,yCAAkD,CAAC;AAI9G,QAAA,qDAAqD,GAAG,sCAA+C,CAAC;AAaxG,QAAA,8DAA8D,GACzE,+CAAwD,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { AzureResourcesView } from './views';
|
|
2
|
+
import { type FinancialSavingsSurfaceProjectionV1, type FinancialSavingsSurfaceV1 } from './financialSavingsSurfaceProjection';
|
|
3
|
+
export declare class FinancialSavingsSurfaceProjectionError extends Error {
|
|
4
|
+
constructor(message: string);
|
|
5
|
+
}
|
|
6
|
+
export declare const projectFinancialSavingsSurfaceQueryV1: (source: FinancialSavingsSurfaceProjectionV1, recommendationIds: readonly string[], filterFingerprint: string) => FinancialSavingsSurfaceProjectionV1;
|
|
7
|
+
export declare const projectFinancialSavingsSurfaceResourceQueryV1: (source: FinancialSavingsSurfaceProjectionV1, allocationIds: readonly string[], recommendationIds: readonly string[], filterFingerprint: string) => FinancialSavingsSurfaceProjectionV1;
|
|
8
|
+
/**
|
|
9
|
+
* Projects a validated Resources authority into a compact, immutable surface.
|
|
10
|
+
* It partitions canonical allocation amounts for display and never recalculates
|
|
11
|
+
* scenario economics from legacy recommendation or resource fields.
|
|
12
|
+
*/
|
|
13
|
+
export declare const buildFinancialSavingsSurfaceProjectionV1: (resourcesView: AzureResourcesView, surface: FinancialSavingsSurfaceV1) => FinancialSavingsSurfaceProjectionV1;
|
|
14
|
+
//# sourceMappingURL=financialSavingsSurfaceProjectionKernel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"financialSavingsSurfaceProjectionKernel.d.ts","sourceRoot":"","sources":["../../src/azure/financialSavingsSurfaceProjectionKernel.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,EAOL,KAAK,mCAAmC,EAExC,KAAK,yBAAyB,EAC/B,MAAM,qCAAqC,CAAC;AAM7C,qBAAa,sCAAuC,SAAQ,KAAK;gBAC5C,OAAO,EAAE,MAAM;CAInC;AAwCD,eAAO,MAAM,qCAAqC,GAChD,QAAQ,mCAAmC,EAC3C,mBAAmB,SAAS,MAAM,EAAE,EACpC,mBAAmB,MAAM,KACxB,mCAqEF,CAAC;AAkCF,eAAO,MAAM,6CAA6C,GACxD,QAAQ,mCAAmC,EAC3C,eAAe,SAAS,MAAM,EAAE,EAChC,mBAAmB,SAAS,MAAM,EAAE,EACpC,mBAAmB,MAAM,KACxB,mCA8FF,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,wCAAwC,GACnD,eAAe,kBAAkB,EACjC,SAAS,yBAAyB,KACjC,mCAoHF,CAAC"}
|
|
@@ -0,0 +1,326 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.buildFinancialSavingsSurfaceProjectionV1 = exports.projectFinancialSavingsSurfaceResourceQueryV1 = exports.projectFinancialSavingsSurfaceQueryV1 = exports.FinancialSavingsSurfaceProjectionError = void 0;
|
|
4
|
+
const financialChargeComposition_1 = require("./financialChargeComposition");
|
|
5
|
+
const financialSavingsSurfaceProjection_1 = require("./financialSavingsSurfaceProjection");
|
|
6
|
+
const financialSavingsSurfaceProjectionValidation_1 = require("./financialSavingsSurfaceProjectionValidation");
|
|
7
|
+
class FinancialSavingsSurfaceProjectionError extends Error {
|
|
8
|
+
constructor(message) {
|
|
9
|
+
super(message);
|
|
10
|
+
this.name = 'FinancialSavingsSurfaceProjectionError';
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
exports.FinancialSavingsSurfaceProjectionError = FinancialSavingsSurfaceProjectionError;
|
|
14
|
+
const sameGeneration = (left, right) => Boolean(left && right && left.runId === right.runId && left.generatedAt === right.generatedAt);
|
|
15
|
+
const exactMinorUnitSum = (values) => {
|
|
16
|
+
const sum = values.reduce((total, value) => total + BigInt(value), 0n);
|
|
17
|
+
if (sum > BigInt(Number.MAX_SAFE_INTEGER) || sum < BigInt(Number.MIN_SAFE_INTEGER)) {
|
|
18
|
+
throw new FinancialSavingsSurfaceProjectionError('Financial savings surface contribution exceeds the safe integer boundary');
|
|
19
|
+
}
|
|
20
|
+
return Number(sum);
|
|
21
|
+
};
|
|
22
|
+
const projectLifecycleBindings = (allocations) => {
|
|
23
|
+
const byLifecycleIdentity = new Map();
|
|
24
|
+
for (const allocation of allocations) {
|
|
25
|
+
const key = `${allocation.ownerScopeId}\u0000${allocation.recommendationId}`;
|
|
26
|
+
const existing = byLifecycleIdentity.get(key);
|
|
27
|
+
if (existing) {
|
|
28
|
+
existing.allocationIds.push(allocation.allocationId);
|
|
29
|
+
continue;
|
|
30
|
+
}
|
|
31
|
+
byLifecycleIdentity.set(key, {
|
|
32
|
+
resourceId: allocation.ownerScopeId,
|
|
33
|
+
recommendationId: allocation.recommendationId,
|
|
34
|
+
allocationIds: [allocation.allocationId],
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
return [...byLifecycleIdentity.values()]
|
|
38
|
+
.map(binding => ({ ...binding, allocationIds: [...binding.allocationIds].sort() }))
|
|
39
|
+
.sort((left, right) => left.resourceId.localeCompare(right.resourceId) || left.recommendationId.localeCompare(right.recommendationId));
|
|
40
|
+
};
|
|
41
|
+
const projectFinancialSavingsSurfaceQueryV1 = (source, recommendationIds, filterFingerprint) => {
|
|
42
|
+
if (!(0, financialSavingsSurfaceProjectionValidation_1.isFinancialSavingsSurfaceProjectionV1)(source) || source.surface !== 'recommendations') {
|
|
43
|
+
throw new FinancialSavingsSurfaceProjectionError('Financial savings source projection is invalid for recommendation filtering');
|
|
44
|
+
}
|
|
45
|
+
const uniqueRecommendationIds = [...new Set(recommendationIds)];
|
|
46
|
+
if (uniqueRecommendationIds.length !== recommendationIds.length ||
|
|
47
|
+
uniqueRecommendationIds.some(id => !id.trim()) ||
|
|
48
|
+
!filterFingerprint.trim()) {
|
|
49
|
+
throw new FinancialSavingsSurfaceProjectionError('Financial savings query identity is invalid');
|
|
50
|
+
}
|
|
51
|
+
const scope = {
|
|
52
|
+
kind: 'recommendation-query',
|
|
53
|
+
filterFingerprint,
|
|
54
|
+
recommendationIds: uniqueRecommendationIds,
|
|
55
|
+
};
|
|
56
|
+
const includedRecommendationIds = new Set(uniqueRecommendationIds);
|
|
57
|
+
const lifecycleBindings = source.lifecycleBindings
|
|
58
|
+
?.filter(binding => includedRecommendationIds.has(binding.recommendationId))
|
|
59
|
+
.map(binding => ({ ...binding, allocationIds: [...binding.allocationIds] }));
|
|
60
|
+
const coordinates = source.coordinates.map((coordinate) => {
|
|
61
|
+
if (coordinate.status === 'unavailable')
|
|
62
|
+
return coordinate;
|
|
63
|
+
const recommendationContributions = coordinate.recommendationContributions.filter(contribution => includedRecommendationIds.has(contribution.recommendationId));
|
|
64
|
+
const filteredAmounts = {
|
|
65
|
+
recommendationContributions,
|
|
66
|
+
aggregate: {
|
|
67
|
+
allocationIds: recommendationContributions.flatMap(contribution => contribution.allocationIds),
|
|
68
|
+
savingsMinorUnits: exactMinorUnitSum(recommendationContributions.map(contribution => contribution.savingsMinorUnits)),
|
|
69
|
+
},
|
|
70
|
+
};
|
|
71
|
+
if (coordinate.status === 'available')
|
|
72
|
+
return { ...coordinate, ...filteredAmounts };
|
|
73
|
+
const { unavailableRecommendationIds: _sourceUnavailableRecommendationIds, ...common } = coordinate;
|
|
74
|
+
void _sourceUnavailableRecommendationIds;
|
|
75
|
+
const unavailableRecommendationIds = coordinate.unavailableRecommendationIds.filter(recommendationId => includedRecommendationIds.has(recommendationId));
|
|
76
|
+
return unavailableRecommendationIds.length > 0
|
|
77
|
+
? {
|
|
78
|
+
...common,
|
|
79
|
+
...filteredAmounts,
|
|
80
|
+
status: 'partial',
|
|
81
|
+
unavailableRecommendationIds: unavailableRecommendationIds,
|
|
82
|
+
}
|
|
83
|
+
: { ...common, ...filteredAmounts, status: 'available' };
|
|
84
|
+
});
|
|
85
|
+
const identity = {
|
|
86
|
+
schemaVersion: source.schemaVersion,
|
|
87
|
+
contractVersion: source.contractVersion,
|
|
88
|
+
surface: source.surface,
|
|
89
|
+
scope,
|
|
90
|
+
provider: source.provider,
|
|
91
|
+
providerAccountRefs: source.providerAccountRefs,
|
|
92
|
+
artifactGeneration: source.artifactGeneration,
|
|
93
|
+
financialAuthorityId: source.financialAuthorityId,
|
|
94
|
+
savingsAuthorityId: source.savingsAuthorityId,
|
|
95
|
+
...(lifecycleBindings?.length ? { lifecycleBindings: lifecycleBindings } : {}),
|
|
96
|
+
coordinates,
|
|
97
|
+
};
|
|
98
|
+
const projection = {
|
|
99
|
+
...identity,
|
|
100
|
+
projectionId: (0, financialSavingsSurfaceProjectionValidation_1.createFinancialSavingsSurfaceProjectionIdV1)(identity),
|
|
101
|
+
};
|
|
102
|
+
if (!(0, financialSavingsSurfaceProjectionValidation_1.isFinancialSavingsSurfaceProjectionV1)(projection)) {
|
|
103
|
+
throw new FinancialSavingsSurfaceProjectionError('Financial savings query projection failed validation');
|
|
104
|
+
}
|
|
105
|
+
return projection;
|
|
106
|
+
};
|
|
107
|
+
exports.projectFinancialSavingsSurfaceQueryV1 = projectFinancialSavingsSurfaceQueryV1;
|
|
108
|
+
const projectRecommendationContributions = (allocations) => {
|
|
109
|
+
const byRecommendation = new Map();
|
|
110
|
+
for (const allocation of allocations) {
|
|
111
|
+
const existing = byRecommendation.get(allocation.recommendationId) ?? {
|
|
112
|
+
allocationIds: [],
|
|
113
|
+
savingsMinorUnits: [],
|
|
114
|
+
allocations: [],
|
|
115
|
+
};
|
|
116
|
+
existing.allocationIds.push(allocation.allocationId);
|
|
117
|
+
existing.savingsMinorUnits.push(allocation.savingsMinorUnits);
|
|
118
|
+
existing.allocations.push({ allocationId: allocation.allocationId, savingsMinorUnits: allocation.savingsMinorUnits });
|
|
119
|
+
byRecommendation.set(allocation.recommendationId, existing);
|
|
120
|
+
}
|
|
121
|
+
return Array.from(byRecommendation.entries())
|
|
122
|
+
.sort(([left], [right]) => left.localeCompare(right))
|
|
123
|
+
.map(([recommendationId, contribution]) => ({
|
|
124
|
+
recommendationId,
|
|
125
|
+
allocationIds: [...contribution.allocationIds].sort(),
|
|
126
|
+
savingsMinorUnits: exactMinorUnitSum(contribution.savingsMinorUnits),
|
|
127
|
+
allocations: contribution.allocations
|
|
128
|
+
.sort((left, right) => left.allocationId.localeCompare(right.allocationId)),
|
|
129
|
+
}));
|
|
130
|
+
};
|
|
131
|
+
const projectFinancialSavingsSurfaceResourceQueryV1 = (source, allocationIds, recommendationIds, filterFingerprint) => {
|
|
132
|
+
if (!(0, financialSavingsSurfaceProjectionValidation_1.isFinancialSavingsSurfaceProjectionV1)(source) || source.surface !== 'resources') {
|
|
133
|
+
throw new FinancialSavingsSurfaceProjectionError('Financial savings source projection is invalid for resource filtering');
|
|
134
|
+
}
|
|
135
|
+
const uniqueAllocationIds = [...new Set(allocationIds)];
|
|
136
|
+
const uniqueRecommendationIds = [...new Set(recommendationIds)];
|
|
137
|
+
if (uniqueAllocationIds.length !== allocationIds.length ||
|
|
138
|
+
uniqueRecommendationIds.length !== recommendationIds.length ||
|
|
139
|
+
uniqueAllocationIds.some(id => !id.trim()) ||
|
|
140
|
+
uniqueRecommendationIds.some(id => !id.trim()) ||
|
|
141
|
+
!filterFingerprint.trim()) {
|
|
142
|
+
throw new FinancialSavingsSurfaceProjectionError('Financial savings resource query identity is invalid');
|
|
143
|
+
}
|
|
144
|
+
const includedAllocationIds = new Set(uniqueAllocationIds);
|
|
145
|
+
const includedRecommendationIds = new Set(uniqueRecommendationIds);
|
|
146
|
+
const lifecycleBindings = source.lifecycleBindings
|
|
147
|
+
?.map(binding => {
|
|
148
|
+
const filteredAllocationIds = binding.allocationIds.filter(allocationId => includedAllocationIds.has(allocationId));
|
|
149
|
+
return filteredAllocationIds.length
|
|
150
|
+
? {
|
|
151
|
+
...binding,
|
|
152
|
+
allocationIds: filteredAllocationIds,
|
|
153
|
+
}
|
|
154
|
+
: undefined;
|
|
155
|
+
})
|
|
156
|
+
.filter((binding) => binding !== undefined);
|
|
157
|
+
const scope = {
|
|
158
|
+
kind: 'resource-query',
|
|
159
|
+
filterFingerprint,
|
|
160
|
+
allocationIds: uniqueAllocationIds,
|
|
161
|
+
recommendationIds: uniqueRecommendationIds,
|
|
162
|
+
};
|
|
163
|
+
const coordinates = source.coordinates.map((coordinate) => {
|
|
164
|
+
if (coordinate.status === 'unavailable')
|
|
165
|
+
return coordinate;
|
|
166
|
+
const recommendationContributions = coordinate.recommendationContributions
|
|
167
|
+
.map(contribution => {
|
|
168
|
+
if (contribution.allocations === undefined) {
|
|
169
|
+
throw new FinancialSavingsSurfaceProjectionError('Financial savings resource query requires exact allocation contribution evidence');
|
|
170
|
+
}
|
|
171
|
+
const allocations = contribution.allocations.filter(allocation => includedAllocationIds.has(allocation.allocationId));
|
|
172
|
+
if (allocations.length === 0)
|
|
173
|
+
return undefined;
|
|
174
|
+
return {
|
|
175
|
+
recommendationId: contribution.recommendationId,
|
|
176
|
+
allocationIds: allocations.map(allocation => allocation.allocationId),
|
|
177
|
+
allocations: allocations,
|
|
178
|
+
savingsMinorUnits: exactMinorUnitSum(allocations.map(allocation => allocation.savingsMinorUnits)),
|
|
179
|
+
};
|
|
180
|
+
})
|
|
181
|
+
.filter((contribution) => contribution !== undefined);
|
|
182
|
+
const filteredAmounts = {
|
|
183
|
+
recommendationContributions,
|
|
184
|
+
aggregate: {
|
|
185
|
+
allocationIds: recommendationContributions.flatMap(contribution => contribution.allocationIds),
|
|
186
|
+
savingsMinorUnits: exactMinorUnitSum(recommendationContributions.map(contribution => contribution.savingsMinorUnits)),
|
|
187
|
+
},
|
|
188
|
+
};
|
|
189
|
+
if (coordinate.status === 'available')
|
|
190
|
+
return { ...coordinate, ...filteredAmounts };
|
|
191
|
+
const { unavailableRecommendationIds: _sourceUnavailableRecommendationIds, ...common } = coordinate;
|
|
192
|
+
void _sourceUnavailableRecommendationIds;
|
|
193
|
+
const unavailableRecommendationIds = coordinate.unavailableRecommendationIds.filter(id => includedRecommendationIds.has(id));
|
|
194
|
+
return unavailableRecommendationIds.length > 0
|
|
195
|
+
? {
|
|
196
|
+
...common,
|
|
197
|
+
...filteredAmounts,
|
|
198
|
+
status: 'partial',
|
|
199
|
+
unavailableRecommendationIds: unavailableRecommendationIds,
|
|
200
|
+
}
|
|
201
|
+
: { ...common, ...filteredAmounts, status: 'available' };
|
|
202
|
+
});
|
|
203
|
+
const identity = {
|
|
204
|
+
schemaVersion: source.schemaVersion,
|
|
205
|
+
contractVersion: source.contractVersion,
|
|
206
|
+
surface: source.surface,
|
|
207
|
+
scope,
|
|
208
|
+
provider: source.provider,
|
|
209
|
+
providerAccountRefs: source.providerAccountRefs,
|
|
210
|
+
artifactGeneration: source.artifactGeneration,
|
|
211
|
+
financialAuthorityId: source.financialAuthorityId,
|
|
212
|
+
savingsAuthorityId: source.savingsAuthorityId,
|
|
213
|
+
...(lifecycleBindings?.length ? { lifecycleBindings: lifecycleBindings } : {}),
|
|
214
|
+
coordinates,
|
|
215
|
+
};
|
|
216
|
+
const projection = { ...identity, projectionId: (0, financialSavingsSurfaceProjectionValidation_1.createFinancialSavingsSurfaceProjectionIdV1)(identity) };
|
|
217
|
+
if (!(0, financialSavingsSurfaceProjectionValidation_1.isFinancialSavingsSurfaceProjectionV1)(projection)) {
|
|
218
|
+
throw new FinancialSavingsSurfaceProjectionError('Financial savings resource query projection failed validation');
|
|
219
|
+
}
|
|
220
|
+
return projection;
|
|
221
|
+
};
|
|
222
|
+
exports.projectFinancialSavingsSurfaceResourceQueryV1 = projectFinancialSavingsSurfaceResourceQueryV1;
|
|
223
|
+
/**
|
|
224
|
+
* Projects a validated Resources authority into a compact, immutable surface.
|
|
225
|
+
* It partitions canonical allocation amounts for display and never recalculates
|
|
226
|
+
* scenario economics from legacy recommendation or resource fields.
|
|
227
|
+
*/
|
|
228
|
+
const buildFinancialSavingsSurfaceProjectionV1 = (resourcesView, surface) => {
|
|
229
|
+
const authority = resourcesView.financialAuthority;
|
|
230
|
+
const savingsAuthority = resourcesView.financialSavingsAuthority;
|
|
231
|
+
if (!authority || !savingsAuthority)
|
|
232
|
+
throw new FinancialSavingsSurfaceProjectionError('Financial savings authority is unavailable');
|
|
233
|
+
if (authority.authorityId !== savingsAuthority.financialAuthorityId ||
|
|
234
|
+
!sameGeneration(resourcesView.artifactGeneration, authority.artifactGeneration) ||
|
|
235
|
+
!sameGeneration(authority.artifactGeneration, savingsAuthority.artifactGeneration)) {
|
|
236
|
+
throw new FinancialSavingsSurfaceProjectionError('Financial savings authority generation or identity binding is invalid');
|
|
237
|
+
}
|
|
238
|
+
const financialCoordinateById = new Map(authority.coordinates.map(coordinate => [coordinate.coordinateId, coordinate]));
|
|
239
|
+
const savingsCoordinateById = new Map(savingsAuthority.coordinates.map(coordinate => [coordinate.coordinateId, coordinate]));
|
|
240
|
+
if (financialCoordinateById.size !== authority.coordinates.length ||
|
|
241
|
+
savingsCoordinateById.size !== savingsAuthority.coordinates.length ||
|
|
242
|
+
financialCoordinateById.size !== savingsCoordinateById.size ||
|
|
243
|
+
Array.from(financialCoordinateById.keys()).some(coordinateId => !savingsCoordinateById.has(coordinateId))) {
|
|
244
|
+
throw new FinancialSavingsSurfaceProjectionError('Financial savings coordinates are not one-to-one with financial authority coordinates');
|
|
245
|
+
}
|
|
246
|
+
const coordinates = authority.coordinates.map((financialCoordinate) => {
|
|
247
|
+
const savingsCoordinate = savingsCoordinateById.get(financialCoordinate.coordinateId);
|
|
248
|
+
if (!savingsCoordinate) {
|
|
249
|
+
throw new FinancialSavingsSurfaceProjectionError(`Financial savings coordinate ${financialCoordinate.coordinateId} is missing`);
|
|
250
|
+
}
|
|
251
|
+
const common = {
|
|
252
|
+
coordinateId: financialCoordinate.coordinateId,
|
|
253
|
+
periodRole: financialCoordinate.periodRole,
|
|
254
|
+
period: financialCoordinate.period,
|
|
255
|
+
costBasis: financialCoordinate.costBasis,
|
|
256
|
+
estimateLens: financialCoordinate.estimateLens,
|
|
257
|
+
chargeInclusionPolicyRef: financialChargeComposition_1.AZURE_BILLED_ALL_CHARGES_POLICY_V1.policyRef,
|
|
258
|
+
...(financialCoordinate.requestedCurrencyCode === undefined
|
|
259
|
+
? {}
|
|
260
|
+
: { requestedCurrencyCode: financialCoordinate.requestedCurrencyCode }),
|
|
261
|
+
...(savingsCoordinate.currentAggregateBaselineId === undefined
|
|
262
|
+
? {}
|
|
263
|
+
: { currentAggregateBaselineId: savingsCoordinate.currentAggregateBaselineId }),
|
|
264
|
+
};
|
|
265
|
+
if (savingsCoordinate.status === 'unavailable') {
|
|
266
|
+
return { ...common, status: 'unavailable', unavailableReason: savingsCoordinate.unavailableReason };
|
|
267
|
+
}
|
|
268
|
+
const currentAggregate = financialCoordinate.aggregateBaseline;
|
|
269
|
+
if (currentAggregate.status !== 'available' ||
|
|
270
|
+
currentAggregate.baselineId !== savingsCoordinate.currentAggregateBaselineId ||
|
|
271
|
+
currentAggregate.total.currencyCode !== savingsCoordinate.accountingCurrencyCode) {
|
|
272
|
+
throw new FinancialSavingsSurfaceProjectionError(`Financial savings coordinate ${financialCoordinate.coordinateId} has no matching available current aggregate baseline`);
|
|
273
|
+
}
|
|
274
|
+
const unavailableRecommendationIds = savingsCoordinate.status === 'partial'
|
|
275
|
+
? Array.from(new Set(savingsCoordinate.activations
|
|
276
|
+
.filter(activation => activation.result === 'unavailable')
|
|
277
|
+
.map(activation => activation.recommendationId))).sort()
|
|
278
|
+
: [];
|
|
279
|
+
const composed = {
|
|
280
|
+
...common,
|
|
281
|
+
currentAggregateBaselineId: savingsCoordinate.currentAggregateBaselineId,
|
|
282
|
+
currentAggregate: { ...currentAggregate.total },
|
|
283
|
+
accountingCurrencyCode: savingsCoordinate.accountingCurrencyCode,
|
|
284
|
+
minorUnitScale: savingsCoordinate.minorUnitScale,
|
|
285
|
+
roundingMode: savingsCoordinate.roundingMode,
|
|
286
|
+
recommendationContributions: projectRecommendationContributions(savingsCoordinate.allocations),
|
|
287
|
+
aggregate: {
|
|
288
|
+
allocationIds: [...savingsCoordinate.aggregate.allocationIds],
|
|
289
|
+
savingsMinorUnits: savingsCoordinate.aggregate.savingsMinorUnits,
|
|
290
|
+
},
|
|
291
|
+
};
|
|
292
|
+
return savingsCoordinate.status === 'partial'
|
|
293
|
+
? {
|
|
294
|
+
...composed,
|
|
295
|
+
status: 'partial',
|
|
296
|
+
unavailableRecommendationIds: unavailableRecommendationIds,
|
|
297
|
+
}
|
|
298
|
+
: { ...composed, status: 'available' };
|
|
299
|
+
});
|
|
300
|
+
const lifecycleBindings = projectLifecycleBindings(savingsAuthority.coordinates.flatMap(coordinate => (coordinate.status === 'unavailable' ? [] : coordinate.allocations)));
|
|
301
|
+
const identity = {
|
|
302
|
+
schemaVersion: financialSavingsSurfaceProjection_1.FINANCIAL_SAVINGS_SURFACE_PROJECTION_SCHEMA_VERSION_V1,
|
|
303
|
+
contractVersion: financialSavingsSurfaceProjection_1.FINANCIAL_SAVINGS_SURFACE_PROJECTION_CONTRACT_VERSION_V1,
|
|
304
|
+
surface,
|
|
305
|
+
scope: { kind: 'subscription-full' },
|
|
306
|
+
provider: 'azure',
|
|
307
|
+
providerAccountRefs: [...authority.providerAccountRefs],
|
|
308
|
+
artifactGeneration: { ...authority.artifactGeneration },
|
|
309
|
+
financialAuthorityId: authority.authorityId,
|
|
310
|
+
savingsAuthorityId: savingsAuthority.savingsAuthorityId,
|
|
311
|
+
...(lifecycleBindings.length
|
|
312
|
+
? { lifecycleBindings: lifecycleBindings }
|
|
313
|
+
: {}),
|
|
314
|
+
coordinates,
|
|
315
|
+
};
|
|
316
|
+
const projection = {
|
|
317
|
+
...identity,
|
|
318
|
+
projectionId: (0, financialSavingsSurfaceProjectionValidation_1.createFinancialSavingsSurfaceProjectionIdV1)(identity),
|
|
319
|
+
};
|
|
320
|
+
if (!(0, financialSavingsSurfaceProjectionValidation_1.isFinancialSavingsSurfaceProjectionV1)(projection)) {
|
|
321
|
+
throw new FinancialSavingsSurfaceProjectionError('Financial savings surface projection failed validation');
|
|
322
|
+
}
|
|
323
|
+
return projection;
|
|
324
|
+
};
|
|
325
|
+
exports.buildFinancialSavingsSurfaceProjectionV1 = buildFinancialSavingsSurfaceProjectionV1;
|
|
326
|
+
//# sourceMappingURL=financialSavingsSurfaceProjectionKernel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"financialSavingsSurfaceProjectionKernel.js","sourceRoot":"","sources":["../../src/azure/financialSavingsSurfaceProjectionKernel.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"financialSavingsSurfaceProjectionValidation.d.ts","sourceRoot":"","sources":["../../src/azure/financialSavingsSurfaceProjectionValidation.ts"],"names":[],"mappings":"AAYA,OAAO,EAGL,KAAK,mDAAmD,EACxD,KAAK,mCAAmC,EACzC,MAAM,qCAAqC,CAAC;
|
|
1
|
+
{"version":3,"file":"financialSavingsSurfaceProjectionValidation.d.ts","sourceRoot":"","sources":["../../src/azure/financialSavingsSurfaceProjectionValidation.ts"],"names":[],"mappings":"AAYA,OAAO,EAGL,KAAK,mDAAmD,EACxD,KAAK,mCAAmC,EACzC,MAAM,qCAAqC,CAAC;AAkB7C,eAAO,MAAM,uDAAuD,GAAI,OAAO,mDAAmD,KAAG,MAiDlI,CAAC;AAEJ,eAAO,MAAM,2CAA2C,GAAI,OAAO,mDAAmD,KAAG,MACjC,CAAC;AA0LzF,eAAO,MAAM,qCAAqC,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,mCAyF/E,CAAC"}
|