@tscircuit/manifold-2d
v0.0.8
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.
The default API uses the package's embedded WASM in Node, browser, and worker
bundles, so it does not require an asset-loader configuration or a separate
.wasm file beside the generated bundle.
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.
