tools/core/resolvers/artifact.resolver.ts

tools/core/resolvers/artifact.resolver.ts is a file in Coordination Surface. 84 lines of code and 15 definitions.

import type { ArtifactRootData, TaxonomyData } from "../types/taxonomy.types.ts";
import { existsSync, readFileSync, statSync } from "node:fs";

import { relative, resolve, sep } from "node:path";
import type { ArtifactRoot } from "../types/artifact.types.ts";
import { isFilesystemRefusal } from "../predicates/file.predicate.ts";
import { isObject } from "../predicates/schema.predicate.ts";

const toPosix = function toPosix(root: string, path: string): string {
    return relative(root, path).split(sep).join("/");
};

const readField = function readField(source: unknown, field: readonly string[]): string | null {
    let current: unknown = source;
    for (const key of field) {
        current = isObject(current) ? current[key] : undefined;
    }
    return typeof current === "string" ? current : null;
};

const isDirectory = function isDirectory(absolute: string): boolean {
    if (!existsSync(absolute)) {
        return false;
    }
    try {
        return statSync(absolute).isDirectory();
    } catch (error) {
        if (isFilesystemRefusal(error)) {
            return false;
        }
        throw error;
    }
};

const unresolved = function unresolved(key: string, data: ArtifactRootData, reason: string): ArtifactRoot {
    return { binding: data.binding, field: data.field.join("."), key, path: "", unresolved: reason };
};

const parsedBinding = function parsedBinding(absolute: string): { parsed: unknown; error: string | null } {
    try {
        return { error: null, parsed: JSON.parse(readFileSync(absolute, "utf8")) };
    } catch (error) {
        return { error: String(error), parsed: null };
    }
};

const boundRoot = function boundRoot(
    repoRoot: string,
    key: string,
    entry: ArtifactRootData,
): { path: string; refused: ArtifactRoot | null } {
    const bindingAbs = resolve(repoRoot, entry.binding);
    if (!existsSync(bindingAbs)) {
        return { path: "", refused: unresolved(key, entry, `binding file ${entry.binding} does not exist`) };
    }

    const { error, parsed } = parsedBinding(bindingAbs);
    if (error !== null) {
        return {
            path: "",
            refused: unresolved(key, entry, `binding file ${entry.binding} is not valid JSON: ${error}`),
        };
    }

    const bound = readField(parsed, entry.field);
    if (bound === null) {
        return {
            path: "",
            refused: unresolved(key, entry, `field ${entry.field.join(".")} is absent or not a string`),
        };
    }

    const boundRel = toPosix(repoRoot, resolve(repoRoot, bound));
    const outside = boundRel.startsWith("..");
    const reason = `${entry.field.join(".")} resolves to ${bound}, outside the repository`;
    return { path: boundRel, refused: outside ? unresolved(key, entry, reason) : null };
};

export const resolveArtifactRoots = function resolveArtifactRoots(
    repoRoot: string,
    data: TaxonomyData,
): ArtifactRoot[] {
    return Object.entries(data.artifactRoots).flatMap(([key, entry]) => {
        const bound = boundRoot(repoRoot, key, entry);
        if (bound.refused !== null) {
            return [bound.refused];
        }

        return entry.subtrees.map((subtree) => {
            const path = bound.path.length === 0 ? subtree : `${bound.path}/${subtree}`;
            return isDirectory(resolve(repoRoot, path))
                ? { binding: entry.binding, field: entry.field.join("."), key, path, unresolved: null }
                : unresolved(key, entry, `subtree ${path} does not exist`);
        });
    });
};