@duckness/epic
TypeScript icon, indicating that this package has built-in type declarations

1.0.0 • Public • Published

@duckness/epic

Redux-Observable extension for @duckness/duck

NPM License Libraries.io dependency status for latest release, scoped npm package GitHub issues vulnerabilities npm bundle size

Example

// counterDuck.js
import EpicDuck from '@duckness/epic'
import { map, delay } from 'rxjs/operators'
import { ofType } from 'redux-observable'

// Create duck with the name 'counter' for 'counter-app' app
const counterDuck = EpicDuck('counter', 'counter-app')
// Add actions
counterDuck.action('increment', 'INCREMENT')
counterDuck.action('incrementAsync', 'INCREMENT_ASYNC')

// add epic
counterDuck.epic(function incrementAsync(action$, state$, duckFace) {
  return action$.pipe(
    ofType(duckFace.actionTypes.INCREMENT_ASYNC),
    delay(1000),
    map(action => duckFace.action.increment(action.payload))
  )
})

// root epic
export const rootEpic = counterDuck.rootEpic

Table of Contents

API

EpicDuck extends duckness Duck

Epic

.epic(epic)

Adds a new epic to the duck

myDuck.epic(function myEpic(action$, state$, duckFace) { /*...*/ })

.rootEpic

Duck's root epic with epics isolation (exceptions in one epic will not break other epics).

myDuck.rootEpic

Error reporter

.setErrorReporter

Set error reporter (default is console.error) that reports uncatched epic errors

myDuck.setErrorReporter(error => {
  window.Sentry.captureException(error)
})

.reportError(error)

Call assigned error reporter

myDuck.reportError(new Error('Clean duck!'))

@Duckness packages:

/@duckness/epic/

    Package Sidebar

    Install

    npm i @duckness/epic

    Weekly Downloads

    131

    Version

    1.0.0

    License

    MIT

    Unpacked Size

    15.4 kB

    Total Files

    6

    Last publish

    Collaborators

    • hitosu