@tscircuit/manifold-2d
v0.0.6
Published
Zero-dependency Manifold WASM runtime for 2D polygon operations
Maintainers
Readme
@tscircuit/manifold-2d
Zero-dependency access to Manifold's WebAssembly geometry core for robust 2D polygon operations.
The upstream manifold-3d npm package also ships CAD, glTF, and 3MF tooling.
Those tools bring native image-processing dependencies into every install even
when only CrossSection is used. This package vendors only the upstream core
JavaScript, WebAssembly, and TypeScript declarations.
Installation
Install the package from npm:
bun add @tscircuit/manifold-2dUsage
import { getManifoldModule } from "@tscircuit/manifold-2d"
const { CrossSection } = await getManifoldModule()
const outline = CrossSection.ofPolygons([
[
[0, 0],
[10, 0],
[10, 10],
[0, 10],
],
])
const inset = outline.offset(-0.2, "Miter")The first call to getManifoldModule() initializes a shared WASM instance.
After initialization, getManifoldModuleSync() returns that instance.
Node loads the vendored .wasm file directly. Browser and worker bundles use
the package's embedded WASM fallback, so the default API does not require an
asset-loader configuration.
To serve the WASM as a separate asset instead, point the loader at the emitted asset before initialization:
import { setWasmUrl } from "@tscircuit/manifold-2d"
import wasmUrl from "@tscircuit/manifold-2d/manifold.wasm?url"
setWasmUrl(wasmUrl)Updating Manifold
The vendored files currently come from [email protected]. Their source
version, npm integrity, and SHA-256 hashes are recorded in
vendor/manifest.json.
npm run vendor:manifold -- 3.5.1
npm run verify:vendor
npm testThe vendored Manifold files retain their upstream copyright headers and are
distributed under the Apache License 2.0 included in LICENSE.
