88 lines
2.7 KiB
Markdown
88 lines
2.7 KiB
Markdown
# cadjs
|
|
|
|
`cadjs` is the shared JavaScript runtime for CAD Viewer, documentation previews,
|
|
and generated snapshot browser assets. It owns reusable parsing, scene-building,
|
|
explicit-CAD rendering, STEP topology, selector, mesh, robot-description, and
|
|
artifact helpers without depending on React or application chrome.
|
|
|
|
Implicit CAD model loading, shader rendering, snapshots, SDF sampling, and
|
|
mesh exports live in the sibling `implicitjs` package. Consumers that need
|
|
implicit CAD should depend on `implicitjs` directly alongside `cadjs`.
|
|
|
|
## Install
|
|
|
|
In this workbench, consumers link the package directly:
|
|
|
|
```json
|
|
{
|
|
"dependencies": {
|
|
"cadjs": "file:../packages/cadjs"
|
|
}
|
|
}
|
|
```
|
|
|
|
The package exports source files so local consumers can alias or install it and
|
|
pick up edits without copying generated bundles.
|
|
|
|
## Layout
|
|
|
|
- `src/index.js`: public package entrypoint.
|
|
- `src/common/`: browser-safe render pipeline used by interactive viewer,
|
|
docs previews, and snapshot browser runtime.
|
|
- `src/lib/`: lower-level first-party helpers for assets, formats, mesh
|
|
decoding, selector runtimes, STEP sidecars, and URDF/SRDF/SDF.
|
|
- `src/lib/viewer/`: shared non-React 3D viewer runtime helpers such as picking,
|
|
clipping, drawing geometry, reference geometry, stage theme, scene scale, and
|
|
visual state.
|
|
- `scripts/run-tests.mjs`: package test discovery and Node test runner wrapper.
|
|
- `docs/`: reference docs for package-owned APIs.
|
|
|
|
Tests live beside the modules they cover as `*.test.js` or `*.test.mjs`.
|
|
|
|
## Boundaries
|
|
|
|
Keep this package UI-framework agnostic. Do not add React components, Tailwind
|
|
helpers, browser workbench state, or CAD Viewer chrome utilities here. Those
|
|
belong in consumer apps such as `viewer/`.
|
|
|
|
Prefer moving logic into `cadjs` when it is reusable across:
|
|
|
|
- interactive CAD Viewer rendering,
|
|
- docs or marketing previews,
|
|
- generated snapshot browser runtime,
|
|
- testable CAD parsing or sidecar preparation.
|
|
|
|
Prefer moving implicit model, shader, snapshot, SDF, or mesh-export behavior
|
|
into `implicitjs` instead.
|
|
|
|
Keep app-specific workflows in the app. A useful rule of thumb: `cadjs` should
|
|
understand CAD data and rendering state, while `viewer/` should understand user
|
|
interface and product workflow.
|
|
|
|
## Commands
|
|
|
|
From this package directory:
|
|
|
|
```bash
|
|
npm test
|
|
```
|
|
|
|
From the workbench repository root:
|
|
|
|
```bash
|
|
npm --prefix packages/cadjs test
|
|
```
|
|
|
|
The test command discovers all `*.test.js` and `*.test.mjs` files under
|
|
`src/`. To run one file:
|
|
|
|
```bash
|
|
node scripts/run-tests.mjs src/lib/themeSettings.test.js
|
|
```
|
|
|
|
## Reference
|
|
|
|
- [Render pipeline](./docs/render-pipeline.md): `loadSource`, `buildModel`,
|
|
`renderModel`, and `captureModel` stages shared by viewer, docs, and
|
|
snapshots.
|