fliphub-core

0.0.6 • Public • Published

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

Package Sidebar

Install

npm i fliphub-core

Weekly Downloads

54

Version

0.0.6

License

none

Last publish

Collaborators

  • aretecode