tools/core/transformers/corpus.transformer.ts
tools/core/transformers/corpus.transformer.ts is a file in Coordination Surface. 49 lines of code and 6 definitions.
import type { Finding, Remediation } from "../types/segment.types.ts";
import { basename, dirname } from "node:path";
export const rootOf = function rootOf(path: string, roots: readonly string[]): string | null {
for (const root of roots) {
if (path.startsWith(`${root}/`)) {
return root;
}
}
return null;
};
export const remediate = function remediate(path: string, expected: string | null, decide: string): Remediation {
return {
action: "rename",
decide: expected === null ? decide : null,
deterministic: expected !== null,
from: basename(path),
target: dirname(path),
to: expected,
};
};
export const countBy = function countBy<T>(items: readonly T[], pick: (item: T) => string): Record<string, number> {
const out: Record<string, number> = {};
for (const item of items) {
const key = pick(item);
out[key] = (out[key] ?? 0) + 1;
}
return out;
};
export const unresolvedFinding = function unresolvedFinding(
path: string,
locus: string,
actual: string,
decide: string,
): Finding {
return {
actual,
expected: null,
healed: false,
line: 0,
locus,
path,
remediation: { action: "declare", decide, deterministic: false, from: actual, target: path, to: null },
rule: "corpus/unresolved",
stack: [
{ check: "corpusRoot", resolved: "declared" },
{ check: locus, resolved: actual },
],
};
};