@spottoai/types-package 1.0.2-beta.392 → 1.0.2-beta.393
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/dist/ai/grounding.d.ts +41 -0
- package/dist/ai/grounding.d.ts.map +1 -0
- package/dist/ai/grounding.js +86 -0
- package/dist/ai/grounding.js.map +1 -0
- package/dist/ai/index.d.ts +6 -12
- package/dist/ai/index.d.ts.map +1 -1
- package/dist/ai/index.js +15 -12
- package/dist/ai/index.js.map +1 -1
- package/dist/environment/contracts.d.ts +22 -7
- package/dist/environment/contracts.d.ts.map +1 -1
- package/dist/environment/contracts.js +6 -0
- package/dist/environment/contracts.js.map +1 -1
- package/dist/environment/index.d.ts +1 -0
- package/dist/environment/index.d.ts.map +1 -1
- package/dist/environment/index.js +1 -0
- package/dist/environment/index.js.map +1 -1
- package/dist/environment/references.d.ts.map +1 -1
- package/dist/environment/references.js +1 -2
- package/dist/environment/references.js.map +1 -1
- package/dist/environment/tenant.d.ts +128 -0
- package/dist/environment/tenant.d.ts.map +1 -0
- package/dist/environment/tenant.js +203 -0
- package/dist/environment/tenant.js.map +1 -0
- package/dist/environment/validation.d.ts +3 -1
- package/dist/environment/validation.d.ts.map +1 -1
- package/dist/environment/validation.js +25 -11
- package/dist/environment/validation.js.map +1 -1
- package/dist/esm/ai/grounding.js +80 -0
- package/dist/esm/ai/index.js +1 -10
- package/dist/esm/environment/contracts.js +6 -0
- package/dist/esm/environment/index.js +1 -0
- package/dist/esm/environment/references.js +1 -2
- package/dist/esm/environment/tenant.js +190 -0
- package/dist/esm/environment/validation.js +23 -10
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"references.js","sourceRoot":"","sources":["../../src/environment/references.ts"],"names":[],"mappings":";;;AAAA,iDAUwB;AACxB,+CAAqF;AAErF,MAAM,kBAAkB,GAAG,kEAAkE,CAAC;AAC9F,MAAM,eAAe,GAAG,uBAAuB,CAAC;AAChD,MAAM,eAAe,GAAG,uBAAuB,CAAC;AAChD,MAAM,cAAc,GAAG,IAAI,GAAG,CAAS,4CAA6B,CAAC,CAAC;AAEtE,MAAM,gCAAgC,GAAG,CAAC,KAAa,EAAW,EAAE;IAClE,IAAI,CAAC;QACH,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC1C,OAAO,CACL,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;YACrB,MAAM,CAAC,MAAM,KAAK,CAAC
|
|
1
|
+
{"version":3,"file":"references.js","sourceRoot":"","sources":["../../src/environment/references.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import type { EnvironmentBoundedListV1, EnvironmentCoverageStateV1, EnvironmentLogicalEvidenceReferenceV1, EnvironmentProjectionWarningV1, EnvironmentSeverityV1 } from './contracts.js';
|
|
2
|
+
export declare const ENVIRONMENT_TENANT_DOCUMENT_NAMES_V1: readonly ["projection.json", "environment-index.md", "identity.md", "governance.md", "commitments.md"];
|
|
3
|
+
export type EnvironmentTenantDocumentNameV1 = (typeof ENVIRONMENT_TENANT_DOCUMENT_NAMES_V1)[number];
|
|
4
|
+
export type EnvironmentTenantMarkdownDocumentNameV1 = Exclude<EnvironmentTenantDocumentNameV1, 'projection.json'>;
|
|
5
|
+
export interface EnvironmentTenantScopeV1 {
|
|
6
|
+
kind: 'azure-tenant';
|
|
7
|
+
tenantId: string;
|
|
8
|
+
}
|
|
9
|
+
export interface EnvironmentTenantSourceBindingV1 {
|
|
10
|
+
kind: 'azure-tenant-sync';
|
|
11
|
+
scope: EnvironmentTenantScopeV1;
|
|
12
|
+
tenantSyncRunId: string;
|
|
13
|
+
completedAt: string;
|
|
14
|
+
}
|
|
15
|
+
export interface EnvironmentTenantSourceCoverageV1 {
|
|
16
|
+
tenantSync: EnvironmentCoverageStateV1;
|
|
17
|
+
governance: EnvironmentCoverageStateV1;
|
|
18
|
+
identity: EnvironmentCoverageStateV1;
|
|
19
|
+
commitments: EnvironmentCoverageStateV1;
|
|
20
|
+
}
|
|
21
|
+
export interface EnvironmentTenantIdentitySummaryV1 {
|
|
22
|
+
applicationCount: number;
|
|
23
|
+
servicePrincipalCount: number;
|
|
24
|
+
globalAdministratorCount: number;
|
|
25
|
+
permanentGlobalAdministratorCount: number;
|
|
26
|
+
eligibleGlobalAdministratorCount: number;
|
|
27
|
+
mfaKnownGlobalAdministratorCount: number;
|
|
28
|
+
}
|
|
29
|
+
export interface EnvironmentTenantGovernanceSummaryV1 {
|
|
30
|
+
managementGroupCount: number;
|
|
31
|
+
subscriptionCount: number;
|
|
32
|
+
policyAssignmentCount: number;
|
|
33
|
+
policyExemptionCount: number;
|
|
34
|
+
roleAssignmentCount: number;
|
|
35
|
+
privilegedAssignmentCount: number;
|
|
36
|
+
customRoleCount: number;
|
|
37
|
+
findingCount: number;
|
|
38
|
+
}
|
|
39
|
+
export interface EnvironmentTenantCommitmentSummaryV1 {
|
|
40
|
+
reservationCount: number;
|
|
41
|
+
savingsPlanCount: number;
|
|
42
|
+
expiringWithin90DaysCount: number;
|
|
43
|
+
}
|
|
44
|
+
export interface EnvironmentTenantGlobalAdministratorV1 {
|
|
45
|
+
principalId: string;
|
|
46
|
+
safeLabel: string;
|
|
47
|
+
principalType: 'user' | 'group' | 'servicePrincipal' | 'unknown';
|
|
48
|
+
assignmentModes: Array<'permanent' | 'eligible' | 'active' | 'unknown'>;
|
|
49
|
+
mfaStatus: 'mfa' | 'unknown';
|
|
50
|
+
sourceReferences: EnvironmentLogicalEvidenceReferenceV1[];
|
|
51
|
+
}
|
|
52
|
+
export interface EnvironmentTenantGovernanceFindingV1 {
|
|
53
|
+
findingId: string;
|
|
54
|
+
safeLabel: string;
|
|
55
|
+
severity: EnvironmentSeverityV1;
|
|
56
|
+
category?: string;
|
|
57
|
+
scopeType?: string;
|
|
58
|
+
sourceReferences: EnvironmentLogicalEvidenceReferenceV1[];
|
|
59
|
+
}
|
|
60
|
+
export interface EnvironmentTenantCommitmentV1 {
|
|
61
|
+
commitmentId: string;
|
|
62
|
+
kind: 'reservation' | 'savings-plan';
|
|
63
|
+
safeLabel: string;
|
|
64
|
+
status?: string;
|
|
65
|
+
expiry?: string;
|
|
66
|
+
quantity?: number;
|
|
67
|
+
sourceReferences: EnvironmentLogicalEvidenceReferenceV1[];
|
|
68
|
+
}
|
|
69
|
+
export interface EnvironmentTenantProjectionV1 {
|
|
70
|
+
schemaVersion: 1;
|
|
71
|
+
scope: EnvironmentTenantScopeV1;
|
|
72
|
+
sourceBinding: EnvironmentTenantSourceBindingV1;
|
|
73
|
+
generatedAt: string;
|
|
74
|
+
tenant: {
|
|
75
|
+
safeLabel: string;
|
|
76
|
+
};
|
|
77
|
+
sourceCoverage: EnvironmentTenantSourceCoverageV1;
|
|
78
|
+
identitySummary: EnvironmentTenantIdentitySummaryV1;
|
|
79
|
+
governanceSummary: EnvironmentTenantGovernanceSummaryV1;
|
|
80
|
+
commitmentSummary: EnvironmentTenantCommitmentSummaryV1;
|
|
81
|
+
globalAdministrators: EnvironmentBoundedListV1<EnvironmentTenantGlobalAdministratorV1>;
|
|
82
|
+
governanceFindings: EnvironmentBoundedListV1<EnvironmentTenantGovernanceFindingV1>;
|
|
83
|
+
commitments: EnvironmentBoundedListV1<EnvironmentTenantCommitmentV1>;
|
|
84
|
+
warnings: EnvironmentBoundedListV1<EnvironmentProjectionWarningV1>;
|
|
85
|
+
sourceReferences: EnvironmentLogicalEvidenceReferenceV1[];
|
|
86
|
+
}
|
|
87
|
+
export type EnvironmentTenantDocumentDescriptorV1 = {
|
|
88
|
+
name: 'projection.json';
|
|
89
|
+
mediaType: 'application/json';
|
|
90
|
+
byteCount: number;
|
|
91
|
+
contentSha256: string;
|
|
92
|
+
approximateTokenCount: number;
|
|
93
|
+
} | {
|
|
94
|
+
name: EnvironmentTenantMarkdownDocumentNameV1;
|
|
95
|
+
mediaType: 'text/markdown; charset=utf-8';
|
|
96
|
+
byteCount: number;
|
|
97
|
+
contentSha256: string;
|
|
98
|
+
approximateTokenCount: number;
|
|
99
|
+
};
|
|
100
|
+
export interface EnvironmentTenantCompiledGenerationPointerV1 {
|
|
101
|
+
schemaVersion: 1;
|
|
102
|
+
status: 'completed';
|
|
103
|
+
environmentRunId: string;
|
|
104
|
+
scope: EnvironmentTenantScopeV1;
|
|
105
|
+
sourceBinding: EnvironmentTenantSourceBindingV1;
|
|
106
|
+
treeDigestSha256: string;
|
|
107
|
+
fileCount: (typeof ENVIRONMENT_TENANT_DOCUMENT_NAMES_V1)['length'];
|
|
108
|
+
generatedAt: string;
|
|
109
|
+
}
|
|
110
|
+
/** Builds the canonical logical subject for a tenant environment artifact. */
|
|
111
|
+
export declare const buildEnvironmentTenantScopeQualifiedSubjectV1: (scope: EnvironmentTenantScopeV1) => string;
|
|
112
|
+
/** Validates a tenant environment scope. */
|
|
113
|
+
export declare const isEnvironmentTenantScopeV1: (value: unknown) => value is EnvironmentTenantScopeV1;
|
|
114
|
+
/** Validates the completed tenant-sync generation bound to a tenant environment generation. */
|
|
115
|
+
export declare const isEnvironmentTenantSourceBindingV1: (value: unknown) => value is EnvironmentTenantSourceBindingV1;
|
|
116
|
+
/** Validates the strict tenant environment projection. */
|
|
117
|
+
export declare const isEnvironmentTenantProjectionV1: (value: unknown) => value is EnvironmentTenantProjectionV1;
|
|
118
|
+
/** Validates one tenant environment document descriptor. */
|
|
119
|
+
export declare const isEnvironmentTenantDocumentDescriptorV1: (value: unknown) => value is EnvironmentTenantDocumentDescriptorV1;
|
|
120
|
+
/** Validates the exact five-file tenant environment descriptor set. */
|
|
121
|
+
export declare const isEnvironmentTenantDocumentDescriptorSetV1: (value: unknown) => value is EnvironmentTenantDocumentDescriptorV1[];
|
|
122
|
+
/** Builds the canonical tenant tree-digest preimage. */
|
|
123
|
+
export declare const buildEnvironmentTenantTreeDigestPreimageV1: (descriptors: readonly EnvironmentTenantDocumentDescriptorV1[]) => string;
|
|
124
|
+
/** Validates the atomically visible tenant environment completion pointer. */
|
|
125
|
+
export declare const isEnvironmentTenantCompiledGenerationPointerV1: (value: unknown) => value is EnvironmentTenantCompiledGenerationPointerV1;
|
|
126
|
+
/** Narrow syntax guard used before tenant references are passed to the common parser. */
|
|
127
|
+
export declare const isEnvironmentTenantLogicalReferenceV1: (value: unknown) => value is EnvironmentLogicalEvidenceReferenceV1;
|
|
128
|
+
//# sourceMappingURL=tenant.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tenant.d.ts","sourceRoot":"","sources":["../../src/environment/tenant.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isEnvironmentTenantLogicalReferenceV1 = exports.isEnvironmentTenantCompiledGenerationPointerV1 = exports.buildEnvironmentTenantTreeDigestPreimageV1 = exports.isEnvironmentTenantDocumentDescriptorSetV1 = exports.isEnvironmentTenantDocumentDescriptorV1 = exports.isEnvironmentTenantProjectionV1 = exports.isEnvironmentTenantSourceBindingV1 = exports.isEnvironmentTenantScopeV1 = exports.buildEnvironmentTenantScopeQualifiedSubjectV1 = exports.ENVIRONMENT_TENANT_DOCUMENT_NAMES_V1 = void 0;
|
|
4
|
+
const contracts_js_1 = require("./contracts.js");
|
|
5
|
+
const internal_js_1 = require("./internal.js");
|
|
6
|
+
const references_js_1 = require("./references.js");
|
|
7
|
+
const validation_js_1 = require("./validation.js");
|
|
8
|
+
exports.ENVIRONMENT_TENANT_DOCUMENT_NAMES_V1 = [
|
|
9
|
+
'projection.json',
|
|
10
|
+
'environment-index.md',
|
|
11
|
+
'identity.md',
|
|
12
|
+
'governance.md',
|
|
13
|
+
'commitments.md',
|
|
14
|
+
];
|
|
15
|
+
const REFERENCE_PATTERN = /^spotto:\/\/(?:artifact|resource)\/v1\//u;
|
|
16
|
+
const SEVERITIES = new Set(['critical', 'high', 'medium', 'low', 'informational', 'unknown']);
|
|
17
|
+
const PRINCIPAL_TYPES = new Set(['user', 'group', 'servicePrincipal', 'unknown']);
|
|
18
|
+
const ASSIGNMENT_MODES = new Set(['permanent', 'eligible', 'active', 'unknown']);
|
|
19
|
+
/** Builds the canonical logical subject for a tenant environment artifact. */
|
|
20
|
+
const buildEnvironmentTenantScopeQualifiedSubjectV1 = (scope) => {
|
|
21
|
+
if (!(0, exports.isEnvironmentTenantScopeV1)(scope))
|
|
22
|
+
throw new TypeError('Invalid tenant environment scope.');
|
|
23
|
+
return JSON.stringify([scope.kind, scope.tenantId]);
|
|
24
|
+
};
|
|
25
|
+
exports.buildEnvironmentTenantScopeQualifiedSubjectV1 = buildEnvironmentTenantScopeQualifiedSubjectV1;
|
|
26
|
+
/** Validates a tenant environment scope. */
|
|
27
|
+
const isEnvironmentTenantScopeV1 = (value) => (0, internal_js_1.isRecord)(value) && (0, internal_js_1.hasExactKeys)(value, ['kind', 'tenantId']) && value.kind === 'azure-tenant' && (0, internal_js_1.isScopeIdentifier)(value.tenantId);
|
|
28
|
+
exports.isEnvironmentTenantScopeV1 = isEnvironmentTenantScopeV1;
|
|
29
|
+
/** Validates the completed tenant-sync generation bound to a tenant environment generation. */
|
|
30
|
+
const isEnvironmentTenantSourceBindingV1 = (value) => (0, internal_js_1.isRecord)(value) &&
|
|
31
|
+
(0, internal_js_1.hasExactKeys)(value, ['kind', 'scope', 'tenantSyncRunId', 'completedAt']) &&
|
|
32
|
+
value.kind === 'azure-tenant-sync' &&
|
|
33
|
+
(0, exports.isEnvironmentTenantScopeV1)(value.scope) &&
|
|
34
|
+
(0, internal_js_1.isSourceIdentity)(value.tenantSyncRunId) &&
|
|
35
|
+
(0, internal_js_1.isCanonicalUtcTimestamp)(value.completedAt);
|
|
36
|
+
exports.isEnvironmentTenantSourceBindingV1 = isEnvironmentTenantSourceBindingV1;
|
|
37
|
+
const scopesEqual = (left, right) => left.tenantId === right.tenantId;
|
|
38
|
+
const isReferenceArray = (value) => Array.isArray(value) && value.length <= contracts_js_1.ENVIRONMENT_CONTRACT_LIMITS_V1.boundedListItems && value.every(references_js_1.isEnvironmentLogicalEvidenceReferenceV1);
|
|
39
|
+
const isBoundedList = (value, itemGuard) => (0, internal_js_1.isRecord)(value) &&
|
|
40
|
+
(0, internal_js_1.hasExactKeys)(value, ['items', 'totalCount', 'includedCount', 'truncated'], ['continuationReference']) &&
|
|
41
|
+
Array.isArray(value.items) &&
|
|
42
|
+
value.items.length <= contracts_js_1.ENVIRONMENT_CONTRACT_LIMITS_V1.boundedListItems &&
|
|
43
|
+
value.items.every(itemGuard) &&
|
|
44
|
+
(0, internal_js_1.isNonNegativeInteger)(value.totalCount) &&
|
|
45
|
+
value.includedCount === value.items.length &&
|
|
46
|
+
value.totalCount >= value.includedCount &&
|
|
47
|
+
value.truncated === value.totalCount > value.includedCount &&
|
|
48
|
+
(value.continuationReference === undefined || (0, references_js_1.isEnvironmentLogicalEvidenceReferenceV1)(value.continuationReference)) &&
|
|
49
|
+
(!value.truncated || value.continuationReference !== undefined);
|
|
50
|
+
const isCountRecord = (value, keys) => (0, internal_js_1.isRecord)(value) && (0, internal_js_1.hasExactKeys)(value, keys) && keys.every(key => (0, internal_js_1.isNonNegativeInteger)(value[key]));
|
|
51
|
+
const isGlobalAdministrator = (value) => (0, internal_js_1.isRecord)(value) &&
|
|
52
|
+
(0, internal_js_1.hasExactKeys)(value, ['principalId', 'safeLabel', 'principalType', 'assignmentModes', 'mfaStatus', 'sourceReferences']) &&
|
|
53
|
+
(0, internal_js_1.isScopeIdentifier)(value.principalId) &&
|
|
54
|
+
(0, internal_js_1.isSafeLabel)(value.safeLabel) &&
|
|
55
|
+
typeof value.principalType === 'string' &&
|
|
56
|
+
PRINCIPAL_TYPES.has(value.principalType) &&
|
|
57
|
+
Array.isArray(value.assignmentModes) &&
|
|
58
|
+
value.assignmentModes.length <= 4 &&
|
|
59
|
+
value.assignmentModes.every(mode => typeof mode === 'string' && ASSIGNMENT_MODES.has(mode)) &&
|
|
60
|
+
new Set(value.assignmentModes).size === value.assignmentModes.length &&
|
|
61
|
+
(value.mfaStatus === 'mfa' || value.mfaStatus === 'unknown') &&
|
|
62
|
+
isReferenceArray(value.sourceReferences);
|
|
63
|
+
const isGovernanceFinding = (value) => (0, internal_js_1.isRecord)(value) &&
|
|
64
|
+
(0, internal_js_1.hasExactKeys)(value, ['findingId', 'safeLabel', 'severity', 'sourceReferences'], ['category', 'scopeType']) &&
|
|
65
|
+
(0, internal_js_1.isScopeIdentifier)(value.findingId) &&
|
|
66
|
+
(0, internal_js_1.isSafeLabel)(value.safeLabel) &&
|
|
67
|
+
typeof value.severity === 'string' &&
|
|
68
|
+
SEVERITIES.has(value.severity) &&
|
|
69
|
+
(value.category === undefined || (0, internal_js_1.isSafeLabel)(value.category)) &&
|
|
70
|
+
(value.scopeType === undefined || (0, internal_js_1.isSafeLabel)(value.scopeType)) &&
|
|
71
|
+
isReferenceArray(value.sourceReferences);
|
|
72
|
+
const isCommitment = (value) => (0, internal_js_1.isRecord)(value) &&
|
|
73
|
+
(0, internal_js_1.hasExactKeys)(value, ['commitmentId', 'kind', 'safeLabel', 'sourceReferences'], ['status', 'expiry', 'quantity']) &&
|
|
74
|
+
(0, internal_js_1.isScopeIdentifier)(value.commitmentId) &&
|
|
75
|
+
(value.kind === 'reservation' || value.kind === 'savings-plan') &&
|
|
76
|
+
(0, internal_js_1.isSafeLabel)(value.safeLabel) &&
|
|
77
|
+
(value.status === undefined || (0, internal_js_1.isSafeLabel)(value.status)) &&
|
|
78
|
+
(value.expiry === undefined || (0, internal_js_1.isCanonicalUtcTimestamp)(value.expiry)) &&
|
|
79
|
+
(value.quantity === undefined || (0, internal_js_1.isNonNegativeInteger)(value.quantity)) &&
|
|
80
|
+
isReferenceArray(value.sourceReferences);
|
|
81
|
+
const isWarning = (value) => (0, internal_js_1.isRecord)(value) &&
|
|
82
|
+
(0, internal_js_1.hasExactKeys)(value, ['code', 'safeLabel', 'sourceReferences'], ['pillar', 'detail']) &&
|
|
83
|
+
(0, internal_js_1.isScopeIdentifier)(value.code) &&
|
|
84
|
+
(0, internal_js_1.isSafeLabel)(value.safeLabel) &&
|
|
85
|
+
value.pillar === undefined &&
|
|
86
|
+
(value.detail === undefined || (0, internal_js_1.isBoundedString)(value.detail, contracts_js_1.ENVIRONMENT_CONTRACT_LIMITS_V1.customerStringScalars, { controls: true })) &&
|
|
87
|
+
isReferenceArray(value.sourceReferences);
|
|
88
|
+
/** Validates the strict tenant environment projection. */
|
|
89
|
+
const isEnvironmentTenantProjectionV1 = (value) => {
|
|
90
|
+
if (!(0, internal_js_1.hasSafeContainerShape)(value) || !(0, internal_js_1.isRecord)(value))
|
|
91
|
+
return false;
|
|
92
|
+
if (!(0, internal_js_1.hasExactKeys)(value, [
|
|
93
|
+
'schemaVersion',
|
|
94
|
+
'scope',
|
|
95
|
+
'sourceBinding',
|
|
96
|
+
'generatedAt',
|
|
97
|
+
'tenant',
|
|
98
|
+
'sourceCoverage',
|
|
99
|
+
'identitySummary',
|
|
100
|
+
'governanceSummary',
|
|
101
|
+
'commitmentSummary',
|
|
102
|
+
'globalAdministrators',
|
|
103
|
+
'governanceFindings',
|
|
104
|
+
'commitments',
|
|
105
|
+
'warnings',
|
|
106
|
+
'sourceReferences',
|
|
107
|
+
]) ||
|
|
108
|
+
value.schemaVersion !== 1 ||
|
|
109
|
+
!(0, exports.isEnvironmentTenantScopeV1)(value.scope) ||
|
|
110
|
+
!(0, exports.isEnvironmentTenantSourceBindingV1)(value.sourceBinding) ||
|
|
111
|
+
!scopesEqual(value.scope, value.sourceBinding.scope) ||
|
|
112
|
+
!(0, internal_js_1.isCanonicalUtcTimestamp)(value.generatedAt) ||
|
|
113
|
+
Date.parse(value.generatedAt) < Date.parse(value.sourceBinding.completedAt) ||
|
|
114
|
+
!(0, internal_js_1.isRecord)(value.tenant) ||
|
|
115
|
+
!(0, internal_js_1.hasExactKeys)(value.tenant, ['safeLabel']) ||
|
|
116
|
+
!(0, internal_js_1.isSafeLabel)(value.tenant.safeLabel) ||
|
|
117
|
+
!(0, internal_js_1.isRecord)(value.sourceCoverage) ||
|
|
118
|
+
!(0, internal_js_1.hasExactKeys)(value.sourceCoverage, ['tenantSync', 'governance', 'identity', 'commitments']) ||
|
|
119
|
+
!Object.values(value.sourceCoverage).every(validation_js_1.isEnvironmentCoverageStateV1) ||
|
|
120
|
+
!isCountRecord(value.identitySummary, [
|
|
121
|
+
'applicationCount',
|
|
122
|
+
'servicePrincipalCount',
|
|
123
|
+
'globalAdministratorCount',
|
|
124
|
+
'permanentGlobalAdministratorCount',
|
|
125
|
+
'eligibleGlobalAdministratorCount',
|
|
126
|
+
'mfaKnownGlobalAdministratorCount',
|
|
127
|
+
]) ||
|
|
128
|
+
!isCountRecord(value.governanceSummary, [
|
|
129
|
+
'managementGroupCount',
|
|
130
|
+
'subscriptionCount',
|
|
131
|
+
'policyAssignmentCount',
|
|
132
|
+
'policyExemptionCount',
|
|
133
|
+
'roleAssignmentCount',
|
|
134
|
+
'privilegedAssignmentCount',
|
|
135
|
+
'customRoleCount',
|
|
136
|
+
'findingCount',
|
|
137
|
+
]) ||
|
|
138
|
+
!isCountRecord(value.commitmentSummary, ['reservationCount', 'savingsPlanCount', 'expiringWithin90DaysCount']) ||
|
|
139
|
+
!isBoundedList(value.globalAdministrators, isGlobalAdministrator) ||
|
|
140
|
+
!isBoundedList(value.governanceFindings, isGovernanceFinding) ||
|
|
141
|
+
!isBoundedList(value.commitments, isCommitment) ||
|
|
142
|
+
!isBoundedList(value.warnings, isWarning) ||
|
|
143
|
+
!isReferenceArray(value.sourceReferences)) {
|
|
144
|
+
return false;
|
|
145
|
+
}
|
|
146
|
+
return (0, internal_js_1.utf8ByteLength)(JSON.stringify(value)) <= contracts_js_1.ENVIRONMENT_CONTRACT_LIMITS_V1.projectionBytes;
|
|
147
|
+
};
|
|
148
|
+
exports.isEnvironmentTenantProjectionV1 = isEnvironmentTenantProjectionV1;
|
|
149
|
+
const descriptorLimit = (name) => name === 'projection.json' ? contracts_js_1.ENVIRONMENT_CONTRACT_LIMITS_V1.projectionBytes : contracts_js_1.ENVIRONMENT_CONTRACT_LIMITS_V1.environmentIndexBytes;
|
|
150
|
+
/** Validates one tenant environment document descriptor. */
|
|
151
|
+
const isEnvironmentTenantDocumentDescriptorV1 = (value) => (0, internal_js_1.isRecord)(value) &&
|
|
152
|
+
(0, internal_js_1.hasExactKeys)(value, ['name', 'mediaType', 'byteCount', 'contentSha256', 'approximateTokenCount']) &&
|
|
153
|
+
typeof value.name === 'string' &&
|
|
154
|
+
exports.ENVIRONMENT_TENANT_DOCUMENT_NAMES_V1.includes(value.name) &&
|
|
155
|
+
value.mediaType === (value.name === 'projection.json' ? 'application/json' : 'text/markdown; charset=utf-8') &&
|
|
156
|
+
(0, internal_js_1.isNonNegativeInteger)(value.byteCount) &&
|
|
157
|
+
value.byteCount > 0 &&
|
|
158
|
+
value.byteCount <= descriptorLimit(value.name) &&
|
|
159
|
+
typeof value.contentSha256 === 'string' &&
|
|
160
|
+
internal_js_1.SHA256_PATTERN.test(value.contentSha256) &&
|
|
161
|
+
(0, internal_js_1.isNonNegativeInteger)(value.approximateTokenCount);
|
|
162
|
+
exports.isEnvironmentTenantDocumentDescriptorV1 = isEnvironmentTenantDocumentDescriptorV1;
|
|
163
|
+
/** Validates the exact five-file tenant environment descriptor set. */
|
|
164
|
+
const isEnvironmentTenantDocumentDescriptorSetV1 = (value) => Array.isArray(value) &&
|
|
165
|
+
value.length === exports.ENVIRONMENT_TENANT_DOCUMENT_NAMES_V1.length &&
|
|
166
|
+
value.every(exports.isEnvironmentTenantDocumentDescriptorV1) &&
|
|
167
|
+
new Set(value.map(item => item.name)).size === exports.ENVIRONMENT_TENANT_DOCUMENT_NAMES_V1.length;
|
|
168
|
+
exports.isEnvironmentTenantDocumentDescriptorSetV1 = isEnvironmentTenantDocumentDescriptorSetV1;
|
|
169
|
+
/** Builds the canonical tenant tree-digest preimage. */
|
|
170
|
+
const buildEnvironmentTenantTreeDigestPreimageV1 = (descriptors) => {
|
|
171
|
+
if (!(0, exports.isEnvironmentTenantDocumentDescriptorSetV1)(descriptors))
|
|
172
|
+
throw new TypeError('Invalid tenant environment descriptor set.');
|
|
173
|
+
return JSON.stringify(descriptors
|
|
174
|
+
.map(descriptor => [descriptor.name, descriptor.contentSha256])
|
|
175
|
+
.sort((left, right) => (left[0] < right[0] ? -1 : left[0] > right[0] ? 1 : 0)));
|
|
176
|
+
};
|
|
177
|
+
exports.buildEnvironmentTenantTreeDigestPreimageV1 = buildEnvironmentTenantTreeDigestPreimageV1;
|
|
178
|
+
/** Validates the atomically visible tenant environment completion pointer. */
|
|
179
|
+
const isEnvironmentTenantCompiledGenerationPointerV1 = (value) => (0, internal_js_1.hasSafeContainerShape)(value) &&
|
|
180
|
+
(0, internal_js_1.isRecord)(value) &&
|
|
181
|
+
(0, internal_js_1.hasExactKeys)(value, ['schemaVersion', 'status', 'environmentRunId', 'scope', 'sourceBinding', 'treeDigestSha256', 'fileCount', 'generatedAt']) &&
|
|
182
|
+
value.schemaVersion === 1 &&
|
|
183
|
+
value.status === 'completed' &&
|
|
184
|
+
typeof value.environmentRunId === 'string' &&
|
|
185
|
+
value.environmentRunId.length <= contracts_js_1.ENVIRONMENT_CONTRACT_LIMITS_V1.environmentRunIdAsciiCharacters &&
|
|
186
|
+
internal_js_1.ENVIRONMENT_RUN_ID_PATTERN.test(value.environmentRunId) &&
|
|
187
|
+
value.environmentRunId !== '.' &&
|
|
188
|
+
value.environmentRunId !== '..' &&
|
|
189
|
+
(0, exports.isEnvironmentTenantScopeV1)(value.scope) &&
|
|
190
|
+
(0, exports.isEnvironmentTenantSourceBindingV1)(value.sourceBinding) &&
|
|
191
|
+
scopesEqual(value.scope, value.sourceBinding.scope) &&
|
|
192
|
+
value.environmentRunId !== value.sourceBinding.tenantSyncRunId &&
|
|
193
|
+
typeof value.treeDigestSha256 === 'string' &&
|
|
194
|
+
internal_js_1.SHA256_PATTERN.test(value.treeDigestSha256) &&
|
|
195
|
+
value.fileCount === exports.ENVIRONMENT_TENANT_DOCUMENT_NAMES_V1.length &&
|
|
196
|
+
(0, internal_js_1.isCanonicalUtcTimestamp)(value.generatedAt) &&
|
|
197
|
+
Date.parse(value.generatedAt) >= Date.parse(value.sourceBinding.completedAt) &&
|
|
198
|
+
(0, internal_js_1.utf8ByteLength)(JSON.stringify(value)) <= contracts_js_1.ENVIRONMENT_CONTRACT_LIMITS_V1.completedPointerBytes;
|
|
199
|
+
exports.isEnvironmentTenantCompiledGenerationPointerV1 = isEnvironmentTenantCompiledGenerationPointerV1;
|
|
200
|
+
/** Narrow syntax guard used before tenant references are passed to the common parser. */
|
|
201
|
+
const isEnvironmentTenantLogicalReferenceV1 = (value) => typeof value === 'string' && REFERENCE_PATTERN.test(value) && (0, references_js_1.isEnvironmentLogicalEvidenceReferenceV1)(value);
|
|
202
|
+
exports.isEnvironmentTenantLogicalReferenceV1 = isEnvironmentTenantLogicalReferenceV1;
|
|
203
|
+
//# sourceMappingURL=tenant.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tenant.js","sourceRoot":"","sources":["../../src/environment/tenant.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type EnvironmentArtifactKindV1, type EnvironmentCompiledGenerationPointerV1, type EnvironmentCoverageStateV1, type EnvironmentDocumentDescriptorV1, type EnvironmentMoneyValueV1, type EnvironmentPillarV1, type EnvironmentScopeV1, type EnvironmentSourceBindingV1, type EnvironmentSourceGenerationV1, type EnvironmentSubscriptionProjectionV1 } from './contracts.js';
|
|
1
|
+
import { type EnvironmentArtifactKindV1, type EnvironmentCardinalityV1, type EnvironmentCompiledGenerationPointerV1, type EnvironmentCoverageStateV1, type EnvironmentDocumentDescriptorV1, type EnvironmentMoneyValueV1, type EnvironmentPillarV1, type EnvironmentScopeV1, type EnvironmentSourceBindingV1, type EnvironmentSourceGenerationV1, type EnvironmentSubscriptionProjectionV1 } from './contracts.js';
|
|
2
2
|
/** Validates a bounded, local Portal route suitable for client-visible evidence. */
|
|
3
3
|
export declare const isEnvironmentPortalRouteV1: (value: unknown) => value is string;
|
|
4
4
|
/** Validates one admitted environment pillar. */
|
|
@@ -15,6 +15,8 @@ export declare const isEnvironmentRunIdV1: (value: unknown) => value is string;
|
|
|
15
15
|
export declare const isEnvironmentMoneyValueV1: (value: unknown) => value is EnvironmentMoneyValueV1;
|
|
16
16
|
/** Validates the closed coverage-state union and state-specific freshness rules. */
|
|
17
17
|
export declare const isEnvironmentCoverageStateV1: (value: unknown) => value is EnvironmentCoverageStateV1;
|
|
18
|
+
/** Validates exact, lower-bound, and unavailable count evidence without ambiguous totals. */
|
|
19
|
+
export declare const isEnvironmentCardinalityV1: (value: unknown) => value is EnvironmentCardinalityV1;
|
|
18
20
|
/** Validates the strict, bounded multi-pillar subscription environment projection. */
|
|
19
21
|
export declare const isEnvironmentSubscriptionProjectionV1: (value: unknown) => value is EnvironmentSubscriptionProjectionV1;
|
|
20
22
|
/** Validates one descriptor from the exact V1 multi-pillar document allowlist. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/environment/validation.ts"],"names":[],"mappings":"AAAA,OAAO,EASL,KAAK,yBAAyB,
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/environment/validation.ts"],"names":[],"mappings":"AAAA,OAAO,EASL,KAAK,yBAAyB,EAE9B,KAAK,wBAAwB,EAE7B,KAAK,sCAAsC,EAG3C,KAAK,0BAA0B,EAC/B,KAAK,+BAA+B,EAEpC,KAAK,uBAAuB,EAE5B,KAAK,mBAAmB,EAGxB,KAAK,kBAAkB,EACvB,KAAK,0BAA0B,EAC/B,KAAK,6BAA6B,EAClC,KAAK,mCAAmC,EACzC,MAAM,gBAAgB,CAAC;AAyCxB,oFAAoF;AACpF,eAAO,MAAM,0BAA0B,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,MASG,CAAC;AAmBzE,iDAAiD;AACjD,eAAO,MAAM,qBAAqB,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,mBAAsE,CAAC;AAEvI,+DAA+D;AAC/D,eAAO,MAAM,oBAAoB,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,kBAMtB,CAAC;AAE1C,iFAAiF;AACjF,eAAO,MAAM,+BAA+B,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,6BAiB9B,CAAC;AAE7C,uFAAuF;AACvF,eAAO,MAAM,4BAA4B,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,0BAwBnE,CAAC;AAEL,8FAA8F;AAC9F,eAAO,MAAM,oBAAoB,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,MAMvB,CAAC;AAEzC,+FAA+F;AAC/F,eAAO,MAAM,yBAAyB,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,uBAYyE,CAAC;AAQ9I,oFAAoF;AACpF,eAAO,MAAM,4BAA4B,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,0BA+BtE,CAAC;AAyCF,6FAA6F;AAC7F,eAAO,MAAM,0BAA0B,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,wBAYpE,CAAC;AAoHF,sFAAsF;AACtF,eAAO,MAAM,qCAAqC,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,mCAgD/E,CAAC;AAQF,kFAAkF;AAClF,eAAO,MAAM,iCAAiC,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,+BAa3E,CAAC;AAEF,qFAAqF;AACrF,eAAO,MAAM,oCAAoC,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,+BAA+B,EAKb,CAAC;AAElG,gFAAgF;AAChF,eAAO,MAAM,wCAAwC,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,sCA6BlF,CAAC;AAEF,uEAAuE;AACvE,eAAO,MAAM,2BAA2B,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,yBACd,CAAC;AAEzD,oFAAoF;AACpF,eAAO,MAAM,wBAAwB,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,MAA4B,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.isEnvironmentSafeLabelV1 = exports.isEnvironmentArtifactKindV1 = exports.isEnvironmentCompiledGenerationPointerV1 = exports.isEnvironmentDocumentDescriptorSetV1 = exports.isEnvironmentDocumentDescriptorV1 = exports.isEnvironmentSubscriptionProjectionV1 = exports.isEnvironmentCoverageStateV1 = exports.isEnvironmentMoneyValueV1 = exports.isEnvironmentRunIdV1 = exports.isEnvironmentSourceBindingV1 = exports.isEnvironmentSourceGenerationV1 = exports.isEnvironmentScopeV1 = exports.isEnvironmentPillarV1 = exports.isEnvironmentPortalRouteV1 = void 0;
|
|
3
|
+
exports.isEnvironmentSafeLabelV1 = exports.isEnvironmentArtifactKindV1 = exports.isEnvironmentCompiledGenerationPointerV1 = exports.isEnvironmentDocumentDescriptorSetV1 = exports.isEnvironmentDocumentDescriptorV1 = exports.isEnvironmentSubscriptionProjectionV1 = exports.isEnvironmentCardinalityV1 = exports.isEnvironmentCoverageStateV1 = exports.isEnvironmentMoneyValueV1 = exports.isEnvironmentRunIdV1 = exports.isEnvironmentSourceBindingV1 = exports.isEnvironmentSourceGenerationV1 = exports.isEnvironmentScopeV1 = exports.isEnvironmentPillarV1 = exports.isEnvironmentPortalRouteV1 = void 0;
|
|
4
4
|
const contracts_js_1 = require("./contracts.js");
|
|
5
5
|
const internal_js_1 = require("./internal.js");
|
|
6
6
|
const references_js_1 = require("./references.js");
|
|
@@ -11,7 +11,7 @@ const FINDING_KINDS = new Set(contracts_js_1.ENVIRONMENT_FINDING_KINDS_V1);
|
|
|
11
11
|
const SEVERITIES = new Set(contracts_js_1.ENVIRONMENT_SEVERITIES_V1);
|
|
12
12
|
const IMPACTS = new Set(contracts_js_1.ENVIRONMENT_IMPACTS_V1);
|
|
13
13
|
const EFFORTS = new Set(contracts_js_1.ENVIRONMENT_EFFORTS_V1);
|
|
14
|
-
const MONEY_BASES = new Set(['billed', 'amortized']);
|
|
14
|
+
const MONEY_BASES = new Set(['billed', 'amortized', 'unknown']);
|
|
15
15
|
const MONEY_PROVENANCE = new Set([
|
|
16
16
|
'subscription-summary',
|
|
17
17
|
'subscription-resources',
|
|
@@ -113,7 +113,7 @@ const isEnvironmentMoneyValueV1 = (value) => (0, internal_js_1.isRecord)(value)
|
|
|
113
113
|
typeof value.amount === 'string' &&
|
|
114
114
|
internal_js_1.DECIMAL_PATTERN.test(value.amount) &&
|
|
115
115
|
typeof value.currencyCode === 'string' &&
|
|
116
|
-
internal_js_1.CURRENCY_PATTERN.test(value.currencyCode) &&
|
|
116
|
+
(value.currencyCode === 'unknown' || internal_js_1.CURRENCY_PATTERN.test(value.currencyCode)) &&
|
|
117
117
|
typeof value.basis === 'string' &&
|
|
118
118
|
MONEY_BASES.has(value.basis) &&
|
|
119
119
|
(0, internal_js_1.isBoundedString)(value.period, contracts_js_1.ENVIRONMENT_CONTRACT_LIMITS_V1.safeLabelScalars, { trimmed: true, controls: true }) &&
|
|
@@ -190,13 +190,29 @@ const isPillarScore = (value) => (0, internal_js_1.isRecord)(value) &&
|
|
|
190
190
|
isPercentage(value.value) &&
|
|
191
191
|
value.maximum === '100' &&
|
|
192
192
|
(0, internal_js_1.isSafeLabel)(value.safeLabel);
|
|
193
|
+
/** Validates exact, lower-bound, and unavailable count evidence without ambiguous totals. */
|
|
194
|
+
const isEnvironmentCardinalityV1 = (value) => {
|
|
195
|
+
if (!(0, internal_js_1.isRecord)(value) || typeof value.basis !== 'string')
|
|
196
|
+
return false;
|
|
197
|
+
if (value.basis === 'exact') {
|
|
198
|
+
return (0, internal_js_1.hasExactKeys)(value, ['basis', 'value']) && (0, internal_js_1.isNonNegativeInteger)(value.value);
|
|
199
|
+
}
|
|
200
|
+
if (value.basis === 'lower-bound') {
|
|
201
|
+
return (0, internal_js_1.hasExactKeys)(value, ['basis', 'value', 'reason']) && (0, internal_js_1.isNonNegativeInteger)(value.value) && (0, internal_js_1.isSafeLabel)(value.reason);
|
|
202
|
+
}
|
|
203
|
+
if (value.basis === 'unavailable') {
|
|
204
|
+
return (0, internal_js_1.hasExactKeys)(value, ['basis', 'reason']) && (0, internal_js_1.isSafeLabel)(value.reason);
|
|
205
|
+
}
|
|
206
|
+
return false;
|
|
207
|
+
};
|
|
208
|
+
exports.isEnvironmentCardinalityV1 = isEnvironmentCardinalityV1;
|
|
193
209
|
const isPillarSummary = (value) => (0, internal_js_1.isRecord)(value) &&
|
|
194
|
-
(0, internal_js_1.hasExactKeys)(value, ['pillar', 'coverage', 'findingCount', 'recommendationCount', '
|
|
210
|
+
(0, internal_js_1.hasExactKeys)(value, ['pillar', 'coverage', 'findingCount', 'recommendationCount', 'affectedResources', 'portalRoute', 'sourceReferences'], ['score']) &&
|
|
195
211
|
(0, exports.isEnvironmentPillarV1)(value.pillar) &&
|
|
196
212
|
(0, exports.isEnvironmentCoverageStateV1)(value.coverage) &&
|
|
197
213
|
(0, internal_js_1.isNonNegativeInteger)(value.findingCount) &&
|
|
198
214
|
(0, internal_js_1.isNonNegativeInteger)(value.recommendationCount) &&
|
|
199
|
-
(0,
|
|
215
|
+
(0, exports.isEnvironmentCardinalityV1)(value.affectedResources) &&
|
|
200
216
|
(0, exports.isEnvironmentPortalRouteV1)(value.portalRoute) &&
|
|
201
217
|
(value.score === undefined || isPillarScore(value.score)) &&
|
|
202
218
|
isReferenceArray(value.sourceReferences);
|
|
@@ -204,7 +220,7 @@ const isPillarSummaries = (value) => (0, internal_js_1.isRecord)(value) &&
|
|
|
204
220
|
(0, internal_js_1.hasExactKeys)(value, contracts_js_1.ENVIRONMENT_PILLARS_V1) &&
|
|
205
221
|
contracts_js_1.ENVIRONMENT_PILLARS_V1.every(pillar => isPillarSummary(value[pillar]) && value[pillar]?.pillar === pillar);
|
|
206
222
|
const isFinding = (value) => (0, internal_js_1.isRecord)(value) &&
|
|
207
|
-
(0, internal_js_1.hasExactKeys)(value, ['findingId', 'pillar', 'kind', 'safeLabel', 'severity', 'resourceReferences', 'sourceReferences'], ['description', 'impact', 'effort', '
|
|
223
|
+
(0, internal_js_1.hasExactKeys)(value, ['findingId', 'pillar', 'kind', 'safeLabel', 'severity', 'resourceReferences', 'sourceReferences'], ['description', 'impact', 'effort', 'affectedResources', 'portalRoute']) &&
|
|
208
224
|
(0, internal_js_1.isScopeIdentifier)(value.findingId) &&
|
|
209
225
|
(0, exports.isEnvironmentPillarV1)(value.pillar) &&
|
|
210
226
|
typeof value.kind === 'string' &&
|
|
@@ -215,13 +231,12 @@ const isFinding = (value) => (0, internal_js_1.isRecord)(value) &&
|
|
|
215
231
|
(value.description === undefined || (0, internal_js_1.isCustomerString)(value.description)) &&
|
|
216
232
|
(value.impact === undefined || (typeof value.impact === 'string' && IMPACTS.has(value.impact))) &&
|
|
217
233
|
(value.effort === undefined || (typeof value.effort === 'string' && EFFORTS.has(value.effort))) &&
|
|
218
|
-
(value.
|
|
219
|
-
(value.affectedResourceCount === undefined || (0, internal_js_1.isNonNegativeInteger)(value.affectedResourceCount)) &&
|
|
234
|
+
(value.affectedResources === undefined || (0, exports.isEnvironmentCardinalityV1)(value.affectedResources)) &&
|
|
220
235
|
(value.portalRoute === undefined || (0, exports.isEnvironmentPortalRouteV1)(value.portalRoute)) &&
|
|
221
236
|
isResourceReferenceArray(value.resourceReferences) &&
|
|
222
237
|
isReferenceArray(value.sourceReferences);
|
|
223
238
|
const isRecommendation = (value) => (0, internal_js_1.isRecord)(value) &&
|
|
224
|
-
(0, internal_js_1.hasExactKeys)(value, ['recommendationId', 'pillar', 'safeLabel', 'portalRoute', 'resourceReferences', 'sourceReferences'], ['description', 'impact', 'effort', '
|
|
239
|
+
(0, internal_js_1.hasExactKeys)(value, ['recommendationId', 'pillar', 'safeLabel', 'portalRoute', 'resourceReferences', 'sourceReferences'], ['description', 'impact', 'effort', 'affectedResources', 'potentialSavings']) &&
|
|
225
240
|
(0, internal_js_1.isScopeIdentifier)(value.recommendationId) &&
|
|
226
241
|
(0, exports.isEnvironmentPillarV1)(value.pillar) &&
|
|
227
242
|
(0, internal_js_1.isSafeLabel)(value.safeLabel) &&
|
|
@@ -229,8 +244,7 @@ const isRecommendation = (value) => (0, internal_js_1.isRecord)(value) &&
|
|
|
229
244
|
(value.description === undefined || (0, internal_js_1.isCustomerString)(value.description)) &&
|
|
230
245
|
(value.impact === undefined || (typeof value.impact === 'string' && IMPACTS.has(value.impact))) &&
|
|
231
246
|
(value.effort === undefined || (typeof value.effort === 'string' && EFFORTS.has(value.effort))) &&
|
|
232
|
-
(value.
|
|
233
|
-
(value.affectedResourceCount === undefined || (0, internal_js_1.isNonNegativeInteger)(value.affectedResourceCount)) &&
|
|
247
|
+
(value.affectedResources === undefined || (0, exports.isEnvironmentCardinalityV1)(value.affectedResources)) &&
|
|
234
248
|
(value.potentialSavings === undefined || isSavingsMoney(value.potentialSavings)) &&
|
|
235
249
|
isResourceReferenceArray(value.resourceReferences) &&
|
|
236
250
|
isReferenceArray(value.sourceReferences);
|