YerkoPalma / choo-offline

:wrench: offline first support for choo apps

Home Page:https://www.npmjs.com/package/choo-offline

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

choo-offline Build Status js-standard-style

offline first support for choo apps

Installation

npm install --save choo-offline

Usage

const choo = require('choo')
const offline = require('choo-offline')

const app = choo()

offline(offline => {
  app.use(offline)

  const tree = app.start()
  document.body.appendChild(tree)
})

API

offline([opts], fn())

Function that wraps the choo start and use methods, only needed for this plugin, other plugins can be registered before. It can take two parameters.

opts

Type: Object

Optional configuration object for the plugin, can take the following options:

  • serviceWorker (String): A string with the relative path to a service worker file, if not provided, it will not install a service worker. Defaults: ''.
  • dbConfig (Object): An object with localforage config.

fn

Type: Function

Required function that get as the only argument, the offline plugin object. The object use the following hooks:

  • onStateChange: To update the app state locally with localforage.

  • onAction: To check if the app is offline and, if it is, use a backup action. Use the backup function when you have actions that depend on network availability, just define a _backup option in your send() data, the _backup option must be a string calling an effect or reducer from your model. For example

       send('xhrEffect', { foo: bar, _backup: 'nonXhrBackup' })

    The above statement will call xhrEffect normally, but when offline, it will call the nonXhrBackup effect|reducer, passing the same data, excluding the _backup strings.

  • wrapInitialState: To get the initial local state.

License

MIT

Crafted with <3 by YerkoPalma .


This package was initially generated with yeoman and the p generator.

About

:wrench: offline first support for choo apps

https://www.npmjs.com/package/choo-offline

License:MIT License


Languages

Language:JavaScript 100.0%