BTree class implements the
OrderedMap interface from @swim/util,
and compares keys using
Objects.compare, also from @swim/util.
is internally immutable, enabling lightweight snapshotting via
and non-destructive mutation via
BTree also implements the
ReducedMap interface from @swim/util,
providing storage of sub-tree reductions in b-tree nodes to support log
time recomputation of whole tree reductions after incremental updates.
STree class implements a sequential list data type that's backed by an
implicitly indexed b-tree. Like
STree supports lightweight
STree associated a unique ID with each list item, which can be used to
reconcile concurrent, conflicting updates to the same logical list.
For an npm-managed project,
npm install @swim/collections to
make it a dependency. TypeScript sources will be installed into
definition files install into
And a pre-built UMD script can be found in
Browser applications can load
swim-core.js, which comes bundled with the
@swim/collections library, directly from the SwimOS CDN.
<!-- Development --> <script src="https://cdn.swimos.org/js/latest/swim-core.js"></script> <!-- Production --> <script src="https://cdn.swimos.org/js/latest/swim-core.min.js"></script>
Alternatively, the standalone
swim-system.js script may be loaded
from the SwimOS CDN, which bundles @swim/collections together with all other
<!-- Development --> <script src="https://cdn.swimos.org/js/latest/swim-system.js"></script> <!-- Production --> <script src="https://cdn.swimos.org/js/latest/swim-system.min.js"></script>
@swim/collections can be imported as an ES6 module from TypeScript and other ES6-compatible environments.
import * as collections from "@swim/collections";
@swim/collections can also be used as a CommonJS module in Node.js applications.
var collections = require("@swim/collections");
When loaded by a web browser, the
swim-core.js script adds all
@swim/collections library exports to the global
swim-system.js script also adds all @swim/collections library exports
to the global
swim namespace, making it a drop-in replacement for
swim-core.js when additional @swim/system libraries are needed.