fliphub-core

the core of fliphub, an extensible hub api

💠💗 fliphub-core

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 workflowto 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 inheritis 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]

HomePage

https://github.com/fliphub/fliphub#readme

Repository

https+https://github.com/fliphub/fliphub


上一篇:remap-by
下一篇:flipglob

相关推荐

官方社区

扫码加入 JavaScript 社区