Computes the unmapped subset of a record's external fields: every key the source
returned that is NOT the SourceFieldName of any active field map.
Pure + O(columns) — no per-row allocation beyond the result object, which is empty
(and discarded by the caller) for the common no-customs case.
Honest limit (documented in gaps.md §2): a field consumed only indirectly — e.g. as a
combine/custom transform input rather than as a map's own SourceFieldName — will
also appear here. That is harmless (the value is still in Fields); the post-sync
promotion stage applies a coverage + novelty filter before it ever creates a column.
Parameters
externalFields: Record<string,unknown>
the full source record (ExternalRecord.Fields)
mappedSourceFieldNames: ReadonlySet<string>
SourceFieldName of every active field map
Returns Record<string,unknown>
the extra keys + values, or an empty object when everything was mapped
Computes the unmapped subset of a record's external fields: every key the source returned that is NOT the SourceFieldName of any active field map.
Pure + O(columns) — no per-row allocation beyond the result object, which is empty (and discarded by the caller) for the common no-customs case.
Honest limit (documented in gaps.md §2): a field consumed only indirectly — e.g. as a
combine/customtransform input rather than as a map's own SourceFieldName — will also appear here. That is harmless (the value is still inFields); the post-sync promotion stage applies a coverage + novelty filter before it ever creates a column.