npm.io
0.0.6 • Published 9 years ago

fliphub-core

Licence
Version
0.0.6
Deps
13
Vulns
0
Weekly
0
Stars
30

fliphub-core

NPM version MIT License fliphub flipfam

the core of fliphub, an extensible hub api for building programs with an event-based core/workflow/context/presets

usage

yarn add fliphub-core
npm i fliphub-core --save
const FlipHubCore = require('fliphub-core')

paradigm

when

there are multiple things context, one core, one workflow to connect them, and reusable configurations that optionally can be inherited

why

creating a program which has a core that is as minimal as possible as much functionality is added via presets as possible

in turn, a phenomenal external api is created, since you use it to build your program.

this allows extremely easy maintenance and extension because

core

workflow

  • extends flipchain/ChainedMapExtendable
  • connecting the core-hubs-context
  • is passed into each lifecycle event to use one object to access the whole program easily

context

configs

  • options/config/opts/prefs/settings/args
  • rehydratable
  • chainable / fluent
coreConfig
  • user settings for your core, inheritable if inherit is not false
contextContext
  • configs per context, each context can have multiple configs if hubs extend, but it is usually just one

hub

presets

  • combinations of hubs, or/and configurations.

events & docs

events & docs

examples

emitting
// emits for core
this.workflow.evt.name('name-of-event-scoped-to->').core().emit(data)

// subscribe to a core event
this.workflow.evt.core().name('eh').cb(this.cb)

// emits for a single context
this.workflow.evt.name('name-of-event-scoped-to->').context('name').emit(data)

// emits for * contexts
this.workflow.evt.name('name-of-event-scoped-to->').contexts().emit(data)

example (fliphub)

workflow.contextsFrom(config.apps)
workflow.emitForContexts('merge.pre')
workflow.emitForContexts('init.pre')
workflow.emitForContexts('init')
workflow.emitForContexts('init.post')
workflow.emitForContexts('merge.post')
workflow.mapContexts((context) => {
  // edit context
  return context
})
filterhub
  • built in filtering for filtering contexts by calling the functions
exports / extending

// export as named, and as abstract for destructuring support
const {
  log,
  resolve,

  Core,
  AbstractCore,

  Context,
  AbstractContext,

  Workflow,
  AbstractWorkflow,

  Hub,
  AbstractHub,

  Presets,
  AbstractPresets,

  ChainedMap,
} = require('fliphub-core')
deps

schema

  • [core] 1 - 1 [workflow]
  • [core] 1 - 1 [config]
  • [workflow] 1 - * [hub]
  • [workflow] 1 - * [context]
  • [context] 1 - * [config]

Keywords