npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@holotope/core

v0.0.22

Published

N-dimensional geometry, transforms, polytopes, and projection for TypeScript.

Readme

@holotope/core

Zero-dependency N-dimensional geometry kernel: vectors, matrices, and exterior products in any dimension, plane rotations and the so(n) exponential map, a paired-quaternion Rotor4 fast path with slerp, N-D rigid transforms and cameras, cell complexes, polytope builders (n-cube, simplex, orthoplex, all six regular polychora, duoprisms — the simplex and orthoplex author any requested face family via maxCellDimension, through the top simplex or the orthoplex's whole simplicial boundary; authored groups are combinatorial and unoriented, so render double-sided and derive oriented boundaries from the section path), perspective/orthographic/coordinate-subspace N→3 projection with Float64 homogeneous evaluation, explicit inverse fibres, and perspective-correct segment/triangle lifting, an injective R2→R3 plane embedding (PlaneEmbedding3D: [x, y] → [x, y, 0] exactly, a unique typed inverse on its image, no fibre — render products consume the common DisplayMap3D contract, of which Projection is the lossy specialization), and exact hyperplane slicing via marching tetrahedra with source-edge interpolation provenance. A renderer-independent representation layer adds dimension-checked map lineage, capability-sensitive hit results, auditable in-memory source-cell references, and explicit dimension-independent cell-incidence queries and source-edge coordinates plus multi-view source-parameter consensus for constrained interaction. A deterministic linear coordinate- constraint solver gives edge and barycentric source-simplex coordinates one shared vocabulary for compatibility, rank, unresolved degrees, conditioning, and residual certificates while leaving each coordinate domain explicit. Immutable named constraint-system snapshots add stable replacement/removal and keyed diagnostics without introducing editor state. The simplex path extends this to multi-view homogeneous triangulation. Its structured-space layer also includes the exact 240-root E8 orbit and the icosian folding into conjugate 4-spaces, plus exact cut-and-project lattices, flats, convex windows, and finite model-set patches, including complete-shell Elser–Sloane sections. The implicit-field layer adds inspectable quaternion and bicomplex Julia families, deterministic packed-point and affine-slice sampling, and an approximate isosurface extractor whose full evaluation records remain available. Exact Airbrot, Firebrot, and Earthbrot specifications independently cover the Platonic parameter slices of the tricomplex Mandelbrot set. The coupling layer adds provenance-driven parameter decorations, including the canonical Elser–Sloane internal-coordinate map and an exact finite-orbit equivariance checker for its H4 action. SkewProductFlow adds state-dependent SO(4) fiber dynamics with periodic-orbit closure and holonomy reports. The spectral layer provides a deterministic symmetric eigensolver plus sparse unweighted graph Laplacians, connected components, complete modal bases, and basis-independent repeated-mode projectors for any CellComplex 1-skeleton.

createHypercube() preserves its established edge/face/cube output by default. Set maxCellDimension to author higher cuboid cells explicitly; for example, a full tesseract then contains one 16-vertex 4-cell. simplexizeCuboidGroupN() applies the dimension-generic Kuhn decomposition to any binary-ordered cuboid group, returning k! simplices per k-cell plus exact parent-cell and local- permutation provenance. tetrahedralizeCuboidCells() remains the compatible three-dimensional convenience wrapper over that kernel.

Renderable coordinates run in Float64 on the CPU, while supported lattice, window, and group decisions stay in exact quadratic rings. The kernel is renderer-agnostic; pair it with @holotope/three to render with three.js.

Live showcase · Repository & docs

import { HyperplaneSlice4, create600Cell, sliceTetrahedra } from '@holotope/core';

const cell600 = create600Cell({ radius: 1.5 });
const slice = HyperplaneSlice4.axisAligned(3, 0); // the w = 0 hyperplane
// ...march its tetrahedra into an exact 3D cross-section

Sections are also dimension-generic. HyperplaneSliceN is the affine chart in any RN — its ambient dimension is inferred from its normal — and sectionSimplexGroupN cuts a group of simplicial k-cells with it into (k-1)-simplices. A section is an intersection, not a projection: it is injective on what it keeps and loses dimension rather than distinctness, which is why a section point can name its source and a projected pixel often cannot. (An embedding is the third kind of display map and loses nothing at all — see PlaneEmbedding3D for R2 content.) Every output vertex carries a sparse affine combination of original source vertices, so cutting an already-sectioned complex still names the geometry a reader started from rather than the intermediate one.

MIT © Nikolay Petrov