Skip to main content
Version: Next

Orbit.js API Reference

Orbit is distributed on npm through the @orbit organization in several packages. This API reference is organized according to these packages.

Core libraries#

Orbit consists of the following core libraries:

  • @orbit/core - A core set of primitives for performing, tracking, and responding to asynchronous tasks, including:

    • An event system that allows listeners to engage with the fulfillment of events by returning promises.

    • An asynchronous task processing queue.

    • A log that tracks a history of changes and allows for revision and interrogation.

    • A bucket interface for persisting state. Used by logs and queues.

  • @orbit/data - Applies the core Orbit primitives to data sources. Includes the following:

  • @orbit/records - Extends the general data concepts from @orbit/data to make record-specific classes and interfaces. These include:

    • RecordSource - a base class that extends Source.

    • RecordSchema - define models, including attributes and relationships.

    • Operations that are specific to records (e.g. addRecord, removeRecord, addToHasMany, etc.).

    • Query expressions that are specific to records (e.g. findRecord, findRecords, etc.).

    • Tranform and query builders that use chainable terms to create operations and expressions.

  • @orbit/record-cache - Everything you need to build your own caches that hold data records (useful within record-specific sources).

  • @orbit/coordinator - A coordinator and set of coordination strategies for managing data flow and keeping Orbit Data sources in sync.

  • @orbit/serializers - A base set of serializers for serializing / deserializing data types.

  • @orbit/validators - A set of validators for validating primitive data and utilities for building higher order validators.

  • @orbit/identity-map - A simple identity map to manage model instances.

  • @orbit/immutable - A lightweight library of immutable data structures.

  • @orbit/utils - A common set of utility functions used by Orbit libs.

Record-specific data sources#

All of the following sources are based on @orbit/records. They provide uniform interfaces to query and mutate record-specific data:

  • @orbit/memory - An in-memory data source that supports complex querying and updating. Because memory sources maintain data in immutable data structures, they can be efficiently forked. Forked memory sources can diverge from the master memory source, and then the changes can be merged later.

  • @orbit/jsonapi - Provides full CRUD support, including complex querying, for a RESTful API that conforms to the JSON:API specification.

  • @orbit/local-storage - Persists records to local storage.

  • @orbit/indexeddb - Persists records to IndexedDB.

These standard sources can provide guidance for building your own custom sources as well.

Persistence buckets#

Buckets are used to persist application state, such as queued requests and change logs. Standard buckets include:

Additional libraries#

Some additional libraries related to Orbit, but not covered by these docs, include:

  • ember-orbit - An Ember.js data layer heavily inspired by Ember Data.