import fs from "node:fs"; import path from "node:path";
export function isTruthy(value: unknown): boolean { if (value === undefined || value === null) { returnfalse;
} if (typeof value === "boolean") { return value;
} if (typeof value === "number") { return value !== 0;
} if (typeof value === "string") { return value.trim().length > 0;
} returntrue;
}
export function resolveConfigPath(config: unknown, pathStr: string): unknown { const parts = pathStr.split(".").filter(Boolean);
let current: unknown = config; for (const part of parts) { if (typeof current !== "object" || current === null) { return undefined;
}
current = (current as Record<string, unknown>)[part];
} return current;
}
export function isConfigPathTruthyWithDefaults(
config: unknown,
pathStr: string,
defaults: Record<string, boolean>,
): boolean { const value = resolveConfigPath(config, pathStr); if (value === undefined && pathStr in defaults) { return defaults[pathStr] ?? false;
} return isTruthy(value);
}
export function evaluateRuntimeRequires(params: RuntimeRequirementEvalParams): boolean { const requires = params.requires; if (!requires) { returntrue;
}
const requiredBins = requires.bins ?? []; if (requiredBins.length > 0) { for (const bin of requiredBins) { if (params.hasBin(bin)) { continue;
} if (params.hasRemoteBin?.(bin)) { continue;
} returnfalse;
}
}
const parts = pathEnv.split(path.delimiter).filter(Boolean); const extensions = process.platform === "win32" ? windowsPathExtensions() : [""]; for (const part of parts) { for (const ext of extensions) { const candidate = path.join(part, bin + ext); try {
fs.accessSync(candidate, fs.constants.X_OK);
hasBinaryCache.set(bin, true); returntrue;
} catch { // keep scanning
}
}
}
hasBinaryCache.set(bin, false); returnfalse;
}
Messung V0.5 in Prozent
¤ Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.0.10Bemerkung:
(vorverarbeitet am 2026-09-28)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.