MF is the Massively Fun "commons" library, for use across projects. Some things it gives you:
-
MfTaskManager - an abstraction around setTimeout/process.nextTick. You may execute tasks:
- Soon, once
- Very soon, once
- Repeatedly
-
MfNotificationCenter - simple sub/pub, loosely modeled after Cocoa's NotificationCenter
-
MessageChannels (via
mf.core.channel()
) - provides a single-pub, multi-sub channel. -
Various utility functions useful for all MF projects, such as:
- A component loader, for exposing internal modules as components of the greater NPM module.
- A Configuration object, which can be backed by an arbitrary configuration provider.
- Several latches for asynchronous conditionals.
-
Various collection classes:
Hashtable
, which provides reasonably quick lookup. Allows you to use objects as keys, provided they implementhashCode()
andequals()
.OrderedHash
, modelled after after Ruby's Hash implementation, OrderedHash is basically a doubly linked list with hash table look up. This allows ordered iteration and constant time look up of elements by UUID.- A priority queue.