@empressaio/atom-contract 1.18.0 → 1.20.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.
@@ -0,0 +1,119 @@
1
+ import { z } from "zod";
2
+ import { REASONING_CHAIN_OBSERVED_SCHEMA } from "../reasoning-chain.js";
3
+ import { PARCEL_NODE_ID_PATTERN, PROPERTY_ACCESS_POLICY_SCHEMA, PROPERTY_ATOM_TIER, PROPERTY_DEFAULT_ACCESS_POLICY, PROPERTY_QUALITY_GATE_FIELDS, PROPERTY_READ_CONTRACT_SCHEMA, RRC_PIPELINE_ABSENCE_SCHEMA, RRC_PIPELINE_SOURCE_TIER_SCHEMA, SITE_LAYER_PROVENANCE_FIELDS, SITE_LAYER_VERIFIED_ABSENCE_SCHEMA, } from "./common.js";
4
+ function hasPipelineClaim(data) {
5
+ return (data.nearPipeline !== undefined ||
6
+ data.nearestPipelineDistanceMeters !== undefined ||
7
+ data.t4permit !== undefined ||
8
+ data.p5Num !== undefined ||
9
+ data.operatorName !== undefined ||
10
+ data.systemName !== undefined ||
11
+ data.commodity !== undefined ||
12
+ data.commodityDescription !== undefined ||
13
+ data.systemType !== undefined ||
14
+ data.status !== undefined ||
15
+ data.diameter !== undefined ||
16
+ data.interstate !== undefined);
17
+ }
18
+ export const RRC_PIPELINE_FACT_SCHEMA = z
19
+ .object({
20
+ entityType: z.literal("rrc-pipeline-fact"),
21
+ atomDid: z
22
+ .string()
23
+ .min(1)
24
+ .refine((val) => /^pipefact_[0-9a-f]{16}$/.test(val), {
25
+ message: "atomDid must be in format pipefact_<16-hex-chars>",
26
+ }),
27
+ parcelNodeId: z
28
+ .string()
29
+ .min(1)
30
+ .refine((val) => PARCEL_NODE_ID_PATTERN.test(val), {
31
+ message: "parcelNodeId must match {county_fips}:{prop_id}",
32
+ }),
33
+ reasoningChain: REASONING_CHAIN_OBSERVED_SCHEMA,
34
+ sourceTier: RRC_PIPELINE_SOURCE_TIER_SCHEMA,
35
+ bufferMeters: z.number().positive(),
36
+ nearPipeline: z.boolean().optional(),
37
+ nearestPipelineDistanceMeters: z.number().nonnegative().optional(),
38
+ t4permit: z.string().min(1).optional(),
39
+ p5Num: z.string().min(1).optional(),
40
+ operatorName: z.string().min(1).optional(),
41
+ systemName: z.string().min(1).optional(),
42
+ commodity: z.string().min(1).optional(),
43
+ commodityDescription: z.string().min(1).optional(),
44
+ systemType: z.string().min(1).optional(),
45
+ status: z.string().min(1).optional(),
46
+ diameter: z.number().optional(),
47
+ interstate: z.union([z.boolean(), z.string()]).optional(),
48
+ absence: RRC_PIPELINE_ABSENCE_SCHEMA.optional(),
49
+ verifiedAbsence: SITE_LAYER_VERIFIED_ABSENCE_SCHEMA.optional(),
50
+ accessPolicy: PROPERTY_ACCESS_POLICY_SCHEMA,
51
+ ...PROPERTY_QUALITY_GATE_FIELDS,
52
+ ...SITE_LAYER_PROVENANCE_FIELDS,
53
+ atomTier: z.literal(PROPERTY_ATOM_TIER),
54
+ readContract: PROPERTY_READ_CONTRACT_SCHEMA.optional(),
55
+ })
56
+ .superRefine((data, ctx) => {
57
+ const hasAbsence = data.absence !== undefined;
58
+ const isAbsentTier = data.sourceTier === "absent";
59
+ const hasClaim = hasPipelineClaim(data);
60
+ if (data.accessPolicy !== PROPERTY_DEFAULT_ACCESS_POLICY) {
61
+ ctx.addIssue({
62
+ code: z.ZodIssueCode.custom,
63
+ message: "rrc-pipeline-fact must use accessPolicy public-free",
64
+ path: ["accessPolicy"],
65
+ });
66
+ }
67
+ if (hasClaim && hasAbsence) {
68
+ ctx.addIssue({
69
+ code: z.ZodIssueCode.custom,
70
+ message: "pipeline claim fields and absence are mutually exclusive",
71
+ path: ["absence"],
72
+ });
73
+ }
74
+ if (isAbsentTier) {
75
+ if (!data.verifiedAbsence) {
76
+ ctx.addIssue({
77
+ code: z.ZodIssueCode.custom,
78
+ message: "sourceTier absent requires verifiedAbsence (evaluated + provenanceScope)",
79
+ path: ["verifiedAbsence"],
80
+ });
81
+ }
82
+ if (hasClaim || data.nearPipeline !== undefined) {
83
+ ctx.addIssue({
84
+ code: z.ZodIssueCode.custom,
85
+ message: "sourceTier absent must not carry pipeline claim fields",
86
+ path: ["sourceTier"],
87
+ });
88
+ }
89
+ }
90
+ else if (hasAbsence) {
91
+ if (hasClaim || data.nearPipeline !== undefined) {
92
+ ctx.addIssue({
93
+ code: z.ZodIssueCode.custom,
94
+ message: "absence must not coexist with pipeline claim fields",
95
+ path: ["absence"],
96
+ });
97
+ }
98
+ }
99
+ else if (data.nearPipeline === undefined) {
100
+ ctx.addIssue({
101
+ code: z.ZodIssueCode.custom,
102
+ message: "rrc-public-gis tier requires nearPipeline when no absence",
103
+ path: ["nearPipeline"],
104
+ });
105
+ }
106
+ else if (data.nearPipeline) {
107
+ if (data.nearestPipelineDistanceMeters === undefined) {
108
+ ctx.addIssue({
109
+ code: z.ZodIssueCode.custom,
110
+ message: "nearPipeline true requires nearestPipelineDistanceMeters",
111
+ path: ["nearestPipelineDistanceMeters"],
112
+ });
113
+ }
114
+ }
115
+ });
116
+ export function createRrcPipelineFact(input) {
117
+ return RRC_PIPELINE_FACT_SCHEMA.parse(input);
118
+ }
119
+ //# sourceMappingURL=rrc-pipeline-fact.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rrc-pipeline-fact.js","sourceRoot":"","sources":["../../src/property/rrc-pipeline-fact.ts"],"names":[],"mappings":"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"}