@welldot/core 0.2.3 → 0.4.0-next.20261014.26249fd

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.cjs CHANGED
@@ -20,62 +20,183 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
20
20
  // src/index.ts
21
21
  var index_exports = {};
22
22
  __export(index_exports, {
23
+ AQUIFER_ANALYSIS_METHODS: () => AQUIFER_ANALYSIS_METHODS,
23
24
  AirliftEventSchema: () => AirliftEventSchema,
24
25
  AquiferAnalysisSchema: () => AquiferAnalysisSchema,
25
26
  AttachmentSchema: () => AttachmentSchema,
27
+ BLANK_SAMPLE_TYPES: () => BLANK_SAMPLE_TYPES,
28
+ BR_GM_MS_888_2021: () => BR_GM_MS_888_2021,
26
29
  BoreHoleSchema: () => BoreHoleSchema,
30
+ CEMENT_PAD_TYPES: () => CEMENT_PAD_TYPES,
31
+ CENTRALIZER_TYPES: () => CENTRALIZER_TYPES,
32
+ CONDITION_CATEGORIES: () => CONDITION_CATEGORIES,
33
+ CONSTRUCTION_MATERIALS: () => CONSTRUCTION_MATERIALS,
27
34
  CaveSchema: () => CaveSchema,
28
35
  CementPadSchema: () => CementPadSchema,
36
+ CentralizerSchema: () => CentralizerSchema,
37
+ ConditionFulfillmentSchema: () => ConditionFulfillmentSchema,
29
38
  ConstantRateEventSchema: () => ConstantRateEventSchema,
39
+ DOCUMENT_TYPES: () => DOCUMENT_TYPES,
40
+ DOCUMENT_TYPE_SUGGESTIONS: () => DOCUMENT_TYPE_SUGGESTIONS,
41
+ DRILLING_METHODS: () => DRILLING_METHODS,
42
+ ESTIMATION_METHODS: () => ESTIMATION_METHODS,
43
+ EU_2020_2184: () => EU_2020_2184,
44
+ EstimatedVolumeSchema: () => EstimatedVolumeSchema,
30
45
  FGDC_TEXTURES_OPTIONS: () => FGDC_TEXTURES_OPTIONS,
46
+ FILTRATION_LOCATION_VALUES: () => FILTRATION_LOCATION_VALUES,
47
+ FRACTION_VALUES: () => FRACTION_VALUES,
48
+ FiltrationSchema: () => FiltrationSchema,
31
49
  FractureSchema: () => FractureSchema,
50
+ HISTORY_LOG_CATEGORIES: () => HISTORY_LOG_CATEGORIES,
51
+ HISTORY_LOG_SEVERITIES: () => HISTORY_LOG_SEVERITIES,
52
+ HYDRODYNAMIC_EVENT_TYPES: () => HYDRODYNAMIC_EVENT_TYPES,
32
53
  HistoryLogEntrySchema: () => HistoryLogEntrySchema,
33
54
  HoleFillSchema: () => HoleFillSchema,
34
55
  HydrodynamicEventBaseSchema: () => HydrodynamicEventBaseSchema,
35
56
  HydrodynamicEventSchema: () => HydrodynamicEventSchema,
57
+ LaboratorySchema: () => LaboratorySchema,
36
58
  LevelReadingSchema: () => LevelReadingSchema,
37
59
  LithologySchema: () => LithologySchema,
38
60
  LocationPropertiesSchema: () => LocationPropertiesSchema,
39
61
  LocationSchema: () => LocationSchema,
62
+ MAINTENANCE_TYPES: () => MAINTENANCE_TYPES,
63
+ MEASURED_IN_VALUES: () => MEASURED_IN_VALUES,
64
+ MEASUREMENT_LOCATIONS: () => MEASUREMENT_LOCATIONS,
65
+ MEASUREMENT_METHODS: () => MEASUREMENT_METHODS,
66
+ METER_TYPES: () => METER_TYPES,
67
+ MeterReadingSchema: () => MeterReadingSchema,
68
+ MeterSchema: () => MeterSchema,
69
+ MonthlyGrantSchema: () => MonthlyGrantSchema,
70
+ NEPHELOMETRIC_TURBIDITY_CODES: () => NEPHELOMETRIC_TURBIDITY_CODES,
71
+ NUMERIC_QUALIFIERS: () => NUMERIC_QUALIFIERS,
72
+ OperatingRegimeSchema: () => OperatingRegimeSchema,
73
+ PARAMETER_GROUPS: () => PARAMETER_GROUPS,
74
+ PARAMETER_GROUP_VALUES: () => PARAMETER_GROUP_VALUES,
75
+ PARENT_SAMPLE_TYPES: () => PARENT_SAMPLE_TYPES,
76
+ PERMIT_ADMINISTRATIVE_STATUSES: () => PERMIT_ADMINISTRATIVE_STATUSES,
77
+ PERMIT_ADMINISTRATIVE_STATUS_VALUES: () => PERMIT_ADMINISTRATIVE_STATUS_VALUES,
78
+ PERMIT_HISTORY_TYPES: () => PERMIT_HISTORY_TYPES,
79
+ PERMIT_TYPES: () => PERMIT_TYPES,
80
+ POWER_SOURCES: () => POWER_SOURCES,
81
+ PRODUCTION_ENTRY_TYPES: () => PRODUCTION_ENTRY_TYPES,
82
+ PUMP_TYPES: () => PUMP_TYPES,
83
+ ParameterSchema: () => ParameterSchema,
84
+ PermitAdministrativeStatusSchema: () => PermitAdministrativeStatusSchema,
85
+ PermitConditionSchema: () => PermitConditionSchema,
86
+ PermitHistoryEntrySchema: () => PermitHistoryEntrySchema,
87
+ PermitSchema: () => PermitSchema,
88
+ ProductionEntryBaseSchema: () => ProductionEntryBaseSchema,
89
+ ProductionEntrySchema: () => ProductionEntrySchema,
90
+ PumpElectricalSchema: () => PumpElectricalSchema,
91
+ PumpInstallationSchema: () => PumpInstallationSchema,
40
92
  PumpingStepSchema: () => PumpingStepSchema,
93
+ PurgeReadingSchema: () => PurgeReadingSchema,
94
+ PurgeSchema: () => PurgeSchema,
95
+ QUALIFIER_VALUES: () => QUALIFIER_VALUES,
96
+ READING_SOURCES: () => READING_SOURCES,
97
+ RESULT_FRACTIONS: () => RESULT_FRACTIONS,
98
+ RESULT_QUALIFIERS: () => RESULT_QUALIFIERS,
41
99
  RecoveryOnlyEventSchema: () => RecoveryOnlyEventSchema,
42
100
  RecoveryPhaseSchema: () => RecoveryPhaseSchema,
43
101
  ReductionSchema: () => ReductionSchema,
102
+ ResultQualifierSchema: () => ResultQualifierSchema,
103
+ ResultValidationSchema: () => ResultValidationSchema,
104
+ SAMPLE_TYPES: () => SAMPLE_TYPES,
105
+ SAMPLING_DEVICES: () => SAMPLING_DEVICES,
106
+ SAMPLING_METHODS: () => SAMPLING_METHODS,
107
+ SAMPLING_POINT_TYPES: () => SAMPLING_POINT_TYPES,
108
+ SCREEN_SLOT_TYPES: () => SCREEN_SLOT_TYPES,
44
109
  SECTION_KEYS: () => SECTION_KEYS,
110
+ SamplingPointSchema: () => SamplingPointSchema,
45
111
  SpotMeasurementEventSchema: () => SpotMeasurementEventSchema,
46
112
  StepDrawdownEventSchema: () => StepDrawdownEventSchema,
47
113
  SurfaceCaseSchema: () => SurfaceCaseSchema,
48
114
  TextureSchema: () => TextureSchema,
115
+ TimeResolutionSchema: () => TimeResolutionSchema,
116
+ VALIDATION_STATUSES: () => VALIDATION_STATUSES,
117
+ VALIDATION_STATUS_VALUES: () => VALIDATION_STATUS_VALUES,
118
+ VISIBILITY_LEAF_KEYS: () => VISIBILITY_LEAF_KEYS,
119
+ VISIBILITY_TREE: () => VISIBILITY_TREE,
120
+ VOLUME_LIMIT_PERIODS: () => VOLUME_LIMIT_PERIODS,
121
+ VolumeLimitSchema: () => VolumeLimitSchema,
122
+ WATER_QUALITY_LIMIT_SETS: () => WATER_QUALITY_LIMIT_SETS,
123
+ WATER_QUALITY_PARAMETERS: () => WATER_QUALITY_PARAMETERS,
124
+ WATER_QUALITY_UNITS: () => WATER_QUALITY_UNITS,
125
+ WATER_QUALITY_VOCABULARY_VERSION: () => WATER_QUALITY_VOCABULARY_VERSION,
126
+ WATER_USES: () => WATER_USES,
127
+ WELL_PURPOSES: () => WELL_PURPOSES,
128
+ WELL_STATUSES: () => WELL_STATUSES,
129
+ WELL_STATUS_VALUES: () => WELL_STATUS_VALUES,
130
+ WELL_TYPES: () => WELL_TYPES,
131
+ WHO_GDWQ_2022: () => WHO_GDWQ_2022,
132
+ WaterQualityResultSchema: () => WaterQualityResultSchema,
133
+ WaterSampleSchema: () => WaterSampleSchema,
49
134
  WellCaseSchema: () => WellCaseSchema,
50
135
  WellIdSchema: () => WellIdSchema,
51
136
  WellSchema: () => WellSchema,
52
137
  WellScreenSchema: () => WellScreenSchema,
138
+ WellStatusSchema: () => WellStatusSchema,
139
+ calculatedWellDepth: () => calculatedWellDepth,
53
140
  checkIfProfileIsEmpty: () => checkIfProfileIsEmpty,
141
+ concentrationFromCanonical: () => concentrationFromCanonical,
142
+ concentrationToCanonical: () => concentrationToCanonical,
54
143
  convertProfileFromJSON: () => convertProfileFromJSON,
144
+ cubicFeetToCubicMeters: () => cubicFeetToCubicMeters,
55
145
  cubicMeterPerHourToLitersPerSecond: () => cubicMeterPerHourToLitersPerSecond,
56
146
  cubicMeterPerHourToUsGallonsPerMinute: () => cubicMeterPerHourToUsGallonsPerMinute,
147
+ cubicMetersToCubicFeet: () => cubicMetersToCubicFeet,
148
+ cubicMetersToLiters: () => cubicMetersToLiters,
149
+ cubicMetersToUsGallons: () => cubicMetersToUsGallons,
150
+ cvToKilowatts: () => cvToKilowatts,
57
151
  decimalDegreesToDms: () => decimalDegreesToDms,
58
152
  deserializeWell: () => deserializeWell,
59
153
  dmsToDecimalDegrees: () => dmsToDecimalDegrees,
154
+ expandedToStandardUncertainty: () => expandedToStandardUncertainty,
60
155
  feetToMeters: () => feetToMeters,
156
+ flowFromCanonical: () => flowFromCanonical,
157
+ flowToCanonical: () => flowToCanonical,
158
+ formatVocabList: () => formatVocabList,
159
+ getLimitSet: () => getLimitSet,
160
+ getParameterDefinition: () => getParameterDefinition,
161
+ getParameterLabel: () => getParameterLabel,
162
+ getVocabEntry: () => getVocabEntry,
163
+ getVocabLabel: () => getVocabLabel,
61
164
  hoursToMinutes: () => hoursToMinutes,
165
+ hpToKilowatts: () => hpToKilowatts,
62
166
  inchesToMm: () => inchesToMm,
167
+ isKnownParameter: () => isKnownParameter,
168
+ isVocabValue: () => isVocabValue,
63
169
  isWellEmpty: () => isWellEmpty,
64
170
  kilopascalToPsi: () => kilopascalToPsi,
171
+ kilowattsToCv: () => kilowattsToCv,
172
+ kilowattsToHp: () => kilowattsToHp,
65
173
  litersPerSecondToCubicMeterPerHour: () => litersPerSecondToCubicMeterPerHour,
174
+ litersToCubicMeters: () => litersToCubicMeters,
66
175
  metersToFeet: () => metersToFeet,
176
+ milliSiemensPerCmToMicroSiemensPerCm: () => milliSiemensPerCmToMicroSiemensPerCm,
177
+ milliSiemensPerMeterToMicroSiemensPerCm: () => milliSiemensPerMeterToMicroSiemensPerCm,
67
178
  minutesToHours: () => minutesToHours,
68
179
  mmToInches: () => mmToInches,
69
180
  mmToSlotNumber: () => mmToSlotNumber,
181
+ normalizeColorUnit: () => normalizeColorUnit,
182
+ parameterKey: () => parameterKey,
70
183
  parseWell: () => parseWell,
184
+ powerFromCanonical: () => powerFromCanonical,
185
+ powerToCanonical: () => powerToCanonical,
71
186
  profileToWell: () => profileToWell,
72
187
  psiToKilopascal: () => psiToKilopascal,
73
188
  redactWell: () => redactWell,
189
+ resolveLanguageText: () => resolveLanguageText,
74
190
  serializeWell: () => serializeWell,
75
191
  slotNumberToMm: () => slotNumberToMm,
76
192
  squareMeterPerDayToSquareMeterPerSecond: () => squareMeterPerDayToSquareMeterPerSecond,
77
193
  squareMeterPerSecondToSquareMeterPerDay: () => squareMeterPerSecondToSquareMeterPerDay,
78
- usGallonsPerMinuteToCubicMeterPerHour: () => usGallonsPerMinuteToCubicMeterPerHour
194
+ turbidityCodeForUnit: () => turbidityCodeForUnit,
195
+ usGallonsPerMinuteToCubicMeterPerHour: () => usGallonsPerMinuteToCubicMeterPerHour,
196
+ usGallonsToCubicMeters: () => usGallonsToCubicMeters,
197
+ vocabValues: () => vocabValues,
198
+ volumeFromCanonical: () => volumeFromCanonical,
199
+ volumeToCanonical: () => volumeToCanonical
79
200
  });
80
201
  module.exports = __toCommonJS(index_exports);
81
202
 
@@ -90,6 +211,19 @@ var mergeWell = (0, import_defu.createDefu)((obj, key, value) => {
90
211
  });
91
212
  var RFC3339_WITH_OFFSET = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d+)?(Z|[+-]\d{2}:\d{2})$/;
92
213
  var rfc3339 = () => import_zod.z.string().regex(RFC3339_WITH_OFFSET, "datetime must be RFC 3339 with UTC offset");
