/** * @copyright Sister Software * @license AGPL-3.0 * @author Teffen Ellis, et al. * * The deterministic row id for a source that publishes no primary key of its own. * * A CSV row or GeoJSON feature often carries no stable identifier. The runner still needs one, so * deduplication and holdout manifests agree across reruns and a run can resume. These functions * derive it by hashing the adapter id together with a canonical serialization of the row's values. * * The separator bytes are part of the hashed stream, so changing them changes every id in every * built corpus. */ import type { ComponentTag } from "@mailwoman/codex/component"; /** * The deterministic content-addressed source id for a row, keyed by its components. * * The output is `-`. * Twelve hex characters carry 48 bits, which holds about 17 million rows per adapter * before the expected collision count passes 1. * An adapter above that extends the prefix. */ export declare function stableSourceID(adapterID: string, components: Partial>): string; /** * {@linkcode stableSourceID} over arbitrary disambiguator keys, such as a variant index * or a slot number that is not a `ComponentTag`. * * Both functions sort and hash every key handed in, so only the key vocabulary differs. * The narrower signature above stops an adapter from hashing a misspelled component name. */ export declare function stableSourceIDFromParts(adapterID: string, parts: Readonly>): string; //# sourceMappingURL=source-id.d.ts.map