@apexops/contracts 0.10.0-next.4 → 0.11.0-next.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +28 -0
- package/dist/.tsbuildinfo +1 -1
- package/dist/archetype-source.d.ts +70 -0
- package/dist/archetype-source.d.ts.map +1 -0
- package/dist/archetype-source.js +58 -0
- package/dist/archetype-source.js.map +1 -0
- package/dist/artifacts.d.ts +64 -0
- package/dist/artifacts.d.ts.map +1 -1
- package/dist/artifacts.js +69 -0
- package/dist/artifacts.js.map +1 -1
- package/dist/common.d.ts +2 -0
- package/dist/common.d.ts.map +1 -1
- package/dist/common.js +1 -0
- package/dist/common.js.map +1 -1
- package/dist/evidence.d.ts.map +1 -1
- package/dist/evidence.js +2 -0
- package/dist/evidence.js.map +1 -1
- package/dist/governance-observation.d.ts +15 -0
- package/dist/governance-observation.d.ts.map +1 -0
- package/dist/governance-observation.js +15 -0
- package/dist/governance-observation.js.map +1 -0
- package/dist/index.d.ts +627 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +47 -4
- package/dist/index.js.map +1 -1
- package/dist/native-validation.d.ts +136 -0
- package/dist/native-validation.d.ts.map +1 -0
- package/dist/native-validation.js +276 -0
- package/dist/native-validation.js.map +1 -0
- package/dist/onboarding.d.ts +184 -3
- package/dist/onboarding.d.ts.map +1 -1
- package/dist/onboarding.js +122 -6
- package/dist/onboarding.js.map +1 -1
- package/dist/policy-validation.d.ts +45 -0
- package/dist/policy-validation.d.ts.map +1 -0
- package/dist/policy-validation.js +194 -0
- package/dist/policy-validation.js.map +1 -0
- package/dist/runtime.d.ts +94 -2
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +53 -4
- package/dist/runtime.js.map +1 -1
- package/dist/targets.d.ts +158 -1
- package/dist/targets.d.ts.map +1 -1
- package/dist/targets.js +168 -2
- package/dist/targets.js.map +1 -1
- package/dist/test/contracts.test.js +769 -4
- package/dist/test/contracts.test.js.map +1 -1
- package/package.json +2 -2
- package/schemas/archetype-batch-config-v1.schema.json +51 -0
- package/schemas/archetype-batch-plan-v1.schema.json +227 -0
- package/schemas/archetype-source-proposal-v1.schema.json +113 -0
- package/schemas/architecture-v1.schema.json +278 -0
- package/schemas/bootstrap-plan-v1.schema.json +206 -0
- package/schemas/contract-metadata.json +85 -0
- package/schemas/cost-estimate-v1.schema.json +54 -1
- package/schemas/diagnosis-v1.schema.json +323 -0
- package/schemas/governance-constraints-v1.schema.json +13 -0
- package/schemas/governance-observation-receipt-v1.schema.json +60 -0
- package/schemas/governance-provision-plan-v1.schema.json +307 -0
- package/schemas/governance-setup-config-v1.schema.json +80 -0
- package/schemas/governance-setup-plan-v1.schema.json +217 -0
- package/schemas/iac-binding-v1.schema.json +60 -0
- package/schemas/input-request-v1.schema.json +296 -2
- package/schemas/logical-resource-manifest-v1.schema.json +4 -0
- package/schemas/native-validation-receipt-v1.schema.json +862 -0
- package/schemas/onboarding-config-v1.schema.json +15 -12
- package/schemas/policy-property-map-v1.schema.json +17 -0
- package/schemas/policy-validation-v1.schema.json +278 -0
- package/schemas/project-config-v1.schema.json +14 -1
- package/schemas/repeat-guard-records-v1.schema.json +76 -0
- package/schemas/repository-publish-config-v1.schema.json +52 -0
- package/schemas/repository-publish-plan-v1.schema.json +265 -0
- package/schemas/requirements-amendment-v1.schema.json +213 -0
- package/schemas/requirements-change-proposal-v1.schema.json +196 -0
- package/schemas/review-capture-v1.schema.json +67 -0
- package/schemas/review-findings-v1.schema.json +103 -0
- package/schemas/review-request-v1.schema.json +111 -0
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,21 +1,38 @@
|
|
|
1
1
|
export * from "./artifacts.js";
|
|
2
|
+
export * from "./archetype-source.js";
|
|
2
3
|
export * from "./common.js";
|
|
3
4
|
export * from "./deployment.js";
|
|
4
5
|
export * from "./evidence.js";
|
|
6
|
+
export * from "./governance-observation.js";
|
|
5
7
|
export * from "./improvement.js";
|
|
8
|
+
export * from "./native-validation.js";
|
|
6
9
|
export * from "./onboarding.js";
|
|
7
10
|
export * from "./pricing.js";
|
|
11
|
+
export * from "./policy-validation.js";
|
|
8
12
|
export * from "./runtime.js";
|
|
9
13
|
export * from "./targets.js";
|
|
10
|
-
import { IacBindingV1Schema, ImplementationIntentV1Schema, RequirementsV1Schema } from "./artifacts.js";
|
|
14
|
+
import { IacBindingV1Schema, ImplementationIntentV1Schema, RequirementsV1Schema, RequirementsAmendmentV1Schema, RequirementsChangeProposalV1Schema, } from "./artifacts.js";
|
|
15
|
+
import { ArchetypeSourceProposalV1Schema, ArchetypeBatchConfigV1Schema, ArchetypeBatchPlanV1Schema, } from "./archetype-source.js";
|
|
11
16
|
import { ApprovalEvidenceV1Schema, DeploymentPreviewV1Schema, OperationRecordV1Schema, ResourceInventoryV1Schema, } from "./deployment.js";
|
|
12
17
|
import { ArchitectureAvailabilityV1Schema, ClientOutcomeComparisonV1Schema, ClientOutcomeQualificationV1Schema, ClientOutcomeV1Schema, EvidenceManifestV1Schema, LiveQualificationV1Schema, QualityMeasurementsV1Schema, QualityScorecardV1Schema, } from "./evidence.js";
|
|
13
18
|
import { ImprovementDecisionV1Schema, ImprovementObservationV1Schema, ImprovementPolicyV1Schema, ImprovementProposalV1Schema, ImprovementRecurrenceV1Schema, } from "./improvement.js";
|
|
14
|
-
import { OnboardingConfigV1Schema } from "./onboarding.js";
|
|
19
|
+
import { BootstrapPlanV1Schema, OnboardingConfigV1Schema, GovernanceSetupConfigV1Schema, GovernanceSetupPlanV1Schema, GovernanceProvisionPlanV1Schema, RepositoryPublishConfigV1Schema, RepositoryPublishPlanV1Schema, } from "./onboarding.js";
|
|
20
|
+
import { NativeValidationReceiptV1Schema } from "./native-validation.js";
|
|
21
|
+
import { GovernanceObservationReceiptV1Schema } from "./governance-observation.js";
|
|
15
22
|
import { PricingEvidenceV1Schema, PricingRequestV1Schema } from "./pricing.js";
|
|
16
|
-
import {
|
|
17
|
-
import {
|
|
23
|
+
import { PolicyValidationV1Schema } from "./policy-validation.js";
|
|
24
|
+
import { EventV1Schema, InputRequestV1Schema, InputSubmissionV1Schema, ProjectConfigV1Schema, RepeatGuardRecordsV1Schema, RunConfigV1Schema, RuntimeBundleLockV1Schema, TaskEnvelopeV1Schema, } from "./runtime.js";
|
|
25
|
+
import { ArchitectureV1Schema, CapabilityPackManifestV1Schema, CostEstimateV1Schema, CustomizationLockV1Schema, DiagnosisV1Schema, EnvironmentInputsV1Schema, ExecutionPlanAttestationV1Schema, GovernanceConstraintsV1Schema, IacHandoffV1Schema, LogicalResourceManifestV1Schema, PolicyPropertyMapV1Schema, QualityReportV1Schema, ReviewCaptureV1Schema, ReviewRequestV1Schema, ReviewFindingsV1Schema, ScenarioV1Schema, TelemetryV1Schema, WorkloadDecisionManifestV1Schema, } from "./targets.js";
|
|
18
26
|
export const contractSchemas = [
|
|
27
|
+
GovernanceProvisionPlanV1Schema,
|
|
28
|
+
RepositoryPublishConfigV1Schema,
|
|
29
|
+
RepositoryPublishPlanV1Schema,
|
|
30
|
+
ArchetypeBatchConfigV1Schema,
|
|
31
|
+
ArchetypeBatchPlanV1Schema,
|
|
32
|
+
GovernanceSetupConfigV1Schema,
|
|
33
|
+
GovernanceSetupPlanV1Schema,
|
|
34
|
+
BootstrapPlanV1Schema,
|
|
35
|
+
ArchetypeSourceProposalV1Schema,
|
|
19
36
|
RuntimeBundleLockV1Schema,
|
|
20
37
|
ProjectConfigV1Schema,
|
|
21
38
|
RunConfigV1Schema,
|
|
@@ -23,7 +40,10 @@ export const contractSchemas = [
|
|
|
23
40
|
InputRequestV1Schema,
|
|
24
41
|
InputSubmissionV1Schema,
|
|
25
42
|
EventV1Schema,
|
|
43
|
+
RepeatGuardRecordsV1Schema,
|
|
26
44
|
RequirementsV1Schema,
|
|
45
|
+
RequirementsAmendmentV1Schema,
|
|
46
|
+
RequirementsChangeProposalV1Schema,
|
|
27
47
|
ImplementationIntentV1Schema,
|
|
28
48
|
IacBindingV1Schema,
|
|
29
49
|
ApprovalEvidenceV1Schema,
|
|
@@ -49,10 +69,15 @@ export const contractSchemas = [
|
|
|
49
69
|
WorkloadDecisionManifestV1Schema,
|
|
50
70
|
ArchitectureV1Schema,
|
|
51
71
|
CostEstimateV1Schema,
|
|
72
|
+
ReviewCaptureV1Schema,
|
|
73
|
+
ReviewRequestV1Schema,
|
|
52
74
|
ReviewFindingsV1Schema,
|
|
53
75
|
GovernanceConstraintsV1Schema,
|
|
54
76
|
PolicyPropertyMapV1Schema,
|
|
55
77
|
EnvironmentInputsV1Schema,
|
|
78
|
+
GovernanceObservationReceiptV1Schema,
|
|
79
|
+
PolicyValidationV1Schema,
|
|
80
|
+
NativeValidationReceiptV1Schema,
|
|
56
81
|
LogicalResourceManifestV1Schema,
|
|
57
82
|
IacHandoffV1Schema,
|
|
58
83
|
ExecutionPlanAttestationV1Schema,
|
|
@@ -69,14 +94,27 @@ const metadata = (maxBytes, sensitivity = "internal") => ({
|
|
|
69
94
|
compatibility: "strict-v1",
|
|
70
95
|
});
|
|
71
96
|
export const contractMetadata = {
|
|
97
|
+
"https://schemas.apexops.dev/governance-provision-plan-v1.json": metadata(65_536, "confidential"),
|
|
98
|
+
"https://schemas.apexops.dev/repository-publish-config-v1.json": metadata(16_384, "confidential"),
|
|
99
|
+
"https://schemas.apexops.dev/repository-publish-plan-v1.json": metadata(262_144, "confidential"),
|
|
100
|
+
"https://schemas.apexops.dev/archetype-batch-config-v1.json": metadata(16_384, "confidential"),
|
|
101
|
+
"https://schemas.apexops.dev/archetype-batch-plan-v1.json": metadata(2_097_152, "confidential"),
|
|
102
|
+
"https://schemas.apexops.dev/governance-setup-config-v1.json": metadata(16_384, "confidential"),
|
|
103
|
+
"https://schemas.apexops.dev/governance-setup-plan-v1.json": metadata(32_768, "confidential"),
|
|
104
|
+
"https://schemas.apexops.dev/bootstrap-plan-v1.json": metadata(65_536, "confidential"),
|
|
105
|
+
"https://schemas.apexops.dev/archetype-source-proposal-v1.json": metadata(524_288, "confidential"),
|
|
72
106
|
"https://schemas.apexops.dev/runtime-bundle-lock-v1.json": metadata(32_768),
|
|
73
107
|
"https://schemas.apexops.dev/project-config-v1.json": metadata(16_384),
|
|
74
108
|
"https://schemas.apexops.dev/run-config-v1.json": metadata(65_536, "confidential"),
|
|
109
|
+
// 16 records whose results may JSON-escape to six bytes per character, plus per-record overhead.
|
|
110
|
+
"https://schemas.apexops.dev/repeat-guard-records-v1.json": metadata(6_356_992, "confidential"),
|
|
75
111
|
"https://schemas.apexops.dev/task-envelope-v1.json": metadata(131_072, "confidential"),
|
|
76
112
|
"https://schemas.apexops.dev/input-request-v1.json": metadata(65_536, "confidential"),
|
|
77
113
|
"https://schemas.apexops.dev/input-submission-v1.json": metadata(65_536, "confidential"),
|
|
78
114
|
"https://schemas.apexops.dev/event-v1.json": metadata(262_144, "confidential"),
|
|
79
115
|
"https://schemas.apexops.dev/requirements-v1.json": metadata(524_288, "confidential"),
|
|
116
|
+
"https://schemas.apexops.dev/requirements-amendment-v1.json": metadata(262_144, "confidential"),
|
|
117
|
+
"https://schemas.apexops.dev/requirements-change-proposal-v1.json": metadata(524_288, "confidential"),
|
|
80
118
|
"https://schemas.apexops.dev/implementation-intent-v1.json": metadata(524_288),
|
|
81
119
|
"https://schemas.apexops.dev/iac-binding-v1.json": metadata(524_288, "confidential"),
|
|
82
120
|
"https://schemas.apexops.dev/approval-evidence-v1.json": metadata(32_768, "confidential"),
|
|
@@ -102,9 +140,14 @@ export const contractMetadata = {
|
|
|
102
140
|
"https://schemas.apexops.dev/workload-decision-manifest-v1.json": metadata(524_288, "confidential"),
|
|
103
141
|
"https://schemas.apexops.dev/architecture-v1.json": metadata(1_048_576),
|
|
104
142
|
"https://schemas.apexops.dev/cost-estimate-v1.json": metadata(1_048_576, "confidential"),
|
|
143
|
+
"https://schemas.apexops.dev/review-capture-v1.json": metadata(1_048_576, "confidential"),
|
|
144
|
+
"https://schemas.apexops.dev/review-request-v1.json": metadata(65_536, "confidential"),
|
|
105
145
|
"https://schemas.apexops.dev/review-findings-v1.json": metadata(1_048_576, "confidential"),
|
|
106
146
|
"https://schemas.apexops.dev/governance-constraints-v1.json": metadata(131_072, "confidential"),
|
|
147
|
+
"https://schemas.apexops.dev/governance-observation-receipt-v1.json": metadata(16_384, "confidential"),
|
|
107
148
|
"https://schemas.apexops.dev/policy-property-map-v1.json": metadata(2_097_152, "confidential"),
|
|
149
|
+
"https://schemas.apexops.dev/policy-validation-v1.json": metadata(4_194_304, "confidential"),
|
|
150
|
+
"https://schemas.apexops.dev/native-validation-receipt-v1.json": metadata(8_404_992, "confidential"),
|
|
108
151
|
"https://schemas.apexops.dev/environment-inputs-v1.json": metadata(524_288, "restricted"),
|
|
109
152
|
"https://schemas.apexops.dev/logical-resource-manifest-v1.json": metadata(2_097_152),
|
|
110
153
|
"https://schemas.apexops.dev/iac-handoff-v1.json": metadata(131_072, "confidential"),
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAE7B,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
import { type Static } from "@sinclair/typebox";
|
|
2
|
+
export declare const NATIVE_VALIDATION_COMMANDS: {
|
|
3
|
+
readonly bicep: readonly [{
|
|
4
|
+
readonly validatorId: "bicep:format";
|
|
5
|
+
readonly executable: "bicep";
|
|
6
|
+
readonly args: readonly ["format", "--pattern", "**/*.bicep"];
|
|
7
|
+
}, {
|
|
8
|
+
readonly validatorId: "bicep:build";
|
|
9
|
+
readonly executable: "bicep";
|
|
10
|
+
readonly args: readonly ["build", "main.bicep", "--stdout"];
|
|
11
|
+
}, {
|
|
12
|
+
readonly validatorId: "bicep:lint";
|
|
13
|
+
readonly executable: "bicep";
|
|
14
|
+
readonly args: readonly ["lint", "--pattern", "**/*.bicep", "--no-restore"];
|
|
15
|
+
}];
|
|
16
|
+
readonly terraform: readonly [{
|
|
17
|
+
readonly validatorId: "terraform:init-backend-false";
|
|
18
|
+
readonly executable: "terraform";
|
|
19
|
+
readonly args: readonly ["init", "-backend=false", "-input=false"];
|
|
20
|
+
}, {
|
|
21
|
+
readonly validatorId: "terraform:format";
|
|
22
|
+
readonly executable: "terraform";
|
|
23
|
+
readonly args: readonly ["fmt", "-check"];
|
|
24
|
+
}, {
|
|
25
|
+
readonly validatorId: "terraform:validate";
|
|
26
|
+
readonly executable: "terraform";
|
|
27
|
+
readonly args: readonly ["validate"];
|
|
28
|
+
}];
|
|
29
|
+
};
|
|
30
|
+
export declare const STORAGE_PROPERTY_HARDENING_CONTROLS: Readonly<{
|
|
31
|
+
bicep: readonly (readonly ["properties.allowBlobPublicAccess", false] | readonly ["properties.allowSharedKeyAccess", false] | readonly ["properties.minimumTlsVersion", "TLS1_2"] | readonly ["properties.supportsHttpsTrafficOnly", true])[];
|
|
32
|
+
terraform: readonly (readonly ["allow_nested_items_to_be_public", false] | readonly ["https_traffic_only_enabled", true] | readonly ["min_tls_version", "TLS1_2"] | readonly ["shared_access_key_enabled", false])[];
|
|
33
|
+
}>;
|
|
34
|
+
export declare const NativeValidationReceiptV1Schema: import("@sinclair/typebox").TObject<{
|
|
35
|
+
schemaVersion: import("@sinclair/typebox").TLiteral<"1.0.0">;
|
|
36
|
+
projectId: import("@sinclair/typebox").TString;
|
|
37
|
+
runId: import("@sinclair/typebox").TString;
|
|
38
|
+
track: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"bicep">, import("@sinclair/typebox").TLiteral<"terraform">]>;
|
|
39
|
+
sourceHash: import("@sinclair/typebox").TString;
|
|
40
|
+
treeHash: import("@sinclair/typebox").TString;
|
|
41
|
+
policyHash: import("@sinclair/typebox").TString;
|
|
42
|
+
inputHash: import("@sinclair/typebox").TString;
|
|
43
|
+
policyValidation: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
|
|
44
|
+
schemaVersion: import("@sinclair/typebox").TLiteral<"1.0.0">;
|
|
45
|
+
projectId: import("@sinclair/typebox").TString;
|
|
46
|
+
runId: import("@sinclair/typebox").TString;
|
|
47
|
+
track: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"bicep">, import("@sinclair/typebox").TLiteral<"terraform">]>;
|
|
48
|
+
sourceHash: import("@sinclair/typebox").TString;
|
|
49
|
+
policyMapHash: import("@sinclair/typebox").TString;
|
|
50
|
+
policyMapContentHash: import("@sinclair/typebox").TString;
|
|
51
|
+
logicalResourceManifestHash: import("@sinclair/typebox").TString;
|
|
52
|
+
inputHash: import("@sinclair/typebox").TString;
|
|
53
|
+
outcome: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"pass">, import("@sinclair/typebox").TLiteral<"fail">, import("@sinclair/typebox").TLiteral<"unsupported">]>;
|
|
54
|
+
results: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
|
|
55
|
+
mappingIndex: import("@sinclair/typebox").TInteger;
|
|
56
|
+
mappingHash: import("@sinclair/typebox").TString;
|
|
57
|
+
policyAssignmentId: import("@sinclair/typebox").TString;
|
|
58
|
+
policyDefinitionId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
59
|
+
policyDefinitionReferenceId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
60
|
+
effect: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"deny">, import("@sinclair/typebox").TLiteral<"modify">, import("@sinclair/typebox").TLiteral<"append">, import("@sinclair/typebox").TLiteral<"audit">, import("@sinclair/typebox").TLiteral<"deployIfNotExists">, import("@sinclair/typebox").TLiteral<"disabled">]>;
|
|
61
|
+
disposition: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"satisfied">, import("@sinclair/typebox").TLiteral<"planned">, import("@sinclair/typebox").TLiteral<"exempt">, import("@sinclair/typebox").TLiteral<"blocked">, import("@sinclair/typebox").TLiteral<"not-applicable">]>;
|
|
62
|
+
logicalResourceId: import("@sinclair/typebox").TString;
|
|
63
|
+
propertyPath: import("@sinclair/typebox").TString;
|
|
64
|
+
expectedValueDigest: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
65
|
+
observedValueDigest: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
66
|
+
outcome: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"pass">, import("@sinclair/typebox").TLiteral<"fail">, import("@sinclair/typebox").TLiteral<"unsupported">]>;
|
|
67
|
+
reason: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"matched">, import("@sinclair/typebox").TLiteral<"value-mismatch">, import("@sinclair/typebox").TLiteral<"missing-property">, import("@sinclair/typebox").TLiteral<"blocked">, import("@sinclair/typebox").TLiteral<"missing-expected-value">, import("@sinclair/typebox").TLiteral<"unverified-exemption">, import("@sinclair/typebox").TLiteral<"unsupported-effect">, import("@sinclair/typebox").TLiteral<"unsupported-path">, import("@sinclair/typebox").TLiteral<"unsupported-expression">, import("@sinclair/typebox").TLiteral<"resource-not-bound">, import("@sinclair/typebox").TLiteral<"resource-not-found">, import("@sinclair/typebox").TLiteral<"ambiguous-resource">, import("@sinclair/typebox").TLiteral<"unsupported-resource">, import("@sinclair/typebox").TLiteral<"invalid-source">, import("@sinclair/typebox").TLiteral<"not-applicable">, import("@sinclair/typebox").TLiteral<"platform-remediated">]>;
|
|
68
|
+
}>>;
|
|
69
|
+
receiptHash: import("@sinclair/typebox").TString;
|
|
70
|
+
}>>;
|
|
71
|
+
securityBaseline: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
|
|
72
|
+
coverage: import("@sinclair/typebox").TLiteral<"bicep-storage-only-baseline-v1">;
|
|
73
|
+
sourceHash: import("@sinclair/typebox").TString;
|
|
74
|
+
inputHash: import("@sinclair/typebox").TString;
|
|
75
|
+
manifestHash: import("@sinclair/typebox").TString;
|
|
76
|
+
bindingHash: import("@sinclair/typebox").TString;
|
|
77
|
+
outcome: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"pass">, import("@sinclair/typebox").TLiteral<"fail">, import("@sinclair/typebox").TLiteral<"unsupported">]>;
|
|
78
|
+
reason: import("@sinclair/typebox").TUnion<import("@sinclair/typebox").TLiteral<string>[]>;
|
|
79
|
+
}>>;
|
|
80
|
+
resourceParity: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
|
|
81
|
+
coverage: import("@sinclair/typebox").TLiteral<"bicep-symbolic-resource-parity-v1">;
|
|
82
|
+
sourceHash: import("@sinclair/typebox").TString;
|
|
83
|
+
manifestHash: import("@sinclair/typebox").TString;
|
|
84
|
+
bindingHash: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
85
|
+
inputHash: import("@sinclair/typebox").TString;
|
|
86
|
+
outcome: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"pass">, import("@sinclair/typebox").TLiteral<"fail">, import("@sinclair/typebox").TLiteral<"unsupported">]>;
|
|
87
|
+
reason: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"matched">, import("@sinclair/typebox").TLiteral<"coverage-mismatch">, import("@sinclair/typebox").TLiteral<"type-mismatch">, import("@sinclair/typebox").TLiteral<"dependency-mismatch">, import("@sinclair/typebox").TLiteral<"unsupported-resource">, import("@sinclair/typebox").TLiteral<"invalid-source">]>;
|
|
88
|
+
}>>;
|
|
89
|
+
policyApplicability: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
|
|
90
|
+
status: import("@sinclair/typebox").TLiteral<"no-actionable-mappings">;
|
|
91
|
+
policyMapContentHash: import("@sinclair/typebox").TString;
|
|
92
|
+
}>>;
|
|
93
|
+
storageSecurity: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TObject<{
|
|
94
|
+
coverage: import("@sinclair/typebox").TLiteral<"storage-account-property-hardening-v1">;
|
|
95
|
+
fullBaselineEvaluated: import("@sinclair/typebox").TLiteral<false>;
|
|
96
|
+
sourceHash: import("@sinclair/typebox").TString;
|
|
97
|
+
inputHash: import("@sinclair/typebox").TString;
|
|
98
|
+
bindingHash: import("@sinclair/typebox").TString;
|
|
99
|
+
outcome: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"pass">, import("@sinclair/typebox").TLiteral<"fail">, import("@sinclair/typebox").TLiteral<"unsupported">]>;
|
|
100
|
+
results: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
|
|
101
|
+
propertyPath: import("@sinclair/typebox").TString;
|
|
102
|
+
expectedValueDigest: import("@sinclair/typebox").TString;
|
|
103
|
+
observedValueDigest: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
104
|
+
outcome: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"pass">, import("@sinclair/typebox").TLiteral<"fail">, import("@sinclair/typebox").TLiteral<"unsupported">]>;
|
|
105
|
+
reason: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"matched">, import("@sinclair/typebox").TLiteral<"value-mismatch">, import("@sinclair/typebox").TLiteral<"missing-property">, import("@sinclair/typebox").TLiteral<"blocked">, import("@sinclair/typebox").TLiteral<"missing-expected-value">, import("@sinclair/typebox").TLiteral<"unverified-exemption">, import("@sinclair/typebox").TLiteral<"unsupported-effect">, import("@sinclair/typebox").TLiteral<"unsupported-path">, import("@sinclair/typebox").TLiteral<"unsupported-expression">, import("@sinclair/typebox").TLiteral<"resource-not-bound">, import("@sinclair/typebox").TLiteral<"resource-not-found">, import("@sinclair/typebox").TLiteral<"ambiguous-resource">, import("@sinclair/typebox").TLiteral<"unsupported-resource">, import("@sinclair/typebox").TLiteral<"invalid-source">, import("@sinclair/typebox").TLiteral<"not-applicable">, import("@sinclair/typebox").TLiteral<"platform-remediated">]>;
|
|
106
|
+
}>>;
|
|
107
|
+
}>>>;
|
|
108
|
+
storageDiagnostics: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TObject<{
|
|
109
|
+
coverage: import("@sinclair/typebox").TLiteral<"bicep-storage-service-diagnostics-v1">;
|
|
110
|
+
fullBaselineEvaluated: import("@sinclair/typebox").TLiteral<false>;
|
|
111
|
+
sourceHash: import("@sinclair/typebox").TString;
|
|
112
|
+
inputHash: import("@sinclair/typebox").TString;
|
|
113
|
+
bindingHash: import("@sinclair/typebox").TString;
|
|
114
|
+
outcome: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"pass">, import("@sinclair/typebox").TLiteral<"fail">, import("@sinclair/typebox").TLiteral<"unsupported">]>;
|
|
115
|
+
reason: import("@sinclair/typebox").TUnion<import("@sinclair/typebox").TLiteral<string>[]>;
|
|
116
|
+
}>>>;
|
|
117
|
+
outcome: import("@sinclair/typebox").TLiteral<"pass">;
|
|
118
|
+
commands: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
|
|
119
|
+
validatorId: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"bicep:format">, import("@sinclair/typebox").TLiteral<"bicep:build">, import("@sinclair/typebox").TLiteral<"bicep:lint">, import("@sinclair/typebox").TLiteral<"terraform:init-backend-false">, import("@sinclair/typebox").TLiteral<"terraform:format">, import("@sinclair/typebox").TLiteral<"terraform:validate">]>;
|
|
120
|
+
commandHash: import("@sinclair/typebox").TString;
|
|
121
|
+
exitCode: import("@sinclair/typebox").TLiteral<0>;
|
|
122
|
+
signal: import("@sinclair/typebox").TNull;
|
|
123
|
+
timedOut: import("@sinclair/typebox").TLiteral<false>;
|
|
124
|
+
outputTruncated: import("@sinclair/typebox").TLiteral<false>;
|
|
125
|
+
}>>;
|
|
126
|
+
receiptHash: import("@sinclair/typebox").TString;
|
|
127
|
+
}>;
|
|
128
|
+
export type NativeValidationReceiptV1 = Static<typeof NativeValidationReceiptV1Schema>;
|
|
129
|
+
export type NativeValidationBinding = Pick<NativeValidationReceiptV1, "projectId" | "runId" | "track" | "sourceHash" | "treeHash" | "policyHash" | "inputHash">;
|
|
130
|
+
export declare function calculateNativeValidationCommandHash(command: {
|
|
131
|
+
readonly executable: string;
|
|
132
|
+
readonly args: readonly string[];
|
|
133
|
+
}): string;
|
|
134
|
+
export declare function calculateNativeValidationReceiptHash(receipt: Omit<NativeValidationReceiptV1, "receiptHash">): string;
|
|
135
|
+
export declare function hasValidNativeValidationReceipt(value: unknown, binding: NativeValidationBinding): value is NativeValidationReceiptV1;
|
|
136
|
+
//# sourceMappingURL=native-validation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"native-validation.d.ts","sourceRoot":"","sources":["../src/native-validation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAgBtD,eAAO,MAAM,0BAA0B;aACrC,KAAK;iBACD,WAAW,EAAE,cAAc;iBAAE,UAAU,EAAE,OAAO;iBAAE,IAAI,YAAG,QAAQ,EAAE,WAAW,EAAE,YAAY;;iBAC5F,WAAW,EAAE,aAAa;iBAAE,UAAU,EAAE,OAAO;iBAAE,IAAI,YAAG,OAAO,EAAE,YAAY,EAAE,UAAU;;iBACzF,WAAW,EAAE,YAAY;iBAAE,UAAU,EAAE,OAAO;iBAAE,IAAI,YAAG,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,cAAc;;aAE5G,SAAS;iBAEL,WAAW,EAAE,8BAA8B;iBAC3C,UAAU,EAAE,WAAW;iBACvB,IAAI,YAAG,MAAM,EAAE,gBAAgB,EAAE,cAAc;;iBAE/C,WAAW,EAAE,kBAAkB;iBAAE,UAAU,EAAE,WAAW;iBAAE,IAAI,YAAG,KAAK,EAAE,QAAQ;;iBAChF,WAAW,EAAE,oBAAoB;iBAAE,UAAU,EAAE,WAAW;iBAAE,IAAI,YAAG,UAAU;;CAEzE,CAAC;AAWX,eAAO,MAAM,mCAAmC;;;EAa9C,CAAC;AA4BH,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4H3C,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG,MAAM,CAAC,OAAO,+BAA+B,CAAC,CAAC;AACvF,MAAM,MAAM,uBAAuB,GAAG,IAAI,CACxC,yBAAyB,EACzB,WAAW,GAAG,OAAO,GAAG,OAAO,GAAG,YAAY,GAAG,UAAU,GAAG,YAAY,GAAG,WAAW,CACzF,CAAC;AAEF,wBAAgB,oCAAoC,CAAC,OAAO,EAAE;IAC5D,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;CAClC,GAAG,MAAM,CAET;AAED,wBAAgB,oCAAoC,CAAC,OAAO,EAAE,IAAI,CAAC,yBAAyB,EAAE,aAAa,CAAC,GAAG,MAAM,CAEpH;AAED,wBAAgB,+BAA+B,CAC7C,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,uBAAuB,GAC/B,KAAK,IAAI,yBAAyB,CAuJpC"}
|
|
@@ -0,0 +1,276 @@
|
|
|
1
|
+
import { Type } from "@sinclair/typebox";
|
|
2
|
+
import { Value } from "@sinclair/typebox/value";
|
|
3
|
+
import { ContractVersionSchema, IacToolSchema, NonEmptyStringSchema, ProjectIdSchema, RunIdSchema, Sha256Schema, } from "./common.js";
|
|
4
|
+
import { calculatePolicyValidationDigest, hasValidPolicyValidation, PolicyValidationV1Schema, } from "./policy-validation.js";
|
|
5
|
+
export const NATIVE_VALIDATION_COMMANDS = {
|
|
6
|
+
bicep: [
|
|
7
|
+
{ validatorId: "bicep:format", executable: "bicep", args: ["format", "--pattern", "**/*.bicep"] },
|
|
8
|
+
{ validatorId: "bicep:build", executable: "bicep", args: ["build", "main.bicep", "--stdout"] },
|
|
9
|
+
{ validatorId: "bicep:lint", executable: "bicep", args: ["lint", "--pattern", "**/*.bicep", "--no-restore"] },
|
|
10
|
+
],
|
|
11
|
+
terraform: [
|
|
12
|
+
{
|
|
13
|
+
validatorId: "terraform:init-backend-false",
|
|
14
|
+
executable: "terraform",
|
|
15
|
+
args: ["init", "-backend=false", "-input=false"],
|
|
16
|
+
},
|
|
17
|
+
{ validatorId: "terraform:format", executable: "terraform", args: ["fmt", "-check"] },
|
|
18
|
+
{ validatorId: "terraform:validate", executable: "terraform", args: ["validate"] },
|
|
19
|
+
],
|
|
20
|
+
};
|
|
21
|
+
for (const commands of Object.values(NATIVE_VALIDATION_COMMANDS)) {
|
|
22
|
+
for (const command of commands) {
|
|
23
|
+
Object.freeze(command.args);
|
|
24
|
+
Object.freeze(command);
|
|
25
|
+
}
|
|
26
|
+
Object.freeze(commands);
|
|
27
|
+
}
|
|
28
|
+
Object.freeze(NATIVE_VALIDATION_COMMANDS);
|
|
29
|
+
export const STORAGE_PROPERTY_HARDENING_CONTROLS = Object.freeze({
|
|
30
|
+
bicep: Object.freeze([
|
|
31
|
+
Object.freeze(["properties.minimumTlsVersion", "TLS1_2"]),
|
|
32
|
+
Object.freeze(["properties.supportsHttpsTrafficOnly", true]),
|
|
33
|
+
Object.freeze(["properties.allowBlobPublicAccess", false]),
|
|
34
|
+
Object.freeze(["properties.allowSharedKeyAccess", false]),
|
|
35
|
+
]),
|
|
36
|
+
terraform: Object.freeze([
|
|
37
|
+
Object.freeze(["min_tls_version", "TLS1_2"]),
|
|
38
|
+
Object.freeze(["https_traffic_only_enabled", true]),
|
|
39
|
+
Object.freeze(["allow_nested_items_to_be_public", false]),
|
|
40
|
+
Object.freeze(["shared_access_key_enabled", false]),
|
|
41
|
+
]),
|
|
42
|
+
});
|
|
43
|
+
const policyResultProperties = PolicyValidationV1Schema.properties.results.items.properties;
|
|
44
|
+
const storageSecurityObservation = Type.Object({
|
|
45
|
+
coverage: Type.Literal("storage-account-property-hardening-v1"),
|
|
46
|
+
fullBaselineEvaluated: Type.Literal(false),
|
|
47
|
+
sourceHash: Sha256Schema,
|
|
48
|
+
inputHash: Sha256Schema,
|
|
49
|
+
bindingHash: Sha256Schema,
|
|
50
|
+
outcome: policyResultProperties.outcome,
|
|
51
|
+
results: Type.Array(Type.Object({
|
|
52
|
+
propertyPath: NonEmptyStringSchema,
|
|
53
|
+
expectedValueDigest: Sha256Schema,
|
|
54
|
+
observedValueDigest: Type.Optional(Sha256Schema),
|
|
55
|
+
outcome: policyResultProperties.outcome,
|
|
56
|
+
reason: policyResultProperties.reason,
|
|
57
|
+
}, { additionalProperties: false }), { minItems: 4, maxItems: 4 }),
|
|
58
|
+
}, { additionalProperties: false });
|
|
59
|
+
export const NativeValidationReceiptV1Schema = Type.Object({
|
|
60
|
+
schemaVersion: ContractVersionSchema,
|
|
61
|
+
projectId: ProjectIdSchema,
|
|
62
|
+
runId: RunIdSchema,
|
|
63
|
+
track: IacToolSchema,
|
|
64
|
+
sourceHash: Sha256Schema,
|
|
65
|
+
treeHash: Sha256Schema,
|
|
66
|
+
policyHash: Sha256Schema,
|
|
67
|
+
inputHash: Sha256Schema,
|
|
68
|
+
policyValidation: Type.Optional(PolicyValidationV1Schema),
|
|
69
|
+
securityBaseline: Type.Optional(Type.Object({
|
|
70
|
+
coverage: Type.Literal("bicep-storage-only-baseline-v1"),
|
|
71
|
+
sourceHash: Sha256Schema,
|
|
72
|
+
inputHash: Sha256Schema,
|
|
73
|
+
manifestHash: Sha256Schema,
|
|
74
|
+
bindingHash: Sha256Schema,
|
|
75
|
+
outcome: Type.Union([Type.Literal("pass"), Type.Literal("fail"), Type.Literal("unsupported")]),
|
|
76
|
+
reason: Type.Union([
|
|
77
|
+
"matched",
|
|
78
|
+
"resource-parity",
|
|
79
|
+
"unsupported-resource",
|
|
80
|
+
"credential-content",
|
|
81
|
+
"storage-controls",
|
|
82
|
+
"diagnostic-routing",
|
|
83
|
+
].map((reason) => Type.Literal(reason))),
|
|
84
|
+
}, { additionalProperties: false })),
|
|
85
|
+
resourceParity: Type.Optional(Type.Object({
|
|
86
|
+
coverage: Type.Literal("bicep-symbolic-resource-parity-v1"),
|
|
87
|
+
sourceHash: Sha256Schema,
|
|
88
|
+
manifestHash: Sha256Schema,
|
|
89
|
+
bindingHash: Type.Optional(Sha256Schema),
|
|
90
|
+
inputHash: Sha256Schema,
|
|
91
|
+
outcome: Type.Union([Type.Literal("pass"), Type.Literal("fail"), Type.Literal("unsupported")]),
|
|
92
|
+
reason: Type.Union([
|
|
93
|
+
Type.Literal("matched"),
|
|
94
|
+
Type.Literal("coverage-mismatch"),
|
|
95
|
+
Type.Literal("type-mismatch"),
|
|
96
|
+
Type.Literal("dependency-mismatch"),
|
|
97
|
+
Type.Literal("unsupported-resource"),
|
|
98
|
+
Type.Literal("invalid-source"),
|
|
99
|
+
]),
|
|
100
|
+
}, { additionalProperties: false })),
|
|
101
|
+
policyApplicability: Type.Optional(Type.Object({
|
|
102
|
+
status: Type.Literal("no-actionable-mappings"),
|
|
103
|
+
policyMapContentHash: Sha256Schema,
|
|
104
|
+
}, { additionalProperties: false })),
|
|
105
|
+
storageSecurity: Type.Optional(Type.Record(NonEmptyStringSchema, storageSecurityObservation, { maxProperties: 1000 })),
|
|
106
|
+
storageDiagnostics: Type.Optional(Type.Record(NonEmptyStringSchema, Type.Object({
|
|
107
|
+
coverage: Type.Literal("bicep-storage-service-diagnostics-v1"),
|
|
108
|
+
fullBaselineEvaluated: Type.Literal(false),
|
|
109
|
+
sourceHash: Sha256Schema,
|
|
110
|
+
inputHash: Sha256Schema,
|
|
111
|
+
bindingHash: Sha256Schema,
|
|
112
|
+
outcome: Type.Union([Type.Literal("pass"), Type.Literal("fail"), Type.Literal("unsupported")]),
|
|
113
|
+
reason: Type.Union([
|
|
114
|
+
"matched",
|
|
115
|
+
"invalid-source",
|
|
116
|
+
"ambiguous-or-unbound-account",
|
|
117
|
+
"unsupported-account",
|
|
118
|
+
"missing-or-ambiguous-service",
|
|
119
|
+
"unsupported-service",
|
|
120
|
+
"missing-or-ambiguous-diagnostics",
|
|
121
|
+
"unsupported-diagnostics",
|
|
122
|
+
"workspace-mismatch",
|
|
123
|
+
"missing-categories",
|
|
124
|
+
"disabled-or-missing-categories",
|
|
125
|
+
].map((reason) => Type.Literal(reason))),
|
|
126
|
+
}, { additionalProperties: false }), { maxProperties: 1000 })),
|
|
127
|
+
outcome: Type.Literal("pass"),
|
|
128
|
+
commands: Type.Array(Type.Object({
|
|
129
|
+
validatorId: Type.Union([
|
|
130
|
+
Type.Literal("bicep:format"),
|
|
131
|
+
Type.Literal("bicep:build"),
|
|
132
|
+
Type.Literal("bicep:lint"),
|
|
133
|
+
Type.Literal("terraform:init-backend-false"),
|
|
134
|
+
Type.Literal("terraform:format"),
|
|
135
|
+
Type.Literal("terraform:validate"),
|
|
136
|
+
]),
|
|
137
|
+
commandHash: Sha256Schema,
|
|
138
|
+
exitCode: Type.Literal(0),
|
|
139
|
+
signal: Type.Null(),
|
|
140
|
+
timedOut: Type.Literal(false),
|
|
141
|
+
outputTruncated: Type.Literal(false),
|
|
142
|
+
}, { additionalProperties: false }), { minItems: 1, maxItems: 3 }),
|
|
143
|
+
receiptHash: Sha256Schema,
|
|
144
|
+
}, { $id: "https://schemas.apexops.dev/native-validation-receipt-v1.json", additionalProperties: false });
|
|
145
|
+
export function calculateNativeValidationCommandHash(command) {
|
|
146
|
+
return calculatePolicyValidationDigest({ executable: command.executable, args: command.args });
|
|
147
|
+
}
|
|
148
|
+
export function calculateNativeValidationReceiptHash(receipt) {
|
|
149
|
+
return calculatePolicyValidationDigest(receipt);
|
|
150
|
+
}
|
|
151
|
+
export function hasValidNativeValidationReceipt(value, binding) {
|
|
152
|
+
try {
|
|
153
|
+
if (!Value.Check(NativeValidationReceiptV1Schema, value))
|
|
154
|
+
return false;
|
|
155
|
+
const { receiptHash, ...receipt } = value;
|
|
156
|
+
const keys = ["projectId", "runId", "track", "sourceHash", "treeHash", "policyHash", "inputHash"];
|
|
157
|
+
if (keys.some((key) => receipt[key] !== binding[key]))
|
|
158
|
+
return false;
|
|
159
|
+
if (receipt.policyApplicability !== undefined &&
|
|
160
|
+
(receipt.policyValidation !== undefined ||
|
|
161
|
+
receipt.policyApplicability.policyMapContentHash !== receipt.policyHash))
|
|
162
|
+
return false;
|
|
163
|
+
const storageInputHash = receipt.storageSecurity === undefined ? undefined : Object.values(receipt.storageSecurity)[0]?.inputHash;
|
|
164
|
+
const parity = receipt.resourceParity;
|
|
165
|
+
const baseline = receipt.securityBaseline;
|
|
166
|
+
if (baseline !== undefined &&
|
|
167
|
+
(receipt.track !== "bicep" ||
|
|
168
|
+
parity === undefined ||
|
|
169
|
+
baseline.sourceHash !== receipt.sourceHash ||
|
|
170
|
+
baseline.inputHash !== parity.inputHash ||
|
|
171
|
+
baseline.manifestHash !== parity.manifestHash ||
|
|
172
|
+
baseline.bindingHash !== parity.bindingHash ||
|
|
173
|
+
(baseline.outcome === "pass" && (baseline.reason !== "matched" || parity.outcome !== "pass")) ||
|
|
174
|
+
(baseline.reason === "matched" && baseline.outcome !== "pass") ||
|
|
175
|
+
(baseline.reason === "resource-parity" && (parity.outcome === "pass" || baseline.outcome !== parity.outcome)) ||
|
|
176
|
+
(baseline.reason === "unsupported-resource" && baseline.outcome !== "unsupported") ||
|
|
177
|
+
(["credential-content", "storage-controls"].includes(baseline.reason) && baseline.outcome !== "fail") ||
|
|
178
|
+
(baseline.reason === "diagnostic-routing" && baseline.outcome === "pass")))
|
|
179
|
+
return false;
|
|
180
|
+
if (receipt.storageDiagnostics !== undefined) {
|
|
181
|
+
const observations = Object.values(receipt.storageDiagnostics);
|
|
182
|
+
const inputHash = observations[0]?.inputHash;
|
|
183
|
+
if (receipt.track !== "bicep" ||
|
|
184
|
+
observations.some((observation) => observation.sourceHash !== receipt.sourceHash ||
|
|
185
|
+
observation.inputHash !== inputHash ||
|
|
186
|
+
(storageInputHash !== undefined && observation.inputHash !== storageInputHash) ||
|
|
187
|
+
(parity !== undefined && observation.inputHash !== parity.inputHash) ||
|
|
188
|
+
(receipt.policyValidation !== undefined && observation.inputHash !== receipt.policyValidation.inputHash) ||
|
|
189
|
+
observation.outcome !==
|
|
190
|
+
(observation.reason === "matched"
|
|
191
|
+
? "pass"
|
|
192
|
+
: [
|
|
193
|
+
"invalid-source",
|
|
194
|
+
"ambiguous-or-unbound-account",
|
|
195
|
+
"unsupported-account",
|
|
196
|
+
"unsupported-service",
|
|
197
|
+
"unsupported-diagnostics",
|
|
198
|
+
].includes(observation.reason)
|
|
199
|
+
? "unsupported"
|
|
200
|
+
: "fail")))
|
|
201
|
+
return false;
|
|
202
|
+
}
|
|
203
|
+
if (parity !== undefined &&
|
|
204
|
+
(receipt.track !== "bicep" ||
|
|
205
|
+
parity.sourceHash !== receipt.sourceHash ||
|
|
206
|
+
(storageInputHash !== undefined && parity.inputHash !== storageInputHash) ||
|
|
207
|
+
(receipt.policyValidation !== undefined && parity.inputHash !== receipt.policyValidation.inputHash) ||
|
|
208
|
+
parity.outcome !==
|
|
209
|
+
(parity.reason === "matched"
|
|
210
|
+
? "pass"
|
|
211
|
+
: ["unsupported-resource", "invalid-source"].includes(parity.reason)
|
|
212
|
+
? "unsupported"
|
|
213
|
+
: "fail")))
|
|
214
|
+
return false;
|
|
215
|
+
if (receipt.storageSecurity !== undefined &&
|
|
216
|
+
(receipt.track !== "bicep" ||
|
|
217
|
+
Object.values(receipt.storageSecurity).some((observation) => observation.sourceHash !== receipt.sourceHash ||
|
|
218
|
+
observation.inputHash !== storageInputHash ||
|
|
219
|
+
(receipt.policyValidation !== undefined && observation.inputHash !== receipt.policyValidation.inputHash) ||
|
|
220
|
+
observation.outcome !==
|
|
221
|
+
(observation.results.some(({ outcome }) => outcome === "fail")
|
|
222
|
+
? "fail"
|
|
223
|
+
: observation.results.some(({ outcome }) => outcome === "unsupported")
|
|
224
|
+
? "unsupported"
|
|
225
|
+
: "pass") ||
|
|
226
|
+
observation.results.some((result, index) => {
|
|
227
|
+
const control = STORAGE_PROPERTY_HARDENING_CONTROLS.bicep[index];
|
|
228
|
+
if (control === undefined ||
|
|
229
|
+
result.propertyPath !== control[0] ||
|
|
230
|
+
result.expectedValueDigest !== calculatePolicyValidationDigest(control[1]))
|
|
231
|
+
return true;
|
|
232
|
+
if (result.reason === "matched")
|
|
233
|
+
return result.outcome !== "pass" || result.expectedValueDigest !== result.observedValueDigest;
|
|
234
|
+
if (result.reason === "value-mismatch")
|
|
235
|
+
return (result.outcome !== "fail" ||
|
|
236
|
+
result.observedValueDigest === undefined ||
|
|
237
|
+
result.expectedValueDigest === result.observedValueDigest);
|
|
238
|
+
if (result.reason === "missing-property")
|
|
239
|
+
return result.outcome !== "fail" || result.observedValueDigest !== undefined;
|
|
240
|
+
return (![
|
|
241
|
+
"unsupported-expression",
|
|
242
|
+
"resource-not-bound",
|
|
243
|
+
"resource-not-found",
|
|
244
|
+
"ambiguous-resource",
|
|
245
|
+
"unsupported-resource",
|
|
246
|
+
"invalid-source",
|
|
247
|
+
].includes(result.reason) ||
|
|
248
|
+
result.outcome !== "unsupported" ||
|
|
249
|
+
result.observedValueDigest !== undefined);
|
|
250
|
+
}))))
|
|
251
|
+
return false;
|
|
252
|
+
const policy = receipt.policyValidation;
|
|
253
|
+
if (policy !== undefined &&
|
|
254
|
+
(policy.projectId !== receipt.projectId ||
|
|
255
|
+
policy.runId !== receipt.runId ||
|
|
256
|
+
policy.outcome !== "pass" ||
|
|
257
|
+
!hasValidPolicyValidation(policy, {
|
|
258
|
+
track: receipt.track,
|
|
259
|
+
sourceHash: receipt.sourceHash,
|
|
260
|
+
policyMapHash: receipt.policyHash,
|
|
261
|
+
policyMapContentHash: policy.policyMapContentHash,
|
|
262
|
+
logicalResourceManifestHash: policy.logicalResourceManifestHash,
|
|
263
|
+
inputHash: policy.inputHash,
|
|
264
|
+
})))
|
|
265
|
+
return false;
|
|
266
|
+
const expected = NATIVE_VALIDATION_COMMANDS[receipt.track];
|
|
267
|
+
return (receipt.commands.length === expected.length &&
|
|
268
|
+
expected.every((command, index) => receipt.commands[index]?.validatorId === command.validatorId &&
|
|
269
|
+
receipt.commands[index]?.commandHash === calculateNativeValidationCommandHash(command)) &&
|
|
270
|
+
receiptHash === calculateNativeValidationReceiptHash(receipt));
|
|
271
|
+
}
|
|
272
|
+
catch {
|
|
273
|
+
return false;
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
//# sourceMappingURL=native-validation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"native-validation.js","sourceRoot":"","sources":["../src/native-validation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAe,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAChD,OAAO,EACL,qBAAqB,EACrB,aAAa,EACb,oBAAoB,EACpB,eAAe,EACf,WAAW,EACX,YAAY,GACb,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,+BAA+B,EAC/B,wBAAwB,EACxB,wBAAwB,GACzB,MAAM,wBAAwB,CAAC;AAEhC,MAAM,CAAC,MAAM,0BAA0B,GAAG;IACxC,KAAK,EAAE;QACL,EAAE,WAAW,EAAE,cAAc,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,QAAQ,EAAE,WAAW,EAAE,YAAY,CAAC,EAAE;QACjG,EAAE,WAAW,EAAE,aAAa,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE,YAAY,EAAE,UAAU,CAAC,EAAE;QAC9F,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,cAAc,CAAC,EAAE;KAC9G;IACD,SAAS,EAAE;QACT;YACE,WAAW,EAAE,8BAA8B;YAC3C,UAAU,EAAE,WAAW;YACvB,IAAI,EAAE,CAAC,MAAM,EAAE,gBAAgB,EAAE,cAAc,CAAC;SACjD;QACD,EAAE,WAAW,EAAE,kBAAkB,EAAE,UAAU,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE;QACrF,EAAE,WAAW,EAAE,oBAAoB,EAAE,UAAU,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE;KACnF;CACO,CAAC;AAEX,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,0BAA0B,CAAC,EAAE,CAAC;IACjE,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC5B,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACzB,CAAC;IACD,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC1B,CAAC;AACD,MAAM,CAAC,MAAM,CAAC,0BAA0B,CAAC,CAAC;AAE1C,MAAM,CAAC,MAAM,mCAAmC,GAAG,MAAM,CAAC,MAAM,CAAC;IAC/D,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC;QACnB,MAAM,CAAC,MAAM,CAAC,CAAC,8BAA8B,EAAE,QAAQ,CAAU,CAAC;QAClE,MAAM,CAAC,MAAM,CAAC,CAAC,qCAAqC,EAAE,IAAI,CAAU,CAAC;QACrE,MAAM,CAAC,MAAM,CAAC,CAAC,kCAAkC,EAAE,KAAK,CAAU,CAAC;QACnE,MAAM,CAAC,MAAM,CAAC,CAAC,iCAAiC,EAAE,KAAK,CAAU,CAAC;KACnE,CAAC;IACF,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC;QACvB,MAAM,CAAC,MAAM,CAAC,CAAC,iBAAiB,EAAE,QAAQ,CAAU,CAAC;QACrD,MAAM,CAAC,MAAM,CAAC,CAAC,4BAA4B,EAAE,IAAI,CAAU,CAAC;QAC5D,MAAM,CAAC,MAAM,CAAC,CAAC,iCAAiC,EAAE,KAAK,CAAU,CAAC;QAClE,MAAM,CAAC,MAAM,CAAC,CAAC,2BAA2B,EAAE,KAAK,CAAU,CAAC;KAC7D,CAAC;CACH,CAAC,CAAC;AAEH,MAAM,sBAAsB,GAAG,wBAAwB,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC;AAC5F,MAAM,0BAA0B,GAAG,IAAI,CAAC,MAAM,CAC5C;IACE,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,uCAAuC,CAAC;IAC/D,qBAAqB,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;IAC1C,UAAU,EAAE,YAAY;IACxB,SAAS,EAAE,YAAY;IACvB,WAAW,EAAE,YAAY;IACzB,OAAO,EAAE,sBAAsB,CAAC,OAAO;IACvC,OAAO,EAAE,IAAI,CAAC,KAAK,CACjB,IAAI,CAAC,MAAM,CACT;QACE,YAAY,EAAE,oBAAoB;QAClC,mBAAmB,EAAE,YAAY;QACjC,mBAAmB,EAAE,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;QAChD,OAAO,EAAE,sBAAsB,CAAC,OAAO;QACvC,MAAM,EAAE,sBAAsB,CAAC,MAAM;KACtC,EACD,EAAE,oBAAoB,EAAE,KAAK,EAAE,CAChC,EACD,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,CAC7B;CACF,EACD,EAAE,oBAAoB,EAAE,KAAK,EAAE,CAChC,CAAC;AAEF,MAAM,CAAC,MAAM,+BAA+B,GAAG,IAAI,CAAC,MAAM,CACxD;IACE,aAAa,EAAE,qBAAqB;IACpC,SAAS,EAAE,eAAe;IAC1B,KAAK,EAAE,WAAW;IAClB,KAAK,EAAE,aAAa;IACpB,UAAU,EAAE,YAAY;IACxB,QAAQ,EAAE,YAAY;IACtB,UAAU,EAAE,YAAY;IACxB,SAAS,EAAE,YAAY;IACvB,gBAAgB,EAAE,IAAI,CAAC,QAAQ,CAAC,wBAAwB,CAAC;IACzD,gBAAgB,EAAE,IAAI,CAAC,QAAQ,CAC7B,IAAI,CAAC,MAAM,CACT;QACE,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,gCAAgC,CAAC;QACxD,UAAU,EAAE,YAAY;QACxB,SAAS,EAAE,YAAY;QACvB,YAAY,EAAE,YAAY;QAC1B,WAAW,EAAE,YAAY;QACzB,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC;QAC9F,MAAM,EAAE,IAAI,CAAC,KAAK,CAChB;YACE,SAAS;YACT,iBAAiB;YACjB,sBAAsB;YACtB,oBAAoB;YACpB,kBAAkB;YAClB,oBAAoB;SACrB,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CACxC;KACF,EACD,EAAE,oBAAoB,EAAE,KAAK,EAAE,CAChC,CACF;IACD,cAAc,EAAE,IAAI,CAAC,QAAQ,CAC3B,IAAI,CAAC,MAAM,CACT;QACE,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,mCAAmC,CAAC;QAC3D,UAAU,EAAE,YAAY;QACxB,YAAY,EAAE,YAAY;QAC1B,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;QACxC,SAAS,EAAE,YAAY;QACvB,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC;QAC9F,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC;YACjB,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;YACvB,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC;YACjC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC;YAC7B,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC;YACnC,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC;YACpC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC;SAC/B,CAAC;KACH,EACD,EAAE,oBAAoB,EAAE,KAAK,EAAE,CAChC,CACF;IACD,mBAAmB,EAAE,IAAI,CAAC,QAAQ,CAChC,IAAI,CAAC,MAAM,CACT;QACE,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,wBAAwB,CAAC;QAC9C,oBAAoB,EAAE,YAAY;KACnC,EACD,EAAE,oBAAoB,EAAE,KAAK,EAAE,CAChC,CACF;IACD,eAAe,EAAE,IAAI,CAAC,QAAQ,CAC5B,IAAI,CAAC,MAAM,CAAC,oBAAoB,EAAE,0BAA0B,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CACvF;IACD,kBAAkB,EAAE,IAAI,CAAC,QAAQ,CAC/B,IAAI,CAAC,MAAM,CACT,oBAAoB,EACpB,IAAI,CAAC,MAAM,CACT;QACE,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,sCAAsC,CAAC;QAC9D,qBAAqB,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;QAC1C,UAAU,EAAE,YAAY;QACxB,SAAS,EAAE,YAAY;QACvB,WAAW,EAAE,YAAY;QACzB,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC;QAC9F,MAAM,EAAE,IAAI,CAAC,KAAK,CAChB;YACE,SAAS;YACT,gBAAgB;YAChB,8BAA8B;YAC9B,qBAAqB;YACrB,8BAA8B;YAC9B,qBAAqB;YACrB,kCAAkC;YAClC,yBAAyB;YACzB,oBAAoB;YACpB,oBAAoB;YACpB,gCAAgC;SACjC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CACxC;KACF,EACD,EAAE,oBAAoB,EAAE,KAAK,EAAE,CAChC,EACD,EAAE,aAAa,EAAE,IAAI,EAAE,CACxB,CACF;IACD,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;IAC7B,QAAQ,EAAE,IAAI,CAAC,KAAK,CAClB,IAAI,CAAC,MAAM,CACT;QACE,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC;YACtB,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC;YAC5B,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;YAC3B,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC;YAC1B,IAAI,CAAC,OAAO,CAAC,8BAA8B,CAAC;YAC5C,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC;YAChC,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC;SACnC,CAAC;QACF,WAAW,EAAE,YAAY;QACzB,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;QACzB,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE;QACnB,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;QAC7B,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;KACrC,EACD,EAAE,oBAAoB,EAAE,KAAK,EAAE,CAChC,EACD,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,CAC7B;IACD,WAAW,EAAE,YAAY;CAC1B,EACD,EAAE,GAAG,EAAE,+DAA+D,EAAE,oBAAoB,EAAE,KAAK,EAAE,CACtG,CAAC;AAQF,MAAM,UAAU,oCAAoC,CAAC,OAGpD;IACC,OAAO,+BAA+B,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;AACjG,CAAC;AAED,MAAM,UAAU,oCAAoC,CAAC,OAAuD;IAC1G,OAAO,+BAA+B,CAAC,OAAO,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,+BAA+B,CAC7C,KAAc,EACd,OAAgC;IAEhC,IAAI,CAAC;QACH,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,+BAA+B,EAAE,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QACvE,MAAM,EAAE,WAAW,EAAE,GAAG,OAAO,EAAE,GAAG,KAAK,CAAC;QAC1C,MAAM,IAAI,GAAG,CAAC,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,CAAU,CAAC;QAC3G,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;QACpE,IACE,OAAO,CAAC,mBAAmB,KAAK,SAAS;YACzC,CAAC,OAAO,CAAC,gBAAgB,KAAK,SAAS;gBACrC,OAAO,CAAC,mBAAmB,CAAC,oBAAoB,KAAK,OAAO,CAAC,UAAU,CAAC;YAE1E,OAAO,KAAK,CAAC;QACf,MAAM,gBAAgB,GACpB,OAAO,CAAC,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC;QAC3G,MAAM,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;QACtC,MAAM,QAAQ,GAAG,OAAO,CAAC,gBAAgB,CAAC;QAC1C,IACE,QAAQ,KAAK,SAAS;YACtB,CAAC,OAAO,CAAC,KAAK,KAAK,OAAO;gBACxB,MAAM,KAAK,SAAS;gBACpB,QAAQ,CAAC,UAAU,KAAK,OAAO,CAAC,UAAU;gBAC1C,QAAQ,CAAC,SAAS,KAAK,MAAM,CAAC,SAAS;gBACvC,QAAQ,CAAC,YAAY,KAAK,MAAM,CAAC,YAAY;gBAC7C,QAAQ,CAAC,WAAW,KAAK,MAAM,CAAC,WAAW;gBAC3C,CAAC,QAAQ,CAAC,OAAO,KAAK,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,OAAO,KAAK,MAAM,CAAC,CAAC;gBAC7F,CAAC,QAAQ,CAAC,MAAM,KAAK,SAAS,IAAI,QAAQ,CAAC,OAAO,KAAK,MAAM,CAAC;gBAC9D,CAAC,QAAQ,CAAC,MAAM,KAAK,iBAAiB,IAAI,CAAC,MAAM,CAAC,OAAO,KAAK,MAAM,IAAI,QAAQ,CAAC,OAAO,KAAK,MAAM,CAAC,OAAO,CAAC,CAAC;gBAC7G,CAAC,QAAQ,CAAC,MAAM,KAAK,sBAAsB,IAAI,QAAQ,CAAC,OAAO,KAAK,aAAa,CAAC;gBAClF,CAAC,CAAC,oBAAoB,EAAE,kBAAkB,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,OAAO,KAAK,MAAM,CAAC;gBACrG,CAAC,QAAQ,CAAC,MAAM,KAAK,oBAAoB,IAAI,QAAQ,CAAC,OAAO,KAAK,MAAM,CAAC,CAAC;YAE5E,OAAO,KAAK,CAAC;QACf,IAAI,OAAO,CAAC,kBAAkB,KAAK,SAAS,EAAE,CAAC;YAC7C,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;YAC/D,MAAM,SAAS,GAAG,YAAY,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC;YAC7C,IACE,OAAO,CAAC,KAAK,KAAK,OAAO;gBACzB,YAAY,CAAC,IAAI,CACf,CAAC,WAAW,EAAE,EAAE,CACd,WAAW,CAAC,UAAU,KAAK,OAAO,CAAC,UAAU;oBAC7C,WAAW,CAAC,SAAS,KAAK,SAAS;oBACnC,CAAC,gBAAgB,KAAK,SAAS,IAAI,WAAW,CAAC,SAAS,KAAK,gBAAgB,CAAC;oBAC9E,CAAC,MAAM,KAAK,SAAS,IAAI,WAAW,CAAC,SAAS,KAAK,MAAM,CAAC,SAAS,CAAC;oBACpE,CAAC,OAAO,CAAC,gBAAgB,KAAK,SAAS,IAAI,WAAW,CAAC,SAAS,KAAK,OAAO,CAAC,gBAAgB,CAAC,SAAS,CAAC;oBACxG,WAAW,CAAC,OAAO;wBACjB,CAAC,WAAW,CAAC,MAAM,KAAK,SAAS;4BAC/B,CAAC,CAAC,MAAM;4BACR,CAAC,CAAC;gCACI,gBAAgB;gCAChB,8BAA8B;gCAC9B,qBAAqB;gCACrB,qBAAqB;gCACrB,yBAAyB;6BAC1B,CAAC,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC;gCAChC,CAAC,CAAC,aAAa;gCACf,CAAC,CAAC,MAAM,CAAC,CAClB;gBAED,OAAO,KAAK,CAAC;QACjB,CAAC;QACD,IACE,MAAM,KAAK,SAAS;YACpB,CAAC,OAAO,CAAC,KAAK,KAAK,OAAO;gBACxB,MAAM,CAAC,UAAU,KAAK,OAAO,CAAC,UAAU;gBACxC,CAAC,gBAAgB,KAAK,SAAS,IAAI,MAAM,CAAC,SAAS,KAAK,gBAAgB,CAAC;gBACzE,CAAC,OAAO,CAAC,gBAAgB,KAAK,SAAS,IAAI,MAAM,CAAC,SAAS,KAAK,OAAO,CAAC,gBAAgB,CAAC,SAAS,CAAC;gBACnG,MAAM,CAAC,OAAO;oBACZ,CAAC,MAAM,CAAC,MAAM,KAAK,SAAS;wBAC1B,CAAC,CAAC,MAAM;wBACR,CAAC,CAAC,CAAC,sBAAsB,EAAE,gBAAgB,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;4BAClE,CAAC,CAAC,aAAa;4BACf,CAAC,CAAC,MAAM,CAAC,CAAC;YAElB,OAAO,KAAK,CAAC;QACf,IACE,OAAO,CAAC,eAAe,KAAK,SAAS;YACrC,CAAC,OAAO,CAAC,KAAK,KAAK,OAAO;gBACxB,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,IAAI,CACzC,CAAC,WAAW,EAAE,EAAE,CACd,WAAW,CAAC,UAAU,KAAK,OAAO,CAAC,UAAU;oBAC7C,WAAW,CAAC,SAAS,KAAK,gBAAgB;oBAC1C,CAAC,OAAO,CAAC,gBAAgB,KAAK,SAAS,IAAI,WAAW,CAAC,SAAS,KAAK,OAAO,CAAC,gBAAgB,CAAC,SAAS,CAAC;oBACxG,WAAW,CAAC,OAAO;wBACjB,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,OAAO,KAAK,MAAM,CAAC;4BAC5D,CAAC,CAAC,MAAM;4BACR,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,OAAO,KAAK,aAAa,CAAC;gCACpE,CAAC,CAAC,aAAa;gCACf,CAAC,CAAC,MAAM,CAAC;oBACf,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;wBACzC,MAAM,OAAO,GAAG,mCAAmC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;wBACjE,IACE,OAAO,KAAK,SAAS;4BACrB,MAAM,CAAC,YAAY,KAAK,OAAO,CAAC,CAAC,CAAC;4BAClC,MAAM,CAAC,mBAAmB,KAAK,+BAA+B,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;4BAE1E,OAAO,IAAI,CAAC;wBACd,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS;4BAC7B,OAAO,MAAM,CAAC,OAAO,KAAK,MAAM,IAAI,MAAM,CAAC,mBAAmB,KAAK,MAAM,CAAC,mBAAmB,CAAC;wBAChG,IAAI,MAAM,CAAC,MAAM,KAAK,gBAAgB;4BACpC,OAAO,CACL,MAAM,CAAC,OAAO,KAAK,MAAM;gCACzB,MAAM,CAAC,mBAAmB,KAAK,SAAS;gCACxC,MAAM,CAAC,mBAAmB,KAAK,MAAM,CAAC,mBAAmB,CAC1D,CAAC;wBACJ,IAAI,MAAM,CAAC,MAAM,KAAK,kBAAkB;4BACtC,OAAO,MAAM,CAAC,OAAO,KAAK,MAAM,IAAI,MAAM,CAAC,mBAAmB,KAAK,SAAS,CAAC;wBAC/E,OAAO,CACL,CAAC;4BACC,wBAAwB;4BACxB,oBAAoB;4BACpB,oBAAoB;4BACpB,oBAAoB;4BACpB,sBAAsB;4BACtB,gBAAgB;yBACjB,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;4BACzB,MAAM,CAAC,OAAO,KAAK,aAAa;4BAChC,MAAM,CAAC,mBAAmB,KAAK,SAAS,CACzC,CAAC;oBACJ,CAAC,CAAC,CACL,CAAC;YAEJ,OAAO,KAAK,CAAC;QACf,MAAM,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;QACxC,IACE,MAAM,KAAK,SAAS;YACpB,CAAC,MAAM,CAAC,SAAS,KAAK,OAAO,CAAC,SAAS;gBACrC,MAAM,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK;gBAC9B,MAAM,CAAC,OAAO,KAAK,MAAM;gBACzB,CAAC,wBAAwB,CAAC,MAAM,EAAE;oBAChC,KAAK,EAAE,OAAO,CAAC,KAAK;oBACpB,UAAU,EAAE,OAAO,CAAC,UAAU;oBAC9B,aAAa,EAAE,OAAO,CAAC,UAAU;oBACjC,oBAAoB,EAAE,MAAM,CAAC,oBAAoB;oBACjD,2BAA2B,EAAE,MAAM,CAAC,2BAA2B;oBAC/D,SAAS,EAAE,MAAM,CAAC,SAAS;iBAC5B,CAAC,CAAC;YAEL,OAAO,KAAK,CAAC;QACf,MAAM,QAAQ,GAAG,0BAA0B,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC3D,OAAO,CACL,OAAO,CAAC,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM;YAC3C,QAAQ,CAAC,KAAK,CACZ,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CACjB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,WAAW;gBAC5D,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,WAAW,KAAK,oCAAoC,CAAC,OAAO,CAAC,CACzF;YACD,WAAW,KAAK,oCAAoC,CAAC,OAAO,CAAC,CAC9D,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
|