214
+ var CALENDAR_DATE = /^\d{4}-\d{2}-\d{2}$/;
215
+ var calendarDate = () => import_zod.z.string().regex(CALENDAR_DATE, "date must be YYYY-MM-DD");
216
+ var DATE_DURATION = /^P(?=\d)(\d+Y)?(\d+M)?(\d+W)?(\d+D)?$/;
217
+ var dateDuration = () => import_zod.z.string().regex(DATE_DURATION, "duration must be an ISO 8601 date duration");
218
+ var AttachmentSchema = import_zod.z.object({
219
+ id: import_zod.z.string(),
220
+ uri: import_zod.z.string().url(),
221
+ media_type: import_zod.z.string(),
222
+ document_type: import_zod.z.string().optional(),
223
+ filename: import_zod.z.string().optional(),
224
+ description: import_zod.z.string().optional(),
225
+ sha256: import_zod.z.string().optional()
226
+ });
93
227
  var WellIdSchema = import_zod.z.object({
94
228
  authority: import_zod.z.string(),
95
229
  id: import_zod.z.string(),
@@ -133,7 +267,8 @@ var WellScreenSchema = import_zod.z.object({
133
267
  to: import_zod.z.number(),
134
268
  type: import_zod.z.string(),
135
269
  diameter: import_zod.z.number(),
136
- screen_slot: import_zod.z.number()
270
+ screen_slot: import_zod.z.number(),
271
+ slot_type: import_zod.z.string().optional()
137
272
  });
138
273
  var HoleFillSchema = import_zod.z.object({
139
274
  from: import_zod.z.number(),
@@ -147,6 +282,14 @@ var SurfaceCaseSchema = import_zod.z.object({
147
282
  to: import_zod.z.number(),
148
283
  diameter: import_zod.z.number()
149
284
  });
285
+ var CentralizerSchema = import_zod.z.object({
286
+ from: import_zod.z.number(),
287
+ to: import_zod.z.number(),
288
+ spacing: import_zod.z.number().positive().optional(),
289
+ type: import_zod.z.string(),
290
+ diameter: import_zod.z.number().optional(),
291
+ description: import_zod.z.string().optional()
292
+ });
150
293
  var CementPadSchema = import_zod.z.object({
151
294
  type: import_zod.z.string(),
152
295
  width: import_zod.z.number(),
@@ -203,7 +346,9 @@ var HydrodynamicEventBaseSchema = import_zod.z.object({
203
346
  sequence: import_zod.z.number().int().optional(),
204
347
  operator: import_zod.z.string().optional(),
205
348
  equipment: import_zod.z.string().optional(),
206
- notes: import_zod.z.string().optional()
349
+ notes: import_zod.z.string().optional(),
350
+ corrects: import_zod.z.string().optional(),
351
+ attachments: import_zod.z.array(AttachmentSchema).optional()
207
352
  });
208
353
  var SpotMeasurementEventSchema = HydrodynamicEventBaseSchema.extend({
209
354
  type: import_zod.z.literal("spot_measurement"),
@@ -245,14 +390,13 @@ var HydrodynamicEventSchema = import_zod.z.discriminatedUnion("type", [
245
390
  AirliftEventSchema,
246
391
  RecoveryOnlyEventSchema
247
392
  ]).or(HydrodynamicEventBaseSchema.passthrough());
248
- var AttachmentSchema = import_zod.z.object({
249
- id: import_zod.z.string(),
250
- uri: import_zod.z.string().url(),
251
- media_type: import_zod.z.string(),
252
- filename: import_zod.z.string().optional(),
253
- description: import_zod.z.string().optional(),
254
- sha256: import_zod.z.string().optional()
255
- });
393
+ var WellStatusSchema = import_zod.z.enum([
394
+ "active",
395
+ "maintenance",
396
+ "inactive",
397
+ "decommissioned",
398
+ "abandoned"
399
+ ]);
256
400
  var HistoryLogEntrySchema = import_zod.z.object({
257
401
  id: import_zod.z.string(),
258
402
  datetime: rfc3339(),
@@ -261,7 +405,13 @@ var HistoryLogEntrySchema = import_zod.z.object({
261
405
  description: import_zod.z.string(),
262
406
  author: import_zod.z.string().optional(),
263
407
  severity: import_zod.z.string().optional(),
264
- attachments: import_zod.z.array(AttachmentSchema).optional()
408
+ attachments: import_zod.z.array(AttachmentSchema).optional(),
409
+ hydrodynamic_event_ids: import_zod.z.array(import_zod.z.string()).optional(),
410
+ sample_ids: import_zod.z.array(import_zod.z.string()).optional(),
411
+ maintenance_type: import_zod.z.string().optional(),
412
+ pump_installation_id: import_zod.z.string().optional(),
413
+ meter_id: import_zod.z.string().optional(),
414
+ status: WellStatusSchema.optional()
265
415
  });
266
416
  var AquiferAnalysisSchema = import_zod.z.object({
267
417
  id: import_zod.z.string(),
@@ -287,8 +437,297 @@ var AquiferAnalysisSchema = import_zod.z.object({
287
437
  jacob_b: import_zod.z.number().optional(),
288
438
  jacob_c: import_zod.z.number().optional(),
289
439
  well_efficiency_pct: import_zod.z.number().optional(),
440
+ notes: import_zod.z.string().optional(),
441
+ attachments: import_zod.z.array(AttachmentSchema).optional()
442
+ });
443
+ var PumpElectricalSchema = import_zod.z.object({
444
+ voltage: import_zod.z.number().nonnegative().optional(),
445
+ phases: import_zod.z.union([import_zod.z.literal(1), import_zod.z.literal(3)]).optional(),
446
+ cable_section: import_zod.z.number().nonnegative().optional(),
447
+ cable_length: import_zod.z.number().nonnegative().optional()
448
+ });
449
+ var PumpInstallationSchema = import_zod.z.object({
450
+ id: import_zod.z.string(),
451
+ installed_at: rfc3339(),
452
+ removed_at: rfc3339().optional(),
453
+ installed_by: import_zod.z.string().optional(),
454
+ removed_by: import_zod.z.string().optional(),
455
+ type: import_zod.z.string(),
456
+ power_source: import_zod.z.string().optional(),
457
+ manufacturer: import_zod.z.string().optional(),
458
+ model: import_zod.z.string().optional(),
459
+ serial: import_zod.z.string().optional(),
460
+ intake_depth: import_zod.z.number().nonnegative().optional(),
461
+ rated_flow_rate: import_zod.z.number().nonnegative().optional(),
462
+ rated_head: import_zod.z.number().nonnegative().optional(),
463
+ rated_power: import_zod.z.number().nonnegative().optional(),
464
+ stages: import_zod.z.number().int().positive().optional(),
465
+ riser_diameter: import_zod.z.number().nonnegative().optional(),
466
+ riser_material: import_zod.z.string().optional(),
467
+ check_valve: import_zod.z.boolean().optional(),
468
+ electrical: PumpElectricalSchema.optional(),
469
+ notes: import_zod.z.string().optional(),
470
+ updated_at: rfc3339().optional(),
471
+ attachments: import_zod.z.array(AttachmentSchema).optional()
472
+ });
473
+ var VolumeLimitSchema = import_zod.z.object({
474
+ period: import_zod.z.enum(["daily", "monthly", "annual"]),
475
+ volume: import_zod.z.number().nonnegative()
476
+ });
477
+ var MonthlyGrantSchema = import_zod.z.object({
478
+ month: import_zod.z.number().int().min(1).max(12),
479
+ flow_rate: import_zod.z.number().nonnegative().optional(),
480
+ daily_operating_time: import_zod.z.number().nonnegative().optional(),
481
+ days: import_zod.z.number().int().min(0).max(31).optional()
482
+ });
483
+ var ConditionFulfillmentSchema = import_zod.z.object({
484
+ id: import_zod.z.string(),
485
+ datetime: rfc3339(),
486
+ due_date: calendarDate().optional(),
487
+ description: import_zod.z.string().optional(),
488
+ author: import_zod.z.string().optional(),
489
+ event_id: import_zod.z.string().optional(),
490
+ sample_id: import_zod.z.string().optional(),
491
+ updated_at: rfc3339().optional(),
492
+ attachments: import_zod.z.array(AttachmentSchema).optional()
493
+ });
494
+ var PermitConditionSchema = import_zod.z.object({
495
+ id: import_zod.z.string(),
496
+ description: import_zod.z.string(),
497
+ category: import_zod.z.string().optional(),
498
+ first_due: calendarDate().optional(),
499
+ due_after: dateDuration().optional(),
500
+ recurrence: dateDuration().optional(),
501
+ last_due: calendarDate().optional(),
502
+ occurrences: import_zod.z.number().int().positive().optional(),
503
+ responsible: import_zod.z.string().optional(),
504
+ fulfillments: import_zod.z.array(ConditionFulfillmentSchema).optional()
505
+ });
506
+ var PermitAdministrativeStatusSchema = import_zod.z.enum([
507
+ "requested",
508
+ "granted",
509
+ "suspended",
510
+ "revoked",
511
+ "denied",
512
+ "withdrawn"
513
+ ]);
514
+ var PermitHistoryEntrySchema = import_zod.z.object({
515
+ id: import_zod.z.string(),
516
+ date: calendarDate(),
517
+ type: import_zod.z.string().optional(),
518
+ description: import_zod.z.string(),
519
+ done: import_zod.z.boolean().optional(),
520
+ due_date: calendarDate().optional(),
521
+ updated_at: rfc3339().optional(),
522
+ attachments: import_zod.z.array(AttachmentSchema).optional()
523
+ });
524
+ var PermitSchema = import_zod.z.object({
525
+ id: import_zod.z.string(),
526
+ type: import_zod.z.string(),
527
+ authority: import_zod.z.string(),
528
+ identifier: import_zod.z.string().optional(),
529
+ request_identifier: import_zod.z.string().optional(),
530
+ status: PermitAdministrativeStatusSchema.optional(),
531
+ issued_at: calendarDate().optional(),
532
+ valid_from: calendarDate().optional(),
533
+ valid_until: calendarDate().optional(),
534
+ renewal_requested_at: calendarDate().optional(),
535
+ water_use: import_zod.z.array(import_zod.z.string()).optional(),
536
+ flow_rate: import_zod.z.number().nonnegative().optional(),
537
+ daily_operating_time: import_zod.z.number().nonnegative().optional(),
538
+ volume_limits: import_zod.z.array(VolumeLimitSchema).optional(),
539
+ monthly_schedule: import_zod.z.array(MonthlyGrantSchema).optional(),
540
+ conditions: import_zod.z.array(PermitConditionSchema).optional(),
541
+ history: import_zod.z.array(PermitHistoryEntrySchema).optional(),
542
+ supersedes: import_zod.z.string().optional(),
543
+ notes: import_zod.z.string().optional(),
544
+ updated_at: rfc3339().optional(),
545
+ attachments: import_zod.z.array(AttachmentSchema).optional()
546
+ });
547
+ var MeterSchema = import_zod.z.object({
548
+ id: import_zod.z.string(),
549
+ installed_at: rfc3339(),
550
+ removed_at: rfc3339().optional(),
551
+ installed_by: import_zod.z.string().optional(),
552
+ removed_by: import_zod.z.string().optional(),
553
+ type: import_zod.z.string().optional(),
554
+ manufacturer: import_zod.z.string().optional(),
555
+ model: import_zod.z.string().optional(),
556
+ serial: import_zod.z.string().optional(),
557
+ nominal_diameter: import_zod.z.number().nonnegative().optional(),
558
+ max_reading: import_zod.z.number().positive().optional(),
559
+ notes: import_zod.z.string().optional(),
560
+ updated_at: rfc3339().optional(),
561
+ attachments: import_zod.z.array(AttachmentSchema).optional()
562
+ });
563
+ var ProductionEntryBaseSchema = import_zod.z.object({
564
+ id: import_zod.z.string(),
565
+ type: import_zod.z.string(),
566
+ corrects: import_zod.z.string().optional(),
567
+ sequence: import_zod.z.number().int().optional(),
290
568
  notes: import_zod.z.string().optional()
291
569
  });
570
+ var MeterReadingSchema = ProductionEntryBaseSchema.extend({
571
+ type: import_zod.z.literal("meter_reading"),
572
+ datetime: rfc3339(),
573
+ meter_id: import_zod.z.string(),
574
+ reading: import_zod.z.number().nonnegative(),
575
+ source: import_zod.z.string().optional()
576
+ });
577
+ var EstimatedVolumeSchema = ProductionEntryBaseSchema.extend({
578
+ type: import_zod.z.literal("estimated_volume"),
579
+ period_start: rfc3339(),
580
+ period_end: rfc3339(),
581
+ volume: import_zod.z.number().nonnegative(),
582
+ method: import_zod.z.string().optional()
583
+ });
584
+ var PRODUCTION_TYPES = ["meter_reading", "estimated_volume"];
585
+ var ProductionEntrySchema = import_zod.z.discriminatedUnion("type", [MeterReadingSchema, EstimatedVolumeSchema]).or(
586
+ ProductionEntryBaseSchema.passthrough().refine(
587
+ (e) => !PRODUCTION_TYPES.includes(e.type),
588
+ { message: "malformed production entry" }
589
+ )
590
+ );
591
+ var OperatingRegimeSchema = import_zod.z.object({
592
+ id: import_zod.z.string(),
593
+ effective_from: rfc3339(),
594
+ flow_rate: import_zod.z.number().nonnegative().optional(),
595
+ daily_operating_time: import_zod.z.number().min(0).max(24).optional(),
596
+ days_per_week: import_zod.z.number().int().min(1).max(7).optional(),
597
+ notes: import_zod.z.string().optional(),
598
+ updated_at: rfc3339().optional()
599
+ });
600
+ var PARAMETER_VOCABULARY = /^(welldot|cas|x-.+)$/;
601
+ var ParameterSchema = import_zod.z.object({
602
+ code: import_zod.z.string().min(1),
603
+ vocabulary: import_zod.z.string().regex(PARAMETER_VOCABULARY, "vocabulary must be welldot, cas or x-\u2026")
604
+ });
605
+ var TimeResolutionSchema = import_zod.z.literal("day");
606
+ var SamplingPointSchema = import_zod.z.object({
607
+ type: import_zod.z.string(),
608
+ depth: import_zod.z.number().nonnegative().optional(),
609
+ depth_precision: import_zod.z.number().nonnegative().optional(),
610
+ from: import_zod.z.number().nonnegative().optional(),
611
+ to: import_zod.z.number().nonnegative().optional(),
612
+ device: import_zod.z.string().optional(),
613
+ pump_installation_id: import_zod.z.string().optional()
614
+ }).refine(
615
+ (p) => !(p.depth !== void 0 && (p.from !== void 0 || p.to !== void 0)),
616
+ { message: "depth and from/to are mutually exclusive" }
617
+ );
618
+ var PurgeReadingSchema = import_zod.z.object({
619
+ elapsed: import_zod.z.number().nonnegative(),
620
+ parameter: ParameterSchema,
621
+ value: import_zod.z.number()
622
+ });
623
+ var PurgeSchema = import_zod.z.object({
624
+ duration: import_zod.z.number().nonnegative().optional(),
625
+ volume: import_zod.z.number().nonnegative().optional(),
626
+ flow_rate: import_zod.z.number().nonnegative().optional(),
627
+ stabilized: import_zod.z.boolean().optional(),
628
+ readings: import_zod.z.array(PurgeReadingSchema).optional()
629
+ });
630
+ var LaboratorySchema = import_zod.z.object({
631
+ name: import_zod.z.string(),
632
+ accreditation: import_zod.z.string().optional(),
633
+ report_number: import_zod.z.string().optional(),
634
+ batch_id: import_zod.z.string().optional(),
635
+ sample_id: import_zod.z.string().optional(),
636
+ received_at: rfc3339().optional(),
637
+ received_at_resolution: TimeResolutionSchema.optional(),
638
+ received_temperature: import_zod.z.number().optional()
639
+ });
640
+ var FiltrationSchema = import_zod.z.object({
641
+ pore_size: import_zod.z.number().positive().optional(),
642
+ location: import_zod.z.enum(["field", "lab"]).optional()
643
+ });
644
+ var ResultValidationSchema = import_zod.z.object({
645
+ status: import_zod.z.enum(["unvalidated", "validated", "qualified", "rejected"]),
646
+ qualifier: import_zod.z.string().optional(),
647
+ guideline: import_zod.z.string().optional(),
648
+ validated_by: import_zod.z.string().optional(),
649
+ validated_at: rfc3339().optional()
650
+ });
651
+ var ResultQualifierSchema = import_zod.z.enum([
652
+ "<",
653
+ ">",
654
+ "not_detected",
655
+ "estimated"
656
+ ]);
657
+ var WaterQualityResultSchema = import_zod.z.object({
658
+ parameter: ParameterSchema,
659
+ value: import_zod.z.number().optional(),
660
+ presence: import_zod.z.boolean().optional(),
661
+ text: import_zod.z.string().optional(),
662
+ qualifier: ResultQualifierSchema.optional(),
663
+ unit: import_zod.z.string().min(1).optional(),
664
+ detection_limit: import_zod.z.number().nonnegative().optional(),
665
+ quantification_limit: import_zod.z.number().nonnegative().optional(),
666
+ value_precision: import_zod.z.number().nonnegative().optional(),
667
+ fraction: import_zod.z.enum(["total", "dissolved", "suspended"]).optional(),
668
+ filtration: FiltrationSchema.optional(),
669
+ measured_in: import_zod.z.enum(["field", "lab"]).optional(),
670
+ method: import_zod.z.string().optional(),
671
+ analyzed_at: rfc3339().optional(),
672
+ analyzed_at_resolution: TimeResolutionSchema.optional(),
673
+ lab_flags: import_zod.z.array(import_zod.z.string()).optional(),
674
+ validation: ResultValidationSchema.optional(),
675
+ notes: import_zod.z.string().optional()
676
+ }).superRefine((r, ctx) => {
677
+ const forms = [r.value, r.presence, r.text].filter(
678
+ (v) => v !== void 0
679
+ ).length;
680
+ if (r.qualifier === "not_detected") {
681
+ if (forms !== 0)
682
+ ctx.addIssue({
683
+ code: import_zod.z.ZodIssueCode.custom,
684
+ message: "not_detected results carry no value form"
685
+ });
686
+ } else if (forms !== 1) {
687
+ ctx.addIssue({
688
+ code: import_zod.z.ZodIssueCode.custom,
689
+ message: "result must have exactly one of value, presence or text"
690
+ });
691
+ } else if (r.qualifier !== void 0 && r.value === void 0) {
692
+ ctx.addIssue({
693
+ code: import_zod.z.ZodIssueCode.custom,
694
+ message: `qualifier ${r.qualifier} requires a numeric value`
695
+ });
696
+ }
697
+ const custom = r.parameter.vocabulary.startsWith("x-");
698
+ if (custom && r.unit === void 0)
699
+ ctx.addIssue({
700
+ code: import_zod.z.ZodIssueCode.custom,
701
+ path: ["unit"],
702
+ message: "unit is required for x- vocabularies"
703
+ });
704
+ if (!custom && r.unit !== void 0)
705
+ ctx.addIssue({
706
+ code: import_zod.z.ZodIssueCode.custom,
707
+ path: ["unit"],
708
+ message: "unit is forbidden for welldot and cas parameters"
709
+ });
710
+ });
711
+ var WaterSampleSchema = import_zod.z.object({
712
+ id: import_zod.z.string(),
713
+ datetime: rfc3339(),
714
+ sample_type: import_zod.z.string(),
715
+ parent_sample_id: import_zod.z.string().optional(),
716
+ sequence: import_zod.z.number().int().optional(),
717
+ campaign: import_zod.z.string().optional(),
718
+ sampling_method: import_zod.z.string().optional(),
719
+ sampling_point: SamplingPointSchema.optional(),
720
+ purge: PurgeSchema.optional(),
721
+ static_level_event_id: import_zod.z.string().optional(),
722
+ collected_by: import_zod.z.string().optional(),
723
+ preservation: import_zod.z.string().optional(),
724
+ chain_of_custody: import_zod.z.string().optional(),
725
+ laboratory: LaboratorySchema.optional(),
726
+ corrects: import_zod.z.string().optional(),
727
+ notes: import_zod.z.string().optional(),
728
+ attachments: import_zod.z.array(AttachmentSchema).optional(),
729
+ results: import_zod.z.array(WaterQualityResultSchema).min(1)
730
+ });
292
731
  var WellSchema = import_zod.z.object({
293
732
  version: import_zod.z.number().int(),
294
733
  "@context": import_zod.z.union([import_zod.z.string(), import_zod.z.array(import_zod.z.unknown()), import_zod.z.record(import_zod.z.unknown())]).optional(),
@@ -300,9 +739,10 @@ var WellSchema = import_zod.z.object({
300
739
  })
301
740
  ).optional(),
302
741
  well_type: import_zod.z.string().optional(),
742
+ well_purpose: import_zod.z.array(import_zod.z.string()).optional(),
303
743
  name: import_zod.z.string().optional(),
304
744
  well_driller: import_zod.z.string().optional(),
305
- construction_date: import_zod.z.string().regex(/^\d{4}-\d{2}-\d{2}$/, "construction_date must be YYYY-MM-DD").optional(),
745
+ construction_date: import_zod.z.string().regex(CALENDAR_DATE, "construction_date must be YYYY-MM-DD").optional(),
306
746
  obs: import_zod.z.string().optional(),
307
747
  lat: import_zod.z.number().optional(),
308
748
  lng: import_zod.z.number().optional(),
@@ -314,13 +754,21 @@ var WellSchema = import_zod.z.object({
314
754
  well_screen: import_zod.z.array(WellScreenSchema),
315
755
  surface_case: import_zod.z.array(SurfaceCaseSchema),
316
756
  hole_fill: import_zod.z.array(HoleFillSchema),
757
+ centralizers: import_zod.z.array(CentralizerSchema).optional(),
317
758
  cement_pad: CementPadSchema.optional(),
318
759
  lithology: import_zod.z.array(LithologySchema),
319
760
  fractures: import_zod.z.array(FractureSchema),
320
761
  caves: import_zod.z.array(CaveSchema),
321
762
  hydrodynamic_events: import_zod.z.array(HydrodynamicEventSchema).optional(),
322
763
  aquifer_analysis: import_zod.z.array(AquiferAnalysisSchema).optional(),
323
- history_logs: import_zod.z.array(HistoryLogEntrySchema).optional()
764
+ history_logs: import_zod.z.array(HistoryLogEntrySchema).optional(),
765
+ attachments: import_zod.z.array(AttachmentSchema).optional(),
766
+ pump_installations: import_zod.z.array(PumpInstallationSchema).optional(),
767
+ permits: import_zod.z.array(PermitSchema).optional(),
768
+ meters: import_zod.z.array(MeterSchema).optional(),
769
+ production: import_zod.z.array(ProductionEntrySchema).optional(),
770
+ operating_regime: import_zod.z.array(OperatingRegimeSchema).optional(),
771
+ water_samples: import_zod.z.array(WaterSampleSchema).optional()
324
772
  }).passthrough();
325
773
  function normalizeV1Fields(raw) {
326
774
  const out = { ...raw };
@@ -413,8 +861,37 @@ var SECTION_KEYS = [
413
861
  "constructive",
414
862
  "geology",
415
863
  "hydrodynamic",
416
- "history"
864
+ "history",
865
+ "operation",
866
+ "water_quality"
417
867
  ];
868
+ var VISIBILITY_TREE = {
869
+ general: ["identification", "location", "obs", "attachments"],
870
+ constructive: [
871
+ "bore_hole",
872
+ "surface_case",
873
+ "well_case",
874
+ "reduction",
875
+ "well_screen",
876
+ "hole_fill",
877
+ "centralizers",
878
+ "cement_pad"
879
+ ],
880
+ geology: ["lithology", "fractures", "caves"],
881
+ hydrodynamic: ["hydrodynamic_events", "aquifer_analysis"],
882
+ history: [],
883
+ operation: [
884
+ "pump_installations",
885
+ "meters",
886
+ "operating_regime",
887
+ "production",
888
+ "permits"
889
+ ],
890
+ water_quality: []
891
+ };
892
+ var VISIBILITY_LEAF_KEYS = SECTION_KEYS.flatMap(
893
+ (section) => VISIBILITY_TREE[section].length ? VISIBILITY_TREE[section] : [section]
894
+ );
418
895
  var EMPTY_WELL = {
419
896
  version: 2,
420
897
  bore_hole: [],
@@ -526,6 +1003,9 @@ function decodeV2Well(raw) {
526
1003
  profiles: raw.profiles
527
1004
  },
528
1005
  ...raw.well_type !== void 0 && { well_type: raw.well_type },
1006
+ ...raw.well_purpose !== void 0 && {
1007
+ well_purpose: raw.well_purpose
1008
+ },
529
1009
  ...raw.name !== void 0 && { name: raw.name },
530
1010
  ...raw.well_driller !== void 0 && {
531
1011
  well_driller: raw.well_driller
@@ -543,6 +1023,9 @@ function decodeV2Well(raw) {
543
1023
  well_screen: normalizeWellScreens(rawScreens),
544
1024
  surface_case: raw.surface_case ?? [],
545
1025
  hole_fill: raw.hole_fill ?? [],
1026
+ ...raw.centralizers !== void 0 && {
1027
+ centralizers: raw.centralizers
1028
+ },
546
1029
  ...raw.cement_pad ? { cement_pad: raw.cement_pad } : {},
547
1030
  lithology: normalizeLithology(raw.lithology ?? []),
548
1031
  fractures: raw.fractures ?? [],
@@ -555,6 +1038,27 @@ function decodeV2Well(raw) {
555
1038
  },
556
1039
  ...raw.history_logs !== void 0 && {
557
1040
  history_logs: raw.history_logs
1041
+ },
1042
+ ...raw.attachments !== void 0 && {
1043
+ attachments: raw.attachments
1044
+ },
1045
+ ...raw.pump_installations !== void 0 && {
1046
+ pump_installations: raw.pump_installations
1047
+ },
1048
+ ...raw.permits !== void 0 && {
1049
+ permits: raw.permits
1050
+ },
1051
+ ...raw.meters !== void 0 && {
1052
+ meters: raw.meters
1053
+ },
1054
+ ...raw.production !== void 0 && {
1055
+ production: raw.production
1056
+ },
1057
+ ...raw.operating_regime !== void 0 && {
1058
+ operating_regime: raw.operating_regime
1059
+ },
1060
+ ...raw.water_samples !== void 0 && {
1061
+ water_samples: raw.water_samples
558
1062
  }
559
1063
  };
560
1064
  return mergeWell(decoded, raw);
@@ -604,6 +1108,9 @@ function serializeWell(well) {
604
1108
  ...well.location !== void 0 && { location: well.location },
605
1109
  ...well.profiles !== void 0 && { profiles: well.profiles },
606
1110
  ...well.well_type !== void 0 && { well_type: well.well_type },
1111
+ ...well.well_purpose !== void 0 && {
1112
+ well_purpose: well.well_purpose
1113
+ },
607
1114
  ...well.name !== void 0 && { name: well.name },
608
1115
  ...well.well_driller !== void 0 && { well_driller: well.well_driller },
609
1116
  ...well.construction_date !== void 0 && {
@@ -617,6 +1124,9 @@ function serializeWell(well) {
617
1124
  well_screen: well.well_screen,
618
1125
  surface_case: well.surface_case,
619
1126
  hole_fill: well.hole_fill,
1127
+ ...well.centralizers !== void 0 && {
1128
+ centralizers: well.centralizers
1129
+ },
620
1130
  ...well.cement_pad && { cement_pad: well.cement_pad },
621
1131
  lithology: well.lithology,
622
1132
  fractures: well.fractures,
@@ -627,7 +1137,20 @@ function serializeWell(well) {
627
1137
  ...well.aquifer_analysis !== void 0 && {
628
1138
  aquifer_analysis: well.aquifer_analysis
629
1139
  },
630
- ...well.history_logs !== void 0 && { history_logs: well.history_logs }
1140
+ ...well.history_logs !== void 0 && { history_logs: well.history_logs },
1141
+ ...well.attachments !== void 0 && { attachments: well.attachments },
1142
+ ...well.pump_installations !== void 0 && {
1143
+ pump_installations: well.pump_installations
1144
+ },
1145
+ ...well.permits !== void 0 && { permits: well.permits },
1146
+ ...well.meters !== void 0 && { meters: well.meters },
1147
+ ...well.production !== void 0 && { production: well.production },
1148
+ ...well.operating_regime !== void 0 && {
1149
+ operating_regime: well.operating_regime
1150
+ },
1151
+ ...well.water_samples !== void 0 && {
1152
+ water_samples: well.water_samples
1153
+ }
631
1154
  };
632
1155
  return JSON.stringify(payload);
633
1156
  }
@@ -638,41 +1161,48 @@ function isWellEmpty(well) {
638
1161
  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;
639
1162
  }
640
1163
  function redactWell(well, visibility) {
1164
+ const v = visibility;
641
1165
  const redacted = { ...well };
642
- if (!visibility.general) {
1166
+ const sectionOf = (field) => SECTION_KEYS.find((s) => VISIBILITY_TREE[s].includes(field));
1167
+ const hidden = (key) => v[key] === false || !SECTION_KEYS.includes(key) && v[sectionOf(key)] === false;
1168
+ const sectionHidden = (section) => v[section] === false || VISIBILITY_TREE[section].length > 0 && VISIBILITY_TREE[section].every((f) => v[f] === false);
1169
+ if (hidden("identification")) {
643
1170
  delete redacted.well_id;
644
- delete redacted.location;
645
1171
  delete redacted.well_type;
1172
+ delete redacted.well_purpose;
646
1173
  delete redacted.name;
647
1174
  delete redacted.well_driller;
648
1175
  delete redacted.construction_date;
649
- delete redacted.obs;
1176
+ }
1177
+ if (hidden("location")) {
1178
+ delete redacted.location;
650
1179
  delete redacted.lat;
651
1180
  delete redacted.lng;
652
1181
  delete redacted.elevation;
653
1182
  }
654
- if (!visibility.constructive) {
655
- redacted.bore_hole = [];
656
- redacted.well_case = [];
657
- redacted.reduction = [];
658
- redacted.well_screen = [];
659
- redacted.surface_case = [];
660
- redacted.hole_fill = [];
661
- delete redacted.cement_pad;
662
- delete redacted.well_depth;
663
- }
664
- if (!visibility.geology) {
665
- redacted.lithology = [];
666
- redacted.fractures = [];
667
- redacted.caves = [];
668
- }
669
- if (!visibility.hydrodynamic) {
670
- redacted.hydrodynamic_events = [];
671
- redacted.aquifer_analysis = [];
672
- }
673
- if (!visibility.history) {
674
- redacted.history_logs = [];
675
- }
1183
+ if (hidden("obs")) delete redacted.obs;
1184
+ if (hidden("attachments")) delete redacted.attachments;
1185
+ if (hidden("bore_hole")) redacted.bore_hole = [];
1186
+ if (hidden("surface_case")) redacted.surface_case = [];
1187
+ if (hidden("well_case")) redacted.well_case = [];
1188
+ if (hidden("reduction")) redacted.reduction = [];
1189
+ if (hidden("well_screen")) redacted.well_screen = [];
1190
+ if (hidden("hole_fill")) redacted.hole_fill = [];
1191
+ if (hidden("centralizers")) delete redacted.centralizers;
1192
+ if (hidden("cement_pad")) delete redacted.cement_pad;
1193
+ if (sectionHidden("constructive")) delete redacted.well_depth;
1194
+ if (hidden("lithology")) redacted.lithology = [];
1195
+ if (hidden("fractures")) redacted.fractures = [];
1196
+ if (hidden("caves")) redacted.caves = [];
1197
+ if (hidden("hydrodynamic_events")) redacted.hydrodynamic_events = [];
1198
+ if (hidden("aquifer_analysis")) redacted.aquifer_analysis = [];
1199
+ if (hidden("history")) redacted.history_logs = [];
1200
+ if (hidden("pump_installations")) delete redacted.pump_installations;
1201
+ if (hidden("meters")) delete redacted.meters;
1202
+ if (hidden("operating_regime")) delete redacted.operating_regime;
1203
+ if (hidden("production")) delete redacted.production;
1204
+ if (hidden("permits")) delete redacted.permits;
1205
+ if (hidden("water_quality")) delete redacted.water_samples;
676
1206
  return redacted;
677
1207
  }
678
1208
  function deserializeWell(jsonString) {
@@ -1026,6 +1556,1521 @@ var FGDC_TEXTURES_OPTIONS = [
1026
1556
  { code: 733, label: "Ore" }
1027
1557
  ];
1028
1558
 
1559
+ // src/vocab/waterQuality.limits.ts
1560
+ var NEPHELOMETRIC_TURBIDITY_CODES = [
1561
+ "turbidity",
1562
+ "turbidity_ntu",
1563
+ "turbidity_fnu"
1564
+ ];
1565
+ var WHO_GDWQ_2022 = {
1566
+ id: "who_gdwq_2022",
1567
+ name: "WHO Guidelines for Drinking-water Quality (2022)",
1568
+ jurisdiction: "INT",
1569
+ source: "WHO, Guidelines for drinking-water quality: 4th edition incorporating the first and second addenda, 2022",
1570
+ limits: [
1571
+ { code: "antimony", max: 0.02, basis: "health" },
1572
+ { code: "arsenic", max: 0.01, basis: "health", note: "provisional" },
1573
+ { code: "barium", max: 1.3, basis: "health" },
1574
+ { code: "boron", max: 2.4, basis: "health" },
1575
+ { code: "cadmium", max: 3e-3, basis: "health" },
1576
+ { code: "chromium", max: 0.05, basis: "health", note: "provisional" },
1577
+ { code: "copper", max: 2, basis: "health" },
1578
+ { code: "fluoride", max: 1.5, basis: "health" },
1579
+ { code: "lead", max: 0.01, basis: "health", note: "provisional" },
1580
+ { code: "manganese", max: 0.08, basis: "health", note: "provisional" },
1581
+ { code: "mercury", max: 6e-3, basis: "health", note: "inorganic mercury" },
1582
+ { code: "nickel", max: 0.07, basis: "health" },
1583
+ { code: "nitrate_as_no3", max: 50, basis: "health" },
1584
+ { code: "nitrite_as_no2", max: 3, basis: "health" },
1585
+ { code: "selenium", max: 0.04, basis: "health", note: "provisional" },
1586
+ { code: "uranium", max: 0.03, basis: "health", note: "provisional" },
1587
+ { code: "e_coli", presence_allowed: false, basis: "health" },
1588
+ {
1589
+ code: "thermotolerant_coliforms",
1590
+ presence_allowed: false,
1591
+ basis: "health"
1592
+ },
1593
+ { code: "gross_alpha", max: 0.5, basis: "health", note: "screening level" },
1594
+ { code: "gross_beta", max: 1, basis: "health", note: "screening level" }
1595
+ ]
1596
+ };
1597
+ var BR_GM_MS_888_2021 = {
1598
+ id: "br_gm_ms_888_2021",
1599
+ name: "Brasil \u2014 Portaria GM/MS 888/2021",
1600
+ jurisdiction: "BR",
1601
+ source: "Minist\xE9rio da Sa\xFAde, Portaria GM/MS n\xBA 888, de 4 de maio de 2021",
1602
+ limits: [
1603
+ // Inorganic substances (health)
1604
+ { code: "antimony", max: 6e-3, basis: "health" },
1605
+ { code: "arsenic", max: 0.01, basis: "health" },
1606
+ { code: "barium", max: 0.7, basis: "health" },
1607
+ { code: "cadmium", max: 3e-3, basis: "health" },
1608
+ { code: "lead", max: 0.01, basis: "health" },
1609
+ { code: "cyanide_total_as_cn", max: 0.07, basis: "health" },
1610
+ { code: "copper", max: 2, basis: "health" },
1611
+ { code: "chromium", max: 0.05, basis: "health" },
1612
+ { code: "fluoride", max: 1.5, basis: "health" },
1613
+ { code: "mercury", max: 1e-3, basis: "health" },
1614
+ { code: "nickel", max: 0.07, basis: "health" },
1615
+ { code: "nitrate_as_n", max: 10, basis: "health" },
1616
+ { code: "nitrite_as_n", max: 1, basis: "health" },
1617
+ { code: "selenium", max: 0.04, basis: "health" },
1618
+ { code: "uranium", max: 0.03, basis: "health" },
1619
+ // Organoleptic standard
1620
+ { code: "aluminum", max: 0.2, basis: "aesthetic" },
1621
+ { code: "ammonia_as_nh3", max: 1.2, basis: "aesthetic" },
1622
+ { code: "chloride", max: 250, basis: "aesthetic" },
1623
+ { code: "apparent_color", max: 15, basis: "aesthetic" },
1624
+ { code: "hardness_total_as_caco3", max: 300, basis: "aesthetic" },
1625
+ { code: "iron", max: 0.3, basis: "aesthetic" },
1626
+ { code: "manganese", max: 0.1, basis: "aesthetic" },
1627
+ { code: "sodium", max: 200, basis: "aesthetic" },
1628
+ { code: "total_dissolved_solids", max: 500, basis: "aesthetic" },
1629
+ { code: "sulfate", max: 250, basis: "aesthetic" },
1630
+ {
1631
+ code: "turbidity",
1632
+ max: 5,
1633
+ basis: "aesthetic",
1634
+ note: "organoleptic standard (uT)"
1635
+ },
1636
+ // Operational
1637
+ {
1638
+ code: "ph",
1639
+ min: 6,
1640
+ max: 9,
1641
+ basis: "operational",
1642
+ note: "recommended range"
1643
+ },
1644
+ {
1645
+ code: "free_chlorine",
1646
+ min: 0.2,
1647
+ max: 5,
1648
+ basis: "operational",
1649
+ note: "residual in the distribution system"
1650
+ },
1651
+ // Microbiological
1652
+ { code: "e_coli", presence_allowed: false, basis: "health" },
1653
+ {
1654
+ code: "total_coliforms",
1655
+ presence_allowed: false,
1656
+ basis: "indicator",
1657
+ note: "tolerances apply by system size and sampling point"
1658
+ },
1659
+ // Radioactivity
1660
+ { code: "gross_alpha", max: 0.5, basis: "health", note: "screening level" },
1661
+ { code: "gross_beta", max: 1, basis: "health", note: "screening level" },
1662
+ { code: "radium_226", max: 1, basis: "health" },
1663
+ { code: "radium_228", max: 0.1, basis: "health" }
1664
+ ]
1665
+ };
1666
+ var EU_2020_2184 = {
1667
+ id: "eu_2020_2184",
1668
+ name: "EU Drinking Water Directive 2020/2184",
1669
+ jurisdiction: "EU",
1670
+ source: "Directive (EU) 2020/2184 of the European Parliament and of the Council, Annex I",
1671
+ limits: [
1672
+ // Part A — microbiological
1673
+ { code: "e_coli", presence_allowed: false, basis: "health" },
1674
+ // Part B — chemical
1675
+ { code: "antimony", max: 0.01, basis: "health" },
1676
+ { code: "arsenic", max: 0.01, basis: "health" },
1677
+ {
1678
+ code: "boron",
1679
+ max: 1.5,
1680
+ basis: "health",
1681
+ note: "2.4 mg/L where desalinated water is the predominant source"
1682
+ },
1683
+ { code: "cadmium", max: 5e-3, basis: "health" },
1684
+ {
1685
+ code: "chromium",
1686
+ max: 0.05,
1687
+ basis: "health",
1688
+ note: "0.025 mg/L from 12 January 2036"
1689
+ },
1690
+ { code: "copper", max: 2, basis: "health" },
1691
+ { code: "cyanide_total_as_cn", max: 0.05, basis: "health" },
1692
+ { code: "fluoride", max: 1.5, basis: "health" },
1693
+ {
1694
+ code: "lead",
1695
+ max: 0.01,
1696
+ basis: "health",
1697
+ note: "0.005 mg/L from 12 January 2036"
1698
+ },
1699
+ { code: "mercury", max: 1e-3, basis: "health" },
1700
+ { code: "nickel", max: 0.02, basis: "health" },
1701
+ { code: "nitrate_as_no3", max: 50, basis: "health" },
1702
+ { code: "nitrite_as_no2", max: 0.5, basis: "health", note: "at the tap" },
1703
+ { code: "selenium", max: 0.02, basis: "health" },
1704
+ { code: "uranium", max: 0.03, basis: "health" },
1705
+ // Part C — indicator parameters
1706
+ { code: "aluminum", max: 0.2, basis: "indicator" },
1707
+ { code: "chloride", max: 250, basis: "indicator" },
1708
+ {
1709
+ code: "specific_conductance",
1710
+ max: 2500,
1711
+ basis: "indicator",
1712
+ note: "directive value is at 20 \xB0C"
1713
+ },
1714
+ { code: "ph", min: 6.5, max: 9.5, basis: "indicator" },
1715
+ { code: "iron", max: 0.2, basis: "indicator" },
1716
+ { code: "manganese", max: 0.05, basis: "indicator" },
1717
+ { code: "sodium", max: 200, basis: "indicator" },
1718
+ { code: "sulfate", max: 250, basis: "indicator" },
1719
+ { code: "total_coliforms", presence_allowed: false, basis: "indicator" }
1720
+ ]
1721
+ };
1722
+ var WATER_QUALITY_LIMIT_SETS = [
1723
+ WHO_GDWQ_2022,
1724
+ BR_GM_MS_888_2021,
1725
+ EU_2020_2184
1726
+ ];
1727
+ function getLimitSet(id) {
1728
+ return WATER_QUALITY_LIMIT_SETS.find((s) => s.id === id);
1729
+ }
1730
+
1731
+ // src/utils/language.utils.ts
1732
+ function parseLanguageTextJson(value) {
1733
+ const trimmed = value.trim();
1734
+ if (!trimmed.startsWith("{") || !trimmed.endsWith("}")) return void 0;
1735
+ let parsed;
1736
+ try {
1737
+ parsed = JSON.parse(trimmed);
1738
+ } catch {
1739
+ return void 0;
1740
+ }
1741
+ if (typeof parsed !== "object" || parsed === null || Array.isArray(parsed)) {
1742
+ return void 0;
1743
+ }
1744
+ const entries = Object.entries(parsed).filter(
1745
+ (entry) => typeof entry[1] === "string" && entry[1].trim() !== ""
1746
+ );
1747
+ return Object.fromEntries(entries);
1748
+ }
1749
+ function resolveLanguageText(text, locale, fallback = "en") {
1750
+ if (text == null) return "";
1751
+ const labels = typeof text === "string" ? parseLanguageTextJson(text) : text;
1752
+ if (labels === void 0) return text;
1753
+ const base = locale.split("-")[0];
1754
+ const usable = (key) => {
1755
+ const value = labels[key];
1756
+ return typeof value === "string" && value.trim() !== "" ? value : void 0;
1757
+ };
1758
+ return usable(locale) ?? usable(base) ?? usable(fallback) ?? Object.keys(labels).map(usable).find((v) => v !== void 0) ?? "";
1759
+ }
1760
+
1761
+ // src/vocab/waterQuality.vocab.ts
1762
+ var WATER_QUALITY_VOCABULARY_VERSION = "1.0.0";
1763
+ var WATER_QUALITY_UNITS = {
1764
+ mg_l: { symbol: "mg/L", ucum: "mg/L" },
1765
+ us_cm: { symbol: "\xB5S/cm", ucum: "uS/cm" },
1766
+ celsius: { symbol: "\xB0C", ucum: "Cel" },
1767
+ mv: { symbol: "mV", ucum: "mV" },
1768
+ ph: { symbol: "", ucum: "[pH]" },
1769
+ ftu: { symbol: "FTU" },
1770
+ ntu: { symbol: "NTU" },
1771
+ fnu: { symbol: "FNU" },
1772
+ fau: { symbol: "FAU" },
1773
+ hazen: { symbol: "uH" },
1774
+ mpn_100ml: { symbol: "MPN/100 mL", ucum: "{MPN}/(100.mL)" },
1775
+ cfu_100ml: { symbol: "CFU/100 mL", ucum: "{CFU}/(100.mL)" },
1776
+ cfu_ml: { symbol: "CFU/mL", ucum: "{CFU}/mL" },
1777
+ bq_l: { symbol: "Bq/L", ucum: "Bq/L" },
1778
+ none: { symbol: "" }
1779
+ };
1780
+ var U = WATER_QUALITY_UNITS;
1781
+ function defineParameter(code, group, label, pt, unit, extra = {}) {
1782
+ return {
1783
+ code,
1784
+ group,
1785
+ label,
1786
+ labels: { pt },
1787
+ unit,
1788
+ form: extra.form ?? "value",
1789
+ ...extra.cas !== void 0 && { cas: extra.cas },
1790
+ ...extra.molar_mass !== void 0 && { molar_mass: extra.molar_mass },
1791
+ ...extra.charge !== void 0 && { charge: extra.charge }
1792
+ };
1793
+ }
1794
+ var WATER_QUALITY_PARAMETERS = [
1795
+ // Physical / field
1796
+ defineParameter(
1797
+ "temperature",
1798
+ "physical",
1799
+ "Temperature",
1800
+ "Temperatura",
1801
+ U.celsius
1802
+ ),
1803
+ defineParameter("ph", "physical", "pH", "pH", U.ph),
1804
+ defineParameter(
1805
+ "specific_conductance",
1806
+ "physical",
1807
+ "Specific conductance at 25 \xB0C",
1808
+ "Condutividade el\xE9trica a 25 \xB0C",
1809
+ U.us_cm
1810
+ ),
1811
+ defineParameter(
1812
+ "conductivity_uncompensated",
1813
+ "physical",
1814
+ "Electrical conductivity, uncompensated",
1815
+ "Condutividade sem compensa\xE7\xE3o",
1816
+ U.us_cm
1817
+ ),
1818
+ defineParameter(
1819
+ "dissolved_oxygen",
1820
+ "physical",
1821
+ "Dissolved oxygen",
1822
+ "Oxig\xEAnio dissolvido",
1823
+ U.mg_l
1824
+ ),
1825
+ defineParameter(
1826
+ "orp",
1827
+ "physical",
1828
+ "Oxidation-reduction potential vs. reference electrode",
1829
+ "Potencial redox vs. eletrodo de refer\xEAncia",
1830
+ U.mv
1831
+ ),
1832
+ defineParameter(
1833
+ "eh",
1834
+ "physical",
1835
+ "Redox potential vs. SHE",
1836
+ "Potencial redox corrigido vs. EPH",
1837
+ U.mv
1838
+ ),
1839
+ defineParameter(
1840
+ "turbidity",
1841
+ "physical",
1842
+ "Turbidity, formazin, method unspecified",
1843
+ "Turbidez, formazina sem m\xE9todo identificado",
1844
+ U.ftu
1845
+ ),
1846
+ defineParameter(
1847
+ "turbidity_ntu",
1848
+ "physical",
1849
+ "Turbidity, nephelometric white light",
1850
+ "Turbidez nefelom\xE9trica, luz branca",
1851
+ U.ntu
1852
+ ),
1853
+ defineParameter(
1854
+ "turbidity_fnu",
1855
+ "physical",
1856
+ "Turbidity, nephelometric infrared (ISO 7027)",
1857
+ "Turbidez nefelom\xE9trica, infravermelho",
1858
+ U.fnu
1859
+ ),
1860
+ defineParameter(
1861
+ "turbidity_fau",
1862
+ "physical",
1863
+ "Turbidity, attenuation (ISO 7027)",
1864
+ "Turbidez por atenua\xE7\xE3o",
1865
+ U.fau
1866
+ ),
1867
+ defineParameter(
1868
+ "apparent_color",
1869
+ "physical",
1870
+ "Apparent color",
1871
+ "Cor aparente",
1872
+ U.hazen
1873
+ ),
1874
+ defineParameter(
1875
+ "true_color",
1876
+ "physical",
1877
+ "True color",
1878
+ "Cor verdadeira",
1879
+ U.hazen
1880
+ ),
1881
+ defineParameter("odor", "physical", "Odor", "Odor", U.none, { form: "text" }),
1882
+ defineParameter("taste", "physical", "Taste", "Gosto", U.none, {
1883
+ form: "text"
1884
+ }),
1885
+ defineParameter(
1886
+ "total_dissolved_solids",
1887
+ "physical",
1888
+ "Total dissolved solids",
1889
+ "S\xF3lidos totais dissolvidos",
1890
+ U.mg_l
1891
+ ),
1892
+ defineParameter(
1893
+ "total_suspended_solids",
1894
+ "physical",
1895
+ "Total suspended solids",
1896
+ "S\xF3lidos suspensos totais",
1897
+ U.mg_l
1898
+ ),
1899
+ defineParameter(
1900
+ "total_solids",
1901
+ "physical",
1902
+ "Total solids",
1903
+ "S\xF3lidos totais",
1904
+ U.mg_l
1905
+ ),
1906
+ defineParameter(
1907
+ "free_co2",
1908
+ "physical",
1909
+ "Free carbon dioxide",
1910
+ "G\xE1s carb\xF4nico livre",
1911
+ U.mg_l
1912
+ ),
1913
+ // Aggregate (expressed as CaCO₃: 100.087 g/mol, divalent → 50.04 mg/meq)
1914
+ defineParameter(
1915
+ "alkalinity_total_as_caco3",
1916
+ "aggregate",
1917
+ "Total alkalinity as CaCO\u2083",
1918
+ "Alcalinidade total como CaCO\u2083",
1919
+ U.mg_l,
1920
+ { molar_mass: 100.087, charge: -2 }
1921
+ ),
1922
+ defineParameter(
1923
+ "alkalinity_bicarbonate_as_caco3",
1924
+ "aggregate",
1925
+ "Bicarbonate alkalinity as CaCO\u2083",
1926
+ "Alcalinidade de bicarbonatos como CaCO\u2083",
1927
+ U.mg_l,
1928
+ { molar_mass: 100.087, charge: -2 }
1929
+ ),
1930
+ defineParameter(
1931
+ "alkalinity_carbonate_as_caco3",
1932
+ "aggregate",
1933
+ "Carbonate alkalinity as CaCO\u2083",
1934
+ "Alcalinidade de carbonatos como CaCO\u2083",
1935
+ U.mg_l,
1936
+ { molar_mass: 100.087, charge: -2 }
1937
+ ),
1938
+ defineParameter(
1939
+ "alkalinity_hydroxide_as_caco3",
1940
+ "aggregate",
1941
+ "Hydroxide alkalinity as CaCO\u2083",
1942
+ "Alcalinidade de hidr\xF3xidos como CaCO\u2083",
1943
+ U.mg_l,
1944
+ { molar_mass: 100.087, charge: -2 }
1945
+ ),
1946
+ defineParameter(
1947
+ "acidity_total_as_caco3",
1948
+ "aggregate",
1949
+ "Total acidity as CaCO\u2083",
1950
+ "Acidez total como CaCO\u2083",
1951
+ U.mg_l,
1952
+ { molar_mass: 100.087, charge: 2 }
1953
+ ),
1954
+ defineParameter(
1955
+ "hardness_total_as_caco3",
1956
+ "aggregate",
1957
+ "Total hardness as CaCO\u2083",
1958
+ "Dureza total como CaCO\u2083",
1959
+ U.mg_l,
1960
+ { molar_mass: 100.087, charge: 2 }
1961
+ ),
1962
+ defineParameter(
1963
+ "hardness_calcium_as_caco3",
1964
+ "aggregate",
1965
+ "Calcium hardness as CaCO\u2083",
1966
+ "Dureza de c\xE1lcio como CaCO\u2083",
1967
+ U.mg_l,
1968
+ { molar_mass: 100.087, charge: 2 }
1969
+ ),
1970
+ // Major ions
1971
+ defineParameter("calcium", "major_ion", "Calcium", "C\xE1lcio", U.mg_l, {
1972
+ cas: "7440-70-2",
1973
+ molar_mass: 40.078,
1974
+ charge: 2
1975
+ }),
1976
+ defineParameter("magnesium", "major_ion", "Magnesium", "Magn\xE9sio", U.mg_l, {
1977
+ cas: "7439-95-4",
1978
+ molar_mass: 24.305,
1979
+ charge: 2
1980
+ }),
1981
+ defineParameter("sodium", "major_ion", "Sodium", "S\xF3dio", U.mg_l, {
1982
+ cas: "7440-23-5",
1983
+ molar_mass: 22.99,
1984
+ charge: 1
1985
+ }),
1986
+ defineParameter("potassium", "major_ion", "Potassium", "Pot\xE1ssio", U.mg_l, {
1987
+ cas: "7440-09-7",
1988
+ molar_mass: 39.098,
1989
+ charge: 1
1990
+ }),
1991
+ defineParameter(
1992
+ "bicarbonate",
1993
+ "major_ion",
1994
+ "Bicarbonate as HCO\u2083\u207B",
1995
+ "Bicarbonato como HCO\u2083\u207B",
1996
+ U.mg_l,
1997
+ { cas: "71-52-3", molar_mass: 61.017, charge: -1 }
1998
+ ),
1999
+ defineParameter(
2000
+ "carbonate",
2001
+ "major_ion",
2002
+ "Carbonate as CO\u2083\xB2\u207B",
2003
+ "Carbonato como CO\u2083\xB2\u207B",
2004
+ U.mg_l,
2005
+ { cas: "3812-32-6", molar_mass: 60.009, charge: -2 }
2006
+ ),
2007
+ defineParameter("chloride", "major_ion", "Chloride", "Cloreto", U.mg_l, {
2008
+ cas: "16887-00-6",
2009
+ molar_mass: 35.453,
2010
+ charge: -1
2011
+ }),
2012
+ defineParameter("sulfate", "major_ion", "Sulfate", "Sulfato", U.mg_l, {
2013
+ cas: "14808-79-8",
2014
+ molar_mass: 96.06,
2015
+ charge: -2
2016
+ }),
2017
+ defineParameter("fluoride", "major_ion", "Fluoride", "Fluoreto", U.mg_l, {
2018
+ cas: "16984-48-8",
2019
+ molar_mass: 18.998,
2020
+ charge: -1
2021
+ }),
2022
+ defineParameter(
2023
+ "silica_as_sio2",
2024
+ "major_ion",
2025
+ "Silica as SiO\u2082",
2026
+ "S\xEDlica como SiO\u2082",
2027
+ U.mg_l,
2028
+ { cas: "7631-86-9" }
2029
+ ),
2030
+ // Nutrients
2031
+ defineParameter(
2032
+ "nitrate_as_n",
2033
+ "nutrient",
2034
+ "Nitrate as N",
2035
+ "Nitrato como N",
2036
+ U.mg_l,
2037
+ {
2038
+ molar_mass: 14.007,
2039
+ charge: -1
2040
+ }
2041
+ ),
2042
+ defineParameter(
2043
+ "nitrate_as_no3",
2044
+ "nutrient",
2045
+ "Nitrate as NO\u2083\u207B",
2046
+ "Nitrato como NO\u2083\u207B",
2047
+ U.mg_l,
2048
+ { cas: "14797-55-8", molar_mass: 62.004, charge: -1 }
2049
+ ),
2050
+ defineParameter(
2051
+ "nitrite_as_n",
2052
+ "nutrient",
2053
+ "Nitrite as N",
2054
+ "Nitrito como N",
2055
+ U.mg_l,
2056
+ {
2057
+ molar_mass: 14.007,
2058
+ charge: -1
2059
+ }
2060
+ ),
2061
+ defineParameter(
2062
+ "nitrite_as_no2",
2063
+ "nutrient",
2064
+ "Nitrite as NO\u2082\u207B",
2065
+ "Nitrito como NO\u2082\u207B",
2066
+ U.mg_l,
2067
+ { cas: "14797-65-0", molar_mass: 46.005, charge: -1 }
2068
+ ),
2069
+ defineParameter(
2070
+ "ammonia_as_n",
2071
+ "nutrient",
2072
+ "Ammonia nitrogen as N",
2073
+ "Nitrog\xEAnio amoniacal como N",
2074
+ U.mg_l,
2075
+ { molar_mass: 14.007, charge: 1 }
2076
+ ),
2077
+ defineParameter(
2078
+ "ammonia_as_nh3",
2079
+ "nutrient",
2080
+ "Ammonia as NH\u2083",
2081
+ "Am\xF4nia como NH\u2083",
2082
+ U.mg_l,
2083
+ {
2084
+ cas: "7664-41-7"
2085
+ }
2086
+ ),
2087
+ defineParameter(
2088
+ "kjeldahl_nitrogen_as_n",
2089
+ "nutrient",
2090
+ "Total Kjeldahl nitrogen as N",
2091
+ "Nitrog\xEAnio Kjeldahl total como N",
2092
+ U.mg_l
2093
+ ),
2094
+ defineParameter(
2095
+ "phosphorus_total_as_p",
2096
+ "nutrient",
2097
+ "Total phosphorus as P",
2098
+ "F\xF3sforo total como P",
2099
+ U.mg_l
2100
+ ),
2101
+ defineParameter(
2102
+ "orthophosphate_as_po4",
2103
+ "nutrient",
2104
+ "Orthophosphate as PO\u2084\xB3\u207B",
2105
+ "Ortofosfato como PO\u2084\xB3\u207B",
2106
+ U.mg_l,
2107
+ { molar_mass: 94.971, charge: -3 }
2108
+ ),
2109
+ // Organic
2110
+ defineParameter(
2111
+ "total_organic_carbon",
2112
+ "organic",
2113
+ "Total organic carbon",
2114
+ "Carbono org\xE2nico total",
2115
+ U.mg_l
2116
+ ),
2117
+ defineParameter(
2118
+ "cod",
2119
+ "organic",
2120
+ "Chemical oxygen demand",
2121
+ "Demanda qu\xEDmica de oxig\xEAnio (DQO)",
2122
+ U.mg_l
2123
+ ),
2124
+ defineParameter(
2125
+ "bod5",
2126
+ "organic",
2127
+ "Biochemical oxygen demand, 5-day",
2128
+ "Demanda bioqu\xEDmica de oxig\xEAnio (DBO\u2085)",
2129
+ U.mg_l
2130
+ ),
2131
+ defineParameter(
2132
+ "total_petroleum_hydrocarbons",
2133
+ "organic",
2134
+ "Total petroleum hydrocarbons (range per method)",
2135
+ "Hidrocarbonetos totais de petr\xF3leo",
2136
+ U.mg_l
2137
+ ),
2138
+ defineParameter(
2139
+ "oil_and_grease",
2140
+ "organic",
2141
+ "Oil and grease",
2142
+ "\xD3leos e graxas",
2143
+ U.mg_l
2144
+ ),
2145
+ // Disinfection
2146
+ defineParameter(
2147
+ "free_chlorine",
2148
+ "disinfection",
2149
+ "Free chlorine residual",
2150
+ "Cloro residual livre",
2151
+ U.mg_l
2152
+ ),
2153
+ defineParameter(
2154
+ "total_chlorine",
2155
+ "disinfection",
2156
+ "Total chlorine residual",
2157
+ "Cloro residual total",
2158
+ U.mg_l
2159
+ ),
2160
+ // Mining and redox
2161
+ defineParameter(
2162
+ "ferrous_iron",
2163
+ "mining_redox",
2164
+ "Ferrous iron (Fe\xB2\u207A)",
2165
+ "Ferro ferroso (Fe\xB2\u207A)",
2166
+ U.mg_l
2167
+ ),
2168
+ defineParameter(
2169
+ "chromium_hexavalent",
2170
+ "mining_redox",
2171
+ "Hexavalent chromium",
2172
+ "Cromo hexavalente",
2173
+ U.mg_l,
2174
+ { cas: "18540-29-9" }
2175
+ ),
2176
+ defineParameter(
2177
+ "cyanide_total_as_cn",
2178
+ "mining_redox",
2179
+ "Total cyanide as CN\u207B",
2180
+ "Cianeto total como CN\u207B",
2181
+ U.mg_l
2182
+ ),
2183
+ defineParameter(
2184
+ "cyanide_wad_as_cn",
2185
+ "mining_redox",
2186
+ "Weak acid dissociable cyanide as CN\u207B",
2187
+ "Cianeto WAD como CN\u207B",
2188
+ U.mg_l
2189
+ ),
2190
+ defineParameter(
2191
+ "cyanide_free_as_cn",
2192
+ "mining_redox",
2193
+ "Free cyanide as CN\u207B",
2194
+ "Cianeto livre como CN\u207B",
2195
+ U.mg_l
2196
+ ),
2197
+ defineParameter(
2198
+ "thiocyanate",
2199
+ "mining_redox",
2200
+ "Thiocyanate",
2201
+ "Tiocianato",
2202
+ U.mg_l,
2203
+ {
2204
+ cas: "302-04-5"
2205
+ }
2206
+ ),
2207
+ defineParameter(
2208
+ "sulfide_total_as_s",
2209
+ "mining_redox",
2210
+ "Total sulfide as S",
2211
+ "Sulfeto total como S",
2212
+ U.mg_l
2213
+ ),
2214
+ // Metals / trace
2215
+ defineParameter("iron", "metal", "Iron", "Ferro", U.mg_l, {
2216
+ cas: "7439-89-6",
2217
+ molar_mass: 55.845,
2218
+ charge: 2
2219
+ }),
2220
+ defineParameter("manganese", "metal", "Manganese", "Mangan\xEAs", U.mg_l, {
2221
+ cas: "7439-96-5",
2222
+ molar_mass: 54.938,
2223
+ charge: 2
2224
+ }),
2225
+ defineParameter("aluminum", "metal", "Aluminium", "Alum\xEDnio", U.mg_l, {
2226
+ cas: "7429-90-5"
2227
+ }),
2228
+ defineParameter("antimony", "metal", "Antimony", "Antim\xF4nio", U.mg_l, {
2229
+ cas: "7440-36-0"
2230
+ }),
2231
+ defineParameter("arsenic", "metal", "Arsenic", "Ars\xEAnio", U.mg_l, {
2232
+ cas: "7440-38-2"
2233
+ }),
2234
+ defineParameter("barium", "metal", "Barium", "B\xE1rio", U.mg_l, {
2235
+ cas: "7440-39-3"
2236
+ }),
2237
+ defineParameter("beryllium", "metal", "Beryllium", "Ber\xEDlio", U.mg_l, {
2238
+ cas: "7440-41-7"
2239
+ }),
2240
+ defineParameter("boron", "metal", "Boron", "Boro", U.mg_l, {
2241
+ cas: "7440-42-8"
2242
+ }),
2243
+ defineParameter("cadmium", "metal", "Cadmium", "C\xE1dmio", U.mg_l, {
2244
+ cas: "7440-43-9"
2245
+ }),
2246
+ defineParameter(
2247
+ "chromium",
2248
+ "metal",
2249
+ "Chromium, total",
2250
+ "Cromo total",
2251
+ U.mg_l,
2252
+ {
2253
+ cas: "7440-47-3"
2254
+ }
2255
+ ),
2256
+ defineParameter("cobalt", "metal", "Cobalt", "Cobalto", U.mg_l, {
2257
+ cas: "7440-48-4"
2258
+ }),
2259
+ defineParameter("copper", "metal", "Copper", "Cobre", U.mg_l, {
2260
+ cas: "7440-50-8"
2261
+ }),
2262
+ defineParameter("lead", "metal", "Lead", "Chumbo", U.mg_l, {
2263
+ cas: "7439-92-1"
2264
+ }),
2265
+ defineParameter("lithium", "metal", "Lithium", "L\xEDtio", U.mg_l, {
2266
+ cas: "7439-93-2",
2267
+ molar_mass: 6.94,
2268
+ charge: 1
2269
+ }),
2270
+ defineParameter("mercury", "metal", "Mercury", "Merc\xFArio", U.mg_l, {
2271
+ cas: "7439-97-6"
2272
+ }),
2273
+ defineParameter("molybdenum", "metal", "Molybdenum", "Molibd\xEAnio", U.mg_l, {
2274
+ cas: "7439-98-7"
2275
+ }),
2276
+ defineParameter("nickel", "metal", "Nickel", "N\xEDquel", U.mg_l, {
2277
+ cas: "7440-02-0"
2278
+ }),
2279
+ defineParameter("selenium", "metal", "Selenium", "Sel\xEAnio", U.mg_l, {
2280
+ cas: "7782-49-2"
2281
+ }),
2282
+ defineParameter("silver", "metal", "Silver", "Prata", U.mg_l, {
2283
+ cas: "7440-22-4"
2284
+ }),
2285
+ defineParameter("strontium", "metal", "Strontium", "Estr\xF4ncio", U.mg_l, {
2286
+ cas: "7440-24-6",
2287
+ molar_mass: 87.62,
2288
+ charge: 2
2289
+ }),
2290
+ defineParameter("thallium", "metal", "Thallium", "T\xE1lio", U.mg_l, {
2291
+ cas: "7440-28-0"
2292
+ }),
2293
+ defineParameter("uranium", "metal", "Uranium", "Ur\xE2nio", U.mg_l, {
2294
+ cas: "7440-61-1"
2295
+ }),
2296
+ defineParameter("vanadium", "metal", "Vanadium", "Van\xE1dio", U.mg_l, {
2297
+ cas: "7440-62-2"
2298
+ }),
2299
+ defineParameter("zinc", "metal", "Zinc", "Zinco", U.mg_l, {
2300
+ cas: "7440-66-6"
2301
+ }),
2302
+ // Microbiology
2303
+ defineParameter(
2304
+ "total_coliforms",
2305
+ "microbiology",
2306
+ "Total coliforms in 100 mL",
2307
+ "Coliformes totais em 100 mL",
2308
+ U.none,
2309
+ { form: "presence" }
2310
+ ),
2311
+ defineParameter(
2312
+ "total_coliforms_mpn",
2313
+ "microbiology",
2314
+ "Total coliforms, count",
2315
+ "Coliformes totais, contagem",
2316
+ U.mpn_100ml
2317
+ ),
2318
+ defineParameter(
2319
+ "total_coliforms_cfu",
2320
+ "microbiology",
2321
+ "Total coliforms, count",
2322
+ "Coliformes totais, contagem",
2323
+ U.cfu_100ml
2324
+ ),
2325
+ defineParameter(
2326
+ "e_coli",
2327
+ "microbiology",
2328
+ "E. coli in 100 mL",
2329
+ "E. coli em 100 mL",
2330
+ U.none,
2331
+ { form: "presence" }
2332
+ ),
2333
+ defineParameter(
2334
+ "e_coli_mpn",
2335
+ "microbiology",
2336
+ "E. coli, count",
2337
+ "E. coli, contagem",
2338
+ U.mpn_100ml
2339
+ ),
2340
+ defineParameter(
2341
+ "e_coli_cfu",
2342
+ "microbiology",
2343
+ "E. coli, count",
2344
+ "E. coli, contagem",
2345
+ U.cfu_100ml
2346
+ ),
2347
+ defineParameter(
2348
+ "thermotolerant_coliforms",
2349
+ "microbiology",
2350
+ "Thermotolerant coliforms in 100 mL",
2351
+ "Coliformes termotolerantes em 100 mL",
2352
+ U.none,
2353
+ { form: "presence" }
2354
+ ),
2355
+ defineParameter(
2356
+ "thermotolerant_coliforms_mpn",
2357
+ "microbiology",
2358
+ "Thermotolerant coliforms, count",
2359
+ "Coliformes termotolerantes, contagem",
2360
+ U.mpn_100ml
2361
+ ),
2362
+ defineParameter(
2363
+ "thermotolerant_coliforms_cfu",
2364
+ "microbiology",
2365
+ "Thermotolerant coliforms, count",
2366
+ "Coliformes termotolerantes, contagem",
2367
+ U.cfu_100ml
2368
+ ),
2369
+ defineParameter(
2370
+ "heterotrophic_plate_count",
2371
+ "microbiology",
2372
+ "Heterotrophic plate count",
2373
+ "Bact\xE9rias heterotr\xF3ficas",
2374
+ U.cfu_ml
2375
+ ),
2376
+ // Radioactivity (Bq/L even where a CAS exists)
2377
+ defineParameter(
2378
+ "gross_alpha",
2379
+ "radioactivity",
2380
+ "Gross alpha activity",
2381
+ "Atividade alfa total",
2382
+ U.bq_l
2383
+ ),
2384
+ defineParameter(
2385
+ "gross_beta",
2386
+ "radioactivity",
2387
+ "Gross beta activity",
2388
+ "Atividade beta total",
2389
+ U.bq_l
2390
+ ),
2391
+ defineParameter(
2392
+ "radium_226",
2393
+ "radioactivity",
2394
+ "Radium-226",
2395
+ "R\xE1dio-226",
2396
+ U.bq_l,
2397
+ {
2398
+ cas: "13982-63-3"
2399
+ }
2400
+ ),
2401
+ defineParameter(
2402
+ "radium_228",
2403
+ "radioactivity",
2404
+ "Radium-228",
2405
+ "R\xE1dio-228",
2406
+ U.bq_l,
2407
+ {
2408
+ cas: "15262-20-1"
2409
+ }
2410
+ ),
2411
+ defineParameter(
2412
+ "radon_222",
2413
+ "radioactivity",
2414
+ "Radon-222",
2415
+ "Rad\xF4nio-222",
2416
+ U.bq_l,
2417
+ {
2418
+ cas: "14859-67-7"
2419
+ }
2420
+ )
2421
+ ];
2422
+ var BY_CODE = new Map(WATER_QUALITY_PARAMETERS.map((d) => [d.code, d]));
2423
+ var BY_CAS = new Map(
2424
+ WATER_QUALITY_PARAMETERS.filter((d) => d.cas).map((d) => [d.cas, d])
2425
+ );
2426
+ function getParameterDefinition(parameter) {
2427
+ if (parameter.vocabulary === "welldot") return BY_CODE.get(parameter.code);
2428
+ if (parameter.vocabulary === "cas") return BY_CAS.get(parameter.code);
2429
+ return void 0;
2430
+ }
2431
+ function getParameterLabel(parameter, locale) {
2432
+ const def = getParameterDefinition(parameter);
2433
+ if (!def) return parameter.code;
2434
+ return resolveLanguageText({ ...def.labels, en: def.label }, locale, "en");
2435
+ }
2436
+ function parameterKey(parameter) {
2437
+ const def = getParameterDefinition(parameter);
2438
+ if (def) return def.code;
2439
+ return `${parameter.vocabulary}:${parameter.code}`;
2440
+ }
2441
+ function isKnownParameter(parameter) {
2442
+ if (parameter.vocabulary !== "welldot") return true;
2443
+ return BY_CODE.has(parameter.code);
2444
+ }
2445
+
2446
+ // src/vocab/attachment.vocab.ts
2447
+ var DOCUMENT_TYPES = [
2448
+ {
2449
+ value: "drilling_report",
2450
+ label: { en: "Drilling report", pt: "Relat\xF3rio de perfura\xE7\xE3o" }
2451
+ },
2452
+ {
2453
+ value: "as_built_drawing",
2454
+ label: { en: "As-built drawing", pt: "Perfil construtivo as-built" }
2455
+ },
2456
+ {
2457
+ value: "registry_record",
2458
+ label: { en: "Registry record", pt: "Ficha cadastral" }
2459
+ },
2460
+ { value: "photo", label: { en: "Photo", pt: "Fotografia" } },
2461
+ {
2462
+ value: "permit_document",
2463
+ label: { en: "Permit document", pt: "Portaria / outorga" }
2464
+ },
2465
+ {
2466
+ value: "condition_evidence",
2467
+ label: { en: "Condition evidence", pt: "Comprovante de condicionante" }
2468
+ },
2469
+ { value: "pump_curve", label: { en: "Pump curve", pt: "Curva da bomba" } },
2470
+ {
2471
+ value: "field_sheet",
2472
+ label: { en: "Field sheet", pt: "Planilha de campo" }
2473
+ },
2474
+ {
2475
+ value: "test_report",
2476
+ label: {
2477
+ en: "Pumping test report",
2478
+ pt: "Relat\xF3rio de teste de bombeamento"
2479
+ }
2480
+ },
2481
+ {
2482
+ value: "lab_report",
2483
+ label: { en: "Lab report", pt: "Laudo laboratorial" }
2484
+ },
2485
+ { value: "invoice", label: { en: "Invoice", pt: "Nota fiscal" } }
2486
+ ];
2487
+ var DOCUMENT_TYPE_SUGGESTIONS = {
2488
+ root: ["drilling_report", "as_built_drawing", "registry_record", "photo"],
2489
+ pump: ["pump_curve", "invoice", "photo"],
2490
+ meter: ["photo", "invoice", "condition_evidence"],
2491
+ permit: ["permit_document", "photo"],
2492
+ condition: ["condition_evidence", "photo"],
2493
+ permit_history: ["permit_document", "invoice", "photo"],
2494
+ event: ["field_sheet", "photo"],
2495
+ history: ["condition_evidence", "photo", "invoice"],
2496
+ sample: ["lab_report", "field_sheet", "photo", "condition_evidence"]
2497
+ };
2498
+
2499
+ // src/vocab/construction.vocab.ts
2500
+ var DRILLING_METHODS = [
2501
+ { value: "rotary", label: { en: "Rotary", pt: "Rotativo" } },
2502
+ { value: "percussion", label: { en: "Percussion", pt: "Percuss\xE3o" } },
2503
+ { value: "cable_tool", label: { en: "Cable tool", pt: "Percuss\xE3o a cabo" } },
2504
+ { value: "auger", label: { en: "Auger", pt: "Trado" } },
2505
+ {
2506
+ value: "air_hammer",
2507
+ label: { en: "Air hammer", pt: "Martelo pneum\xE1tico" }
2508
+ }
2509
+ ];
2510
+ var CONSTRUCTION_MATERIALS = [
2511
+ { value: "pvc", label: { en: "PVC", pt: "PVC" } },
2512
+ {
2513
+ value: "geomechanical_pvc",
2514
+ label: { en: "Geomechanical PVC", pt: "PVC geomec\xE2nico" }
2515
+ },
2516
+ { value: "carbon_steel", label: { en: "Carbon steel", pt: "A\xE7o carbono" } },
2517
+ {
2518
+ value: "galvanized_steel",
2519
+ label: { en: "Galvanized steel", pt: "A\xE7o galvanizado" }
2520
+ },
2521
+ {
2522
+ value: "stainless_steel",
2523
+ label: { en: "Stainless steel", pt: "A\xE7o inox" }
2524
+ },
2525
+ { value: "fiberglass", label: { en: "Fiberglass", pt: "Fibra de vidro" } }
2526
+ ];
2527
+ var SCREEN_SLOT_TYPES = [
2528
+ {
2529
+ value: "continuous_slot",
2530
+ label: { en: "Continuous slot", pt: "Espiralado (tipo Johnson)" }
2531
+ },
2532
+ { value: "slotted", label: { en: "Slotted", pt: "Ranhurado" } },
2533
+ { value: "bridge_slot", label: { en: "Bridge slot", pt: "Tipo ponte" } },
2534
+ { value: "louver", label: { en: "Louver", pt: "Veneziana" } },
2535
+ { value: "perforated", label: { en: "Perforated", pt: "Perfurado" } },
2536
+ { value: "nold", label: { en: "Nold type", pt: "Tipo Nold" } }
2537
+ ];
2538
+ var CENTRALIZER_TYPES = [
2539
+ { value: "spring_bow", label: { en: "Spring bow", pt: "Mola (spring bow)" } },
2540
+ { value: "rigid", label: { en: "Rigid", pt: "R\xEDgido" } },
2541
+ { value: "semi_rigid", label: { en: "Semi-rigid", pt: "Semirr\xEDgido" } },
2542
+ { value: "polymer", label: { en: "Polymer", pt: "Polim\xE9rico" } },
2543
+ { value: "carbon_steel", label: { en: "Carbon steel", pt: "A\xE7o carbono" } },
2544
+ {
2545
+ value: "galvanized_steel",
2546
+ label: { en: "Galvanized steel", pt: "A\xE7o galvanizado" }
2547
+ },
2548
+ {
2549
+ value: "stainless_steel",
2550
+ label: { en: "Stainless steel", pt: "A\xE7o inox" }
2551
+ }
2552
+ ];
2553
+ var CEMENT_PAD_TYPES = [
2554
+ { value: "concrete", label: { en: "Concrete", pt: "Concreto" } },
2555
+ {
2556
+ value: "reinforced_concrete",
2557
+ label: { en: "Reinforced concrete", pt: "Concreto armado" }
2558
+ },
2559
+ { value: "cement", label: { en: "Cement", pt: "Cimento" } },
2560
+ { value: "mortar", label: { en: "Mortar", pt: "Argamassa" } }
2561
+ ];
2562
+
2563
+ // src/vocab/general.vocab.ts
2564
+ var WELL_TYPES = [
2565
+ { value: "tubular", label: { en: "Tubular", pt: "Tubular" } },
2566
+ {
2567
+ value: "hand_dug",
2568
+ label: { en: "Hand dug", pt: "Cacimba / po\xE7o escavado" }
2569
+ },
2570
+ { value: "horizontal", label: { en: "Horizontal", pt: "Horizontal" } },
2571
+ {
2572
+ value: "infiltration_gallery",
2573
+ label: { en: "Infiltration gallery", pt: "Galeria de infiltra\xE7\xE3o" }
2574
+ },
2575
+ {
2576
+ value: "artesian",
2577
+ label: { en: "Artesian (deprecated)", pt: "Artesiano (obsoleto)" },
2578
+ deprecated: true
2579
+ }
2580
+ ];
2581
+ var WELL_PURPOSES = [
2582
+ {
2583
+ value: "production",
2584
+ label: { en: "Production", pt: "Produ\xE7\xE3o / capta\xE7\xE3o" }
2585
+ },
2586
+ {
2587
+ value: "monitoring",
2588
+ label: { en: "Monitoring well", pt: "Po\xE7o de monitoramento" }
2589
+ },
2590
+ { value: "piezometer", label: { en: "Piezometer", pt: "Piez\xF4metro" } },
2591
+ {
2592
+ value: "water_level_indicator",
2593
+ label: {
2594
+ en: "Water level indicator",
2595
+ pt: "INA \u2014 indicador de n\xEDvel d'\xE1gua"
2596
+ }
2597
+ },
2598
+ {
2599
+ value: "observation",
2600
+ label: { en: "Observation well", pt: "Po\xE7o de observa\xE7\xE3o" }
2601
+ },
2602
+ {
2603
+ value: "exploration",
2604
+ label: { en: "Exploration", pt: "Pesquisa / explorat\xF3rio" }
2605
+ },
2606
+ {
2607
+ value: "injection",
2608
+ label: { en: "Injection / recharge", pt: "Inje\xE7\xE3o / recarga" }
2609
+ },
2610
+ { value: "dewatering", label: { en: "Dewatering", pt: "Rebaixamento" } }
2611
+ ];
2612
+
2613
+ // src/vocab/history.vocab.ts
2614
+ var HISTORY_LOG_CATEGORIES = [
2615
+ { value: "maintenance", label: { en: "Maintenance", pt: "Manuten\xE7\xE3o" } },
2616
+ { value: "inspection", label: { en: "Inspection", pt: "Inspe\xE7\xE3o" } },
2617
+ { value: "incident", label: { en: "Incident", pt: "Incidente" } },
2618
+ { value: "event", label: { en: "Event", pt: "Evento" } },
2619
+ {
2620
+ value: "status_change",
2621
+ label: { en: "Status change", pt: "Mudan\xE7a de situa\xE7\xE3o" }
2622
+ }
2623
+ ];
2624
+ var HISTORY_LOG_SEVERITIES = [
2625
+ { value: "low", label: { en: "Low", pt: "Baixa" } },
2626
+ { value: "medium", label: { en: "Medium", pt: "M\xE9dia" } },
2627
+ { value: "high", label: { en: "High", pt: "Alta" } },
2628
+ { value: "critical", label: { en: "Critical", pt: "Cr\xEDtica" } }
2629
+ ];
2630
+
2631
+ // src/vocab/hydrodynamic.vocab.ts
2632
+ var HYDRODYNAMIC_EVENT_TYPES = [
2633
+ {
2634
+ value: "spot_measurement",
2635
+ label: { en: "Spot measurement", pt: "Medi\xE7\xE3o pontual" }
2636
+ },
2637
+ {
2638
+ value: "constant_rate",
2639
+ label: { en: "Constant rate", pt: "Vaz\xE3o constante" }
2640
+ },
2641
+ { value: "step_drawdown", label: { en: "Step drawdown", pt: "Escalonada" } },
2642
+ { value: "airlift", label: { en: "Air-lift", pt: "Air-lift" } },
2643
+ {
2644
+ value: "recovery_only",
2645
+ label: { en: "Recovery only", pt: "Recupera\xE7\xE3o" }
2646
+ }
2647
+ ];
2648
+ var MEASUREMENT_METHODS = [
2649
+ {
2650
+ value: "electric_probe",
2651
+ label: { en: "Electric probe", pt: "Sonda el\xE9trica" }
2652
+ },
2653
+ {
2654
+ value: "pressure_transducer",
2655
+ label: { en: "Pressure transducer", pt: "Transdutor de press\xE3o" }
2656
+ },
2657
+ { value: "air_line", label: { en: "Air line", pt: "Linha de ar" } },
2658
+ { value: "tape", label: { en: "Tape", pt: "Trena" } }
2659
+ ];
2660
+ var AQUIFER_ANALYSIS_METHODS = [
2661
+ { value: "cooper_jacob", label: { en: "Cooper-Jacob", pt: "Cooper-Jacob" } },
2662
+ { value: "theis", label: { en: "Theis", pt: "Theis" } },
2663
+ { value: "neuman", label: { en: "Neuman", pt: "Neuman" } },
2664
+ { value: "hantush", label: { en: "Hantush", pt: "Hantush" } },
2665
+ {
2666
+ value: "birsoy_summers",
2667
+ label: { en: "Birsoy-Summers", pt: "Birsoy-Summers" }
2668
+ },
2669
+ { value: "eden_hazel", label: { en: "Eden-Hazel", pt: "Eden-Hazel" } },
2670
+ {
2671
+ value: "visual_inspection",
2672
+ label: { en: "Visual inspection", pt: "Inspe\xE7\xE3o visual" }
2673
+ }
2674
+ ];
2675
+
2676
+ // src/vocab/operation.vocab.ts
2677
+ var PUMP_TYPES = [
2678
+ {
2679
+ value: "submersible",
2680
+ label: { en: "Submersible pump", pt: "Bomba submersa" }
2681
+ },
2682
+ {
2683
+ value: "vertical_turbine",
2684
+ label: { en: "Vertical turbine pump", pt: "Bomba de eixo vertical" }
2685
+ },
2686
+ { value: "jet", label: { en: "Jet pump", pt: "Bomba injetora" } },
2687
+ {
2688
+ value: "progressive_cavity",
2689
+ label: { en: "Progressive cavity pump", pt: "Bomba helicoidal" }
2690
+ },
2691
+ { value: "hand_pump", label: { en: "Hand pump", pt: "Bomba manual" } },
2692
+ {
2693
+ value: "compressor_airlift",
2694
+ label: { en: "Compressor (air-lift)", pt: "Compressor (air-lift)" }
2695
+ }
2696
+ ];
2697
+ var POWER_SOURCES = [
2698
+ { value: "grid", label: { en: "Grid", pt: "Rede el\xE9trica" } },
2699
+ { value: "solar", label: { en: "Solar", pt: "Solar" } },
2700
+ { value: "diesel", label: { en: "Diesel", pt: "Diesel" } },
2701
+ { value: "hybrid", label: { en: "Hybrid", pt: "H\xEDbrido" } }
2702
+ ];
2703
+ var METER_TYPES = [
2704
+ { value: "mechanical", label: { en: "Mechanical", pt: "Mec\xE2nico" } },
2705
+ {
2706
+ value: "electromagnetic",
2707
+ label: { en: "Electromagnetic", pt: "Eletromagn\xE9tico" }
2708
+ },
2709
+ { value: "ultrasonic", label: { en: "Ultrasonic", pt: "Ultrass\xF4nico" } }
2710
+ ];
2711
+ var READING_SOURCES = [
2712
+ { value: "manual", label: { en: "Manual", pt: "Manual" } },
2713
+ { value: "telemetry", label: { en: "Telemetry", pt: "Telemetria" } }
2714
+ ];
2715
+ var ESTIMATION_METHODS = [
2716
+ {
2717
+ value: "flow_time",
2718
+ label: { en: "Flow \xD7 operating time", pt: "Vaz\xE3o \xD7 tempo de opera\xE7\xE3o" }
2719
+ },
2720
+ {
2721
+ value: "energy",
2722
+ label: { en: "Energy consumption", pt: "Consumo de energia" }
2723
+ },
2724
+ {
2725
+ value: "user_statement",
2726
+ label: { en: "User statement", pt: "Informado pelo usu\xE1rio" }
2727
+ }
2728
+ ];
2729
+ var MAINTENANCE_TYPES = [
2730
+ { value: "inspection", label: { en: "Inspection", pt: "Inspe\xE7\xE3o" } },
2731
+ { value: "cleaning", label: { en: "Cleaning", pt: "Limpeza" } },
2732
+ {
2733
+ value: "redevelopment",
2734
+ label: { en: "Redevelopment", pt: "Redesenvolvimento" }
2735
+ },
2736
+ { value: "disinfection", label: { en: "Disinfection", pt: "Desinfec\xE7\xE3o" } },
2737
+ {
2738
+ value: "pump_service",
2739
+ label: { en: "Pump service", pt: "Manuten\xE7\xE3o da bomba" }
2740
+ },
2741
+ {
2742
+ value: "meter_calibration",
2743
+ label: { en: "Meter calibration", pt: "Aferi\xE7\xE3o do hidr\xF4metro" }
2744
+ },
2745
+ {
2746
+ value: "video_inspection",
2747
+ label: {
2748
+ en: "Video inspection / optical logging",
2749
+ pt: "Filmagem / perfilagem \xF3tica"
2750
+ }
2751
+ },
2752
+ {
2753
+ value: "level_measurement",
2754
+ label: { en: "Level measurement", pt: "Medi\xE7\xE3o de n\xEDvel" }
2755
+ },
2756
+ {
2757
+ value: "pump_test",
2758
+ label: { en: "Pumping test", pt: "Teste de bombeamento" }
2759
+ },
2760
+ {
2761
+ value: "water_sampling",
2762
+ label: { en: "Water sampling", pt: "Coleta de \xE1gua" }
2763
+ }
2764
+ ];
2765
+
2766
+ // src/vocab/permit.vocab.ts
2767
+ var PERMIT_TYPES = [
2768
+ {
2769
+ value: "abstraction_permit",
2770
+ label: { en: "Abstraction permit", pt: "Outorga de direito de uso" }
2771
+ },
2772
+ {
2773
+ value: "preliminary_permit",
2774
+ label: { en: "Preliminary permit", pt: "Outorga pr\xE9via" }
2775
+ },
2776
+ {
2777
+ value: "exemption",
2778
+ label: { en: "Exemption", pt: "Dispensa / uso insignificante" }
2779
+ },
2780
+ { value: "registration", label: { en: "Registration", pt: "Cadastro" } },
2781
+ {
2782
+ value: "dewatering_permit",
2783
+ label: { en: "Dewatering permit", pt: "Outorga para rebaixamento" }
2784
+ },
2785
+ {
2786
+ value: "drilling_permit",
2787
+ label: { en: "Drilling permit", pt: "Autoriza\xE7\xE3o de perfura\xE7\xE3o" }
2788
+ }
2789
+ ];
2790
+ var WATER_USES = [
2791
+ {
2792
+ value: "human_supply",
2793
+ label: { en: "Human supply", pt: "Abastecimento humano" }
2794
+ },
2795
+ { value: "industrial", label: { en: "Industrial", pt: "Industrial" } },
2796
+ { value: "mining", label: { en: "Mining", pt: "Minera\xE7\xE3o" } },
2797
+ { value: "irrigation", label: { en: "Irrigation", pt: "Irriga\xE7\xE3o" } },
2798
+ {
2799
+ value: "livestock",
2800
+ label: { en: "Livestock", pt: "Dessedenta\xE7\xE3o animal" }
2801
+ },
2802
+ {
2803
+ value: "commercial",
2804
+ label: { en: "Commercial", pt: "Comercial / servi\xE7os" }
2805
+ }
2806
+ ];
2807
+ var CONDITION_CATEGORIES = [
2808
+ {
2809
+ value: "monitoring",
2810
+ label: { en: "Monitoring", pt: "Monitoramento" },
2811
+ description: {
2812
+ en: "Water level, flow, abstracted volume and water quality monitoring/sampling",
2813
+ pt: "Monitoramento/amostragem de n\xEDvel, vaz\xE3o, volume captado e qualidade da \xE1gua"
2814
+ }
2815
+ },
2816
+ {
2817
+ value: "reporting",
2818
+ label: { en: "Reporting", pt: "Relat\xF3rios e declara\xE7\xF5es" },
2819
+ description: {
2820
+ en: "Periodic reports and volume/flow declarations submitted to the authority",
2821
+ pt: "Relat\xF3rios peri\xF3dicos e declara\xE7\xF5es de volume/vaz\xE3o entregues ao \xF3rg\xE3o"
2822
+ }
2823
+ },
2824
+ {
2825
+ value: "equipment_installation",
2826
+ label: { en: "Equipment installation", pt: "Instala\xE7\xE3o de equipamentos" },
2827
+ description: {
2828
+ en: "Meters (hidr\xF4metro), level gauges, sampling taps, telemetry",
2829
+ pt: "Hidr\xF4metro, medidor de n\xEDvel, torneira de amostragem, telemetria"
2830
+ }
2831
+ },
2832
+ {
2833
+ value: "well_protection",
2834
+ label: { en: "Well protection", pt: "Prote\xE7\xE3o do po\xE7o" },
2835
+ description: {
2836
+ en: "Sanitary slab, seal, protection perimeter, wellhead closure",
2837
+ pt: "Laje de prote\xE7\xE3o, selo sanit\xE1rio, per\xEDmetro de prote\xE7\xE3o, tampa do po\xE7o"
2838
+ }
2839
+ },
2840
+ {
2841
+ value: "environmental",
2842
+ label: { en: "Environmental", pt: "Ambiental" },
2843
+ description: {
2844
+ en: "Environmental measures, compensation, licensing of the activity",
2845
+ pt: "Medidas ambientais, compensa\xE7\xE3o, licenciamento da atividade"
2846
+ }
2847
+ },
2848
+ {
2849
+ value: "legal",
2850
+ label: { en: "Legal / administrative", pt: "Legal / administrativo" },
2851
+ description: {
2852
+ en: "Renewal request, fees, registrations, document submissions",
2853
+ pt: "Pedido de renova\xE7\xE3o, taxas, cadastros, entrega de documentos"
2854
+ }
2855
+ }
2856
+ ];
2857
+ var PERMIT_HISTORY_TYPES = [
2858
+ { value: "filing", label: { en: "Filing", pt: "Protocolo" } },
2859
+ { value: "process", label: { en: "Process", pt: "Andamento" } },
2860
+ { value: "notification", label: { en: "Notification", pt: "Notifica\xE7\xE3o" } },
2861
+ { value: "fee", label: { en: "Fee", pt: "Taxa" } },
2862
+ { value: "inspection", label: { en: "Inspection", pt: "Vistoria" } },
2863
+ { value: "decision", label: { en: "Decision", pt: "Decis\xE3o" } },
2864
+ { value: "renewal", label: { en: "Renewal", pt: "Renova\xE7\xE3o" } }
2865
+ ];
2866
+
2867
+ // src/vocab/vocab.ts
2868
+ function getVocabEntry(vocab, value) {
2869
+ if (value === void 0) return void 0;
2870
+ return vocab.find((entry) => entry.value === value);
2871
+ }
2872
+ function isVocabValue(vocab, value) {
2873
+ return getVocabEntry(vocab, value) !== void 0;
2874
+ }
2875
+ function getVocabLabel(vocab, value, locale) {
2876
+ const entry = getVocabEntry(vocab, value);
2877
+ return entry ? resolveLanguageText(entry.label, locale) : value;
2878
+ }
2879
+ function formatVocabList(vocab, values, locale) {
2880
+ return (values ?? []).map((v) => getVocabLabel(vocab, v, locale)).join(", ");
2881
+ }
2882
+ function vocabValues(vocab, { includeDeprecated = false } = {}) {
2883
+ return vocab.filter((entry) => includeDeprecated || !entry.deprecated).map((entry) => entry.value);
2884
+ }
2885
+
2886
+ // src/vocab/closed.vocab.ts
2887
+ function closedVocab() {
2888
+ return (entries) => entries;
2889
+ }
2890
+ var valuesOf = (vocab) => vocab.map((entry) => entry.value);
2891
+ var WELL_STATUSES = closedVocab()([
2892
+ { value: "active", label: { en: "Active", pt: "Ativo" } },
2893
+ {
2894
+ value: "maintenance",
2895
+ label: { en: "Under maintenance", pt: "Em manuten\xE7\xE3o" }
2896
+ },
2897
+ { value: "inactive", label: { en: "Inactive", pt: "Paralisado" } },
2898
+ {
2899
+ value: "decommissioned",
2900
+ label: { en: "Decommissioned", pt: "Desativado" }
2901
+ },
2902
+ { value: "abandoned", label: { en: "Abandoned", pt: "Abandonado" } }
2903
+ ]);
2904
+ var PERMIT_ADMINISTRATIVE_STATUSES = closedVocab()([
2905
+ { value: "requested", label: { en: "Requested", pt: "Requerida" } },
2906
+ { value: "granted", label: { en: "Granted", pt: "Concedida" } },
2907
+ { value: "suspended", label: { en: "Suspended", pt: "Suspensa" } },
2908
+ { value: "revoked", label: { en: "Revoked", pt: "Revogada" } },
2909
+ { value: "denied", label: { en: "Denied", pt: "Indeferida" } },
2910
+ { value: "withdrawn", label: { en: "Withdrawn", pt: "Cancelada" } }
2911
+ ]);
2912
+ var VOLUME_LIMIT_PERIODS = closedVocab()([
2913
+ { value: "daily", label: { en: "Daily", pt: "Di\xE1rio" } },
2914
+ { value: "monthly", label: { en: "Monthly", pt: "Mensal" } },
2915
+ { value: "annual", label: { en: "Annual", pt: "Anual" } }
2916
+ ]);
2917
+ var PRODUCTION_ENTRY_TYPES = closedVocab()([
2918
+ {
2919
+ value: "meter_reading",
2920
+ label: { en: "Meter reading", pt: "Leitura de hidr\xF4metro" }
2921
+ },
2922
+ {
2923
+ value: "estimated_volume",
2924
+ label: { en: "Estimated volume", pt: "Volume estimado" }
2925
+ }
2926
+ ]);
2927
+ var RESULT_QUALIFIERS = closedVocab()([
2928
+ { value: "<", label: { en: "< less than", pt: "< menor que" } },
2929
+ { value: ">", label: { en: "> greater than", pt: "> maior que" } },
2930
+ { value: "not_detected", label: { en: "Not detected", pt: "N\xE3o detectado" } },
2931
+ { value: "estimated", label: { en: "Estimated", pt: "Estimado" } }
2932
+ ]);
2933
+ var RESULT_FRACTIONS = closedVocab()([
2934
+ { value: "total", label: { en: "Total", pt: "Total" } },
2935
+ { value: "dissolved", label: { en: "Dissolved", pt: "Dissolvida" } },
2936
+ { value: "suspended", label: { en: "Suspended", pt: "Suspensa" } }
2937
+ ]);
2938
+ var MEASUREMENT_LOCATIONS = closedVocab()([
2939
+ { value: "field", label: { en: "Field", pt: "Campo" } },
2940
+ { value: "lab", label: { en: "Lab", pt: "Laborat\xF3rio" } }
2941
+ ]);
2942
+ var VALIDATION_STATUSES = closedVocab()([
2943
+ { value: "unvalidated", label: { en: "Unvalidated", pt: "N\xE3o validado" } },
2944
+ { value: "validated", label: { en: "Validated", pt: "Validado" } },
2945
+ { value: "qualified", label: { en: "Qualified", pt: "Qualificado" } },
2946
+ { value: "rejected", label: { en: "Rejected", pt: "Rejeitado" } }
2947
+ ]);
2948
+ var PARAMETER_GROUPS = closedVocab()([
2949
+ {
2950
+ value: "physical",
2951
+ label: { en: "Physical / field", pt: "F\xEDsico / campo" }
2952
+ },
2953
+ { value: "aggregate", label: { en: "Aggregate", pt: "Agregados" } },
2954
+ { value: "major_ion", label: { en: "Major ions", pt: "\xCDons maiores" } },
2955
+ { value: "nutrient", label: { en: "Nutrients", pt: "Nutrientes" } },
2956
+ { value: "organic", label: { en: "Organic", pt: "Org\xE2nicos" } },
2957
+ { value: "disinfection", label: { en: "Disinfection", pt: "Desinfec\xE7\xE3o" } },
2958
+ {
2959
+ value: "mining_redox",
2960
+ label: { en: "Mining and redox", pt: "Minera\xE7\xE3o e redox" }
2961
+ },
2962
+ { value: "metal", label: { en: "Metals / trace", pt: "Metais / tra\xE7o" } },
2963
+ { value: "microbiology", label: { en: "Microbiology", pt: "Microbiologia" } },
2964
+ {
2965
+ value: "radioactivity",
2966
+ label: { en: "Radioactivity", pt: "Radioatividade" }
2967
+ }
2968
+ ]);
2969
+ var WELL_STATUS_VALUES = valuesOf(WELL_STATUSES);
2970
+ var PERMIT_ADMINISTRATIVE_STATUS_VALUES = valuesOf(
2971
+ PERMIT_ADMINISTRATIVE_STATUSES
2972
+ );
2973
+ var QUALIFIER_VALUES = valuesOf(RESULT_QUALIFIERS);
2974
+ var FRACTION_VALUES = valuesOf(RESULT_FRACTIONS);
2975
+ var MEASURED_IN_VALUES = valuesOf(MEASUREMENT_LOCATIONS);
2976
+ var FILTRATION_LOCATION_VALUES = valuesOf(MEASUREMENT_LOCATIONS);
2977
+ var VALIDATION_STATUS_VALUES = valuesOf(VALIDATION_STATUSES);
2978
+ var PARAMETER_GROUP_VALUES = valuesOf(PARAMETER_GROUPS);
2979
+ var NUMERIC_QUALIFIERS = [
2980
+ "<",
2981
+ ">",
2982
+ "estimated"
2983
+ ];
2984
+ var PARENT_SAMPLE_TYPES = [
2985
+ "field_duplicate",
2986
+ "split_sample"
2987
+ ];
2988
+ var BLANK_SAMPLE_TYPES = [
2989
+ "field_blank",
2990
+ "trip_blank",
2991
+ "equipment_blank"
2992
+ ];
2993
+
2994
+ // src/vocab/waterSample.vocab.ts
2995
+ var SAMPLE_TYPES = [
2996
+ { value: "routine", label: { en: "Routine", pt: "Rotina" } },
2997
+ {
2998
+ value: "field_duplicate",
2999
+ label: { en: "Field duplicate", pt: "Duplicata de campo" }
3000
+ },
3001
+ {
3002
+ value: "split_sample",
3003
+ label: { en: "Split sample", pt: "Amostra dividida (split)" }
3004
+ },
3005
+ { value: "field_blank", label: { en: "Field blank", pt: "Branco de campo" } },
3006
+ {
3007
+ value: "trip_blank",
3008
+ label: { en: "Trip blank", pt: "Branco de transporte" }
3009
+ },
3010
+ {
3011
+ value: "equipment_blank",
3012
+ label: { en: "Equipment blank", pt: "Branco de equipamento" }
3013
+ }
3014
+ ];
3015
+ var SAMPLING_METHODS = [
3016
+ {
3017
+ value: "low_flow",
3018
+ label: { en: "Low flow", pt: "Purga de baixa vaz\xE3o (micropurga)" }
3019
+ },
3020
+ {
3021
+ value: "volumetric_purge",
3022
+ label: { en: "Volumetric purge", pt: "Purga de volume determinado" }
3023
+ },
3024
+ { value: "no_purge", label: { en: "No purge", pt: "Amostragem sem purga" } },
3025
+ {
3026
+ value: "pump_discharge",
3027
+ label: { en: "Pump discharge", pt: "Bomba de produ\xE7\xE3o em opera\xE7\xE3o" }
3028
+ }
3029
+ ];
3030
+ var SAMPLING_POINT_TYPES = [
3031
+ {
3032
+ value: "pump_discharge",
3033
+ label: { en: "Pump discharge", pt: "Sa\xEDda da bomba de produ\xE7\xE3o" }
3034
+ },
3035
+ {
3036
+ value: "wellhead_tap",
3037
+ label: { en: "Wellhead tap", pt: "Torneira do cavalete" }
3038
+ },
3039
+ { value: "in_well", label: { en: "In well", pt: "Dentro do po\xE7o" } }
3040
+ ];
3041
+ var SAMPLING_DEVICES = [
3042
+ {
3043
+ value: "bailer",
3044
+ label: { en: "Bailer", pt: "Bailer (amostrador de reten\xE7\xE3o)" }
3045
+ },
3046
+ {
3047
+ value: "discrete_depth_sampler",
3048
+ label: {
3049
+ en: "Discrete depth sampler",
3050
+ pt: "Amostrador pontual de profundidade"
3051
+ }
3052
+ },
3053
+ {
3054
+ value: "passive_diffusion_bag",
3055
+ label: { en: "Passive diffusion bag", pt: "Bolsa de difus\xE3o passiva" }
3056
+ },
3057
+ {
3058
+ value: "grab_sleeve",
3059
+ label: {
3060
+ en: "Grab sleeve (HydraSleeve)",
3061
+ pt: "Amostrador passivo tipo luva (HydraSleeve)"
3062
+ }
3063
+ },
3064
+ {
3065
+ value: "low_flow_pump",
3066
+ label: { en: "Low-flow pump", pt: "Bomba de baixa vaz\xE3o" }
3067
+ },
3068
+ {
3069
+ value: "packer_pump",
3070
+ label: { en: "Packer pump", pt: "Bomba com obturador (packer)" }
3071
+ }
3072
+ ];
3073
+
1029
3074
  // src/utils/units.ts
1030
3075
  var FEET_PER_METER = 3.280839895;
1031
3076
  var METERS_PER_FOOT = 0.3048;
@@ -1035,6 +3080,11 @@ var M3H_TO_USGPM = 4.402867361;
1035
3080
  var M2S_TO_M2D = 86400;
1036
3081
  var PSI_PER_KPA = 0.145037738;
1037
3082
  var SLOT_MM = 0.0254;
3083
+ var KW_PER_CV = 0.73549875;
3084
+ var KW_PER_HP = 0.745699872;
3085
+ var LITERS_PER_M3 = 1e3;
3086
+ var FT3_PER_M3 = 35.314666721;
3087
+ var USGAL_PER_M3 = 264.172052358;
1038
3088
  function metersToFeet(m) {
1039
3089
  return m * FEET_PER_METER;
1040
3090
  }
@@ -1059,6 +3109,68 @@ function cubicMeterPerHourToUsGallonsPerMinute(q) {
1059
3109
  function usGallonsPerMinuteToCubicMeterPerHour(q) {
1060
3110
  return q / M3H_TO_USGPM;
1061
3111
  }
3112
+ function litersToCubicMeters(l) {
3113
+ return l / LITERS_PER_M3;
3114
+ }
3115
+ function cubicMetersToLiters(m3) {
3116
+ return m3 * LITERS_PER_M3;
3117
+ }
3118
+ function cubicMetersToCubicFeet(m3) {
3119
+ return m3 * FT3_PER_M3;
3120
+ }
3121
+ function cubicFeetToCubicMeters(ft3) {
3122
+ return ft3 / FT3_PER_M3;
3123
+ }
3124
+ function cubicMetersToUsGallons(m3) {
3125
+ return m3 * USGAL_PER_M3;
3126
+ }
3127
+ function usGallonsToCubicMeters(gal) {
3128
+ return gal / USGAL_PER_M3;
3129
+ }
3130
+ function cvToKilowatts(cv) {
3131
+ return cv * KW_PER_CV;
3132
+ }
3133
+ function kilowattsToCv(kw) {
3134
+ return kw / KW_PER_CV;
3135
+ }
3136
+ function hpToKilowatts(hp) {
3137
+ return hp * KW_PER_HP;
3138
+ }
3139
+ function kilowattsToHp(kw) {
3140
+ return kw / KW_PER_HP;
3141
+ }
3142
+ function flowFromCanonical(m3h, unit) {
3143
+ if (unit === "L/s") return cubicMeterPerHourToLitersPerSecond(m3h);
3144
+ if (unit === "gpm") return cubicMeterPerHourToUsGallonsPerMinute(m3h);
3145
+ return m3h;
3146
+ }
3147
+ function flowToCanonical(value, unit) {
3148
+ if (unit === "L/s") return litersPerSecondToCubicMeterPerHour(value);
3149
+ if (unit === "gpm") return usGallonsPerMinuteToCubicMeterPerHour(value);
3150
+ return value;
3151
+ }
3152
+ function powerFromCanonical(kw, unit) {
3153
+ if (unit === "cv") return kilowattsToCv(kw);
3154
+ if (unit === "hp") return kilowattsToHp(kw);
3155
+ return kw;
3156
+ }
3157
+ function powerToCanonical(value, unit) {
3158
+ if (unit === "cv") return cvToKilowatts(value);
3159
+ if (unit === "hp") return hpToKilowatts(value);
3160
+ return value;
3161
+ }
3162
+ function volumeFromCanonical(m3, unit) {
3163
+ if (unit === "L") return cubicMetersToLiters(m3);
3164
+ if (unit === "ft3") return cubicMetersToCubicFeet(m3);
3165
+ if (unit === "gal") return cubicMetersToUsGallons(m3);
3166
+ return m3;
3167
+ }
3168
+ function volumeToCanonical(value, unit) {
3169
+ if (unit === "L") return litersToCubicMeters(value);
3170
+ if (unit === "ft3") return cubicFeetToCubicMeters(value);
3171
+ if (unit === "gal") return usGallonsToCubicMeters(value);
3172
+ return value;
3173
+ }
1062
3174
  function squareMeterPerSecondToSquareMeterPerDay(t) {
1063
3175
  return t * M2S_TO_M2D;
1064
3176
  }
@@ -1096,63 +3208,226 @@ function minutesToHours(min) {
1096
3208
  function hoursToMinutes(h) {
1097
3209
  return h * 60;
1098
3210
  }
3211
+ var MG_L_PER_UNIT = {
3212
+ "g/L": 1e3,
3213
+ "mg/L": 1,
3214
+ "ug/L": 1e-3,
3215
+ "ng/L": 1e-6
3216
+ };
3217
+ function concentrationToCanonical(value, unit) {
3218
+ return value * MG_L_PER_UNIT[unit];
3219
+ }
3220
+ function concentrationFromCanonical(mgL, unit) {
3221
+ return mgL / MG_L_PER_UNIT[unit];
3222
+ }
3223
+ function milliSiemensPerMeterToMicroSiemensPerCm(mSm) {
3224
+ return mSm * 10;
3225
+ }
3226
+ function milliSiemensPerCmToMicroSiemensPerCm(mScm) {
3227
+ return mScm * 1e3;
3228
+ }
3229
+ function normalizeColorUnit(unit) {
3230
+ const u = unit.trim().toLowerCase().replace(/\s+/g, "");
3231
+ return ["uh", "hazen", "mgpt-co/l", "mgpt/l", "pt-co", "pcu", "tcu"].includes(
3232
+ u
3233
+ ) ? "uH" : void 0;
3234
+ }
3235
+ function turbidityCodeForUnit(unit) {
3236
+ switch (unit.trim().toUpperCase()) {
3237
+ case "NTU":
3238
+ return "turbidity_ntu";
3239
+ case "FNU":
3240
+ return "turbidity_fnu";
3241
+ case "FAU":
3242
+ return "turbidity_fau";
3243
+ case "FTU":
3244
+ case "UT":
3245
+ return "turbidity";
3246
+ default:
3247
+ return void 0;
3248
+ }
3249
+ }
3250
+ function expandedToStandardUncertainty(expanded, coverageFactor = 2) {
3251
+ return expanded / coverageFactor;
3252
+ }
1099
3253
  // Annotate the CommonJS export names for ESM import in node:
1100
3254
  0 && (module.exports = {
3255
+ AQUIFER_ANALYSIS_METHODS,
1101
3256
  AirliftEventSchema,
1102
3257
  AquiferAnalysisSchema,
1103
3258
  AttachmentSchema,
3259
+ BLANK_SAMPLE_TYPES,
3260
+ BR_GM_MS_888_2021,
1104
3261
  BoreHoleSchema,
3262
+ CEMENT_PAD_TYPES,
3263
+ CENTRALIZER_TYPES,
3264
+ CONDITION_CATEGORIES,
3265
+ CONSTRUCTION_MATERIALS,
1105
3266
  CaveSchema,
1106
3267
  CementPadSchema,
3268
+ CentralizerSchema,
3269
+ ConditionFulfillmentSchema,
1107
3270
  ConstantRateEventSchema,
3271
+ DOCUMENT_TYPES,
3272
+ DOCUMENT_TYPE_SUGGESTIONS,
3273
+ DRILLING_METHODS,
3274
+ ESTIMATION_METHODS,
3275
+ EU_2020_2184,
3276
+ EstimatedVolumeSchema,
1108
3277
  FGDC_TEXTURES_OPTIONS,
3278
+ FILTRATION_LOCATION_VALUES,
3279
+ FRACTION_VALUES,
3280
+ FiltrationSchema,
1109
3281
  FractureSchema,
3282
+ HISTORY_LOG_CATEGORIES,
3283
+ HISTORY_LOG_SEVERITIES,
3284
+ HYDRODYNAMIC_EVENT_TYPES,
1110
3285
  HistoryLogEntrySchema,
1111
3286
  HoleFillSchema,
1112
3287
  HydrodynamicEventBaseSchema,
1113
3288
  HydrodynamicEventSchema,
3289
+ LaboratorySchema,
1114
3290
  LevelReadingSchema,
1115
3291
  LithologySchema,
1116
3292
  LocationPropertiesSchema,
1117
3293
  LocationSchema,
3294
+ MAINTENANCE_TYPES,
3295
+ MEASURED_IN_VALUES,
3296
+ MEASUREMENT_LOCATIONS,
3297
+ MEASUREMENT_METHODS,
3298
+ METER_TYPES,
3299
+ MeterReadingSchema,
3300
+ MeterSchema,
3301
+ MonthlyGrantSchema,
3302
+ NEPHELOMETRIC_TURBIDITY_CODES,
3303
+ NUMERIC_QUALIFIERS,
3304
+ OperatingRegimeSchema,
3305
+ PARAMETER_GROUPS,
3306
+ PARAMETER_GROUP_VALUES,
3307
+ PARENT_SAMPLE_TYPES,
3308
+ PERMIT_ADMINISTRATIVE_STATUSES,
3309
+ PERMIT_ADMINISTRATIVE_STATUS_VALUES,
3310
+ PERMIT_HISTORY_TYPES,
3311
+ PERMIT_TYPES,
3312
+ POWER_SOURCES,
3313
+ PRODUCTION_ENTRY_TYPES,
3314
+ PUMP_TYPES,
3315
+ ParameterSchema,
3316
+ PermitAdministrativeStatusSchema,
3317
+ PermitConditionSchema,
3318
+ PermitHistoryEntrySchema,
3319
+ PermitSchema,
3320
+ ProductionEntryBaseSchema,
3321
+ ProductionEntrySchema,
3322
+ PumpElectricalSchema,
3323
+ PumpInstallationSchema,
1118
3324
  PumpingStepSchema,
3325
+ PurgeReadingSchema,
3326
+ PurgeSchema,
3327
+ QUALIFIER_VALUES,
3328
+ READING_SOURCES,
3329
+ RESULT_FRACTIONS,
3330
+ RESULT_QUALIFIERS,
1119
3331
  RecoveryOnlyEventSchema,
1120
3332
  RecoveryPhaseSchema,
1121
3333
  ReductionSchema,
3334
+ ResultQualifierSchema,
3335
+ ResultValidationSchema,
3336
+ SAMPLE_TYPES,
3337
+ SAMPLING_DEVICES,
3338
+ SAMPLING_METHODS,
3339
+ SAMPLING_POINT_TYPES,
3340
+ SCREEN_SLOT_TYPES,
1122
3341
  SECTION_KEYS,
3342
+ SamplingPointSchema,
1123
3343
  SpotMeasurementEventSchema,
1124
3344
  StepDrawdownEventSchema,
1125
3345
  SurfaceCaseSchema,
1126
3346
  TextureSchema,
3347
+ TimeResolutionSchema,
3348
+ VALIDATION_STATUSES,
3349
+ VALIDATION_STATUS_VALUES,
3350
+ VISIBILITY_LEAF_KEYS,
3351
+ VISIBILITY_TREE,
3352
+ VOLUME_LIMIT_PERIODS,
3353
+ VolumeLimitSchema,
3354
+ WATER_QUALITY_LIMIT_SETS,
3355
+ WATER_QUALITY_PARAMETERS,
3356
+ WATER_QUALITY_UNITS,
3357
+ WATER_QUALITY_VOCABULARY_VERSION,
3358
+ WATER_USES,
3359
+ WELL_PURPOSES,
3360
+ WELL_STATUSES,
3361
+ WELL_STATUS_VALUES,
3362
+ WELL_TYPES,
3363
+ WHO_GDWQ_2022,
3364
+ WaterQualityResultSchema,
3365
+ WaterSampleSchema,
1127
3366
  WellCaseSchema,
1128
3367
  WellIdSchema,
1129
3368
  WellSchema,
1130
3369
  WellScreenSchema,
3370
+ WellStatusSchema,
3371
+ calculatedWellDepth,
1131
3372
  checkIfProfileIsEmpty,
3373
+ concentrationFromCanonical,
3374
+ concentrationToCanonical,
1132
3375
  convertProfileFromJSON,
3376
+ cubicFeetToCubicMeters,
1133
3377
  cubicMeterPerHourToLitersPerSecond,
1134
3378
  cubicMeterPerHourToUsGallonsPerMinute,
3379
+ cubicMetersToCubicFeet,
3380
+ cubicMetersToLiters,
3381
+ cubicMetersToUsGallons,
3382
+ cvToKilowatts,
1135
3383
  decimalDegreesToDms,
1136
3384
  deserializeWell,
1137
3385
  dmsToDecimalDegrees,
3386
+ expandedToStandardUncertainty,
1138
3387
  feetToMeters,
3388
+ flowFromCanonical,
3389
+ flowToCanonical,
3390
+ formatVocabList,
3391
+ getLimitSet,
3392
+ getParameterDefinition,
3393
+ getParameterLabel,
3394
+ getVocabEntry,
3395
+ getVocabLabel,
1139
3396
  hoursToMinutes,
3397
+ hpToKilowatts,
1140
3398
  inchesToMm,
3399
+ isKnownParameter,
3400
+ isVocabValue,
1141
3401
  isWellEmpty,
1142
3402
  kilopascalToPsi,
3403
+ kilowattsToCv,
3404
+ kilowattsToHp,
1143
3405
  litersPerSecondToCubicMeterPerHour,
3406
+ litersToCubicMeters,
1144
3407
  metersToFeet,
3408
+ milliSiemensPerCmToMicroSiemensPerCm,
3409
+ milliSiemensPerMeterToMicroSiemensPerCm,
1145
3410
  minutesToHours,
1146
3411
  mmToInches,
1147
3412
  mmToSlotNumber,
3413
+ normalizeColorUnit,
3414
+ parameterKey,
1148
3415
  parseWell,
3416
+ powerFromCanonical,
3417
+ powerToCanonical,
1149
3418
  profileToWell,
1150
3419
  psiToKilopascal,
1151
3420
  redactWell,
3421
+ resolveLanguageText,
1152
3422
  serializeWell,
1153
3423
  slotNumberToMm,
1154
3424
  squareMeterPerDayToSquareMeterPerSecond,
1155
3425
  squareMeterPerSecondToSquareMeterPerDay,
1156
- usGallonsPerMinuteToCubicMeterPerHour
3426
+ turbidityCodeForUnit,
3427
+ usGallonsPerMinuteToCubicMeterPerHour,
3428
+ usGallonsToCubicMeters,
3429
+ vocabValues,
3430
+ volumeFromCanonical,
3431
+ volumeToCanonical
1157
3432
  });
1158
3433
  //# sourceMappingURL=index.cjs.map