diff --git a/.travis.yml b/.travis.yml index 969f268..fa3917b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,6 +4,7 @@ sudo: false node_js: - "0.10" - "0.12" + - "4.2" - "4" notifications: @@ -22,7 +23,6 @@ script: after_success: - npm install coveralls - cat coverage/lcov.info | coveralls - - mv coverage/lcov.info . matrix: allow_failures: diff --git a/index.js b/index.js index e691d24..6ce116d 100644 --- a/index.js +++ b/index.js @@ -7,29 +7,26 @@ 'use strict' -var letta = require('letta') -var isError = require('is-typeof-error') -var isNodeStream = require('is-node-stream') -var isChildProcess = require('is-child-process') +var utils = require('./utils') module.exports = function lettaValue (val) { - if (isNodeStream(val) || isChildProcess(val)) { - return letta(require('on-stream-end'), require('stream-exhaust')(val)) + if (utils.isNodeStream(val) || utils.isChildProcess(val)) { + return utils.letta(utils.onStreamEnd, utils.streamExhaust(val)) } if (val && typeof val.subscribe === 'function') { if (val.value) { - return letta(function () { + return utils.letta(function () { return val.value }) } - return letta(subscribe, val) + return utils.letta(subscribe, val) } - if (isError(val)) { - return letta(function () { + if (utils.isTypeofError(val)) { + return utils.letta(function () { throw val }) } - return letta(function () { + return utils.letta(function () { return val }) } @@ -40,6 +37,6 @@ module.exports = function lettaValue (val) { function subscribe (val, callback) { val.subscribe(function noop () {}, callback, function onComplete () { - callback.apply(this, [null].concat(require('sliced')(arguments))) + callback.apply(this, [null].concat(utils.sliced(arguments))) }.bind(this)) } diff --git a/package.json b/package.json index 94de950..89bc6f3 100644 --- a/package.json +++ b/package.json @@ -13,7 +13,8 @@ "is-child-process": "^1.0.0", "is-node-stream": "^1.0.0", "is-typeof-error": "^1.0.1", - "letta": "^0.2.0", + "lazy-cache": "^0.2.3", + "letta": "*", "on-stream-end": "^1.0.0", "sliced": "^1.0.1", "stream-exhaust": "^1.0.1" @@ -60,4 +61,4 @@ "thunkgs", "yield" ] -} \ No newline at end of file +} diff --git a/utils.js b/utils.js new file mode 100644 index 0000000..db0d228 --- /dev/null +++ b/utils.js @@ -0,0 +1,28 @@ +/* jshint asi:true */ + +'use strict' + +/** + * Lazily required module dependencies + */ + +var utils = require('lazy-cache')(require) // eslint-disable-line no-undef, no-native-reassign +var fn = require + +require = utils // eslint-disable-line no-undef, no-native-reassign + +require('is-child-process') +require('is-node-stream') +require('is-typeof-error') +require('letta') +require('on-stream-end') +require('sliced') +require('stream-exhaust') + +require = fn // eslint-disable-line no-undef, no-native-reassign + +/** + * Expose `utils` modules + */ + +module.exports = utils