JSPM

fliphub-core

0.0.6
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 9
  • Score
    100M100P100Q35377F

the core of fliphub, an extensible hub api

Package Exports

  • fliphub-core

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (fliphub-core) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

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