Skip to content

KimlikDAO/kimlikdao-lib

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

620 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

 kimlikdao-lib

Tests npm version License: MIT KimlikDAO

kimlikdao-lib is a repository containing TypeScript modules essential to KimlikDAO projects. Both our js and ts modules are fully typed using ts type expressions and compiled using kdts, our ts/js compiler with type aware optimizations.

🗂️ Features

Highlights

🪁 kastro: Our compile-time focused web-framework

  • React-like .tsx components at zero runtime cost
  • Import css, fonts or images using es6 imports and receive an asset component

⚙️ kdts: KimlikDAO TypeScript compiler

  • A TypeScript compiler that leverages type information to perform advanced optimizations.
  • Uses the Google Closure Compiler as a backend with additional optimization capabilities.

🗝️ crypto: Cryptographic functions and libraries

  • arfCurve: An efficient Arf Curve ($y^2 = x^3 + b$) class factory
  • weierstrassCurve: A constant time Weierstrass Curve ($y^2 = x^3 + ax + b$) implementation
  • wesolowski: Our Wesolowski VDF implementation

🪪 did: Definitions of DID and KPass by KimlikDAO

Other goodies

🫙 container: Cryptographic containers such as Merkle Trees

🧬 crosschain: Definitions and structures valid across all blockchains

💎 ethereum: Tools for interacting with Ethereum nodes

🪶 mina: Tools for working with Mina dApps and nodes.

📡 protocol: KimlikDAO protocol definitions and node interfaces

🧰 util: Conversion tools and external definitions

👩‍💻 Development

git clone https://github.com/KimlikDAO/kimlikdao-lib
cd kimlikdao-lib
bun i

These commands will clone the repository into your local development environment and download the packages necessary for the repository to function. If you don't already have bun installed, you can install it by following the official guide.

🧪 Tests

The tests can be run in two different modes:

  • Uncompiled: We use bun's test runner, which has a jest-like interface.
    bun test
  • Compiled (using kdts): We also run the same tests after compiling them with kdts first:
    kdts test
    Note that kdts makes aggressive optimizations using the provided type information. Running tests in compiled mode is crucial, as incorrect type annotations can lead to functionally incorrect output. There is also a fast build mode, which doesn't do typechecking and produces larger outputs
    kdts test --fast

To run tests in a specific directory, say crypto, you can also do

bun test crypto # uncompiled
kdts test crypto # compiled, --fast param available

⏱️ Benchmarks

You can run a single benchmark directly

kdts bench crypto/bench/arfCurve/ladder.bench.ts # --fast param available

or compile all of them and benchmark the compiled modules:

kdts bench

When run, output will look like this: