# @welldot/core

## 0.6.0

### Minor Changes

- 147708f: The `.well` specification moved from `packages/core/docs/` to `spec/` at the repository root, and the spec prose no longer ships in the npm package. The JSON Schema's `$id` is now `https://welldot.org/schema/v2/well.schema.json` (served by welldot.org); the old `raw.githubusercontent.com/.../packages/core/docs/schema/v2/well.schema.json` URL no longer resolves. The schema ships in the package as `@welldot/core/well.schema.json`.

### Patch Changes

- 0c76546: The READMEs now link to the documentation site at `https://docs.welldot.org`.
- 0332665: The repository moved to the `welldothq` GitHub organization. The package `repository`, `homepage` and `bugs` URLs now point at `https://github.com/welldothq/welldot`.

## 0.5.0

### Minor Changes

- a74ddd6: Implements the `.well` v2.4 format revision.

  **Breaking for readers:** `.well` v2.4 files write `"version": "2.4"`. Parsers in `@welldot/core` ≤ 0.4.0 reject them; upgrade readers before writing v2.4 files.
  - **Version as a string.** `serializeWell` writes `"version": "2.4"`. `parseWell` and `deserializeWell` accept `1`, `2` and any `"2.m"`, and reject malformed values (`2.4` as a number, `"2.4.1"`, `"v2.4"`) and unsupported majors with errors that name the value. Adds `WELL_FORMAT_VERSION`, `parseFormatVersion` and `compareFormatVersions` (versions compare as two integers, so `"2.10"` is greater than `"2.9"`).
  - **`null` in optional fields is malformed.** `storativity` no longer accepts `null`; v2.3 files (`version: 2`) with `storativity: null` still parse, with the value dropped. `serializeWell` omits null members outside `x-` fields.
  - **Time zone.** Adds `location.properties.timezone` (an IANA time zone name) and `isIanaTimeZone`. An invalid value is rejected.
  - **`logger_series`.** Adds the hydrodynamic event type for continuous level series recorded by an installed sensor. It carries `readings` (each with a required `datetime` and no `elapsed`), plus optional `measurement_method`, `sensor_depth`, `interval`, `barometric_compensation` (`barologger`, `vented`, `none`) and `aggregation` (`none`, `hourly`, `daily`). Aggregated readings must carry `depth_min` and `depth_max`. A `logger_series` has no `steps` or `recovery`. New exports: `LoggerSeriesEvent`, `LoggerReading`, `BarometricCompensation`, `ReadingAggregation`, `LoggerSeriesEventSchema`, `LoggerReadingSchema`, and the closed vocabularies `BAROMETRIC_COMPENSATIONS` and `READING_AGGREGATIONS` with their `*_VALUES` lists. `HYDRODYNAMIC_EVENT_TYPES` gains `logger_series`. `LevelReading` gains an optional `datetime`.
  - **Event validation.** Known hydrodynamic event types are now validated against their own schema instead of falling back to the `x-` passthrough. A malformed `constant_rate`, `spot_measurement` or other known type is rejected, while `x-` types still pass through. The step count is no longer enforced: `steps` must be an array of valid `PumpingStep`, but a `constant_rate` or `spot_measurement` with two steps is valid. As a result, the `ConstantRateEvent.steps` type changes from `[PumpingStep]` to `PumpingStep[]`.
  - **Ledgers and range rules.** Ledger entries (`hydrodynamic_events`, `production`, `water_samples`) MAY be edited in place; editing is NOT RECOMMENDED after export, and `corrects` stays the recommended way to correct measurements. `operating_regime[].daily_operating_time` above 24 is now accepted and stored as written (a negative value is still a schema error). `operating_regime[].effective_from` is no longer unique. Unresolved references are preserved on re-export, and repeated records (collective permits, campaign blanks) are documented.
  - The spec docs, the JSON Schema and the example wells move to v2.4.

## 0.4.0

### Minor Changes

- Implement `.well` spec v2.3: pump installations and attachments, permits (history and condition fulfillments), meters, production and operating regime, and the water quality block.
- Link multiple events and samples to any history log entry, and drop the `change_of_use` history category in favor of `event`.
- Add `installed_by` and `removed_by` to pump installations and meters, and manufacturer, model and attachments to meters.
- Rename the permit condition category values to broader groups.
- Add `well_screen[].type` slot types.
- Centralize the open vocabularies with en/pt labels, and move shared helpers into the library.
- Add example wells.
- Allow hiding individual fields when sharing.
- Keep `x-` fields and blocks through parse and serialize.
- Breaking: replace the production `declared_volume` with `estimated_volume`.
- Breaking: remove the `purpose` field from meters and `declared_volume`.

## 0.3.0

### Minor Changes

- Add `.well` spec v2.1: `well_purpose` and centralizers.

## 0.2.3

### Patch Changes

- Polish open-source docs, licensing and schema tooling.

## 0.2.2

### Patch Changes

- Version bump released together with `@welldot/utils` and `@welldot/render`.

## 0.2.1

### Patch Changes

- Add the optional `well_depth` field for the current or usable well depth.
- Add section visibility types and the `redactWell` utility.

## 0.2.0

### Minor Changes

- Implement the `.well` v2 schema with hydrodynamic events, units utilities and a v1 to v2 migration. Spec v2.0 is ratified and ships with this release.
- Add a pending flag to textures, FGDC texture pattern types and options.
- Add max flow rate and more steps to airlift tests.

## 0.1.1-5

### Patch Changes

- Add the pending flag to textures and filter unavailable options.
- Add FGDC texture pattern types and options.
- Fix the package exports.

## 0.1.1-4

### Patch Changes

- Pre-release of the 0.1.1 version bump.

## 0.1.1-3

### Patch Changes

- Pre-release of the 0.1.1 version bump.

## 0.1.1-2

### Patch Changes

- Pre-release of the 0.1.1 version bump.

## 0.1.1

### Patch Changes

- Bump the package version.

## 0.1.0

### Minor Changes

- Initial release.
