mohan-bee/tscircuit-robot-vacuum

A tscircuit package created by mohan-bee.

Version
1.0.0
License
unset
Stars
0

scripts/build.tsx

import fs from "node:fs/promises"
import { Circuit, getAssemblyExplosion } from "tscircuit"
import RobotVacuum from "../index"

await fs.mkdir("dist", { recursive: true })
const circuit = new Circuit()
const started = Date.now()
circuit.on("board:renderPhaseStarted", (event) => {
  console.log(JSON.stringify({ elapsedMs: Date.now() - started, phase: event }))
})
circuit.add(<RobotVacuum />)
await circuit.renderUntilSettled()
const json = circuit.getCircuitJson()
await fs.writeFile("dist/circuit.json", JSON.stringify(json, null, 2))
const counts: Record<string, number> = {}
for (const e of json) counts[e.type] = (counts[e.type] ?? 0) + 1
const diagnostics = json.filter((e) => /error|warning/.test(e.type))
await fs.writeFile("dist/diagnostics.json", JSON.stringify(diagnostics, null, 2))
await fs.writeFile("dist/element-counts.json", JSON.stringify(counts, null, 2))
console.log(JSON.stringify({ counts, diagnostics: diagnostics.length }, null, 2))
const explosion = getAssemblyExplosion(circuit)
await fs.writeFile("dist/exploded.circuit.json", JSON.stringify(explosion.circuitJson, null, 2))
await fs.writeFile("dist/explosion-metadata.json", JSON.stringify({ stages: explosion.stages, lines: explosion.lines, collisionCheckStatus: explosion.collisionCheckStatus }, null, 2))