@empressaio/atom-contract 1.16.0 → 1.18.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/dist/property/common.d.ts +68 -0
- package/dist/property/common.d.ts.map +1 -1
- package/dist/property/common.js +56 -0
- package/dist/property/common.js.map +1 -1
- package/dist/property/fixtures.d.ts +134 -0
- package/dist/property/fixtures.d.ts.map +1 -1
- package/dist/property/fixtures.js +152 -0
- package/dist/property/fixtures.js.map +1 -1
- package/dist/property/index.d.ts +2 -0
- package/dist/property/index.d.ts.map +1 -1
- package/dist/property/index.js +2 -0
- package/dist/property/index.js.map +1 -1
- package/dist/property/rail-corridor-fact.d.ts +646 -0
- package/dist/property/rail-corridor-fact.d.ts.map +1 -0
- package/dist/property/rail-corridor-fact.js +112 -0
- package/dist/property/rail-corridor-fact.js.map +1 -0
- package/dist/property/well-fact.d.ts +670 -0
- package/dist/property/well-fact.d.ts.map +1 -0
- package/dist/property/well-fact.js +135 -0
- package/dist/property/well-fact.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,135 @@
|
|
|
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, SITE_LAYER_PROVENANCE_FIELDS, SITE_LAYER_VERIFIED_ABSENCE_SCHEMA, WELL_FACT_ABSENCE_SCHEMA, WELL_FACT_SOURCE_TIER_SCHEMA, WELL_PARCEL_RELATION_SCHEMA, WELL_STATUS_SCHEMA, WELL_SURFACE_LOCATION_SCHEMA, WELL_TYPE_SCHEMA, } from "./common.js";
|
|
4
|
+
export const WELL_FACT_SCHEMA = z
|
|
5
|
+
.object({
|
|
6
|
+
entityType: z.literal("well-fact"),
|
|
7
|
+
atomDid: z
|
|
8
|
+
.string()
|
|
9
|
+
.min(1)
|
|
10
|
+
.refine((val) => /^wlfact_[0-9a-f]{16}$/.test(val), {
|
|
11
|
+
message: "atomDid must be in format wlfact_<16-hex-chars>",
|
|
12
|
+
}),
|
|
13
|
+
parcelNodeId: z
|
|
14
|
+
.string()
|
|
15
|
+
.min(1)
|
|
16
|
+
.refine((val) => PARCEL_NODE_ID_PATTERN.test(val), {
|
|
17
|
+
message: "parcelNodeId must match {county_fips}:{prop_id}",
|
|
18
|
+
}),
|
|
19
|
+
wellKey: z.string().min(1),
|
|
20
|
+
reasoningChain: REASONING_CHAIN_OBSERVED_SCHEMA,
|
|
21
|
+
sourceTier: WELL_FACT_SOURCE_TIER_SCHEMA,
|
|
22
|
+
apiNumber14: z
|
|
23
|
+
.string()
|
|
24
|
+
.min(10)
|
|
25
|
+
.max(14)
|
|
26
|
+
.regex(/^\d+$/, "apiNumber14 must be numeric")
|
|
27
|
+
.optional(),
|
|
28
|
+
wellStatus: WELL_STATUS_SCHEMA.optional(),
|
|
29
|
+
wellType: WELL_TYPE_SCHEMA.optional(),
|
|
30
|
+
orphaned: z.boolean().optional(),
|
|
31
|
+
operatorName: z.string().min(1).optional(),
|
|
32
|
+
surfaceLocation: WELL_SURFACE_LOCATION_SCHEMA.optional(),
|
|
33
|
+
parcelRelation: WELL_PARCEL_RELATION_SCHEMA.optional(),
|
|
34
|
+
proximityRadiusMeters: z.number().positive().optional(),
|
|
35
|
+
proximityDistanceMeters: z.number().nonnegative().optional(),
|
|
36
|
+
absence: WELL_FACT_ABSENCE_SCHEMA.optional(),
|
|
37
|
+
verifiedAbsence: SITE_LAYER_VERIFIED_ABSENCE_SCHEMA.optional(),
|
|
38
|
+
accessPolicy: PROPERTY_ACCESS_POLICY_SCHEMA,
|
|
39
|
+
...PROPERTY_QUALITY_GATE_FIELDS,
|
|
40
|
+
...SITE_LAYER_PROVENANCE_FIELDS,
|
|
41
|
+
atomTier: z.literal(PROPERTY_ATOM_TIER),
|
|
42
|
+
readContract: PROPERTY_READ_CONTRACT_SCHEMA.optional(),
|
|
43
|
+
})
|
|
44
|
+
.superRefine((data, ctx) => {
|
|
45
|
+
const hasAbsence = data.absence !== undefined;
|
|
46
|
+
const isAbsentTier = data.sourceTier === "absent";
|
|
47
|
+
const hasWellClaim = data.apiNumber14 !== undefined &&
|
|
48
|
+
data.wellStatus !== undefined &&
|
|
49
|
+
data.wellType !== undefined &&
|
|
50
|
+
data.orphaned !== undefined &&
|
|
51
|
+
data.surfaceLocation !== undefined &&
|
|
52
|
+
data.parcelRelation !== undefined &&
|
|
53
|
+
data.proximityRadiusMeters !== undefined;
|
|
54
|
+
if (data.accessPolicy !== PROPERTY_DEFAULT_ACCESS_POLICY) {
|
|
55
|
+
ctx.addIssue({
|
|
56
|
+
code: z.ZodIssueCode.custom,
|
|
57
|
+
message: "well-fact must use accessPolicy public-free",
|
|
58
|
+
path: ["accessPolicy"],
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
if (hasWellClaim && hasAbsence) {
|
|
62
|
+
ctx.addIssue({
|
|
63
|
+
code: z.ZodIssueCode.custom,
|
|
64
|
+
message: "well claim fields and absence are mutually exclusive",
|
|
65
|
+
path: ["absence"],
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
if (isAbsentTier) {
|
|
69
|
+
if (!data.verifiedAbsence) {
|
|
70
|
+
ctx.addIssue({
|
|
71
|
+
code: z.ZodIssueCode.custom,
|
|
72
|
+
message: "sourceTier absent requires verifiedAbsence (evaluated + provenanceScope)",
|
|
73
|
+
path: ["verifiedAbsence"],
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
if (hasWellClaim || hasAbsence) {
|
|
77
|
+
ctx.addIssue({
|
|
78
|
+
code: z.ZodIssueCode.custom,
|
|
79
|
+
message: "sourceTier absent must not carry per-parcel well claims",
|
|
80
|
+
path: ["sourceTier"],
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
else if (hasAbsence) {
|
|
85
|
+
if (hasWellClaim) {
|
|
86
|
+
ctx.addIssue({
|
|
87
|
+
code: z.ZodIssueCode.custom,
|
|
88
|
+
message: "absence must not coexist with well claim fields",
|
|
89
|
+
path: ["absence"],
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
if (data.proximityRadiusMeters === undefined) {
|
|
93
|
+
ctx.addIssue({
|
|
94
|
+
code: z.ZodIssueCode.custom,
|
|
95
|
+
message: "absence atoms still carry proximityRadiusMeters so the evaluated radius is legible",
|
|
96
|
+
path: ["proximityRadiusMeters"],
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
else if (!hasWellClaim) {
|
|
101
|
+
ctx.addIssue({
|
|
102
|
+
code: z.ZodIssueCode.custom,
|
|
103
|
+
message: "texas-rrc-gis tier requires full well claim fields when no absence",
|
|
104
|
+
path: ["apiNumber14"],
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
if (data.parcelRelation === "on-parcel") {
|
|
109
|
+
if (data.proximityDistanceMeters !== undefined &&
|
|
110
|
+
data.proximityDistanceMeters !== 0) {
|
|
111
|
+
ctx.addIssue({
|
|
112
|
+
code: z.ZodIssueCode.custom,
|
|
113
|
+
message: "on-parcel claims must carry proximityDistanceMeters 0 or omit",
|
|
114
|
+
path: ["proximityDistanceMeters"],
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
else if (data.parcelRelation === "near-parcel") {
|
|
119
|
+
const radius = data.proximityRadiusMeters ?? 0;
|
|
120
|
+
if (data.proximityDistanceMeters === undefined ||
|
|
121
|
+
data.proximityDistanceMeters <= 0 ||
|
|
122
|
+
data.proximityDistanceMeters > radius) {
|
|
123
|
+
ctx.addIssue({
|
|
124
|
+
code: z.ZodIssueCode.custom,
|
|
125
|
+
message: "near-parcel claims require proximityDistanceMeters in (0, proximityRadiusMeters]",
|
|
126
|
+
path: ["proximityDistanceMeters"],
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
});
|
|
132
|
+
export function createWellFact(input) {
|
|
133
|
+
return WELL_FACT_SCHEMA.parse(input);
|
|
134
|
+
}
|
|
135
|
+
//# sourceMappingURL=well-fact.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"well-fact.js","sourceRoot":"","sources":["../../src/property/well-fact.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@empressaio/atom-contract",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.18.0",
|
|
4
4
|
"description": "The typed-data substrate every Empressa atom satisfies: identity, context interface, composition declaration, and history anchoring. Peer to the Hauska SDK (`@hauska-sdk/*`); consumed directly by every product surface and MCP server.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|