Package Exports
- common
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 (common) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
Common
A utility module for both node.js and the browser.
It is available through npm:
npm install commonOr as minified js file for the browser:
<script src='common.min.js'></script>This module among other things contains a fork of step that also provides error handling
common.step([
function(next) { // next is the last argument, except in the last handler
fs.readFile(__filename, 'utf-8', next);
},
function(file) {
console.log(file);
}
], function(err) {
// any error received in a callback will be forwarded here
});It also contains a shortcut to the EventEmitter prototype and a compatible implementation of this for the browser.
var MyEmitter = common.emitter(function() {
this.foo = 42;
});
var me = new MyEmitter();
me.emit('foo', me.foo); // emits 'foo',42There is also a more general method for extending prototypes called extend:
// this prototype is the same as above
var MyEmitter = common.extend(events.EventEmitter, function() {
this.foo = 42;
});If you want to use futures you can use the future function to create a future:
var fut = common.future();
fut.get(function(val) {
console.log(val);
});
setTimeout(function() {
fut.put(42); // results in the previous .get being called and all future .get's will be called synchroniously
}, 1000)To do string formatting you can use format:
// you can parse the arguments to a pattern one by one
common.format('define {0} here', 'pattern'); // returns 'define pattern here'
// or as a map or array
common.format('define {foo} here', {foo:'pattern'}); // same as aboveThere is a log method that just accepts the does the same as format except it prints out the result using console.log if available
To generate a simple weak symbols (often used when generating keys for a map) use gensym
common.gensym() // returns 's0'
common.gensym() // returns 's1'If you instead of a weak symbol need a strong one use uuid:
common.uuid(); // returns a strong id, ex: ngDl6IdovME9JKvIxgED0FK1kzURxfZaCq48-0Common can also encode integers into alphanumerical notation using encode:
common.encode(1000); // returns G8To ensure that a method cannot be called more than once you can use the once function:
var fn = common.once(function() {
console.log('hello');
});
fn(); // prints hello
fn(); // does nothingBesides the above common implements two of the utilities mentioned in The Good Parts, memoizer and curry.