imrishabh18/nema-23-stepper-controller

A four-layer NEMA23 stepper motor controller PCB featuring an RP2040 MCU, DRV8452 dual-phase driver, USB‑C PD power input/protection, current and temperature sensing, status LED/buzzer, and optional magnetic encoder.

Version
1.3.2
License
unset
Stars
1

scripts/check-geometry-runtime.mjs

import assert from 'node:assert/strict'
import {createRequire} from 'node:module'
import {readFileSync} from 'node:fs'
import {fileURLToPath} from 'node:url'
import {Arc, Segment, Point} from '@flatten-js/core'
import {getViaPolygon} from '@tscircuit/circuit-json-util'

// Flatten uses instanceof dispatch. Different module copies silently return
// undefined distances, causing the cloud copper-contact checker to crash.
const require=createRequire(import.meta.url)
for(const consumer of ['@tscircuit/core','@tscircuit/checks','@tscircuit/circuit-json-util']){
  const parent=import.meta.resolve(consumer)
  const geometry=await import(import.meta.resolve('@flatten-js/core',parent))
  assert.equal(geometry.Segment,Segment,`${consumer} resolves a different Segment class`)
  assert.equal(geometry.Arc,Arc,`${consumer} resolves a different Arc class`)
}
const ring=getViaPolygon({x:0,y:0},0.45,0.3)
const segment=new Segment(new Point(-1,0),new Point(1,0))
for(const edge of ring.edges){
  assert.ok(edge.shape instanceof Arc || edge.shape instanceof Segment)
  const distance=segment.distanceTo(edge.shape)
  assert.ok(Array.isArray(distance)&&Number.isFinite(distance[0]),'Via/trace geometry distance must be defined')
}
// Document the original cross-module failure without accepting it in production.
const foreign=require('@flatten-js/core')
if(foreign.Segment!==Segment){
  const other=new foreign.Segment(new foreign.Point(0,1),new foreign.Point(1,1))
  assert.equal(segment.distanceTo(other),undefined)
}
const config=JSON.parse(readFileSync(new URL('../package.json',import.meta.url)))
for(const pkg of ['@flatten-js/core','@tscircuit/checks','@tscircuit/circuit-json-util']){
  assert.equal(config.overrides[pkg],config.devDependencies[pkg],`${pkg} must be unified in the cloud install`)
}
console.log('PASS: core/checker/copper utility geometry classes and via/trace distances agree.')