Socket
Socket
Sign inDemoInstall

choo-model

Package Overview
Dependencies
Maintainers
1
Versions
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

choo-model

Experimental state management lib for choo


Version published
Maintainers
1
Created
Source

choo-model stability

npm version build status test coverage downloads js-standard-style

State management lib for choo :v:. Experiment for now. Might become part of choo at some point, who knows.

Usage

const Model = require('choo-model')
const mount = require('choo/mount')
const html = require('choo/html')
const choo = require('choo')

const app = choo()

app.model(todosModel())
app.router(['/', mainView ])
mount('body', app.start())

function todosModel () {
  const model = Model('todos')
  model.state({ todos: [] })
  model.reducer('add', (state, data) => state.push({ text: data }))
  return model.start()
}

function mainView (state, prev, send) {
  return html`
    <body>
      <main><p>Todos: ${state.todos}</p></main>
    </body>
  `
}

API

model = Model(namespace?)

Create a new model instance

model.start()

Return the model object, ready for the app.model() call.

model.reducer(name, reducer)

Create a new reducer

model.state(state)

Save new state. The resulting state is combined into a single state object under the hood.

model.subscription(name, subscription)

Create a new subscription

model.effect(name, effect)

Create a new effect

model.effect(name, effect)

Create a new effect

Installation

$ npm install choo-model

FAQ

Why?

Because experimenting outside of core is the right way to do things.

What can we expect to land in here?

Probably the ability to set constraints on send() calls so they can't access everything. Also the ability to create graph data based on those constraints. Perhaps selectors too. Y'know, basic stuff.

Why aren't you doing X first?

Having a solid story for state management is quite important. Some abstractions start to break down once apps grow; we're hitting that point. Everything else is irrelevant if we can't scale and use it ourselves on real projects.

How can I contribute?

Try it out. Build things on top of it. Build out alternatives.

Is this optimizable?

Yeah, definitely - if this ever makes the cut we can statically analyze the code and precompile the result so it'll have no overhead at runtime. Yay!

License

MIT

Keywords

FAQs

Package last updated on 29 Oct 2016

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc