landform schemas

The options of each authored landform (volcano, impactCrater, pad, gulley, cover) as JSON Schema, for a host that builds its editors from schemas or keeps landforms in its own documents (asked for by ensemble, tosijs-3d#119). No DOM, no Babylon: import tosijs-3d/landform-schemas headlessly.

import { landformSchemas } from 'tosijs-3d'
const s = landformSchemas.volcano()
s.properties.craterRadius['x-derived'] // { from: 'radius', scale: 0.22 }

Three conventions beyond plain JSON Schema:

Each schema's properties is typed against the factory's options interface, so an option added to VolcanoOptions and not here fails the typecheck, and landform-schemas.test.ts checks that filling every default in by hand draws the same ground as leaving them out.