@welldot/core 0.1.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/index.js ADDED
@@ -0,0 +1,269 @@
1
+ // src/validators/well.validators.ts
2
+ import { z } from "zod";
3
+ var BoreHoleSchema = z.object({
4
+ from: z.number(),
5
+ to: z.number(),
6
+ diameter: z.number(),
7
+ drilling_method: z.string().optional()
8
+ });
9
+ var WellCaseSchema = z.object({
10
+ from: z.number(),
11
+ to: z.number(),
12
+ type: z.string(),
13
+ diameter: z.number()
14
+ });
15
+ var ReductionSchema = z.object({
16
+ from: z.number(),
17
+ to: z.number(),
18
+ diam_from: z.number(),
19
+ diam_to: z.number(),
20
+ type: z.string()
21
+ });
22
+ var WellScreenSchema = z.object({
23
+ from: z.number(),
24
+ to: z.number(),
25
+ type: z.string(),
26
+ diameter: z.number(),
27
+ screen_slot_mm: z.number()
28
+ });
29
+ var HoleFillSchema = z.object({
30
+ from: z.number(),
31
+ to: z.number(),
32
+ type: z.enum(["gravel_pack", "seal"]),
33
+ diameter: z.number(),
34
+ description: z.string()
35
+ });
36
+ var SurfaceCaseSchema = z.object({
37
+ from: z.number(),
38
+ to: z.number(),
39
+ diameter: z.number()
40
+ });
41
+ var CementPadSchema = z.object({
42
+ type: z.string(),
43
+ width: z.number(),
44
+ thickness: z.number(),
45
+ length: z.number()
46
+ });
47
+ var LithologySchema = z.object({
48
+ from: z.number(),
49
+ to: z.number(),
50
+ description: z.string(),
51
+ color: z.string(),
52
+ fgdc_texture: z.string(),
53
+ geologic_unit: z.string(),
54
+ aquifer_unit: z.string()
55
+ });
56
+ var FractureSchema = z.object({
57
+ depth: z.number(),
58
+ water_intake: z.boolean(),
59
+ description: z.string(),
60
+ swarm: z.boolean(),
61
+ azimuth: z.number(),
62
+ dip: z.number()
63
+ });
64
+ var CaveSchema = z.object({
65
+ from: z.number(),
66
+ to: z.number(),
67
+ water_intake: z.boolean(),
68
+ description: z.string()
69
+ });
70
+ var WellSchema = z.object({
71
+ well_type: z.string().optional(),
72
+ name: z.string().optional(),
73
+ well_driller: z.string().optional(),
74
+ construction_date: z.string().optional(),
75
+ lat: z.number().optional(),
76
+ lng: z.number().optional(),
77
+ elevation: z.number().optional(),
78
+ obs: z.string().optional(),
79
+ bore_hole: z.array(BoreHoleSchema),
80
+ well_case: z.array(WellCaseSchema),
81
+ reduction: z.array(ReductionSchema),
82
+ well_screen: z.array(WellScreenSchema),
83
+ surface_case: z.array(SurfaceCaseSchema),
84
+ hole_fill: z.array(HoleFillSchema),
85
+ cement_pad: CementPadSchema,
86
+ lithology: z.array(LithologySchema),
87
+ fractures: z.array(FractureSchema),
88
+ caves: z.array(CaveSchema)
89
+ });
90
+ function parseWell(json) {
91
+ const raw = JSON.parse(json);
92
+ return WellSchema.parse(raw);
93
+ }
94
+
95
+ // src/utils/well.utils.ts
96
+ var WELL_FORMAT_VERSION = 1;
97
+ var INCHES_TO_MM = 25.4;
98
+ var EMPTY_WELL = {
99
+ bore_hole: [],
100
+ well_case: [],
101
+ reduction: [],
102
+ well_screen: [],
103
+ surface_case: [],
104
+ hole_fill: [],
105
+ cement_pad: { type: "", width: 0, thickness: 0, length: 0 },
106
+ lithology: [],
107
+ fractures: [],
108
+ caves: []
109
+ };
110
+ function createEmptyWell() {
111
+ return JSON.parse(JSON.stringify(EMPTY_WELL));
112
+ }
113
+ function normalizeLithology(items) {
114
+ return items.map((item) => ({ aquifer_unit: "", ...item }));
115
+ }
116
+ function decodeV1Well(raw) {
117
+ return {
118
+ ...createEmptyWell(),
119
+ ...raw.well_type !== void 0 && { well_type: raw.well_type },
120
+ ...raw.name !== void 0 && { name: raw.name },
121
+ ...raw.well_driller !== void 0 && {
122
+ well_driller: raw.well_driller
123
+ },
124
+ ...raw.construction_date !== void 0 && {
125
+ construction_date: raw.construction_date
126
+ },
127
+ ...raw.lat !== void 0 && { lat: raw.lat },
128
+ ...raw.lng !== void 0 && { lng: raw.lng },
129
+ ...raw.elevation !== void 0 && { elevation: raw.elevation },
130
+ ...raw.obs !== void 0 && { obs: raw.obs },
131
+ bore_hole: raw.bore_hole ?? [],
132
+ well_case: raw.well_case ?? [],
133
+ reduction: raw.reduction ?? [],
134
+ well_screen: raw.well_screen ?? [],
135
+ surface_case: raw.surface_case ?? [],
136
+ hole_fill: raw.hole_fill ?? [],
137
+ ...raw.cement_pad ? { cement_pad: raw.cement_pad } : {},
138
+ lithology: normalizeLithology(raw.lithology ?? []),
139
+ fractures: raw.fractures ?? [],
140
+ caves: raw.caves ?? []
141
+ };
142
+ }
143
+ function convertLegacyDiameters(items) {
144
+ if (!items?.length) return items ?? [];
145
+ if (!items.some((item) => item.diam_pol !== void 0)) return items;
146
+ return items.map(({ diam_pol, ...rest }) => ({
147
+ ...rest,
148
+ diameter: (diam_pol || 0) * INCHES_TO_MM
149
+ }));
150
+ }
151
+ function normalizeConstructive(src) {
152
+ const boreHoleData = src.bole_hole ?? src.bore_hole ?? [];
153
+ return {
154
+ bore_hole: convertLegacyDiameters(boreHoleData),
155
+ hole_fill: convertLegacyDiameters(
156
+ src.hole_fill ?? []
157
+ ),
158
+ surface_case: convertLegacyDiameters(
159
+ src.surface_case ?? []
160
+ ),
161
+ well_case: convertLegacyDiameters(
162
+ src.well_case ?? []
163
+ ),
164
+ well_screen: convertLegacyDiameters(
165
+ src.well_screen ?? []
166
+ ),
167
+ reduction: src.reduction ?? [],
168
+ ...src.cement_pad ? { cement_pad: src.cement_pad } : {}
169
+ };
170
+ }
171
+ function normalizeGeologic(raw) {
172
+ const lithologySource = raw.lithology ?? raw.geologic ?? [];
173
+ return {
174
+ lithology: normalizeLithology(lithologySource),
175
+ fractures: raw.fractures ?? [],
176
+ caves: raw.caves ?? []
177
+ };
178
+ }
179
+ function serializeWell(well) {
180
+ const payload = {
181
+ version: WELL_FORMAT_VERSION,
182
+ ...well.well_type !== void 0 && { well_type: well.well_type },
183
+ ...well.name !== void 0 && { name: well.name },
184
+ ...well.well_driller !== void 0 && { well_driller: well.well_driller },
185
+ ...well.construction_date !== void 0 && {
186
+ construction_date: well.construction_date
187
+ },
188
+ ...well.lat !== void 0 && { lat: well.lat },
189
+ ...well.lng !== void 0 && { lng: well.lng },
190
+ ...well.elevation !== void 0 && { elevation: well.elevation },
191
+ ...well.obs !== void 0 && { obs: well.obs },
192
+ bore_hole: well.bore_hole,
193
+ well_case: well.well_case,
194
+ reduction: well.reduction,
195
+ well_screen: well.well_screen,
196
+ surface_case: well.surface_case,
197
+ hole_fill: well.hole_fill,
198
+ ...well.cement_pad && { cement_pad: well.cement_pad },
199
+ lithology: well.lithology,
200
+ fractures: well.fractures,
201
+ caves: well.caves
202
+ };
203
+ return JSON.stringify(payload);
204
+ }
205
+ function isWellEmpty(well) {
206
+ if (!well) return true;
207
+ const raw = well;
208
+ if (raw.constructive || raw.geologic) return false;
209
+ return well.lithology?.length === 0 && well.fractures?.length === 0 && well.caves?.length === 0 && well.bore_hole?.length === 0 && well.hole_fill?.length === 0 && well.well_case?.length === 0 && well.well_screen?.length === 0;
210
+ }
211
+ function deserializeWell(jsonString) {
212
+ let raw;
213
+ try {
214
+ raw = JSON.parse(jsonString);
215
+ } catch {
216
+ throw new Error("Invalid profile format");
217
+ }
218
+ if (typeof raw !== "object" || raw === null || Array.isArray(raw)) {
219
+ throw new Error("Invalid profile format");
220
+ }
221
+ if (typeof raw.version === "number") {
222
+ if (raw.version !== 1)
223
+ throw new Error(`Unsupported .well format version: ${raw.version}`);
224
+ return decodeV1Well(raw);
225
+ }
226
+ if (isWellEmpty(raw)) return null;
227
+ const constructiveSource = raw.constructive ?? raw;
228
+ const metadata = {
229
+ ...raw.well_type !== void 0 && { well_type: raw.well_type },
230
+ ...raw.name !== void 0 && { name: raw.name },
231
+ ...raw.well_driller !== void 0 && {
232
+ well_driller: raw.well_driller
233
+ },
234
+ ...raw.construction_date !== void 0 && {
235
+ construction_date: raw.construction_date
236
+ },
237
+ ...raw.lat !== void 0 && { lat: raw.lat },
238
+ ...raw.lng !== void 0 && { lng: raw.lng },
239
+ ...raw.elevation !== void 0 && { elevation: raw.elevation },
240
+ ...raw.obs !== void 0 && { obs: raw.obs }
241
+ };
242
+ return {
243
+ ...createEmptyWell(),
244
+ ...metadata,
245
+ ...normalizeConstructive(constructiveSource),
246
+ ...normalizeGeologic(raw)
247
+ };
248
+ }
249
+ var profileToWell = serializeWell;
250
+ var checkIfProfileIsEmpty = isWellEmpty;
251
+ var convertProfileFromJSON = deserializeWell;
252
+ export {
253
+ BoreHoleSchema,
254
+ CaveSchema,
255
+ CementPadSchema,
256
+ FractureSchema,
257
+ HoleFillSchema,
258
+ LithologySchema,
259
+ ReductionSchema,
260
+ SurfaceCaseSchema,
261
+ WellCaseSchema,
262
+ WellSchema,
263
+ WellScreenSchema,
264
+ checkIfProfileIsEmpty,
265
+ convertProfileFromJSON,
266
+ parseWell,
267
+ profileToWell
268
+ };
269
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/validators/well.validators.ts","../src/utils/well.utils.ts"],"sourcesContent":["import { z } from 'zod';\nimport type { Well } from '../types/well.types';\n\nexport const BoreHoleSchema = z.object({\n from: z.number(),\n to: z.number(),\n diameter: z.number(),\n drilling_method: z.string().optional(),\n});\n\nexport const WellCaseSchema = z.object({\n from: z.number(),\n to: z.number(),\n type: z.string(),\n diameter: z.number(),\n});\n\nexport const ReductionSchema = z.object({\n from: z.number(),\n to: z.number(),\n diam_from: z.number(),\n diam_to: z.number(),\n type: z.string(),\n});\n\nexport const WellScreenSchema = z.object({\n from: z.number(),\n to: z.number(),\n type: z.string(),\n diameter: z.number(),\n screen_slot_mm: z.number(),\n});\n\nexport const HoleFillSchema = z.object({\n from: z.number(),\n to: z.number(),\n type: z.enum(['gravel_pack', 'seal']),\n diameter: z.number(),\n description: z.string(),\n});\n\nexport const SurfaceCaseSchema = z.object({\n from: z.number(),\n to: z.number(),\n diameter: z.number(),\n});\n\nexport const CementPadSchema = z.object({\n type: z.string(),\n width: z.number(),\n thickness: z.number(),\n length: z.number(),\n});\n\nexport const LithologySchema = z.object({\n from: z.number(),\n to: z.number(),\n description: z.string(),\n color: z.string(),\n fgdc_texture: z.string(),\n geologic_unit: z.string(),\n aquifer_unit: z.string(),\n});\n\nexport const FractureSchema = z.object({\n depth: z.number(),\n water_intake: z.boolean(),\n description: z.string(),\n swarm: z.boolean(),\n azimuth: z.number(),\n dip: z.number(),\n});\n\nexport const CaveSchema = z.object({\n from: z.number(),\n to: z.number(),\n water_intake: z.boolean(),\n description: z.string(),\n});\n\nexport const WellSchema = z.object({\n well_type: z.string().optional(),\n name: z.string().optional(),\n well_driller: z.string().optional(),\n construction_date: z.string().optional(),\n lat: z.number().optional(),\n lng: z.number().optional(),\n elevation: z.number().optional(),\n obs: z.string().optional(),\n bore_hole: z.array(BoreHoleSchema),\n well_case: z.array(WellCaseSchema),\n reduction: z.array(ReductionSchema),\n well_screen: z.array(WellScreenSchema),\n surface_case: z.array(SurfaceCaseSchema),\n hole_fill: z.array(HoleFillSchema),\n cement_pad: CementPadSchema,\n lithology: z.array(LithologySchema),\n fractures: z.array(FractureSchema),\n caves: z.array(CaveSchema),\n});\n\nexport function parseWell(json: string): Well {\n const raw = JSON.parse(json);\n return WellSchema.parse(raw) as Well;\n}\n","import { Constructive, Geologic, Lithology, Well } from '../types/well.types';\n\n// ─── Types ───────────────────────────────────────────────────────────────────\n\ntype RawJSON = Record<string, unknown>;\n\n// ─── Constants ───────────────────────────────────────────────────────────────\n\nconst WELL_FORMAT_VERSION = 1;\nconst INCHES_TO_MM = 25.4;\n\nconst EMPTY_WELL: Well = {\n bore_hole: [],\n well_case: [],\n reduction: [],\n well_screen: [],\n surface_case: [],\n hole_fill: [],\n cement_pad: { type: '', width: 0, thickness: 0, length: 0 },\n lithology: [],\n fractures: [],\n caves: [],\n};\n\n// ─── Internal helpers ────────────────────────────────────────────────────────\n\nfunction createEmptyWell(): Well {\n return JSON.parse(JSON.stringify(EMPTY_WELL)) as Well;\n}\n\nfunction normalizeLithology(items: RawJSON[]): Lithology[] {\n return items.map(item => ({ aquifer_unit: '', ...item })) as Lithology[];\n}\n\nfunction decodeV1Well(raw: RawJSON): Well {\n return {\n ...createEmptyWell(),\n ...(raw.well_type !== undefined && { well_type: raw.well_type as string }),\n ...(raw.name !== undefined && { name: raw.name as string }),\n ...(raw.well_driller !== undefined && {\n well_driller: raw.well_driller as string,\n }),\n ...(raw.construction_date !== undefined && {\n construction_date: raw.construction_date as string,\n }),\n ...(raw.lat !== undefined && { lat: raw.lat as number }),\n ...(raw.lng !== undefined && { lng: raw.lng as number }),\n ...(raw.elevation !== undefined && { elevation: raw.elevation as number }),\n ...(raw.obs !== undefined && { obs: raw.obs as string }),\n bore_hole: (raw.bore_hole as Well['bore_hole']) ?? [],\n well_case: (raw.well_case as Well['well_case']) ?? [],\n reduction: (raw.reduction as Well['reduction']) ?? [],\n well_screen: (raw.well_screen as Well['well_screen']) ?? [],\n surface_case: (raw.surface_case as Well['surface_case']) ?? [],\n hole_fill: (raw.hole_fill as Well['hole_fill']) ?? [],\n ...(raw.cement_pad\n ? { cement_pad: raw.cement_pad as Well['cement_pad'] }\n : {}),\n lithology: normalizeLithology((raw.lithology as RawJSON[]) ?? []),\n fractures: (raw.fractures as Well['fractures']) ?? [],\n caves: (raw.caves as Well['caves']) ?? [],\n };\n}\n\nfunction convertLegacyDiameters(\n items: (RawJSON & { diam_pol?: number })[],\n): RawJSON[] {\n if (!items?.length) return items ?? [];\n if (!items.some(item => item.diam_pol !== undefined)) return items;\n\n return items.map(({ diam_pol, ...rest }) => ({\n ...rest,\n diameter: (diam_pol || 0) * INCHES_TO_MM,\n }));\n}\n\n// \"bole_hole\" is a typo present in older saved profiles; kept for compatibility\nfunction normalizeConstructive(src: RawJSON): Partial<Constructive> {\n const boreHoleData = (src.bole_hole ?? src.bore_hole ?? []) as (RawJSON & {\n diam_pol?: number;\n })[];\n\n return {\n bore_hole: convertLegacyDiameters(boreHoleData) as Well['bore_hole'],\n hole_fill: convertLegacyDiameters(\n (src.hole_fill ?? []) as (RawJSON & { diam_pol?: number })[],\n ) as Well['hole_fill'],\n surface_case: convertLegacyDiameters(\n (src.surface_case ?? []) as (RawJSON & { diam_pol?: number })[],\n ) as Well['surface_case'],\n well_case: convertLegacyDiameters(\n (src.well_case ?? []) as (RawJSON & { diam_pol?: number })[],\n ) as Well['well_case'],\n well_screen: convertLegacyDiameters(\n (src.well_screen ?? []) as (RawJSON & { diam_pol?: number })[],\n ) as Well['well_screen'],\n reduction: (src.reduction ?? []) as Well['reduction'],\n ...(src.cement_pad\n ? { cement_pad: src.cement_pad as Well['cement_pad'] }\n : {}),\n };\n}\n\nfunction normalizeGeologic(raw: RawJSON): Geologic {\n const lithologySource = (raw.lithology ?? raw.geologic ?? []) as RawJSON[];\n\n return {\n lithology: normalizeLithology(lithologySource),\n fractures: (raw.fractures ?? []) as Well['fractures'],\n caves: (raw.caves ?? []) as Well['caves'],\n };\n}\n\n// ─── Public API ──────────────────────────────────────────────────────────────\n\n/**\n * Serializes a {@link Well} object into a versioned JSON string suitable for\n * storage or transmission.\n *\n * @param well - The well profile to serialize.\n * @returns A JSON string containing the versioned well payload.\n */\nexport function serializeWell(well: Well): string {\n const payload: Record<string, unknown> = {\n version: WELL_FORMAT_VERSION,\n ...(well.well_type !== undefined && { well_type: well.well_type }),\n ...(well.name !== undefined && { name: well.name }),\n ...(well.well_driller !== undefined && { well_driller: well.well_driller }),\n ...(well.construction_date !== undefined && {\n construction_date: well.construction_date,\n }),\n ...(well.lat !== undefined && { lat: well.lat }),\n ...(well.lng !== undefined && { lng: well.lng }),\n ...(well.elevation !== undefined && { elevation: well.elevation }),\n ...(well.obs !== undefined && { obs: well.obs }),\n bore_hole: well.bore_hole,\n well_case: well.well_case,\n reduction: well.reduction,\n well_screen: well.well_screen,\n surface_case: well.surface_case,\n hole_fill: well.hole_fill,\n ...(well.cement_pad && { cement_pad: well.cement_pad }),\n lithology: well.lithology,\n fractures: well.fractures,\n caves: well.caves,\n };\n\n return JSON.stringify(payload);\n}\n\n/**\n * Returns `true` when the well has no meaningful data — all constructive and\n * geologic arrays are empty and no legacy nested structure is present.\n *\n * @param well - The well profile to check. Accepts `null` / `undefined`\n * (both treated as empty).\n * @returns `true` if the well is considered empty, `false` otherwise.\n */\nexport function isWellEmpty(well: Well | null | undefined): boolean {\n if (!well) return true;\n\n const raw = well as RawJSON;\n if (raw.constructive || raw.geologic) return false;\n\n return (\n well.lithology?.length === 0 &&\n well.fractures?.length === 0 &&\n well.caves?.length === 0 &&\n well.bore_hole?.length === 0 &&\n well.hole_fill?.length === 0 &&\n well.well_case?.length === 0 &&\n well.well_screen?.length === 0\n );\n}\n\n/**\n * Parses a JSON string produced by {@link serializeWell} (or older legacy\n * formats) and returns a normalized {@link Well} object.\n *\n * Handles:\n * - Versioned format (v1)\n * - Legacy format with `constructive` / `geologic` sub-objects\n * - Legacy `diam_pol` inch diameters → `diameter` mm conversion\n * - Typo `bole_hole` → `bore_hole` compatibility\n *\n * @param jsonString - Raw JSON string to parse.\n * @returns A normalized {@link Well}, or `null` if the parsed data is empty.\n * @throws {Error} If `jsonString` is not valid JSON.\n * @throws {Error} If the `version` field is present but not supported.\n */\nexport function deserializeWell(jsonString: string): Well | null {\n let raw: RawJSON;\n try {\n raw = JSON.parse(jsonString) as RawJSON;\n } catch {\n throw new Error('Invalid profile format');\n }\n\n if (typeof raw !== 'object' || raw === null || Array.isArray(raw)) {\n throw new Error('Invalid profile format');\n }\n\n if (typeof raw.version === 'number') {\n if (raw.version !== 1)\n throw new Error(`Unsupported .well format version: ${raw.version}`);\n return decodeV1Well(raw);\n }\n\n if (isWellEmpty(raw as unknown as Well)) return null;\n\n const constructiveSource = (raw.constructive ?? raw) as RawJSON;\n\n const metadata: Partial<Well> = {\n ...(raw.well_type !== undefined && { well_type: raw.well_type as string }),\n ...(raw.name !== undefined && { name: raw.name as string }),\n ...(raw.well_driller !== undefined && {\n well_driller: raw.well_driller as string,\n }),\n ...(raw.construction_date !== undefined && {\n construction_date: raw.construction_date as string,\n }),\n ...(raw.lat !== undefined && { lat: raw.lat as number }),\n ...(raw.lng !== undefined && { lng: raw.lng as number }),\n ...(raw.elevation !== undefined && { elevation: raw.elevation as number }),\n ...(raw.obs !== undefined && { obs: raw.obs as string }),\n };\n\n return {\n ...createEmptyWell(),\n ...metadata,\n ...normalizeConstructive(constructiveSource),\n ...normalizeGeologic(raw),\n };\n}\n\n// ─── Backward-compat aliases ─────────────────────────────────────────────────\n\n/** @deprecated Use {@link serializeWell} */\nexport const profileToWell = serializeWell;\n/** @deprecated Use {@link isWellEmpty} */\nexport const checkIfProfileIsEmpty = isWellEmpty;\n/** @deprecated Use {@link deserializeWell} */\nexport const convertProfileFromJSON = deserializeWell;\n"],"mappings":"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","names":[]}
package/package.json ADDED
@@ -0,0 +1,72 @@
1
+ {
2
+ "name": "@welldot/core",
3
+ "version": "0.1.0",
4
+ "type": "module",
5
+ "description": "TypeScript types, Zod validators, and serialization utilities for the .well open format — a JSON standard for water well data.",
6
+ "keywords": [
7
+ "well",
8
+ "water-well",
9
+ "hydrogeology",
10
+ "geoscience",
11
+ "borehole",
12
+ "lithology",
13
+ "schema",
14
+ "zod",
15
+ "typescript",
16
+ "open-data"
17
+ ],
18
+ "author": {
19
+ "name": "Rafael Neto",
20
+ "email": "rafaelneto.g@gmail.com"
21
+ },
22
+ "license": "Apache-2.0",
23
+ "homepage": "https://github.com/rafaeelneto/well-profiler#readme",
24
+ "repository": {
25
+ "type": "git",
26
+ "url": "git+https://github.com/rafaeelneto/well-profiler.git",
27
+ "directory": "packages/core"
28
+ },
29
+ "bugs": {
30
+ "url": "https://github.com/rafaeelneto/well-profiler/issues"
31
+ },
32
+ "publishConfig": {
33
+ "access": "public"
34
+ },
35
+ "sideEffects": false,
36
+ "engines": {
37
+ "node": ">=18"
38
+ },
39
+ "main": "./dist/index.js",
40
+ "module": "./dist/index.mjs",
41
+ "types": "./dist/index.d.ts",
42
+ "exports": {
43
+ ".": {
44
+ "import": "./dist/index.mjs",
45
+ "require": "./dist/index.js",
46
+ "types": "./dist/index.d.ts"
47
+ }
48
+ },
49
+ "files": [
50
+ "dist",
51
+ "README.md",
52
+ "LICENSE",
53
+ "well-specifications.md"
54
+ ],
55
+ "dependencies": {
56
+ "zod": "^3.23.8"
57
+ },
58
+ "devDependencies": {
59
+ "tsup": "^8.3.0",
60
+ "typescript": "^5.3.3",
61
+ "vite": "^8.0.9",
62
+ "vitest": "^4.1.5",
63
+ "@well/lint": "0.0.1"
64
+ },
65
+ "scripts": {
66
+ "build": "tsup",
67
+ "dev": "tsup --watch",
68
+ "lint": "eslint .",
69
+ "lint:fix": "eslint . --fix",
70
+ "test": "vitest run"
71
+ }
72
+ }