nodent
Version:
NoDent - Asynchronous Javascript language extensions
33 lines (28 loc) • 1.21 kB
JavaScript
var map = nodent.require('map',{throwOnError:true}) ;
Function.prototype.noDentify = nodent.require('nodentify') ;
Function.prototype.asAsync = function(){
var fn = this ;
var args = Array.prototype.slice.call(arguments) ;
return new nodent.Thenable(function(ok,err){
ok(fn.apply(this,await map(args))) ;
}) ;
}
var fs = require('fs') ;
var afs = fs.asyncify() ;
var readFile = fs.readFile.bind(fs).noDentify(1,0) ;
async function test() {
return ((await map([
JSON.parse(fs.readFileSync('package.json')),
JSON.parse.asAsync(fs.readFileSync.asAsync('package.json')),
JSON.parse.asAsync(readFile('package.json')),
JSON.parse.asAsync(afs.readFile('package.json')),
JSON.parse.asAsync(await readFile('package.json')),
JSON.parse.asAsync(await afs.readFile('package.json')),
JSON.parse.asAsync(await fs.readFileSync.asAsync('package.json')),
JSON.parse(await readFile('package.json')),
JSON.parse(await afs.readFile('package.json')),
JSON.parse(await fs.readFileSync.asAsync('package.json'))
])).map(function(p){ return p.version }).every(function(v,_,a){ return v===a[0] })) ;
}
module.exports = test ;
//test().then(console.log.bind(console),function(ex){ console.log(ex.stack) });