Comparing version 0.0.0 to 0.0.1
204
lib/index.js
@@ -0,6 +1,210 @@ | ||
var Path = require('path'); | ||
var Callsite = require('callsite'); | ||
var Glob = require('glob'); | ||
var Hoek = require('hoek'); | ||
var Actin = function (options) { | ||
this.settings = Hoek.applyToDefaults(Actin.defaults, options || {}); | ||
return this; | ||
}; | ||
Actin.defaults = { | ||
'controllers': { | ||
'capitalize': true, | ||
'cwd': null, | ||
'extension': '.js', | ||
'folderName': 'controllers', | ||
'ignoreFiles': [], | ||
'onLoad': null, | ||
'onLoadSync': null, | ||
'pattern': '*' | ||
}, | ||
'models': { | ||
'capitalize': true, | ||
'cwd': null, | ||
'extension': '.js', | ||
'folderName': 'models', | ||
'ignoreFiles': [], | ||
'instantiate': false, | ||
'instanceClient': null, | ||
'instanceOptions': {}, | ||
'onLoad': null, | ||
'onLoadSync': null, | ||
'pattern': '*' | ||
} | ||
}; | ||
// Actin.prototype.Controllers = | ||
Actin.prototype.controllers = function (options, callback) { | ||
if (typeof options === 'function') { | ||
callback = options; | ||
options = {}; | ||
} | ||
var settings = Hoek.applyToDefaults(this.settings.controllers, options); | ||
var controllers = {}; | ||
// TODO: i don't like this code smell | ||
var calleeDirName = Path.dirname(Callsite()[1].getFileName()); | ||
var cwd = [calleeDirName, settings.folderName].join('/'); | ||
if (settings.cwd) { | ||
cwd = settings.cwd; | ||
} | ||
Glob(settings.pattern + settings.extension, {cwd: cwd}, function (err, files) { | ||
for(var i in files) { | ||
var file = Path.basename(files[i]); | ||
var filename = Path.basename(files[i], settings.extension); | ||
// TODO: make this fuzzy/glob search | ||
// if (settings.ignoreFiles.indexOf(filename) >= 0) { | ||
// continue; | ||
// } | ||
var key = filename; | ||
if (settings.capitalize) { | ||
key = filename.charAt(0).toUpperCase() + filename.slice(1); | ||
} | ||
controllers[key] = require([cwd, files[i]].join('/')); | ||
} | ||
if (typeof settings.onLoad === 'function') { | ||
return settings.onLoad(controllers, callback); | ||
} | ||
return callback(null, controllers); | ||
}); | ||
}; | ||
// Actin.prototype.Controllers.sync = | ||
Actin.prototype.controllersSync = function (options) { | ||
var settings = Hoek.applyToDefaults(this.settings.controllers, options || {}); | ||
var controllers = {}; | ||
// TODO: i don't like this code smell | ||
var calleeDirName = Path.dirname(Callsite()[1].getFileName()); | ||
var cwd = [calleeDirName, settings.folderName].join('/'); | ||
if (settings.cwd) { | ||
cwd = settings.cwd; | ||
} | ||
var files = Glob.sync(settings.pattern + settings.extension, {cwd: cwd}); | ||
for(var i in files) { | ||
var file = Path.basename(files[i]); | ||
var filename = Path.basename(files[i], settings.extension); | ||
// TODO: make this fuzzy/glob search | ||
// if (settings.ignoreFiles.indexOf(filename) >= 0) { | ||
// continue; | ||
// } | ||
var key = filename; | ||
if (settings.capitalize) { | ||
key = filename.charAt(0).toUpperCase() + filename.slice(1); | ||
} | ||
controllers[key] = require([cwd, files[i]].join('/')); | ||
} | ||
if (typeof settings.onLoadSync === 'function') { | ||
return settings.onLoadSync(controllers); | ||
} | ||
return controllers; | ||
}; | ||
Actin.prototype.models = function (options, callback) { | ||
if (typeof options === 'function') { | ||
callback = options; | ||
options = {}; | ||
} | ||
var settings = Hoek.applyToDefaults(this.settings.models, options); | ||
var models = {}; | ||
// TODO: i don't like this code smell | ||
var calleeDirName = Path.dirname(Callsite()[1].getFileName()); | ||
var cwd = [calleeDirName, settings.folderName].join('/'); | ||
if (settings.cwd) { | ||
cwd = settings.cwd; | ||
} | ||
Glob(settings.pattern + settings.extension, {cwd: cwd}, function (err, files) { | ||
for(var i in files) { | ||
var file = Path.basename(files[i]); | ||
var filename = Path.basename(files[i], settings.extension); | ||
// TODO: make this fuzzy/glob search | ||
// if (settings.ignoreFiles.indexOf(filename) >= 0) { | ||
// continue; | ||
// } | ||
var key = filename; | ||
if (settings.capitalize) { | ||
key = filename.charAt(0).toUpperCase() + filename.slice(1); | ||
} | ||
if (settings.instantiate) { | ||
var ModelClass = require([cwd, files[i]].join('/')); | ||
models[key] = new ModelClass(settings.instanceOptions, settings.instanceClient); | ||
} else { | ||
models[key] = require([cwd, files[i]].join('/')); | ||
} | ||
} | ||
if (typeof settings.onLoad === 'function') { | ||
return settings.onLoad(models, callback); | ||
} | ||
return callback(null, models); | ||
}); | ||
}; | ||
// Actin.prototype.Controllers.sync = | ||
Actin.prototype.modelsSync = function (options) { | ||
var settings = Hoek.applyToDefaults(this.settings.models, options || {}); | ||
var models = {}; | ||
// TODO: i don't like this code smell | ||
var calleeDirName = Path.dirname(Callsite()[1].getFileName()); | ||
var cwd = [calleeDirName, settings.folderName].join('/'); | ||
if (settings.cwd) { | ||
cwd = settings.cwd; | ||
} | ||
var files = Glob.sync(settings.pattern + settings.extension, {cwd: cwd}); | ||
for(var i in files) { | ||
var file = Path.basename(files[i]); | ||
var filename = Path.basename(files[i], settings.extension); | ||
// TODO: make this fuzzy/glob search | ||
// if (settings.ignoreFiles.indexOf(filename) >= 0) { | ||
// continue; | ||
// } | ||
var key = filename; | ||
if (settings.capitalize) { | ||
key = filename.charAt(0).toUpperCase() + filename.slice(1); | ||
} | ||
if (settings.instantiate) { | ||
var ModelClass = require([cwd, files[i]].join('/')); | ||
models[key] = new ModelClass(settings.instanceOptions, settings.instanceClient); | ||
} else { | ||
models[key] = require([cwd, files[i]].join('/')); | ||
} | ||
} | ||
if (typeof settings.onLoadSync === 'function') { | ||
return settings.onLoadSync(models); | ||
} | ||
return models; | ||
}; | ||
module.exports = Actin; |
{ | ||
"name": "actin", | ||
"version": "0.0.0", | ||
"version": "0.0.1", | ||
"description": "auto loading controllers for hapi projects", | ||
"main": "index.js", | ||
"scripts": { | ||
"test": "make test" | ||
}, | ||
@@ -14,6 +13,11 @@ "repository": { | ||
"author": "Van Nguyen <thegoleffect@gmail.com>", | ||
"license": "BSD-2-Clause", | ||
"license": "MIT", | ||
"bugs": { | ||
"url": "https://github.com/thegoleffect/actin/issues" | ||
}, | ||
"dependencies": { | ||
"callsite": "^1.0.0", | ||
"glob": "^5.0.3", | ||
"hoek": "^2.12.0" | ||
} | ||
} |
Sorry, the diff of this file is not supported yet
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
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
Trivial Package
Supply chain riskPackages less than 10 lines of code are easily copied into your own project and may not warrant the additional supply chain risk of an external dependency.
Found 1 instance in 1 package
9212
11
198
3
6
+ Addedcallsite@^1.0.0
+ Addedglob@^5.0.3
+ Addedhoek@^2.12.0
+ Addedbalanced-match@1.0.2(transitive)
+ Addedbrace-expansion@1.1.11(transitive)
+ Addedcallsite@1.0.0(transitive)
+ Addedconcat-map@0.0.1(transitive)
+ Addedglob@5.0.15(transitive)
+ Addedhoek@2.16.3(transitive)
+ Addedinflight@1.0.6(transitive)
+ Addedinherits@2.0.4(transitive)
+ Addedminimatch@3.1.2(transitive)
+ Addedonce@1.4.0(transitive)
+ Addedpath-is-absolute@1.0.1(transitive)
+ Addedwrappy@1.0.2(transitive)