ConstCandidate object.
true when no mapping pass is needed for this item.
Applies a flat field-map to one raw item, producing a normalized POI.
Raw source record (e.g. a GBIF occurrence or an OurAirports row).
Flat map of targetPath -> sourcePath, both dotted.
The normalized POI, or null when the mapping is unusable. Numeric ids are
coerced to string, and a non-object attributes is reset to {}.
Resolves the flat field-map to apply from a mapping.json config. The config is
ALWAYS an object of named per-source blocks { <sourceId>: { mapping } }.
(ANO-083 — per-source contract.)
Resolution:
sourceKey matching one → that block;sourceKey → null (no applicable mapping → no-op).OptionalsourceKey: stringNormalizes an array of raw items using a mapping.json config.
Items already satisfying the POI structure are passed through untouched; the others
go through the field-map. Items still invalid afterwards are dropped with a warning.
Raw items. A non-array yields [].
mapping.json content: named per-source blocks (ANO-083).
OptionalsourceKey: stringSelects a block when several are declared; optional with exactly one.
The normalized POIs. Returns the input as-is when no mapping applies.
Type guard: does this object already satisfy the normalized POI structure? Requires a non-empty string
id, a non-emptytitleORlabel, and valid coordinates in eitherlatlngorlocation.