@spottoai/types-package 1.0.2-beta.388 → 1.0.2-beta.389
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/environment/contracts.d.ts +80 -17
- package/dist/environment/contracts.d.ts.map +1 -1
- package/dist/environment/contracts.js +44 -8
- package/dist/environment/contracts.js.map +1 -1
- package/dist/environment/validation.d.ts +8 -6
- package/dist/environment/validation.d.ts.map +1 -1
- package/dist/environment/validation.js +97 -23
- package/dist/environment/validation.js.map +1 -1
- package/dist/esm/environment/contracts.js +43 -7
- package/dist/esm/environment/validation.js +95 -22
- package/package.json +1 -1
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/** Single pre-release multi-pillar environment contract shared by producers and consumers. */
|
|
2
2
|
export declare const ENVIRONMENT_CONTRACT_LIMITS_V1: Readonly<{
|
|
3
3
|
readonly completedPointerBytes: number;
|
|
4
4
|
readonly projectionBytes: number;
|
|
5
5
|
readonly environmentIndexBytes: number;
|
|
6
|
-
readonly
|
|
6
|
+
readonly pillarDocumentBytes: number;
|
|
7
7
|
readonly boundedListItems: 50;
|
|
8
8
|
readonly customerStringScalars: 4096;
|
|
9
9
|
readonly safeLabelScalars: 512;
|
|
@@ -11,12 +11,23 @@ export declare const ENVIRONMENT_CONTRACT_LIMITS_V1: Readonly<{
|
|
|
11
11
|
readonly environmentRunIdAsciiCharacters: 128;
|
|
12
12
|
readonly sourceIdentityScalars: 256;
|
|
13
13
|
readonly logicalReferencePayloadBytes: number;
|
|
14
|
-
readonly validatedContainerDepth:
|
|
14
|
+
readonly validatedContainerDepth: 10;
|
|
15
15
|
}>;
|
|
16
|
-
export declare const
|
|
17
|
-
export declare const
|
|
16
|
+
export declare const ENVIRONMENT_PILLARS_V1: readonly ["cost", "security", "governance", "reliability", "performance", "operations"];
|
|
17
|
+
export declare const ENVIRONMENT_DOCUMENT_NAMES_V1: readonly ["projection.json", "environment-index.md", "pillars/cost.md", "pillars/security.md", "pillars/governance.md", "pillars/reliability.md", "pillars/performance.md", "pillars/operations.md"];
|
|
18
|
+
export declare const ENVIRONMENT_ARTIFACT_KINDS_V1: readonly ["subscription-summary", "subscription-resources", "subscription-recommendations", "subscription-service-retirements", "subscription-monitor-alerts", "subscription-system-tracks", "subscription-metrics"];
|
|
19
|
+
export declare const ENVIRONMENT_FINDING_KINDS_V1: readonly ["recommendation", "security-posture", "public-exposure", "governance", "compliance", "service-retirement", "data-protection", "health", "performance", "scaling", "operations", "monitoring", "topology"];
|
|
20
|
+
export declare const ENVIRONMENT_SEVERITIES_V1: readonly ["critical", "high", "medium", "low", "informational", "unknown"];
|
|
21
|
+
export declare const ENVIRONMENT_IMPACTS_V1: readonly ["high", "medium", "low", "unknown"];
|
|
22
|
+
export declare const ENVIRONMENT_EFFORTS_V1: readonly ["high", "medium", "low", "unknown"];
|
|
23
|
+
export type EnvironmentPillarV1 = (typeof ENVIRONMENT_PILLARS_V1)[number];
|
|
18
24
|
export type EnvironmentDocumentNameV1 = (typeof ENVIRONMENT_DOCUMENT_NAMES_V1)[number];
|
|
25
|
+
export type EnvironmentMarkdownDocumentNameV1 = Exclude<EnvironmentDocumentNameV1, 'projection.json'>;
|
|
19
26
|
export type EnvironmentArtifactKindV1 = (typeof ENVIRONMENT_ARTIFACT_KINDS_V1)[number];
|
|
27
|
+
export type EnvironmentFindingKindV1 = (typeof ENVIRONMENT_FINDING_KINDS_V1)[number];
|
|
28
|
+
export type EnvironmentSeverityV1 = (typeof ENVIRONMENT_SEVERITIES_V1)[number];
|
|
29
|
+
export type EnvironmentImpactV1 = (typeof ENVIRONMENT_IMPACTS_V1)[number];
|
|
30
|
+
export type EnvironmentEffortV1 = (typeof ENVIRONMENT_EFFORTS_V1)[number];
|
|
20
31
|
export type EnvironmentMoneyBasisV1 = 'billed' | 'amortized';
|
|
21
32
|
export type EnvironmentSavingsAdditivityV1 = 'additive' | 'scenario-non-additive';
|
|
22
33
|
export type EnvironmentMoneyProvenanceV1 = 'subscription-summary' | 'subscription-resources' | 'cost-savings-summary' | 'savings-aggregate' | 'recommendation';
|
|
@@ -102,17 +113,23 @@ export interface EnvironmentSubscriptionSummaryV1 {
|
|
|
102
113
|
portalRoute: string;
|
|
103
114
|
}
|
|
104
115
|
export interface EnvironmentSourceCoverageV1 {
|
|
116
|
+
completedViewSet: EnvironmentCoverageStateV1;
|
|
105
117
|
subscriptionSummary: EnvironmentCoverageStateV1;
|
|
106
118
|
resources: EnvironmentCoverageStateV1;
|
|
107
119
|
recommendations: EnvironmentCoverageStateV1;
|
|
108
|
-
|
|
109
|
-
|
|
120
|
+
serviceRetirements: EnvironmentCoverageStateV1;
|
|
121
|
+
monitorAlerts: EnvironmentCoverageStateV1;
|
|
122
|
+
pluginMetrics: EnvironmentCoverageStateV1;
|
|
123
|
+
}
|
|
124
|
+
export interface EnvironmentEstateSummaryV1 {
|
|
125
|
+
resourceCount: number;
|
|
126
|
+
serviceFamilyCount: number;
|
|
127
|
+
locationCount: number;
|
|
110
128
|
}
|
|
111
129
|
export interface EnvironmentCostSummaryV1 {
|
|
112
130
|
observedCost?: EnvironmentMoneyValueV1;
|
|
113
131
|
potentialSavings?: EnvironmentMoneyValueV1;
|
|
114
|
-
|
|
115
|
-
recommendationCount?: number;
|
|
132
|
+
costRecommendationCount?: number;
|
|
116
133
|
}
|
|
117
134
|
export interface EnvironmentCostRollupV1 {
|
|
118
135
|
key: string;
|
|
@@ -131,16 +148,58 @@ export interface EnvironmentCostDriverV1 {
|
|
|
131
148
|
resourceReference?: EnvironmentLogicalResourceReferenceV1;
|
|
132
149
|
sourceReferences: EnvironmentLogicalEvidenceReferenceV1[];
|
|
133
150
|
}
|
|
134
|
-
export interface
|
|
151
|
+
export interface EnvironmentPillarScoreV1 {
|
|
152
|
+
value: string;
|
|
153
|
+
maximum: '100';
|
|
154
|
+
safeLabel: string;
|
|
155
|
+
}
|
|
156
|
+
export interface EnvironmentPillarSummaryV1 {
|
|
157
|
+
pillar: EnvironmentPillarV1;
|
|
158
|
+
coverage: EnvironmentCoverageStateV1;
|
|
159
|
+
findingCount: number;
|
|
160
|
+
recommendationCount: number;
|
|
161
|
+
affectedResourceCount: number;
|
|
162
|
+
portalRoute: string;
|
|
163
|
+
score?: EnvironmentPillarScoreV1;
|
|
164
|
+
sourceReferences: EnvironmentLogicalEvidenceReferenceV1[];
|
|
165
|
+
}
|
|
166
|
+
export type EnvironmentPillarSummariesV1 = {
|
|
167
|
+
[Pillar in EnvironmentPillarV1]: EnvironmentPillarSummaryV1 & {
|
|
168
|
+
pillar: Pillar;
|
|
169
|
+
};
|
|
170
|
+
};
|
|
171
|
+
export interface EnvironmentFindingV1 {
|
|
172
|
+
findingId: string;
|
|
173
|
+
pillar: EnvironmentPillarV1;
|
|
174
|
+
kind: EnvironmentFindingKindV1;
|
|
175
|
+
safeLabel: string;
|
|
176
|
+
severity: EnvironmentSeverityV1;
|
|
177
|
+
description?: string;
|
|
178
|
+
impact?: EnvironmentImpactV1;
|
|
179
|
+
effort?: EnvironmentEffortV1;
|
|
180
|
+
confidencePercentage?: string;
|
|
181
|
+
affectedResourceCount?: number;
|
|
182
|
+
portalRoute?: string;
|
|
183
|
+
resourceReferences: EnvironmentLogicalResourceReferenceV1[];
|
|
184
|
+
sourceReferences: EnvironmentLogicalEvidenceReferenceV1[];
|
|
185
|
+
}
|
|
186
|
+
export interface EnvironmentRecommendationV1 {
|
|
135
187
|
recommendationId: string;
|
|
188
|
+
pillar: EnvironmentPillarV1;
|
|
136
189
|
safeLabel: string;
|
|
190
|
+
portalRoute: string;
|
|
137
191
|
description?: string;
|
|
192
|
+
impact?: EnvironmentImpactV1;
|
|
193
|
+
effort?: EnvironmentEffortV1;
|
|
194
|
+
confidencePercentage?: string;
|
|
195
|
+
affectedResourceCount?: number;
|
|
138
196
|
potentialSavings?: EnvironmentMoneyValueV1;
|
|
139
|
-
|
|
197
|
+
resourceReferences: EnvironmentLogicalResourceReferenceV1[];
|
|
140
198
|
sourceReferences: EnvironmentLogicalEvidenceReferenceV1[];
|
|
141
199
|
}
|
|
142
|
-
export interface
|
|
200
|
+
export interface EnvironmentChangeV1 {
|
|
143
201
|
key: string;
|
|
202
|
+
pillars: EnvironmentPillarV1[];
|
|
144
203
|
safeLabel: string;
|
|
145
204
|
description: string;
|
|
146
205
|
direction: 'increase' | 'decrease' | 'unchanged' | 'unknown';
|
|
@@ -150,22 +209,26 @@ export interface EnvironmentCostChangeV1 {
|
|
|
150
209
|
export interface EnvironmentProjectionWarningV1 {
|
|
151
210
|
code: string;
|
|
152
211
|
safeLabel: string;
|
|
212
|
+
pillar?: EnvironmentPillarV1;
|
|
153
213
|
detail?: string;
|
|
154
214
|
sourceReferences: EnvironmentLogicalEvidenceReferenceV1[];
|
|
155
215
|
}
|
|
156
|
-
export interface
|
|
216
|
+
export interface EnvironmentSubscriptionProjectionV1 {
|
|
157
217
|
schemaVersion: 1;
|
|
158
218
|
scope: EnvironmentScopeV1;
|
|
159
219
|
sourceBinding: EnvironmentSourceBindingV1;
|
|
160
220
|
generatedAt: string;
|
|
161
221
|
subscription: EnvironmentSubscriptionSummaryV1;
|
|
162
222
|
sourceCoverage: EnvironmentSourceCoverageV1;
|
|
223
|
+
estateSummary: EnvironmentEstateSummaryV1;
|
|
163
224
|
costSummary: EnvironmentCostSummaryV1;
|
|
164
225
|
serviceFamilyRollups: EnvironmentBoundedListV1<EnvironmentCostRollupV1>;
|
|
165
226
|
estateCostRollups: EnvironmentBoundedListV1<EnvironmentCostRollupV1>;
|
|
166
227
|
costDrivers: EnvironmentBoundedListV1<EnvironmentCostDriverV1>;
|
|
167
|
-
|
|
168
|
-
|
|
228
|
+
pillars: EnvironmentPillarSummariesV1;
|
|
229
|
+
findings: EnvironmentBoundedListV1<EnvironmentFindingV1>;
|
|
230
|
+
recommendations: EnvironmentBoundedListV1<EnvironmentRecommendationV1>;
|
|
231
|
+
changes: EnvironmentBoundedListV1<EnvironmentChangeV1>;
|
|
169
232
|
warnings: EnvironmentBoundedListV1<EnvironmentProjectionWarningV1>;
|
|
170
233
|
sourceReferences: EnvironmentLogicalEvidenceReferenceV1[];
|
|
171
234
|
}
|
|
@@ -176,7 +239,7 @@ export type EnvironmentDocumentDescriptorV1 = {
|
|
|
176
239
|
contentSha256: string;
|
|
177
240
|
approximateTokenCount: number;
|
|
178
241
|
} | {
|
|
179
|
-
name:
|
|
242
|
+
name: EnvironmentMarkdownDocumentNameV1;
|
|
180
243
|
mediaType: 'text/markdown; charset=utf-8';
|
|
181
244
|
byteCount: number;
|
|
182
245
|
contentSha256: string;
|
|
@@ -189,7 +252,7 @@ export interface EnvironmentCompiledGenerationPointerV1 {
|
|
|
189
252
|
scope: EnvironmentScopeV1;
|
|
190
253
|
sourceBinding: EnvironmentSourceBindingV1;
|
|
191
254
|
treeDigestSha256: string;
|
|
192
|
-
fileCount:
|
|
255
|
+
fileCount: (typeof ENVIRONMENT_DOCUMENT_NAMES_V1)['length'];
|
|
193
256
|
generatedAt: string;
|
|
194
257
|
}
|
|
195
258
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../../src/environment/contracts.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../../src/environment/contracts.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ENVIRONMENT_ARTIFACT_KINDS_V1 = exports.ENVIRONMENT_DOCUMENT_NAMES_V1 = exports.ENVIRONMENT_CONTRACT_LIMITS_V1 = void 0;
|
|
4
|
-
/**
|
|
3
|
+
exports.ENVIRONMENT_EFFORTS_V1 = exports.ENVIRONMENT_IMPACTS_V1 = exports.ENVIRONMENT_SEVERITIES_V1 = exports.ENVIRONMENT_FINDING_KINDS_V1 = exports.ENVIRONMENT_ARTIFACT_KINDS_V1 = exports.ENVIRONMENT_DOCUMENT_NAMES_V1 = exports.ENVIRONMENT_PILLARS_V1 = exports.ENVIRONMENT_CONTRACT_LIMITS_V1 = void 0;
|
|
4
|
+
/** Single pre-release multi-pillar environment contract shared by producers and consumers. */
|
|
5
5
|
exports.ENVIRONMENT_CONTRACT_LIMITS_V1 = Object.freeze({
|
|
6
6
|
completedPointerBytes: 16 * 1024,
|
|
7
|
-
projectionBytes:
|
|
8
|
-
environmentIndexBytes:
|
|
9
|
-
|
|
7
|
+
projectionBytes: 256 * 1024,
|
|
8
|
+
environmentIndexBytes: 8 * 1024,
|
|
9
|
+
pillarDocumentBytes: 8 * 1024,
|
|
10
10
|
boundedListItems: 50,
|
|
11
11
|
customerStringScalars: 4096,
|
|
12
12
|
safeLabelScalars: 512,
|
|
@@ -14,8 +14,44 @@ exports.ENVIRONMENT_CONTRACT_LIMITS_V1 = Object.freeze({
|
|
|
14
14
|
environmentRunIdAsciiCharacters: 128,
|
|
15
15
|
sourceIdentityScalars: 256,
|
|
16
16
|
logicalReferencePayloadBytes: 4 * 1024,
|
|
17
|
-
validatedContainerDepth:
|
|
17
|
+
validatedContainerDepth: 10,
|
|
18
18
|
});
|
|
19
|
-
exports.
|
|
20
|
-
exports.
|
|
19
|
+
exports.ENVIRONMENT_PILLARS_V1 = ['cost', 'security', 'governance', 'reliability', 'performance', 'operations'];
|
|
20
|
+
exports.ENVIRONMENT_DOCUMENT_NAMES_V1 = [
|
|
21
|
+
'projection.json',
|
|
22
|
+
'environment-index.md',
|
|
23
|
+
'pillars/cost.md',
|
|
24
|
+
'pillars/security.md',
|
|
25
|
+
'pillars/governance.md',
|
|
26
|
+
'pillars/reliability.md',
|
|
27
|
+
'pillars/performance.md',
|
|
28
|
+
'pillars/operations.md',
|
|
29
|
+
];
|
|
30
|
+
exports.ENVIRONMENT_ARTIFACT_KINDS_V1 = [
|
|
31
|
+
'subscription-summary',
|
|
32
|
+
'subscription-resources',
|
|
33
|
+
'subscription-recommendations',
|
|
34
|
+
'subscription-service-retirements',
|
|
35
|
+
'subscription-monitor-alerts',
|
|
36
|
+
'subscription-system-tracks',
|
|
37
|
+
'subscription-metrics',
|
|
38
|
+
];
|
|
39
|
+
exports.ENVIRONMENT_FINDING_KINDS_V1 = [
|
|
40
|
+
'recommendation',
|
|
41
|
+
'security-posture',
|
|
42
|
+
'public-exposure',
|
|
43
|
+
'governance',
|
|
44
|
+
'compliance',
|
|
45
|
+
'service-retirement',
|
|
46
|
+
'data-protection',
|
|
47
|
+
'health',
|
|
48
|
+
'performance',
|
|
49
|
+
'scaling',
|
|
50
|
+
'operations',
|
|
51
|
+
'monitoring',
|
|
52
|
+
'topology',
|
|
53
|
+
];
|
|
54
|
+
exports.ENVIRONMENT_SEVERITIES_V1 = ['critical', 'high', 'medium', 'low', 'informational', 'unknown'];
|
|
55
|
+
exports.ENVIRONMENT_IMPACTS_V1 = ['high', 'medium', 'low', 'unknown'];
|
|
56
|
+
exports.ENVIRONMENT_EFFORTS_V1 = ['high', 'medium', 'low', 'unknown'];
|
|
21
57
|
//# sourceMappingURL=contracts.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contracts.js","sourceRoot":"","sources":["../../src/environment/contracts.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"contracts.js","sourceRoot":"","sources":["../../src/environment/contracts.ts"],"names":[],"mappings":";;;AAAA,8FAA8F;AACjF,QAAA,8BAA8B,GAAG,MAAM,CAAC,MAAM,CAAC;IAC1D,qBAAqB,EAAE,EAAE,GAAG,IAAI;IAChC,eAAe,EAAE,GAAG,GAAG,IAAI;IAC3B,qBAAqB,EAAE,CAAC,GAAG,IAAI;IAC/B,mBAAmB,EAAE,CAAC,GAAG,IAAI;IAC7B,gBAAgB,EAAE,EAAE;IACpB,qBAAqB,EAAE,IAAI;IAC3B,gBAAgB,EAAE,GAAG;IACrB,sBAAsB,EAAE,IAAI;IAC5B,+BAA+B,EAAE,GAAG;IACpC,qBAAqB,EAAE,GAAG;IAC1B,4BAA4B,EAAE,CAAC,GAAG,IAAI;IACtC,uBAAuB,EAAE,EAAE;CACnB,CAAC,CAAC;AAEC,QAAA,sBAAsB,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,YAAY,CAAU,CAAC;AAEjH,QAAA,6BAA6B,GAAG;IAC3C,iBAAiB;IACjB,sBAAsB;IACtB,iBAAiB;IACjB,qBAAqB;IACrB,uBAAuB;IACvB,wBAAwB;IACxB,wBAAwB;IACxB,uBAAuB;CACf,CAAC;AAEE,QAAA,6BAA6B,GAAG;IAC3C,sBAAsB;IACtB,wBAAwB;IACxB,8BAA8B;IAC9B,kCAAkC;IAClC,6BAA6B;IAC7B,4BAA4B;IAC5B,sBAAsB;CACd,CAAC;AAEE,QAAA,4BAA4B,GAAG;IAC1C,gBAAgB;IAChB,kBAAkB;IAClB,iBAAiB;IACjB,YAAY;IACZ,YAAY;IACZ,oBAAoB;IACpB,iBAAiB;IACjB,QAAQ;IACR,aAAa;IACb,SAAS;IACT,YAAY;IACZ,YAAY;IACZ,UAAU;CACF,CAAC;AAEE,QAAA,yBAAyB,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,eAAe,EAAE,SAAS,CAAU,CAAC;AACvG,QAAA,sBAAsB,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,CAAU,CAAC;AACvE,QAAA,sBAAsB,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,CAAU,CAAC"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
import { type EnvironmentArtifactKindV1, type EnvironmentCompiledGenerationPointerV1, type EnvironmentCoverageStateV1, type EnvironmentDocumentDescriptorV1, type EnvironmentMoneyValueV1, type EnvironmentScopeV1, type EnvironmentSourceBindingV1, type EnvironmentSourceGenerationV1, type
|
|
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';
|
|
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
|
+
/** Validates one admitted environment pillar. */
|
|
5
|
+
export declare const isEnvironmentPillarV1: (value: unknown) => value is EnvironmentPillarV1;
|
|
4
6
|
/** Validates the closed phase-one Azure subscription scope. */
|
|
5
7
|
export declare const isEnvironmentScopeV1: (value: unknown) => value is EnvironmentScopeV1;
|
|
6
8
|
/** Validates the client-safe identity of one authoritative source generation. */
|
|
@@ -13,15 +15,15 @@ export declare const isEnvironmentRunIdV1: (value: unknown) => value is string;
|
|
|
13
15
|
export declare const isEnvironmentMoneyValueV1: (value: unknown) => value is EnvironmentMoneyValueV1;
|
|
14
16
|
/** Validates the closed coverage-state union and state-specific freshness rules. */
|
|
15
17
|
export declare const isEnvironmentCoverageStateV1: (value: unknown) => value is EnvironmentCoverageStateV1;
|
|
16
|
-
/** Validates the strict, bounded
|
|
17
|
-
export declare const
|
|
18
|
-
/** Validates one descriptor from the exact V1
|
|
18
|
+
/** Validates the strict, bounded multi-pillar subscription environment projection. */
|
|
19
|
+
export declare const isEnvironmentSubscriptionProjectionV1: (value: unknown) => value is EnvironmentSubscriptionProjectionV1;
|
|
20
|
+
/** Validates one descriptor from the exact V1 multi-pillar document allowlist. */
|
|
19
21
|
export declare const isEnvironmentDocumentDescriptorV1: (value: unknown) => value is EnvironmentDocumentDescriptorV1;
|
|
20
|
-
/** Validates that descriptors contain
|
|
22
|
+
/** Validates that descriptors contain every allowlisted V1 document exactly once. */
|
|
21
23
|
export declare const isEnvironmentDocumentDescriptorSetV1: (value: unknown) => value is EnvironmentDocumentDescriptorV1[];
|
|
22
24
|
/** Validates an atomically visible completed environment-generation pointer. */
|
|
23
25
|
export declare const isEnvironmentCompiledGenerationPointerV1: (value: unknown) => value is EnvironmentCompiledGenerationPointerV1;
|
|
24
|
-
/** Validates
|
|
26
|
+
/** Validates an artifact kind without widening the closed V1 union. */
|
|
25
27
|
export declare const isEnvironmentArtifactKindV1: (value: unknown) => value is EnvironmentArtifactKindV1;
|
|
26
28
|
/** Validates the V1 safe-label bound used by customer-visible evidence metadata. */
|
|
27
29
|
export declare const isEnvironmentSafeLabelV1: (value: unknown) => value is string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/environment/validation.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/environment/validation.ts"],"names":[],"mappings":"AAAA,OAAO,EASL,KAAK,yBAAyB,EAG9B,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;AA6JF,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,11 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.isEnvironmentSafeLabelV1 = exports.isEnvironmentArtifactKindV1 = exports.isEnvironmentCompiledGenerationPointerV1 = exports.isEnvironmentDocumentDescriptorSetV1 = exports.isEnvironmentDocumentDescriptorV1 = exports.
|
|
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;
|
|
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");
|
|
7
7
|
const DOCUMENT_NAMES = new Set(contracts_js_1.ENVIRONMENT_DOCUMENT_NAMES_V1);
|
|
8
8
|
const ARTIFACT_KINDS = new Set(contracts_js_1.ENVIRONMENT_ARTIFACT_KINDS_V1);
|
|
9
|
+
const PILLARS = new Set(contracts_js_1.ENVIRONMENT_PILLARS_V1);
|
|
10
|
+
const FINDING_KINDS = new Set(contracts_js_1.ENVIRONMENT_FINDING_KINDS_V1);
|
|
11
|
+
const SEVERITIES = new Set(contracts_js_1.ENVIRONMENT_SEVERITIES_V1);
|
|
12
|
+
const IMPACTS = new Set(contracts_js_1.ENVIRONMENT_IMPACTS_V1);
|
|
13
|
+
const EFFORTS = new Set(contracts_js_1.ENVIRONMENT_EFFORTS_V1);
|
|
9
14
|
const MONEY_BASES = new Set(['billed', 'amortized']);
|
|
10
15
|
const MONEY_PROVENANCE = new Set([
|
|
11
16
|
'subscription-summary',
|
|
@@ -33,6 +38,14 @@ const isReferenceArray = (value) => Array.isArray(value) &&
|
|
|
33
38
|
value.length <= contracts_js_1.ENVIRONMENT_CONTRACT_LIMITS_V1.boundedListItems &&
|
|
34
39
|
value.every(references_js_1.isEnvironmentLogicalEvidenceReferenceV1) &&
|
|
35
40
|
new Set(value).size === value.length;
|
|
41
|
+
const isResourceReferenceArray = (value) => Array.isArray(value) &&
|
|
42
|
+
value.length <= contracts_js_1.ENVIRONMENT_CONTRACT_LIMITS_V1.boundedListItems &&
|
|
43
|
+
value.every(references_js_1.isEnvironmentLogicalResourceReferenceV1) &&
|
|
44
|
+
new Set(value).size === value.length;
|
|
45
|
+
const isPercentage = (value) => typeof value === 'string' && internal_js_1.DECIMAL_PATTERN.test(value) && Number(value) <= 100;
|
|
46
|
+
/** Validates one admitted environment pillar. */
|
|
47
|
+
const isEnvironmentPillarV1 = (value) => typeof value === 'string' && PILLARS.has(value);
|
|
48
|
+
exports.isEnvironmentPillarV1 = isEnvironmentPillarV1;
|
|
36
49
|
/** Validates the closed phase-one Azure subscription scope. */
|
|
37
50
|
const isEnvironmentScopeV1 = (value) => (0, internal_js_1.isRecord)(value) &&
|
|
38
51
|
(0, internal_js_1.hasExactKeys)(value, ['kind', 'tenantId', 'companyId', 'subscriptionId']) &&
|
|
@@ -172,17 +185,63 @@ const isCostDriver = (value) => (0, internal_js_1.isRecord)(value) &&
|
|
|
172
185
|
(value.portalRoute === undefined || (0, exports.isEnvironmentPortalRouteV1)(value.portalRoute)) &&
|
|
173
186
|
(value.resourceReference === undefined || (0, references_js_1.isEnvironmentLogicalResourceReferenceV1)(value.resourceReference)) &&
|
|
174
187
|
isReferenceArray(value.sourceReferences);
|
|
188
|
+
const isPillarScore = (value) => (0, internal_js_1.isRecord)(value) &&
|
|
189
|
+
(0, internal_js_1.hasExactKeys)(value, ['value', 'maximum', 'safeLabel']) &&
|
|
190
|
+
isPercentage(value.value) &&
|
|
191
|
+
value.maximum === '100' &&
|
|
192
|
+
(0, internal_js_1.isSafeLabel)(value.safeLabel);
|
|
193
|
+
const isPillarSummary = (value) => (0, internal_js_1.isRecord)(value) &&
|
|
194
|
+
(0, internal_js_1.hasExactKeys)(value, ['pillar', 'coverage', 'findingCount', 'recommendationCount', 'affectedResourceCount', 'portalRoute', 'sourceReferences'], ['score']) &&
|
|
195
|
+
(0, exports.isEnvironmentPillarV1)(value.pillar) &&
|
|
196
|
+
(0, exports.isEnvironmentCoverageStateV1)(value.coverage) &&
|
|
197
|
+
(0, internal_js_1.isNonNegativeInteger)(value.findingCount) &&
|
|
198
|
+
(0, internal_js_1.isNonNegativeInteger)(value.recommendationCount) &&
|
|
199
|
+
(0, internal_js_1.isNonNegativeInteger)(value.affectedResourceCount) &&
|
|
200
|
+
(0, exports.isEnvironmentPortalRouteV1)(value.portalRoute) &&
|
|
201
|
+
(value.score === undefined || isPillarScore(value.score)) &&
|
|
202
|
+
isReferenceArray(value.sourceReferences);
|
|
203
|
+
const isPillarSummaries = (value) => (0, internal_js_1.isRecord)(value) &&
|
|
204
|
+
(0, internal_js_1.hasExactKeys)(value, contracts_js_1.ENVIRONMENT_PILLARS_V1) &&
|
|
205
|
+
contracts_js_1.ENVIRONMENT_PILLARS_V1.every(pillar => isPillarSummary(value[pillar]) && value[pillar]?.pillar === pillar);
|
|
206
|
+
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', 'confidencePercentage', 'affectedResourceCount', 'portalRoute']) &&
|
|
208
|
+
(0, internal_js_1.isScopeIdentifier)(value.findingId) &&
|
|
209
|
+
(0, exports.isEnvironmentPillarV1)(value.pillar) &&
|
|
210
|
+
typeof value.kind === 'string' &&
|
|
211
|
+
FINDING_KINDS.has(value.kind) &&
|
|
212
|
+
(0, internal_js_1.isSafeLabel)(value.safeLabel) &&
|
|
213
|
+
typeof value.severity === 'string' &&
|
|
214
|
+
SEVERITIES.has(value.severity) &&
|
|
215
|
+
(value.description === undefined || (0, internal_js_1.isCustomerString)(value.description)) &&
|
|
216
|
+
(value.impact === undefined || (typeof value.impact === 'string' && IMPACTS.has(value.impact))) &&
|
|
217
|
+
(value.effort === undefined || (typeof value.effort === 'string' && EFFORTS.has(value.effort))) &&
|
|
218
|
+
(value.confidencePercentage === undefined || isPercentage(value.confidencePercentage)) &&
|
|
219
|
+
(value.affectedResourceCount === undefined || (0, internal_js_1.isNonNegativeInteger)(value.affectedResourceCount)) &&
|
|
220
|
+
(value.portalRoute === undefined || (0, exports.isEnvironmentPortalRouteV1)(value.portalRoute)) &&
|
|
221
|
+
isResourceReferenceArray(value.resourceReferences) &&
|
|
222
|
+
isReferenceArray(value.sourceReferences);
|
|
175
223
|
const isRecommendation = (value) => (0, internal_js_1.isRecord)(value) &&
|
|
176
|
-
(0, internal_js_1.hasExactKeys)(value, ['recommendationId', 'safeLabel', 'portalRoute', 'sourceReferences'], ['description', 'potentialSavings']) &&
|
|
224
|
+
(0, internal_js_1.hasExactKeys)(value, ['recommendationId', 'pillar', 'safeLabel', 'portalRoute', 'resourceReferences', 'sourceReferences'], ['description', 'impact', 'effort', 'confidencePercentage', 'affectedResourceCount', 'potentialSavings']) &&
|
|
177
225
|
(0, internal_js_1.isScopeIdentifier)(value.recommendationId) &&
|
|
226
|
+
(0, exports.isEnvironmentPillarV1)(value.pillar) &&
|
|
178
227
|
(0, internal_js_1.isSafeLabel)(value.safeLabel) &&
|
|
179
228
|
(0, exports.isEnvironmentPortalRouteV1)(value.portalRoute) &&
|
|
180
229
|
(value.description === undefined || (0, internal_js_1.isCustomerString)(value.description)) &&
|
|
230
|
+
(value.impact === undefined || (typeof value.impact === 'string' && IMPACTS.has(value.impact))) &&
|
|
231
|
+
(value.effort === undefined || (typeof value.effort === 'string' && EFFORTS.has(value.effort))) &&
|
|
232
|
+
(value.confidencePercentage === undefined || isPercentage(value.confidencePercentage)) &&
|
|
233
|
+
(value.affectedResourceCount === undefined || (0, internal_js_1.isNonNegativeInteger)(value.affectedResourceCount)) &&
|
|
181
234
|
(value.potentialSavings === undefined || isSavingsMoney(value.potentialSavings)) &&
|
|
235
|
+
isResourceReferenceArray(value.resourceReferences) &&
|
|
182
236
|
isReferenceArray(value.sourceReferences);
|
|
183
|
-
const
|
|
184
|
-
(0, internal_js_1.hasExactKeys)(value, ['key', 'safeLabel', 'description', 'direction', 'sourceReferences'], ['amount']) &&
|
|
237
|
+
const isChange = (value) => (0, internal_js_1.isRecord)(value) &&
|
|
238
|
+
(0, internal_js_1.hasExactKeys)(value, ['key', 'pillars', 'safeLabel', 'description', 'direction', 'sourceReferences'], ['amount']) &&
|
|
185
239
|
isGeneralKey(value.key) &&
|
|
240
|
+
Array.isArray(value.pillars) &&
|
|
241
|
+
value.pillars.length > 0 &&
|
|
242
|
+
value.pillars.length <= contracts_js_1.ENVIRONMENT_PILLARS_V1.length &&
|
|
243
|
+
value.pillars.every(exports.isEnvironmentPillarV1) &&
|
|
244
|
+
new Set(value.pillars).size === value.pillars.length &&
|
|
186
245
|
(0, internal_js_1.isSafeLabel)(value.safeLabel) &&
|
|
187
246
|
(0, internal_js_1.isCustomerString)(value.description) &&
|
|
188
247
|
typeof value.direction === 'string' &&
|
|
@@ -190,26 +249,35 @@ const isCostChange = (value) => (0, internal_js_1.isRecord)(value) &&
|
|
|
190
249
|
(value.amount === undefined || isObservedMoney(value.amount)) &&
|
|
191
250
|
isReferenceArray(value.sourceReferences);
|
|
192
251
|
const isWarning = (value) => (0, internal_js_1.isRecord)(value) &&
|
|
193
|
-
(0, internal_js_1.hasExactKeys)(value, ['code', 'safeLabel', 'sourceReferences'], ['detail']) &&
|
|
252
|
+
(0, internal_js_1.hasExactKeys)(value, ['code', 'safeLabel', 'sourceReferences'], ['pillar', 'detail']) &&
|
|
194
253
|
isGeneralKey(value.code) &&
|
|
195
254
|
(0, internal_js_1.isSafeLabel)(value.safeLabel) &&
|
|
255
|
+
(value.pillar === undefined || (0, exports.isEnvironmentPillarV1)(value.pillar)) &&
|
|
196
256
|
(value.detail === undefined || (0, internal_js_1.isCustomerString)(value.detail)) &&
|
|
197
257
|
isReferenceArray(value.sourceReferences);
|
|
198
258
|
const isSourceCoverage = (value) => (0, internal_js_1.isRecord)(value) &&
|
|
199
|
-
(0, internal_js_1.hasExactKeys)(value, [
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
259
|
+
(0, internal_js_1.hasExactKeys)(value, [
|
|
260
|
+
'completedViewSet',
|
|
261
|
+
'subscriptionSummary',
|
|
262
|
+
'resources',
|
|
263
|
+
'recommendations',
|
|
264
|
+
'serviceRetirements',
|
|
265
|
+
'monitorAlerts',
|
|
266
|
+
'pluginMetrics',
|
|
267
|
+
]) &&
|
|
268
|
+
Object.values(value).every(exports.isEnvironmentCoverageStateV1);
|
|
269
|
+
const isEstateSummary = (value) => (0, internal_js_1.isRecord)(value) &&
|
|
270
|
+
(0, internal_js_1.hasExactKeys)(value, ['resourceCount', 'serviceFamilyCount', 'locationCount']) &&
|
|
271
|
+
(0, internal_js_1.isNonNegativeInteger)(value.resourceCount) &&
|
|
272
|
+
(0, internal_js_1.isNonNegativeInteger)(value.serviceFamilyCount) &&
|
|
273
|
+
(0, internal_js_1.isNonNegativeInteger)(value.locationCount);
|
|
205
274
|
const isCostSummary = (value) => (0, internal_js_1.isRecord)(value) &&
|
|
206
|
-
(0, internal_js_1.hasExactKeys)(value, [], ['observedCost', 'potentialSavings', '
|
|
275
|
+
(0, internal_js_1.hasExactKeys)(value, [], ['observedCost', 'potentialSavings', 'costRecommendationCount']) &&
|
|
207
276
|
(value.observedCost === undefined || isObservedMoney(value.observedCost)) &&
|
|
208
277
|
(value.potentialSavings === undefined || isSavingsMoney(value.potentialSavings)) &&
|
|
209
|
-
(value.
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
const isEnvironmentSubscriptionCostProjectionV1 = (value) => {
|
|
278
|
+
(value.costRecommendationCount === undefined || (0, internal_js_1.isNonNegativeInteger)(value.costRecommendationCount));
|
|
279
|
+
/** Validates the strict, bounded multi-pillar subscription environment projection. */
|
|
280
|
+
const isEnvironmentSubscriptionProjectionV1 = (value) => {
|
|
213
281
|
if (!(0, internal_js_1.hasSafeContainerShape)(value) || !(0, internal_js_1.isRecord)(value))
|
|
214
282
|
return false;
|
|
215
283
|
if (!(0, internal_js_1.hasExactKeys)(value, [
|
|
@@ -219,10 +287,13 @@ const isEnvironmentSubscriptionCostProjectionV1 = (value) => {
|
|
|
219
287
|
'generatedAt',
|
|
220
288
|
'subscription',
|
|
221
289
|
'sourceCoverage',
|
|
290
|
+
'estateSummary',
|
|
222
291
|
'costSummary',
|
|
223
292
|
'serviceFamilyRollups',
|
|
224
293
|
'estateCostRollups',
|
|
225
294
|
'costDrivers',
|
|
295
|
+
'pillars',
|
|
296
|
+
'findings',
|
|
226
297
|
'recommendations',
|
|
227
298
|
'changes',
|
|
228
299
|
'warnings',
|
|
@@ -239,27 +310,30 @@ const isEnvironmentSubscriptionCostProjectionV1 = (value) => {
|
|
|
239
310
|
!(0, internal_js_1.isSafeLabel)(value.subscription.safeLabel) ||
|
|
240
311
|
!(0, exports.isEnvironmentPortalRouteV1)(value.subscription.portalRoute) ||
|
|
241
312
|
!isSourceCoverage(value.sourceCoverage) ||
|
|
313
|
+
!isEstateSummary(value.estateSummary) ||
|
|
242
314
|
!isCostSummary(value.costSummary) ||
|
|
243
315
|
!isBoundedList(value.serviceFamilyRollups, isCostRollup) ||
|
|
244
316
|
!isBoundedList(value.estateCostRollups, isCostRollup) ||
|
|
245
317
|
!isBoundedList(value.costDrivers, isCostDriver) ||
|
|
318
|
+
!isPillarSummaries(value.pillars) ||
|
|
319
|
+
!isBoundedList(value.findings, isFinding) ||
|
|
246
320
|
!isBoundedList(value.recommendations, isRecommendation) ||
|
|
247
|
-
!isBoundedList(value.changes,
|
|
321
|
+
!isBoundedList(value.changes, isChange) ||
|
|
248
322
|
!isBoundedList(value.warnings, isWarning) ||
|
|
249
323
|
!isReferenceArray(value.sourceReferences)) {
|
|
250
324
|
return false;
|
|
251
325
|
}
|
|
252
326
|
return (0, internal_js_1.utf8ByteLength)(JSON.stringify(value)) <= contracts_js_1.ENVIRONMENT_CONTRACT_LIMITS_V1.projectionBytes;
|
|
253
327
|
};
|
|
254
|
-
exports.
|
|
328
|
+
exports.isEnvironmentSubscriptionProjectionV1 = isEnvironmentSubscriptionProjectionV1;
|
|
255
329
|
const descriptorByteLimit = (name) => {
|
|
256
330
|
if (name === 'projection.json')
|
|
257
331
|
return contracts_js_1.ENVIRONMENT_CONTRACT_LIMITS_V1.projectionBytes;
|
|
258
332
|
if (name === 'environment-index.md')
|
|
259
333
|
return contracts_js_1.ENVIRONMENT_CONTRACT_LIMITS_V1.environmentIndexBytes;
|
|
260
|
-
return contracts_js_1.ENVIRONMENT_CONTRACT_LIMITS_V1.
|
|
334
|
+
return contracts_js_1.ENVIRONMENT_CONTRACT_LIMITS_V1.pillarDocumentBytes;
|
|
261
335
|
};
|
|
262
|
-
/** Validates one descriptor from the exact V1
|
|
336
|
+
/** Validates one descriptor from the exact V1 multi-pillar document allowlist. */
|
|
263
337
|
const isEnvironmentDocumentDescriptorV1 = (value) => {
|
|
264
338
|
if (!(0, internal_js_1.isRecord)(value) || !(0, internal_js_1.hasExactKeys)(value, ['name', 'mediaType', 'byteCount', 'contentSha256', 'approximateTokenCount']))
|
|
265
339
|
return false;
|
|
@@ -275,7 +349,7 @@ const isEnvironmentDocumentDescriptorV1 = (value) => {
|
|
|
275
349
|
(0, internal_js_1.isNonNegativeInteger)(value.approximateTokenCount));
|
|
276
350
|
};
|
|
277
351
|
exports.isEnvironmentDocumentDescriptorV1 = isEnvironmentDocumentDescriptorV1;
|
|
278
|
-
/** Validates that descriptors contain
|
|
352
|
+
/** Validates that descriptors contain every allowlisted V1 document exactly once. */
|
|
279
353
|
const isEnvironmentDocumentDescriptorSetV1 = (value) => Array.isArray(value) &&
|
|
280
354
|
value.length === contracts_js_1.ENVIRONMENT_DOCUMENT_NAMES_V1.length &&
|
|
281
355
|
value.every(exports.isEnvironmentDocumentDescriptorV1) &&
|
|
@@ -295,7 +369,7 @@ const isEnvironmentCompiledGenerationPointerV1 = (value) => {
|
|
|
295
369
|
!scopesEqual(value.scope, value.sourceBinding.scope) ||
|
|
296
370
|
typeof value.treeDigestSha256 !== 'string' ||
|
|
297
371
|
!internal_js_1.SHA256_PATTERN.test(value.treeDigestSha256) ||
|
|
298
|
-
value.fileCount !==
|
|
372
|
+
value.fileCount !== contracts_js_1.ENVIRONMENT_DOCUMENT_NAMES_V1.length ||
|
|
299
373
|
!(0, internal_js_1.isCanonicalUtcTimestamp)(value.generatedAt) ||
|
|
300
374
|
Date.parse(value.generatedAt) < Date.parse(value.sourceBinding.completedAt)) {
|
|
301
375
|
return false;
|
|
@@ -311,7 +385,7 @@ const isEnvironmentCompiledGenerationPointerV1 = (value) => {
|
|
|
311
385
|
(0, internal_js_1.utf8ByteLength)(JSON.stringify(value)) <= contracts_js_1.ENVIRONMENT_CONTRACT_LIMITS_V1.completedPointerBytes);
|
|
312
386
|
};
|
|
313
387
|
exports.isEnvironmentCompiledGenerationPointerV1 = isEnvironmentCompiledGenerationPointerV1;
|
|
314
|
-
/** Validates
|
|
388
|
+
/** Validates an artifact kind without widening the closed V1 union. */
|
|
315
389
|
const isEnvironmentArtifactKindV1 = (value) => typeof value === 'string' && ARTIFACT_KINDS.has(value);
|
|
316
390
|
exports.isEnvironmentArtifactKindV1 = isEnvironmentArtifactKindV1;
|
|
317
391
|
/** Validates the V1 safe-label bound used by customer-visible evidence metadata. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/environment/validation.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/environment/validation.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/** Single pre-release multi-pillar environment contract shared by producers and consumers. */
|
|
2
2
|
export const ENVIRONMENT_CONTRACT_LIMITS_V1 = Object.freeze({
|
|
3
3
|
completedPointerBytes: 16 * 1024,
|
|
4
|
-
projectionBytes:
|
|
5
|
-
environmentIndexBytes:
|
|
6
|
-
|
|
4
|
+
projectionBytes: 256 * 1024,
|
|
5
|
+
environmentIndexBytes: 8 * 1024,
|
|
6
|
+
pillarDocumentBytes: 8 * 1024,
|
|
7
7
|
boundedListItems: 50,
|
|
8
8
|
customerStringScalars: 4096,
|
|
9
9
|
safeLabelScalars: 512,
|
|
@@ -11,7 +11,43 @@ export const ENVIRONMENT_CONTRACT_LIMITS_V1 = Object.freeze({
|
|
|
11
11
|
environmentRunIdAsciiCharacters: 128,
|
|
12
12
|
sourceIdentityScalars: 256,
|
|
13
13
|
logicalReferencePayloadBytes: 4 * 1024,
|
|
14
|
-
validatedContainerDepth:
|
|
14
|
+
validatedContainerDepth: 10,
|
|
15
15
|
});
|
|
16
|
-
export const
|
|
17
|
-
export const
|
|
16
|
+
export const ENVIRONMENT_PILLARS_V1 = ['cost', 'security', 'governance', 'reliability', 'performance', 'operations'];
|
|
17
|
+
export const ENVIRONMENT_DOCUMENT_NAMES_V1 = [
|
|
18
|
+
'projection.json',
|
|
19
|
+
'environment-index.md',
|
|
20
|
+
'pillars/cost.md',
|
|
21
|
+
'pillars/security.md',
|
|
22
|
+
'pillars/governance.md',
|
|
23
|
+
'pillars/reliability.md',
|
|
24
|
+
'pillars/performance.md',
|
|
25
|
+
'pillars/operations.md',
|
|
26
|
+
];
|
|
27
|
+
export const ENVIRONMENT_ARTIFACT_KINDS_V1 = [
|
|
28
|
+
'subscription-summary',
|
|
29
|
+
'subscription-resources',
|
|
30
|
+
'subscription-recommendations',
|
|
31
|
+
'subscription-service-retirements',
|
|
32
|
+
'subscription-monitor-alerts',
|
|
33
|
+
'subscription-system-tracks',
|
|
34
|
+
'subscription-metrics',
|
|
35
|
+
];
|
|
36
|
+
export const ENVIRONMENT_FINDING_KINDS_V1 = [
|
|
37
|
+
'recommendation',
|
|
38
|
+
'security-posture',
|
|
39
|
+
'public-exposure',
|
|
40
|
+
'governance',
|
|
41
|
+
'compliance',
|
|
42
|
+
'service-retirement',
|
|
43
|
+
'data-protection',
|
|
44
|
+
'health',
|
|
45
|
+
'performance',
|
|
46
|
+
'scaling',
|
|
47
|
+
'operations',
|
|
48
|
+
'monitoring',
|
|
49
|
+
'topology',
|
|
50
|
+
];
|
|
51
|
+
export const ENVIRONMENT_SEVERITIES_V1 = ['critical', 'high', 'medium', 'low', 'informational', 'unknown'];
|
|
52
|
+
export const ENVIRONMENT_IMPACTS_V1 = ['high', 'medium', 'low', 'unknown'];
|
|
53
|
+
export const ENVIRONMENT_EFFORTS_V1 = ['high', 'medium', 'low', 'unknown'];
|
|
@@ -1,8 +1,13 @@
|
|
|
1
|
-
import { ENVIRONMENT_ARTIFACT_KINDS_V1, ENVIRONMENT_CONTRACT_LIMITS_V1, ENVIRONMENT_DOCUMENT_NAMES_V1, } from './contracts.js';
|
|
1
|
+
import { ENVIRONMENT_ARTIFACT_KINDS_V1, ENVIRONMENT_CONTRACT_LIMITS_V1, ENVIRONMENT_DOCUMENT_NAMES_V1, ENVIRONMENT_EFFORTS_V1, ENVIRONMENT_FINDING_KINDS_V1, ENVIRONMENT_IMPACTS_V1, ENVIRONMENT_PILLARS_V1, ENVIRONMENT_SEVERITIES_V1, } from './contracts.js';
|
|
2
2
|
import { CURRENCY_PATTERN, DECIMAL_PATTERN, ENVIRONMENT_RUN_ID_PATTERN, SHA256_PATTERN, hasExactKeys, hasSafeContainerShape, isBoundedString, isCanonicalUtcTimestamp, isCustomerString, isNonNegativeInteger, isRecord, isSafeLabel, isScopeIdentifier, isSourceIdentity, utf8ByteLength, } from './internal.js';
|
|
3
3
|
import { isEnvironmentLogicalEvidenceReferenceV1, isEnvironmentLogicalResourceReferenceV1 } from './references.js';
|
|
4
4
|
const DOCUMENT_NAMES = new Set(ENVIRONMENT_DOCUMENT_NAMES_V1);
|
|
5
5
|
const ARTIFACT_KINDS = new Set(ENVIRONMENT_ARTIFACT_KINDS_V1);
|
|
6
|
+
const PILLARS = new Set(ENVIRONMENT_PILLARS_V1);
|
|
7
|
+
const FINDING_KINDS = new Set(ENVIRONMENT_FINDING_KINDS_V1);
|
|
8
|
+
const SEVERITIES = new Set(ENVIRONMENT_SEVERITIES_V1);
|
|
9
|
+
const IMPACTS = new Set(ENVIRONMENT_IMPACTS_V1);
|
|
10
|
+
const EFFORTS = new Set(ENVIRONMENT_EFFORTS_V1);
|
|
6
11
|
const MONEY_BASES = new Set(['billed', 'amortized']);
|
|
7
12
|
const MONEY_PROVENANCE = new Set([
|
|
8
13
|
'subscription-summary',
|
|
@@ -29,6 +34,13 @@ const isReferenceArray = (value) => Array.isArray(value) &&
|
|
|
29
34
|
value.length <= ENVIRONMENT_CONTRACT_LIMITS_V1.boundedListItems &&
|
|
30
35
|
value.every(isEnvironmentLogicalEvidenceReferenceV1) &&
|
|
31
36
|
new Set(value).size === value.length;
|
|
37
|
+
const isResourceReferenceArray = (value) => Array.isArray(value) &&
|
|
38
|
+
value.length <= ENVIRONMENT_CONTRACT_LIMITS_V1.boundedListItems &&
|
|
39
|
+
value.every(isEnvironmentLogicalResourceReferenceV1) &&
|
|
40
|
+
new Set(value).size === value.length;
|
|
41
|
+
const isPercentage = (value) => typeof value === 'string' && DECIMAL_PATTERN.test(value) && Number(value) <= 100;
|
|
42
|
+
/** Validates one admitted environment pillar. */
|
|
43
|
+
export const isEnvironmentPillarV1 = (value) => typeof value === 'string' && PILLARS.has(value);
|
|
32
44
|
/** Validates the closed phase-one Azure subscription scope. */
|
|
33
45
|
export const isEnvironmentScopeV1 = (value) => isRecord(value) &&
|
|
34
46
|
hasExactKeys(value, ['kind', 'tenantId', 'companyId', 'subscriptionId']) &&
|
|
@@ -162,17 +174,63 @@ const isCostDriver = (value) => isRecord(value) &&
|
|
|
162
174
|
(value.portalRoute === undefined || isEnvironmentPortalRouteV1(value.portalRoute)) &&
|
|
163
175
|
(value.resourceReference === undefined || isEnvironmentLogicalResourceReferenceV1(value.resourceReference)) &&
|
|
164
176
|
isReferenceArray(value.sourceReferences);
|
|
177
|
+
const isPillarScore = (value) => isRecord(value) &&
|
|
178
|
+
hasExactKeys(value, ['value', 'maximum', 'safeLabel']) &&
|
|
179
|
+
isPercentage(value.value) &&
|
|
180
|
+
value.maximum === '100' &&
|
|
181
|
+
isSafeLabel(value.safeLabel);
|
|
182
|
+
const isPillarSummary = (value) => isRecord(value) &&
|
|
183
|
+
hasExactKeys(value, ['pillar', 'coverage', 'findingCount', 'recommendationCount', 'affectedResourceCount', 'portalRoute', 'sourceReferences'], ['score']) &&
|
|
184
|
+
isEnvironmentPillarV1(value.pillar) &&
|
|
185
|
+
isEnvironmentCoverageStateV1(value.coverage) &&
|
|
186
|
+
isNonNegativeInteger(value.findingCount) &&
|
|
187
|
+
isNonNegativeInteger(value.recommendationCount) &&
|
|
188
|
+
isNonNegativeInteger(value.affectedResourceCount) &&
|
|
189
|
+
isEnvironmentPortalRouteV1(value.portalRoute) &&
|
|
190
|
+
(value.score === undefined || isPillarScore(value.score)) &&
|
|
191
|
+
isReferenceArray(value.sourceReferences);
|
|
192
|
+
const isPillarSummaries = (value) => isRecord(value) &&
|
|
193
|
+
hasExactKeys(value, ENVIRONMENT_PILLARS_V1) &&
|
|
194
|
+
ENVIRONMENT_PILLARS_V1.every(pillar => isPillarSummary(value[pillar]) && value[pillar]?.pillar === pillar);
|
|
195
|
+
const isFinding = (value) => isRecord(value) &&
|
|
196
|
+
hasExactKeys(value, ['findingId', 'pillar', 'kind', 'safeLabel', 'severity', 'resourceReferences', 'sourceReferences'], ['description', 'impact', 'effort', 'confidencePercentage', 'affectedResourceCount', 'portalRoute']) &&
|
|
197
|
+
isScopeIdentifier(value.findingId) &&
|
|
198
|
+
isEnvironmentPillarV1(value.pillar) &&
|
|
199
|
+
typeof value.kind === 'string' &&
|
|
200
|
+
FINDING_KINDS.has(value.kind) &&
|
|
201
|
+
isSafeLabel(value.safeLabel) &&
|
|
202
|
+
typeof value.severity === 'string' &&
|
|
203
|
+
SEVERITIES.has(value.severity) &&
|
|
204
|
+
(value.description === undefined || isCustomerString(value.description)) &&
|
|
205
|
+
(value.impact === undefined || (typeof value.impact === 'string' && IMPACTS.has(value.impact))) &&
|
|
206
|
+
(value.effort === undefined || (typeof value.effort === 'string' && EFFORTS.has(value.effort))) &&
|
|
207
|
+
(value.confidencePercentage === undefined || isPercentage(value.confidencePercentage)) &&
|
|
208
|
+
(value.affectedResourceCount === undefined || isNonNegativeInteger(value.affectedResourceCount)) &&
|
|
209
|
+
(value.portalRoute === undefined || isEnvironmentPortalRouteV1(value.portalRoute)) &&
|
|
210
|
+
isResourceReferenceArray(value.resourceReferences) &&
|
|
211
|
+
isReferenceArray(value.sourceReferences);
|
|
165
212
|
const isRecommendation = (value) => isRecord(value) &&
|
|
166
|
-
hasExactKeys(value, ['recommendationId', 'safeLabel', 'portalRoute', 'sourceReferences'], ['description', 'potentialSavings']) &&
|
|
213
|
+
hasExactKeys(value, ['recommendationId', 'pillar', 'safeLabel', 'portalRoute', 'resourceReferences', 'sourceReferences'], ['description', 'impact', 'effort', 'confidencePercentage', 'affectedResourceCount', 'potentialSavings']) &&
|
|
167
214
|
isScopeIdentifier(value.recommendationId) &&
|
|
215
|
+
isEnvironmentPillarV1(value.pillar) &&
|
|
168
216
|
isSafeLabel(value.safeLabel) &&
|
|
169
217
|
isEnvironmentPortalRouteV1(value.portalRoute) &&
|
|
170
218
|
(value.description === undefined || isCustomerString(value.description)) &&
|
|
219
|
+
(value.impact === undefined || (typeof value.impact === 'string' && IMPACTS.has(value.impact))) &&
|
|
220
|
+
(value.effort === undefined || (typeof value.effort === 'string' && EFFORTS.has(value.effort))) &&
|
|
221
|
+
(value.confidencePercentage === undefined || isPercentage(value.confidencePercentage)) &&
|
|
222
|
+
(value.affectedResourceCount === undefined || isNonNegativeInteger(value.affectedResourceCount)) &&
|
|
171
223
|
(value.potentialSavings === undefined || isSavingsMoney(value.potentialSavings)) &&
|
|
224
|
+
isResourceReferenceArray(value.resourceReferences) &&
|
|
172
225
|
isReferenceArray(value.sourceReferences);
|
|
173
|
-
const
|
|
174
|
-
hasExactKeys(value, ['key', 'safeLabel', 'description', 'direction', 'sourceReferences'], ['amount']) &&
|
|
226
|
+
const isChange = (value) => isRecord(value) &&
|
|
227
|
+
hasExactKeys(value, ['key', 'pillars', 'safeLabel', 'description', 'direction', 'sourceReferences'], ['amount']) &&
|
|
175
228
|
isGeneralKey(value.key) &&
|
|
229
|
+
Array.isArray(value.pillars) &&
|
|
230
|
+
value.pillars.length > 0 &&
|
|
231
|
+
value.pillars.length <= ENVIRONMENT_PILLARS_V1.length &&
|
|
232
|
+
value.pillars.every(isEnvironmentPillarV1) &&
|
|
233
|
+
new Set(value.pillars).size === value.pillars.length &&
|
|
176
234
|
isSafeLabel(value.safeLabel) &&
|
|
177
235
|
isCustomerString(value.description) &&
|
|
178
236
|
typeof value.direction === 'string' &&
|
|
@@ -180,26 +238,35 @@ const isCostChange = (value) => isRecord(value) &&
|
|
|
180
238
|
(value.amount === undefined || isObservedMoney(value.amount)) &&
|
|
181
239
|
isReferenceArray(value.sourceReferences);
|
|
182
240
|
const isWarning = (value) => isRecord(value) &&
|
|
183
|
-
hasExactKeys(value, ['code', 'safeLabel', 'sourceReferences'], ['detail']) &&
|
|
241
|
+
hasExactKeys(value, ['code', 'safeLabel', 'sourceReferences'], ['pillar', 'detail']) &&
|
|
184
242
|
isGeneralKey(value.code) &&
|
|
185
243
|
isSafeLabel(value.safeLabel) &&
|
|
244
|
+
(value.pillar === undefined || isEnvironmentPillarV1(value.pillar)) &&
|
|
186
245
|
(value.detail === undefined || isCustomerString(value.detail)) &&
|
|
187
246
|
isReferenceArray(value.sourceReferences);
|
|
188
247
|
const isSourceCoverage = (value) => isRecord(value) &&
|
|
189
|
-
hasExactKeys(value, [
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
248
|
+
hasExactKeys(value, [
|
|
249
|
+
'completedViewSet',
|
|
250
|
+
'subscriptionSummary',
|
|
251
|
+
'resources',
|
|
252
|
+
'recommendations',
|
|
253
|
+
'serviceRetirements',
|
|
254
|
+
'monitorAlerts',
|
|
255
|
+
'pluginMetrics',
|
|
256
|
+
]) &&
|
|
257
|
+
Object.values(value).every(isEnvironmentCoverageStateV1);
|
|
258
|
+
const isEstateSummary = (value) => isRecord(value) &&
|
|
259
|
+
hasExactKeys(value, ['resourceCount', 'serviceFamilyCount', 'locationCount']) &&
|
|
260
|
+
isNonNegativeInteger(value.resourceCount) &&
|
|
261
|
+
isNonNegativeInteger(value.serviceFamilyCount) &&
|
|
262
|
+
isNonNegativeInteger(value.locationCount);
|
|
195
263
|
const isCostSummary = (value) => isRecord(value) &&
|
|
196
|
-
hasExactKeys(value, [], ['observedCost', 'potentialSavings', '
|
|
264
|
+
hasExactKeys(value, [], ['observedCost', 'potentialSavings', 'costRecommendationCount']) &&
|
|
197
265
|
(value.observedCost === undefined || isObservedMoney(value.observedCost)) &&
|
|
198
266
|
(value.potentialSavings === undefined || isSavingsMoney(value.potentialSavings)) &&
|
|
199
|
-
(value.
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
export const isEnvironmentSubscriptionCostProjectionV1 = (value) => {
|
|
267
|
+
(value.costRecommendationCount === undefined || isNonNegativeInteger(value.costRecommendationCount));
|
|
268
|
+
/** Validates the strict, bounded multi-pillar subscription environment projection. */
|
|
269
|
+
export const isEnvironmentSubscriptionProjectionV1 = (value) => {
|
|
203
270
|
if (!hasSafeContainerShape(value) || !isRecord(value))
|
|
204
271
|
return false;
|
|
205
272
|
if (!hasExactKeys(value, [
|
|
@@ -209,10 +276,13 @@ export const isEnvironmentSubscriptionCostProjectionV1 = (value) => {
|
|
|
209
276
|
'generatedAt',
|
|
210
277
|
'subscription',
|
|
211
278
|
'sourceCoverage',
|
|
279
|
+
'estateSummary',
|
|
212
280
|
'costSummary',
|
|
213
281
|
'serviceFamilyRollups',
|
|
214
282
|
'estateCostRollups',
|
|
215
283
|
'costDrivers',
|
|
284
|
+
'pillars',
|
|
285
|
+
'findings',
|
|
216
286
|
'recommendations',
|
|
217
287
|
'changes',
|
|
218
288
|
'warnings',
|
|
@@ -229,12 +299,15 @@ export const isEnvironmentSubscriptionCostProjectionV1 = (value) => {
|
|
|
229
299
|
!isSafeLabel(value.subscription.safeLabel) ||
|
|
230
300
|
!isEnvironmentPortalRouteV1(value.subscription.portalRoute) ||
|
|
231
301
|
!isSourceCoverage(value.sourceCoverage) ||
|
|
302
|
+
!isEstateSummary(value.estateSummary) ||
|
|
232
303
|
!isCostSummary(value.costSummary) ||
|
|
233
304
|
!isBoundedList(value.serviceFamilyRollups, isCostRollup) ||
|
|
234
305
|
!isBoundedList(value.estateCostRollups, isCostRollup) ||
|
|
235
306
|
!isBoundedList(value.costDrivers, isCostDriver) ||
|
|
307
|
+
!isPillarSummaries(value.pillars) ||
|
|
308
|
+
!isBoundedList(value.findings, isFinding) ||
|
|
236
309
|
!isBoundedList(value.recommendations, isRecommendation) ||
|
|
237
|
-
!isBoundedList(value.changes,
|
|
310
|
+
!isBoundedList(value.changes, isChange) ||
|
|
238
311
|
!isBoundedList(value.warnings, isWarning) ||
|
|
239
312
|
!isReferenceArray(value.sourceReferences)) {
|
|
240
313
|
return false;
|
|
@@ -246,9 +319,9 @@ const descriptorByteLimit = (name) => {
|
|
|
246
319
|
return ENVIRONMENT_CONTRACT_LIMITS_V1.projectionBytes;
|
|
247
320
|
if (name === 'environment-index.md')
|
|
248
321
|
return ENVIRONMENT_CONTRACT_LIMITS_V1.environmentIndexBytes;
|
|
249
|
-
return ENVIRONMENT_CONTRACT_LIMITS_V1.
|
|
322
|
+
return ENVIRONMENT_CONTRACT_LIMITS_V1.pillarDocumentBytes;
|
|
250
323
|
};
|
|
251
|
-
/** Validates one descriptor from the exact V1
|
|
324
|
+
/** Validates one descriptor from the exact V1 multi-pillar document allowlist. */
|
|
252
325
|
export const isEnvironmentDocumentDescriptorV1 = (value) => {
|
|
253
326
|
if (!isRecord(value) || !hasExactKeys(value, ['name', 'mediaType', 'byteCount', 'contentSha256', 'approximateTokenCount']))
|
|
254
327
|
return false;
|
|
@@ -263,7 +336,7 @@ export const isEnvironmentDocumentDescriptorV1 = (value) => {
|
|
|
263
336
|
SHA256_PATTERN.test(value.contentSha256) &&
|
|
264
337
|
isNonNegativeInteger(value.approximateTokenCount));
|
|
265
338
|
};
|
|
266
|
-
/** Validates that descriptors contain
|
|
339
|
+
/** Validates that descriptors contain every allowlisted V1 document exactly once. */
|
|
267
340
|
export const isEnvironmentDocumentDescriptorSetV1 = (value) => Array.isArray(value) &&
|
|
268
341
|
value.length === ENVIRONMENT_DOCUMENT_NAMES_V1.length &&
|
|
269
342
|
value.every(isEnvironmentDocumentDescriptorV1) &&
|
|
@@ -282,7 +355,7 @@ export const isEnvironmentCompiledGenerationPointerV1 = (value) => {
|
|
|
282
355
|
!scopesEqual(value.scope, value.sourceBinding.scope) ||
|
|
283
356
|
typeof value.treeDigestSha256 !== 'string' ||
|
|
284
357
|
!SHA256_PATTERN.test(value.treeDigestSha256) ||
|
|
285
|
-
value.fileCount !==
|
|
358
|
+
value.fileCount !== ENVIRONMENT_DOCUMENT_NAMES_V1.length ||
|
|
286
359
|
!isCanonicalUtcTimestamp(value.generatedAt) ||
|
|
287
360
|
Date.parse(value.generatedAt) < Date.parse(value.sourceBinding.completedAt)) {
|
|
288
361
|
return false;
|
|
@@ -297,7 +370,7 @@ export const isEnvironmentCompiledGenerationPointerV1 = (value) => {
|
|
|
297
370
|
return (!sourceIdentities.includes(value.environmentRunId) &&
|
|
298
371
|
utf8ByteLength(JSON.stringify(value)) <= ENVIRONMENT_CONTRACT_LIMITS_V1.completedPointerBytes);
|
|
299
372
|
};
|
|
300
|
-
/** Validates
|
|
373
|
+
/** Validates an artifact kind without widening the closed V1 union. */
|
|
301
374
|
export const isEnvironmentArtifactKindV1 = (value) => typeof value === 'string' && ARTIFACT_KINDS.has(value);
|
|
302
375
|
/** Validates the V1 safe-label bound used by customer-visible evidence metadata. */
|
|
303
376
|
export const isEnvironmentSafeLabelV1 = (value) => isSafeLabel(value);
|