Core library of "onion versioning".

Joeri Exelmans 262b90e4bc getting there... %!s(int64=2) %!d(string=hai) anos
lib 127b61f640 more tweaking %!s(int64=2) %!d(string=hai) anos
.gitignore 976cc7866d another attempt %!s(int64=2) %!d(string=hai) anos
.npmignore f423f5a217 curse JS ecosystem!! %!s(int64=2) %!d(string=hai) anos
README.md b0614e208f Cleanup repo %!s(int64=2) %!d(string=hai) anos
index.ts 53a1e6acc5 add export %!s(int64=2) %!d(string=hai) anos
package.json 262b90e4bc getting there... %!s(int64=2) %!d(string=hai) anos
pnpm-lock.yaml 196218cdfb Create fork/package containing only library (no frontend) %!s(int64=2) %!d(string=hai) anos
todo.txt 2e0c8ff23e Merge branch 'master' into rewrite-core %!s(int64=2) %!d(string=hai) anos
tsconfig.json cfb49d8788 tweak package %!s(int64=2) %!d(string=hai) anos

README.md

Onion Core Library

Defines:

  • Primitive delta types, their dependency and conflict relations.
  • (nestable) Transactions of deltas.
  • A "DeltaRegistry" that assigns content-based IDs to deltas, and reuses them.
  • A mutable "GraphState" class, for executing deltas.
  • A "Version" class, for graph embedding, branching and merging.

Currently depends on these NodeJS polyfills for browser: 'buffer', 'crypto' and 'stream'. This is only to compute hashes by means of synchronous function call (Web Crypto API only supports async).