Skip to content
Brian Cavalier edited this page Oct 28, 2016 · 15 revisions

2.0

  • Curry public API
  • Port source and tests fully to ES6
  • Possibly: move to synchronous Disposer model (may reduce mem/cpu by avoiding promises)

1.1.0

  • Implement Fantasy Land 2.0
  • Implement Fantasy/Static Land Extend

1.0

  • ✅ Refactor into Timer + Scheduler
    • ✅ Rework TestScheduler into TestTimer + Scheduler
  • ✅ Improve sample or provide a variant that passes the sampler value in addition to all the sampled values
  • ✅ Create @most/dom, which will provide convenience methods for dom events--basically wrappers around fromEvent--like: import { click } from '@most/dom'; const clicks = click(node);
  • ✅ "Bring your own promise"
    • ✅ remove when.js dep, depend on global Promise
    • ✅ Add info to README pointing to creed, when.js, bluebird, rsvp for polyfill if needed
  • ✅ Add useCapture flag to fromEvent
  • ✅ Draft ES Observable interop via [Symbol.observable], subscribe, of, and from
  • ✅ Create Typescript definition
  • ✅ Move most.create to separate package
  • ✅ Remove deprecated functions and methods

Other possible features

Things that are being evaluated, and may happen after 1.0.0 is released. Depending on the nature of the change, some things may happen in 1.x.x releases, and others in x.0.0 releases (based on semver).

Scheduler

  • Investigate hash wheel as new data structure for Scheduler
  • Expose Scheduler constructor or createScheduler smart constructor
  • Expose defaultScheduler as most.defaultScheduler

APIs

  • Expose slightly lower level API than observe/drain/reduce
    • Doesn't involve promises
    • Allows configurable scheduler
    • probably like:
      • runStream :: Observer a b -> Scheduler -> undefined
      • type Handler a :: t -> a -> undefined
      • type Observer a b = { event :: Handler a, end :: Handler b, error :: Handler Error }
  • Consider providing observe/drain/reduce variants that allow passing in a scheduler.
  • Implement full ES Observable spec?

Tooling

  • Add code coverage (e.g. istanbul + coveralls.io)
  • Update to latest versions of all build tools (webpack, uglify, etc)
  • Create flowtype definition

Modularity / Packaging

  • Discuss @most/core and moving more groups of functionality to @most/* packages.