Skip to content

Cozy Pouch Link API

Classes

PouchLink

Link to be passed to a CozyClient instance to support CouchDB. It instantiates PouchDB collections for each doctype that it supports and knows how to respond to queries and mutations.

Loop

Utility to call a function (task) periodically and on demand immediately.

Public API

  • start
  • stop
  • scheduleImmediateTask
  • waitForCurrentTask
PouchManager

Handles the lifecycle of several pouches

  • Creates/Destroys the pouches
  • Replicates periodically

Functions

getQueryAlias(query)string

Link to be passed to a CozyClient instance to support CouchDB. It instantiates PouchDB collections for each doctype that it supports and knows how to respond to queries and mutations.

Kind: global class

new PouchLink([opts])

constructor - Initializes a new PouchLink

Param Type Default Description
[opts] object
[opts.replicationInterval] number Milliseconds between replications
opts.doctypes Array.<string> Doctypes to replicate
opts.doctypesReplicationOptions Array.<object> A mapping from doctypes to replication options. All pouch replication options can be used, as well as the “strategy” option that determines which way the replication is done (can be “sync”, “fromRemote” or “toRemote”)

pouchLink.handleOnSync()

Receives PouchDB updates (documents grouped by doctype). Normalizes the data (.id -> ._id, .rev -> _rev). Passes the data to the client and to the onSync handler.

Emits an event (pouchlink:sync:end) when the sync (all doctypes) is done

Kind: instance method of PouchLink

pouchLink.startReplication() ⇒ void

User of the link can call this to start ongoing replications. Typically, it can be used when the application regains focus.

Emits pouchlink:sync:start event when the replication begins

Kind: instance method of PouchLink
Access: public

pouchLink.stopReplication() ⇒ void

User of the link can call this to stop ongoing replications. Typically, it can be used when the applications loses focus.

Emits pouchlink:sync:stop event

Kind: instance method of PouchLink
Access: public

pouchLink.needsToWaitWarmup(doctype) ⇒ boolean

Check if there is warmup queries for this doctype and return if those queries are already warmedup or not

Kind: instance method of PouchLink
Returns: boolean - the need to wait for the warmup

Param Type
doctype string

Loop

Utility to call a function (task) periodically and on demand immediately.

Public API

  • start
  • stop
  • scheduleImmediateTask
  • waitForCurrentTask

Kind: global class

loop.start()

Starts the loop. Will run the task periodically each this.delay ms. Ignores multiple starts.

Kind: instance method of Loop

loop.stop()

Stops the loop, clears immediate tasks. Cancels current task if possible

Kind: instance method of Loop

loop.runImmediateTasks()

Flushes the immediate tasks list and calls each task. Each task is awaited before the next is started.

Kind: instance method of Loop

loop.scheduleImmediateTask(task)

Schedules a task to be run immediately at next round. Ignored if loop is not started. If not task is passed, the default task from the loop is used.

Kind: instance method of Loop

Param Type Default Description
task function Optional custom function to be run immediately

loop.runTask()

Calls and saves current task. Stops loop in case of error of the task.

Kind: instance method of Loop

loop.round()

Runs immediate tasks and then schedule the next round. Immediate tasks are called sequentially without delay There is a delay between immediate tasks and normal periodic tasks.

Kind: instance method of Loop

PouchManager

Handles the lifecycle of several pouches

  • Creates/Destroys the pouches
  • Replicates periodically

Kind: global class

pouchManager.ensureDatabasesExist()

Via a call to info() we ensure the database exist on the remote side. This is done only once since after the first call, we are sure that the databases have been created.

Kind: instance method of PouchManager

pouchManager.startReplicationLoop()

Starts periodic syncing of the pouches

Kind: instance method of PouchManager

pouchManager.stopReplicationLoop()

Stop periodic syncing of the pouches

Kind: instance method of PouchManager

pouchManager.syncImmediately()

If a replication is currently ongoing, will start a replication just after it has finished. Otherwise it will start a replication immediately

Kind: instance method of PouchManager

pouchManager.replicateOnce()

Starts replication

Kind: instance method of PouchManager

getQueryAlias(query) ⇒ string

Kind: global function
Returns: string - alias

Param Type
query QueryDefinition