<commit_before># Orbit.js [![Build Status](https://secure.travis-ci.org/cerebris/orbit.js.png?branch=master)](http://travis-ci.org/cerebris/orbit.js)

Orbit is a standalone library for coordinating access to data sources
and keeping their contents synchronized.

Orbit provides a foundation for building advanced features in client-side
applications such as offline operation, maintenance and synchronization of local
caches, undo / redo stacks and ad hoc editing contexts.

Orbit relies heavily on promises, events and low-level transforms.

## Goals

* Support any number of different data sources in an application and
  provide access to them through common interfaces.

* Allow for the fulfillment of requests by different sources, including
  the ability to specify priority and fallback plans.

* Allow records to simultaneously exist in different states across sources.

* Coordinate transformations across sources. Handle merges automatically
  where possible but allow for complete custom control.

* Allow for blocking and non-blocking transformations.

* Allow for synchronous and asynchronous requests.

* Support transactions and undo/redo by tracking inverses of operations.

* Work with plain JavaScript objects.

## Dependencies

Orbit.js has no specific external dependencies, but must be used with a
library that implements the
[Promises/A+](http://promises-aplus.github.io/promises-spec/)
spec, such as [RSVP](https://github.com/tildeio/rsvp.js).

## Building and Testing Orbit

The Orbit project is managed by [Grunt](http://gruntjs.com/). Once you've
installed Grunt and its dependencies, you can install Orbit's dependencies
from inside the project root with:

```
npm install
```

Distributable versions of Orbit can be built to the `/dist` directory by running:<commit_msg>Clarify run-time vs dev dependencies<commit_after># Orbit.js [![Build Status](https://secure.travis-ci.org/cerebris/orbit.js.png?branch=master)](http://travis-ci.org/cerebris/orbit.js)

Orbit is a standalone library for coordinating access to data sources
and keeping their contents synchronized.

Orbit provides a foundation for building advanced features in client-side
applications such as offline operation, maintenance and synchronization of local
caches, undo / redo stacks and ad hoc editing contexts.

Orbit relies heavily on promises, events and low-level transforms.

## Goals

* Support any number of different data sources in an application and
  provide access to them through common interfaces.

* Allow for the fulfillment of requests by different sources, including
  the ability to specify priority and fallback plans.

* Allow records to simultaneously exist in different states across sources.

* Coordinate transformations across sources. Handle merges automatically
  where possible but allow for complete custom control.

* Allow for blocking and non-blocking transformations.

* Allow for synchronous and asynchronous requests.

* Support transactions and undo/redo by tracking inverses of operations.

* Work with plain JavaScript objects.

## Dependencies

Orbit.js has no specific external run-time dependencies, but must be used with a
library that implements the
[Promises/A+](http://promises-aplus.github.io/promises-spec/)
spec, such as [RSVP](https://github.com/tildeio/rsvp.js).

## Building and Testing Orbit

The Orbit project is managed by [Grunt](http://gruntjs.com/). Once you've
installed Grunt and its dependencies, you can install Orbit's development
dependencies from inside the project root with:

```
npm install
```

Distributable versions of Orbit can be built to the `/dist` directory by running:
{'fraction_non_alphanumeric': 0.06813186813186813, 'fraction_numerical': 0.0, 'mean_word_length': 4.8631239935587764, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 4, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '4564635', 'n_tokens_mistral': 964, 'n_tokens_neox': 904, 'n_words': 429}