astra/am3352-sbc
AM3352 single-board computer with DDR3, PMIC/USB‑C 5 V power, microSD, dual USB host, HDMI video, RGB indicators, and a PWM-driven buzzer.
- Version
- 0.1.18
- License
- unset
- Stars
- 0
scripts/check-solver-release.ts
import { mkdirSync, writeFileSync } from "node:fs";
export function resolveCoreVersion(versions: string[], range: string) {
return versions.filter(v => !v.includes("-") && Bun.semver.satisfies(v, range))
.sort(Bun.semver.order).at(-1);
}
async function metadata(path: string, compact = false): Promise<any> {
const response = await fetch(`https://registry.npmjs.org/${path}`, {
headers: { accept: compact ? "application/vnd.npm.install-v1+json" : "application/json" },
signal: AbortSignal.timeout(30000),
});
if (!response.ok) throw new Error(`Package metadata request failed: ${response.status}`);
return response.json();
}
if (import.meta.main) {
const [tscircuit, coreVersions] = await Promise.all([
metadata("tscircuit/latest"), metadata("@tscircuit%2fcore", true),
]);
const coreRange = tscircuit.dependencies?.["@tscircuit/core"];
if (!coreRange) throw new Error("Latest tscircuit has no declared core dependency; inspect its release manually");
const coreVersion = resolveCoreVersion(Object.keys(coreVersions.versions), coreRange);
if (!coreVersion) throw new Error("Cannot resolve tscircuit's published core dependency");
const core = await metadata(`@tscircuit%2fcore/${coreVersion}`);
const solverSpec = core.dependencies?.["@tscircuit/bus-lanes-solver"] ?? core.devDependencies?.["@tscircuit/bus-lanes-solver"];
const solverVersion = solverSpec?.match(/(?:\/|^)(\d+\.\d+\.\d+)(?:\.tgz|$)/)?.[1];
if (!solverVersion) throw new Error("Cannot identify core's exact bus-lanes solver version; inspect its release manually");
const ready = Bun.semver.order(solverVersion, "0.0.15") >= 0;
const report = { checkedAt: new Date().toISOString(), tscircuitVersion: tscircuit.version,
coreRange, resolvedCoreVersion: coreVersion, solverSpec, solverVersion,
requiredSolverVersion: ">=0.0.15", ready };
mkdirSync("output", { recursive: true });
writeFileSync("output/solver-release-status.json", JSON.stringify(report, null, 2));
console.log(JSON.stringify(report));
process.exitCode = ready ? 0 : 3;
}