# Syndicate-JS: Syndicate for Javascript environments

## A walk through the code

Source files in `src/`, from most general to most specific:

 - `reflect.js`: Reflection on function formal parameter lists.
 - `util.js`: Functions `extend` and `kwApply`.
 - `randomid.js`: Generation of (cryptographically) random base64 strings.

 - `trie.js`: Implementation of dataspace trie structure.
 - `patch.js`: Implementation of patches over dataspace tries.
 - `mux.js`: Use of tries plus patches to build a (de)multiplexing routing structure.
 - `dataspace.js`: Implementation of core leaf actors and dataspaces.
 - `ground.js`: Pseudo-dataspace acting as the global outermost context for Syndicate actors.

 - `ack.js`: Utility for detecting when a previous state change has taken effect.
 - `seal.js`: Immutable container for data, used to hide structure from dataspace tries.

 - `demand-matcher.js`: Tracking and responding to demand and supply expressed as assertions.
 - `dom-driver.js`: Syndicate driver for displaying DOM fragments on a webpage.
 - `jquery-driver.js`: Syndicate driver for soliciting jQuery-based DOM events.

 - `main.js`: Main package entry point.
