Comparing version 0.3.1 to 0.4.0
22
cli.js
@@ -14,5 +14,7 @@ #!/usr/bin/env node | ||
replHistory = require('repl.history'), | ||
home = require('home-dir'); | ||
home = require('home-dir'), | ||
findRoot = require('find-root'); | ||
var Repl = require('repl'); | ||
var Repl = require('repl'), | ||
Path = require('path'); | ||
@@ -67,12 +69,18 @@ | ||
var packageName = function (path) { | ||
return Path.basename(Path.dirname(path)) == 'node_modules' | ||
? Path.basename(path) // node_modules/file.js | ||
: Path.basename(findRoot(path)); // node_modules/module/src/index.js | ||
}; | ||
replHere(repl, process.cwd()) | ||
.on('load', function (module, name) { | ||
names[module] = name; | ||
.on('load', function (name, path) { | ||
names[packageName(path)] = name; | ||
}) | ||
.on('fail', function (err, module) { | ||
.on('fail', function (name, path) { | ||
if (opts.verbose) { | ||
names[module] = false; | ||
names[packageName(path)] = false; | ||
} | ||
else { | ||
console.error('\rModule failed to load: ' + module); | ||
console.error('\rModule failed to load: ' + name); | ||
} | ||
@@ -79,0 +87,0 @@ }) |
42
index.js
'use strict'; | ||
var isModuleName = require('./src/is-module-name'); | ||
var acquire = require('acquire'), | ||
mapKeys = require('map-keys'), | ||
camelCase = require('camel-case'); | ||
var camelCase = require('camel-case'), | ||
resolveFrom = require('resolve-from'); | ||
var fs = require('fs'), | ||
path = require('path'), | ||
EventEmitter = require('events'); | ||
EventEmitter = require('events').EventEmitter; | ||
@@ -16,23 +15,18 @@ | ||
fs.readdir(path.join(dir, 'node_modules'), function (err, filenames) { | ||
if (err) { | ||
if (err.code == 'ENOENT') { | ||
return ee.emit('end'); | ||
process.nextTick(function () { | ||
var modules = acquire.resolve({ basedir: dir, | ||
skipFailures: ee.emit.bind(ee, 'fail') }); | ||
modules = mapKeys(modules, camelCase); | ||
Object.keys(modules).forEach(function (name) { | ||
try { | ||
repl.context[name] = require(modules[name]); | ||
ee.emit('load', name, modules[name]); | ||
} | ||
return ee.emit('error', err); | ||
} | ||
catch (e) { | ||
ee.emit('fail', name, modules[name]); | ||
} | ||
}); | ||
filenames | ||
.filter(isModuleName) | ||
.forEach(function (module) { | ||
try { | ||
var name = camelCase(module); | ||
repl.context[name] = require(resolveFrom(dir, module)); | ||
ee.emit('load', module, name); | ||
} | ||
catch (e) { | ||
ee.emit('fail', err, module); | ||
} | ||
}); | ||
ee.emit('end'); | ||
@@ -39,0 +33,0 @@ }); |
{ | ||
"name": "repl-here", | ||
"version": "0.3.1", | ||
"version": "0.4.0", | ||
"description": "Start the REPL and load the entire ./node_modules/ into it", | ||
@@ -11,6 +11,8 @@ "author": "Eugene Sharygin <eush77@gmail.com>", | ||
}, | ||
"scripts": { | ||
"test": "tape test/*.js" | ||
}, | ||
"files": [ | ||
"cli.js", | ||
"index.js", | ||
"src/" | ||
"index.js" | ||
], | ||
@@ -36,16 +38,21 @@ "homepage": "https://github.com/eush77/repl-here", | ||
"dependencies": { | ||
"acquire": "^0.3.0", | ||
"camel-case": "^1.1.1", | ||
"chalk": "^1.0.0", | ||
"find-root": "^0.1.1", | ||
"help-version": "^0.2.0", | ||
"home-dir": "^1.0.0", | ||
"map-keys": "^1.0.0", | ||
"minimist": "^1.1.1", | ||
"object-pairs": "^0.1.0", | ||
"repl.history": "^0.1.3", | ||
"resolve-from": "^1.0.0", | ||
"string-length": "^1.0.0", | ||
"table-header": "^0.2.0", | ||
"text-table": "^0.2.0", | ||
"validate-npm-package-name": "^2.2.0" | ||
"text-table": "^0.2.0" | ||
}, | ||
"devDependencies": {} | ||
"devDependencies": { | ||
"object.assign": "^3.0.0", | ||
"tape": "^4.0.0", | ||
"through2": "^0.6.5" | ||
} | ||
} |
@@ -5,3 +5,3 @@ [![npm](https://nodei.co/npm/repl-here.png)](https://nodei.co/npm/repl-here/) | ||
[![Dependency Status][david-badge]][david] | ||
[![Build Status](https://travis-ci.org/eush77/repl-here.svg?branch=master)](https://travis-ci.org/eush77/repl-here) [![Dependency Status][david-badge]][david] | ||
@@ -32,6 +32,6 @@ Node REPL that autoloads all modules in `./node_modules/` at startup, just like core libs. | ||
``` | ||
ee.on('fail', function(module, name)) | ||
ee.on('fail', function(name, path)) | ||
``` | ||
Emitted if `module` is loaded as `name`. | ||
Emitted if module `name` is loaded from `path`. | ||
@@ -41,6 +41,6 @@ ### Event: `fail` | ||
``` | ||
ee.on('fail', function(err, module)) | ||
ee.on('fail', function(name, path)) | ||
``` | ||
Emitted whenever `module` fails to load. | ||
Emitted whenever module `name` fails to load. | ||
@@ -47,0 +47,0 @@ ### Event: `end` |
Dynamic require
Supply chain riskDynamic require can indicate the package is performing dangerous or unsafe dynamic code execution.
Found 1 instance in 1 package
Dynamic require
Supply chain riskDynamic require can indicate the package is performing dangerous or unsafe dynamic code execution.
Found 1 instance in 1 package
7169
13
3
5
101
+ Addedacquire@^0.3.0
+ Addedfind-root@^0.1.1
+ Addedmap-keys@^1.0.0
+ Addedacquire@0.3.0(transitive)
+ Addedarr-diff@2.0.0(transitive)
+ Addedarr-flatten@1.1.0(transitive)
+ Addedarray-unique@0.2.1(transitive)
+ Addedbraces@1.8.5(transitive)
+ Addeddetect-file@0.1.0(transitive)
+ Addedexpand-brackets@0.1.5(transitive)
+ Addedexpand-range@1.8.2(transitive)
+ Addedexpand-tilde@1.2.2(transitive)
+ Addedextglob@0.3.2(transitive)
+ Addedfilename-regex@2.0.1(transitive)
+ Addedfilename-to-module-name@0.1.1(transitive)
+ Addedfill-range@2.2.4(transitive)
+ Addedfind-node-modules@1.0.4(transitive)
+ Addedfindup-sync@0.4.2(transitive)
+ Addedfor-in@1.0.2(transitive)
+ Addedfor-own@0.1.5(transitive)
+ Addedfs-exists-sync@0.1.0(transitive)
+ Addedglob-base@0.3.0(transitive)
+ Addedglob-parent@2.0.0(transitive)
+ Addedglobal-modules@0.2.3(transitive)
+ Addedglobal-prefix@0.1.5(transitive)
+ Addedhomedir-polyfill@1.0.3(transitive)
+ Addedini@1.3.8(transitive)
+ Addedis-buffer@1.1.6(transitive)
+ Addedis-dotfile@1.0.3(transitive)
+ Addedis-equal-shallow@0.1.3(transitive)
+ Addedis-extendable@0.1.1(transitive)
+ Addedis-extglob@1.0.0(transitive)
+ Addedis-glob@2.0.1(transitive)
+ Addedis-number@2.1.04.0.0(transitive)
+ Addedis-posix-bracket@0.1.1(transitive)
+ Addedis-primitive@2.0.0(transitive)
+ Addedis-windows@0.2.0(transitive)
+ Addedisarray@1.0.0(transitive)
+ Addedisexe@2.0.0(transitive)
+ Addedisobject@2.1.0(transitive)
+ Addedkind-of@3.2.26.0.3(transitive)
+ Addedmap-keys@1.0.0(transitive)
+ Addedmath-random@1.0.4(transitive)
+ Addedmerge@1.2.1(transitive)
+ Addedmicromatch@2.3.11(transitive)
+ Addednormalize-path@2.1.1(transitive)
+ Addedobject.omit@2.0.1(transitive)
+ Addedos-homedir@1.0.2(transitive)
+ Addedparse-glob@3.0.4(transitive)
+ Addedparse-passwd@1.0.0(transitive)
+ Addedpreserve@0.2.0(transitive)
+ Addedrandomatic@3.1.1(transitive)
+ Addedregex-cache@0.4.4(transitive)
+ Addedremove-trailing-separator@1.1.0(transitive)
+ Addedrepeat-element@1.1.4(transitive)
+ Addedresolve-dir@0.1.1(transitive)
+ Addedwhich@1.3.1(transitive)
+ Addedxtend@4.0.2(transitive)
+ Addedzipmap@1.1.1(transitive)
- Removedresolve-from@^1.0.0
- Removedvalidate-npm-package-name@^2.2.0
- Removedresolve-from@1.0.1(transitive)