@swim/system

Framework for building massively real-time streaming WARP client applications

Usage no npm install needed!

<script type="module">
  import swimSystem from 'https://cdn.skypack.dev/@swim/system';
</script>

README

@swim/system

package documentation chat

The @swim/system umbrella framework provides a standalone set of frameworks for building massively real-time streaming WARP client applications. @swim/system incorporates the @swim/core foundation framework, and the @swim/mesh multiplexed streaming WARP client framework.

Umbrella Framework

The Swim System umbrella framework has no external dependencies when run in a web browser, and depends only on a WebSocket implementation when run in Node.js. Swim System provides the following top-level libraries:

  • @swim/system (npm, doc) – umbrella package that depends on, and re-exports, all Swim System child frameworks and libraries.

Swim Core Framework

The Swim Core framework provides a lightweight, portable, dependency-free, and strongly typed baseline on which to build higher level libraries. Swim Core consists of the following component libraries:

  • @swim/core (npm, doc) – lightweight, portable, dependency-free foundation framework.
  • @swim/util (npm, doc) – ordering, equality, and hashing; type conversions; iterators; builders; maps; caches; and assertions.
  • @swim/codec (npm, doc) – incremental I/O; functional parsers and writers; display, debug, and diagnostic formatters; and Unicode and binary codecs.
  • @swim/mapping (npm, doc) – functional maps, interpolators, and scales.
  • @swim/collections (npm, doc) – immutable, structure sharing collections, including B-trees and S-trees (sequence trees).
  • @swim/constraint (npm, doc) – incremental solver for systems of linear constraint equations.
  • @swim/structure (npm, doc) – generic structured data model, with support for selectors, expressions, and lambda functions. Used as a common abstract syntax tree for Recon, JSON, XML, and other data languages.
  • @swim/streamlet (npm, doc) – stateful, streaming component model for application componets that continuously consume input state from streaming inlets, and continuously produce output state on streaming outlets.
  • @swim/dataflow (npm, doc) – compiler from @swim/structure expressions to live-updated data models.
  • @swim/recon (npm, doc) – object notation with attributes, like if JSON and XML had a baby.
  • @swim/uri (npm, doc) – rich object model for working with Uniform Resource Identifiers and URI subcomponents, including an efficient and safe codec for parsing and writing compliant URI strings.
  • @swim/math (npm, doc) – mathematical and geometric structures and operators.
  • @swim/geo (npm, doc) – geospatial coordinate, projection, and geometry types.
  • @swim/time (npm, doc) – date-time, time zone, and time interval data types, with strptime/strftime-style parsers and formatters.

Swim Mesh Framework

The Swim Mesh framework implements a multiplexed streaming WARP client that runs in both Node.js and web browsers. Swim Mesh consists of the following component libraries:

  • @swim/mesh (npm, doc) – multiplexed streaming WARP framework that runs in Node.js and web browsers.
  • @swim/warp (npm, doc) – WebSocket protocol for dynamically multiplexing large numbers of bidirectional links to streaming APIs, called lanes, of URI-addressed distributed objects, called nodes, that run stateful distributed processes, called Web Agents.
  • @swim/client (npm, doc) – streaming API client for linking to lanes of stateful Web Agents using the WARP protocol, enabling massively real-time applications that continuously synchronize all shared states with ping latency.

Installation

npm

For an npm-managed project, npm install @swim/system to make it a dependency. TypeScript sources will be installed into node_modules/@swim/system/main. Transpiled JavaScript and TypeScript definition files install into node_modules/@swim/system/lib/main. And a pre-built UMD script, which bundles all @swim/system child frameworks, can be found in node_modules/@swim/system/dist/main/swim-system.js.

Browser

Browser applications can load swim-system.js directly from the SwimOS CDN. The swim-system.js bundle is self-contained; it supersedes swim-core.js, and swim-mesh.js—those scripts need not be loaded when using swim-system.js.

<!-- 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>

Usage

ES6/TypeScript

@swim/system can be imported as an ES6 module from TypeScript and other ES6-compatible environments. All child framework libraries are re-exported by the umbrella @swim/system module.

import * as swim from "@swim/system";

CommonJS/Node.js

@swim/system can also be used as a CommonJS module in Node.js applications. All child framework libraries are re-exported by the umbrella @swim/system module.

var swim = require("@swim/system");

Browser

When loaded by a web browser, the swim-system.js script adds all child framework exports to the global swim namespace.