0.0.6 • Published 8 years ago

fliphub-core v0.0.6

Weekly downloads
18
License
-
Repository
github
Last release
8 years ago

💠💗 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