Part of the Kireji Project
omnia ex una linea
MPHF (Minimal Perfect Hash Function) provides the bijective coordinate system at the heart of the Kireji Project. It guarantees that every valid state of an app or component corresponds to a unique integer coordinate, with no collisions, duplicates, or gaps. The Kireji Web Framework uses these coordinates to encode application state directly in the URL, making navigation, persistence, and cross-origin traversal deterministic and lossless.
The Kireji Project poses a question: What if we could treat every web page as a point in a unified, mathematically mapped space?
| Repo | Purpose |
|---|---|
| MPHF | Coordinate System - ★ You are here A bijective coordinate system for hashing structured data |
| Kireji | Web Framework A reactive web framework with MPHF routing |
| Demo | App Ecosystem An example app ecosystem demonstrating the project |
The set of all application states S is structured as a combinatorial configuration space.
This allows us to locate every configuration as a point on a discrete manifold.
A minimal perfect hash function is used to define a bijection between
Each domain is hashed using positional offsets defined by component subdomains with all elements indexed from A and B is assigned a hash using
This generalizes recursively to arbitrary combinations of nested spaces, each component yielding a minimal perfect hash function over the set of valid configurations of its state space.
Configuration spaces are assembled from components that come in three main types.
The Part type models a single state with no mutability.
const apple = new Part("apple")
console.log(apple.cardinality)
// 1nThe Match type models a choice between two or more options.
const fruit = new Match("fruit", [
apple,
"orange",
"pear"
])
console.log(fruit.cardinality)
// 3n
console.log(fruit.hash("pear"))
// "2"
console.log(fruit.unhash("2"))
// "pear"The Mix type models a set of independently mutable variables.
const snack = new Mix("snack", [
fruit,
new Match("drink", [
"water",
"milk",
"cola"
])
])
console.log(snack.cardinality)
// 9n
console.log(snack.hash({ fruit: "apple", drink: "water" }))
// 6
console.log(snack.unhash("6"))
// { fruit: "apple", drink: "water" }MPHF also includes methods for encoding large integers as url-safe base64 strings:
console.log(Part.encode(12345678901234567890n))
// aJkGoPH7MHi
console.log(Part.decode('hello-world'))
// 19857872207319512397nThis library is written using Vanilla JavaScript with no third-party dependencies.
The MPHF Coordinate System is in Alpha.
The Kireji Project is in early research and development.