Merge pull request #67 from strongloop/feature/infrastructure-cleanup
Infrastructure cleanup
This commit is contained in:
commit
08fcc5faa7
|
@ -0,0 +1,24 @@
|
||||||
|
{
|
||||||
|
"preset": "google",
|
||||||
|
"requireCurlyBraces": [
|
||||||
|
"do",
|
||||||
|
"try",
|
||||||
|
"catch"
|
||||||
|
],
|
||||||
|
"disallowSpacesInsideObjectBrackets": null,
|
||||||
|
"requireSpaceAfterLineComment": true,
|
||||||
|
"maximumLineLength": {
|
||||||
|
"value": 80,
|
||||||
|
"allowRegex": true
|
||||||
|
},
|
||||||
|
"validateJSDoc": {
|
||||||
|
"checkParamNames": false,
|
||||||
|
"checkRedundantParams": false,
|
||||||
|
"requireParamTypes": true
|
||||||
|
},
|
||||||
|
"excludeFiles": [
|
||||||
|
"node_modules/**",
|
||||||
|
"coverage/**",
|
||||||
|
"test/sandbox/**"
|
||||||
|
]
|
||||||
|
}
|
15
.jshintrc
15
.jshintrc
|
@ -1,24 +1,21 @@
|
||||||
{
|
{
|
||||||
"node": true,
|
"node": true,
|
||||||
"browser": true,
|
"browser": true,
|
||||||
"camelcase" : true,
|
|
||||||
"eqnull" : true,
|
"eqnull" : true,
|
||||||
"indent": 2,
|
"indent": 2,
|
||||||
"undef": true,
|
"undef": true,
|
||||||
"unused": true,
|
"unused": true,
|
||||||
"quotmark": "single",
|
"quotmark": "single",
|
||||||
"maxlen": 80,
|
|
||||||
"trailing": true,
|
|
||||||
"newcap": true,
|
"newcap": true,
|
||||||
"nonew": true,
|
"nonew": true,
|
||||||
"sub": true,
|
"sub": true,
|
||||||
"unused": "vars",
|
"unused": "vars",
|
||||||
"globals": {
|
"globals": {
|
||||||
"describe": true,
|
"describe": false,
|
||||||
"it": true,
|
"it": false,
|
||||||
"before": true,
|
"before": false,
|
||||||
"beforeEach": true,
|
"beforeEach": false,
|
||||||
"after": true,
|
"after": false,
|
||||||
"afterEach": true
|
"afterEach": false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
2
index.js
2
index.js
|
@ -136,7 +136,7 @@ exports.compileToBrowserify = function(options, bundler) {
|
||||||
addInstructionsToBrowserify(compile(options), bundler);
|
addInstructionsToBrowserify(compile(options), bundler);
|
||||||
};
|
};
|
||||||
|
|
||||||
//-- undocumented low-level API --//
|
/*-- undocumented low-level API --*/
|
||||||
|
|
||||||
exports.ConfigLoader = ConfigLoader;
|
exports.ConfigLoader = ConfigLoader;
|
||||||
exports.compile = compile;
|
exports.compile = compile;
|
||||||
|
|
|
@ -22,7 +22,7 @@ var Module = require('module');
|
||||||
module.exports = function compile(options) {
|
module.exports = function compile(options) {
|
||||||
options = options || {};
|
options = options || {};
|
||||||
|
|
||||||
if(typeof options === 'string') {
|
if (typeof options === 'string') {
|
||||||
options = { appRootDir: options };
|
options = { appRootDir: options };
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -74,7 +74,7 @@ module.exports = function compile(options) {
|
||||||
};
|
};
|
||||||
|
|
||||||
function assertIsValidConfig(name, config) {
|
function assertIsValidConfig(name, config) {
|
||||||
if(config) {
|
if (config) {
|
||||||
assert(typeof config === 'object',
|
assert(typeof config === 'object',
|
||||||
name + ' config must be a valid JSON object');
|
name + ' config must be a valid JSON object');
|
||||||
}
|
}
|
||||||
|
@ -143,7 +143,7 @@ function findScripts(dir) {
|
||||||
} else {
|
} else {
|
||||||
try {
|
try {
|
||||||
path.join(require.resolve(filepath));
|
path.join(require.resolve(filepath));
|
||||||
} catch(err) {
|
} catch (err) {
|
||||||
debug('Skipping directory %s - %s', filepath, err.code || err);
|
debug('Skipping directory %s - %s', filepath, err.code || err);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -155,7 +155,7 @@ function findScripts(dir) {
|
||||||
function tryReadDir() {
|
function tryReadDir() {
|
||||||
try {
|
try {
|
||||||
return fs.readdirSync.apply(fs, arguments);
|
return fs.readdirSync.apply(fs, arguments);
|
||||||
} catch(e) {
|
} catch (e) {
|
||||||
return [];
|
return [];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -309,7 +309,9 @@ function loadModelDefinition(rootDir, jsonFile, allFiles) {
|
||||||
var basename = path.basename(jsonFile, path.extname(jsonFile));
|
var basename = path.basename(jsonFile, path.extname(jsonFile));
|
||||||
|
|
||||||
// find a matching file with a supported extension like `.js` or `.coffee`
|
// find a matching file with a supported extension like `.js` or `.coffee`
|
||||||
var base, ext, validFileType;
|
var base;
|
||||||
|
var ext;
|
||||||
|
var validFileType;
|
||||||
var sourceFile = allFiles
|
var sourceFile = allFiles
|
||||||
.filter(function(f) {
|
.filter(function(f) {
|
||||||
ext = path.extname(f);
|
ext = path.extname(f);
|
||||||
|
|
|
@ -103,7 +103,7 @@ function loadConfigFiles(files) {
|
||||||
*/
|
*/
|
||||||
function mergeConfigurations(configObjects, mergeFn) {
|
function mergeConfigurations(configObjects, mergeFn) {
|
||||||
var result = configObjects.shift() || {};
|
var result = configObjects.shift() || {};
|
||||||
while(configObjects.length) {
|
while (configObjects.length) {
|
||||||
var next = configObjects.shift();
|
var next = configObjects.shift();
|
||||||
mergeFn(result, next, next._filename);
|
mergeFn(result, next, next._filename);
|
||||||
}
|
}
|
||||||
|
@ -163,7 +163,7 @@ function mergeArrays(target, config, keyPrefix) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Use for(;;) to iterate over undefined items, for(in) would skip them.
|
// Use for(;;) to iterate over undefined items, for(in) would skip them.
|
||||||
for (var ix=0; ix < target.length; ix++) {
|
for (var ix = 0; ix < target.length; ix++) {
|
||||||
var fullKey = keyPrefix + '[' + ix + ']';
|
var fullKey = keyPrefix + '[' + ix + ']';
|
||||||
var err = mergeSingleItemOrProperty(target, config, ix, fullKey);
|
var err = mergeSingleItemOrProperty(target, config, ix, fullKey);
|
||||||
if (err) return err;
|
if (err) return err;
|
||||||
|
@ -189,15 +189,15 @@ function hasCompatibleType(origValue, newValue) {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Try to read a config file with .json extension
|
* Try to read a config file with .json extension
|
||||||
* @param cwd Dirname of the file
|
* @param {string} cwd Dirname of the file
|
||||||
* @param fileName Name of the file without extension
|
* @param {string} fileName Name of the file without extension
|
||||||
* @returns {Object|undefined} Content of the file, undefined if not found.
|
* @returns {Object|undefined} Content of the file, undefined if not found.
|
||||||
*/
|
*/
|
||||||
function tryReadJsonConfig(cwd, fileName) {
|
function tryReadJsonConfig(cwd, fileName) {
|
||||||
try {
|
try {
|
||||||
return require(path.join(cwd, fileName + '.json'));
|
return require(path.join(cwd, fileName + '.json'));
|
||||||
} catch(e) {
|
} catch (e) {
|
||||||
if(e.code !== 'MODULE_NOT_FOUND') {
|
if (e.code !== 'MODULE_NOT_FOUND') {
|
||||||
throw e;
|
throw e;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -45,10 +45,10 @@ function patchAppLoopback(app) {
|
||||||
// patch the app object to make loopback-boot work with older versions too
|
// patch the app object to make loopback-boot work with older versions too
|
||||||
try {
|
try {
|
||||||
app.loopback = require('loopback');
|
app.loopback = require('loopback');
|
||||||
} catch(err) {
|
} catch (err) {
|
||||||
if (err.code === 'MODULE_NOT_FOUND') {
|
if (err.code === 'MODULE_NOT_FOUND') {
|
||||||
console.error(
|
console.error(
|
||||||
'When using loopback-boot with loopback <1.9, '+
|
'When using loopback-boot with loopback <1.9, ' +
|
||||||
'the loopback module must be available for `require(\'loopback\')`.');
|
'the loopback module must be available for `require(\'loopback\')`.');
|
||||||
}
|
}
|
||||||
throw err;
|
throw err;
|
||||||
|
@ -69,7 +69,7 @@ function assertLoopBackVersion(app) {
|
||||||
}
|
}
|
||||||
|
|
||||||
function setHost(app, instructions) {
|
function setHost(app, instructions) {
|
||||||
//jshint camelcase:false
|
// jscs:disable requireCamelCaseOrUpperCaseIdentifiers
|
||||||
var host =
|
var host =
|
||||||
process.env.npm_config_host ||
|
process.env.npm_config_host ||
|
||||||
process.env.OPENSHIFT_SLS_IP ||
|
process.env.OPENSHIFT_SLS_IP ||
|
||||||
|
@ -79,14 +79,14 @@ function setHost(app, instructions) {
|
||||||
process.env.npm_package_config_host ||
|
process.env.npm_package_config_host ||
|
||||||
app.get('host');
|
app.get('host');
|
||||||
|
|
||||||
if(host !== undefined) {
|
if (host !== undefined) {
|
||||||
assert(typeof host === 'string', 'app.host must be a string');
|
assert(typeof host === 'string', 'app.host must be a string');
|
||||||
app.set('host', host);
|
app.set('host', host);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function setPort(app, instructions) {
|
function setPort(app, instructions) {
|
||||||
//jshint camelcase:false
|
// jscs:disable requireCamelCaseOrUpperCaseIdentifiers
|
||||||
var port = _.find([
|
var port = _.find([
|
||||||
process.env.npm_config_port,
|
process.env.npm_config_port,
|
||||||
process.env.OPENSHIFT_SLS_PORT,
|
process.env.OPENSHIFT_SLS_PORT,
|
||||||
|
@ -98,7 +98,7 @@ function setPort(app, instructions) {
|
||||||
3000
|
3000
|
||||||
], _.isFinite);
|
], _.isFinite);
|
||||||
|
|
||||||
if(port !== undefined) {
|
if (port !== undefined) {
|
||||||
var portType = typeof port;
|
var portType = typeof port;
|
||||||
assert(portType === 'string' || portType === 'number',
|
assert(portType === 'string' || portType === 'number',
|
||||||
'app.port must be a string or number');
|
'app.port must be a string or number');
|
||||||
|
@ -122,9 +122,9 @@ function setApiRoot(app, instructions) {
|
||||||
|
|
||||||
function applyAppConfig(app, instructions) {
|
function applyAppConfig(app, instructions) {
|
||||||
var appConfig = instructions.config;
|
var appConfig = instructions.config;
|
||||||
for(var configKey in appConfig) {
|
for (var configKey in appConfig) {
|
||||||
var cur = app.get(configKey);
|
var cur = app.get(configKey);
|
||||||
if(cur === undefined || cur === null) {
|
if (cur === undefined || cur === null) {
|
||||||
app.set(configKey, appConfig[configKey]);
|
app.set(configKey, appConfig[configKey]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -198,7 +198,7 @@ function isBuiltinLoopBackModel(app, data) {
|
||||||
}
|
}
|
||||||
|
|
||||||
function forEachKeyedObject(obj, fn) {
|
function forEachKeyedObject(obj, fn) {
|
||||||
if(typeof obj !== 'object') return;
|
if (typeof obj !== 'object') return;
|
||||||
|
|
||||||
Object.keys(obj).forEach(function(key) {
|
Object.keys(obj).forEach(function(key) {
|
||||||
fn(key, obj[key]);
|
fn(key, obj[key]);
|
||||||
|
@ -240,8 +240,8 @@ function runScripts(app, list, callback) {
|
||||||
function tryRequire(modulePath) {
|
function tryRequire(modulePath) {
|
||||||
try {
|
try {
|
||||||
return require.apply(this, arguments);
|
return require.apply(this, arguments);
|
||||||
} catch(e) {
|
} catch (e) {
|
||||||
if(e.code === 'MODULE_NOT_FOUND') {
|
if (e.code === 'MODULE_NOT_FOUND') {
|
||||||
debug('Warning: cannot require %s - module not found.', modulePath);
|
debug('Warning: cannot require %s - module not found.', modulePath);
|
||||||
return undefined;
|
return undefined;
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
"browser": "browser.js",
|
"browser": "browser.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"pretest": "jshint .",
|
"pretest": "jscs . && jshint .",
|
||||||
"test": "mocha"
|
"test": "mocha"
|
||||||
},
|
},
|
||||||
"license": {
|
"license": {
|
||||||
|
@ -32,15 +32,15 @@
|
||||||
"underscore": "^1.6.0"
|
"underscore": "^1.6.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"browserify": "^6.1.0",
|
|
||||||
"fs-extra": "^0.12.0",
|
|
||||||
"browserify": "^4.1.8",
|
"browserify": "^4.1.8",
|
||||||
|
"chai": "^1.10.0",
|
||||||
"coffee-script": "^1.8.0",
|
"coffee-script": "^1.8.0",
|
||||||
"coffeeify": "^0.7.0",
|
"coffeeify": "^0.7.0",
|
||||||
|
"fs-extra": "^0.12.0",
|
||||||
|
"jscs": "^1.7.3",
|
||||||
"jshint": "^2.5.6",
|
"jshint": "^2.5.6",
|
||||||
"loopback": "^2.5.0",
|
"loopback": "^2.5.0",
|
||||||
"mocha": "^1.19.0",
|
"mocha": "^1.19.0",
|
||||||
"must": "^0.12.0",
|
|
||||||
"supertest": "^0.14.0"
|
"supertest": "^0.14.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
var boot = require('../');
|
var boot = require('../');
|
||||||
var fs = require('fs');
|
var fs = require('fs');
|
||||||
var path = require('path');
|
var path = require('path');
|
||||||
var expect = require('must');
|
var expect = require('chai').expect;
|
||||||
var browserify = require('browserify');
|
var browserify = require('browserify');
|
||||||
var sandbox = require('./helpers/sandbox');
|
var sandbox = require('./helpers/sandbox');
|
||||||
var vm = require('vm');
|
var vm = require('vm');
|
||||||
|
@ -76,7 +76,7 @@ describe('browser support', function() {
|
||||||
});
|
});
|
||||||
|
|
||||||
function browserifyTestApp(appDir, strategy, next) {
|
function browserifyTestApp(appDir, strategy, next) {
|
||||||
//set default args
|
// set default args
|
||||||
if (((typeof strategy) === 'function') && !next) {
|
if (((typeof strategy) === 'function') && !next) {
|
||||||
next = strategy;
|
next = strategy;
|
||||||
strategy = undefined;
|
strategy = undefined;
|
||||||
|
@ -91,7 +91,7 @@ function browserifyTestApp(appDir, strategy, next) {
|
||||||
var bundlePath = sandbox.resolve('browser-app-bundle.js');
|
var bundlePath = sandbox.resolve('browser-app-bundle.js');
|
||||||
var out = fs.createWriteStream(bundlePath);
|
var out = fs.createWriteStream(bundlePath);
|
||||||
b.bundle().pipe(out);
|
b.bundle().pipe(out);
|
||||||
|
|
||||||
out.on('error', function(err) { return next(err); });
|
out.on('error', function(err) { return next(err); });
|
||||||
out.on('close', function() {
|
out.on('close', function() {
|
||||||
next(null, bundlePath);
|
next(null, bundlePath);
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
var boot = require('../');
|
var boot = require('../');
|
||||||
var fs = require('fs-extra');
|
var fs = require('fs-extra');
|
||||||
var path = require('path');
|
var path = require('path');
|
||||||
var expect = require('must');
|
var expect = require('chai').expect;
|
||||||
var sandbox = require('./helpers/sandbox');
|
var sandbox = require('./helpers/sandbox');
|
||||||
var appdir = require('./helpers/appdir');
|
var appdir = require('./helpers/appdir');
|
||||||
|
|
||||||
|
@ -12,7 +12,10 @@ describe('compiler', function() {
|
||||||
beforeEach(appdir.init);
|
beforeEach(appdir.init);
|
||||||
|
|
||||||
describe('from options', function() {
|
describe('from options', function() {
|
||||||
var options, instructions, appConfig;
|
var options;
|
||||||
|
var instructions;
|
||||||
|
var appConfig;
|
||||||
|
|
||||||
beforeEach(function() {
|
beforeEach(function() {
|
||||||
options = {
|
options = {
|
||||||
config: {
|
config: {
|
||||||
|
@ -256,7 +259,7 @@ describe('compiler', function() {
|
||||||
appdir.writeConfigFileSync('config.local.json', {
|
appdir.writeConfigFileSync('config.local.json', {
|
||||||
toplevel: [
|
toplevel: [
|
||||||
{
|
{
|
||||||
nested: [ 'value' ]
|
nested: ['value']
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
});
|
});
|
||||||
|
@ -337,7 +340,7 @@ describe('compiler', function() {
|
||||||
appConfigRootDir: path.resolve(appdir.PATH, 'custom')
|
appConfigRootDir: path.resolve(appdir.PATH, 'custom')
|
||||||
});
|
});
|
||||||
|
|
||||||
expect(instructions.config).to.have.property('port');
|
expect(instructions.config).to.have.property('port');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('supports `dsRootDir` option', function() {
|
it('supports `dsRootDir` option', function() {
|
||||||
|
@ -379,7 +382,7 @@ describe('compiler', function() {
|
||||||
var instructions = boot.compile(appdir.PATH);
|
var instructions = boot.compile(appdir.PATH);
|
||||||
expect(instructions.files.boot).to.eql([initJs]);
|
expect(instructions.files.boot).to.eql([initJs]);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('supports `bootDirs` option', function() {
|
it('supports `bootDirs` option', function() {
|
||||||
appdir.createConfigFilesSync();
|
appdir.createConfigFilesSync();
|
||||||
var initJs = appdir.writeFileSync('custom-boot/init.js',
|
var initJs = appdir.writeFileSync('custom-boot/init.js',
|
||||||
|
@ -390,7 +393,7 @@ describe('compiler', function() {
|
||||||
});
|
});
|
||||||
expect(instructions.files.boot).to.eql([initJs]);
|
expect(instructions.files.boot).to.eql([initJs]);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('supports `bootScripts` option', function() {
|
it('supports `bootScripts` option', function() {
|
||||||
appdir.createConfigFilesSync();
|
appdir.createConfigFilesSync();
|
||||||
var initJs = appdir.writeFileSync('custom-boot/init.js',
|
var initJs = appdir.writeFileSync('custom-boot/init.js',
|
||||||
|
@ -475,19 +478,19 @@ describe('compiler', function() {
|
||||||
sourceFile: path.resolve(appdir.PATH, 'models', 'car.coffee')
|
sourceFile: path.resolve(appdir.PATH, 'models', 'car.coffee')
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
it('supports `modelSources` option', function() {
|
it('supports `modelSources` option', function() {
|
||||||
appdir.createConfigFilesSync({}, {}, {
|
appdir.createConfigFilesSync({}, {}, {
|
||||||
Car: { dataSource: 'db' }
|
Car: { dataSource: 'db' }
|
||||||
});
|
});
|
||||||
appdir.writeConfigFileSync('custom-models/car.json', { name: 'Car' });
|
appdir.writeConfigFileSync('custom-models/car.json', { name: 'Car' });
|
||||||
appdir.writeFileSync('custom-models/car.js', '');
|
appdir.writeFileSync('custom-models/car.js', '');
|
||||||
|
|
||||||
var instructions = boot.compile({
|
var instructions = boot.compile({
|
||||||
appRootDir: appdir.PATH,
|
appRootDir: appdir.PATH,
|
||||||
modelSources: ['./custom-models']
|
modelSources: ['./custom-models']
|
||||||
});
|
});
|
||||||
|
|
||||||
expect(instructions.models).to.have.length(1);
|
expect(instructions.models).to.have.length(1);
|
||||||
expect(instructions.models[0]).to.eql({
|
expect(instructions.models[0]).to.eql({
|
||||||
name: 'Car',
|
name: 'Car',
|
||||||
|
|
|
@ -2,7 +2,7 @@ var boot = require('../');
|
||||||
var path = require('path');
|
var path = require('path');
|
||||||
var loopback = require('loopback');
|
var loopback = require('loopback');
|
||||||
var assert = require('assert');
|
var assert = require('assert');
|
||||||
var expect = require('must');
|
var expect = require('chai').expect;
|
||||||
var fs = require('fs-extra');
|
var fs = require('fs-extra');
|
||||||
var sandbox = require('./helpers/sandbox');
|
var sandbox = require('./helpers/sandbox');
|
||||||
var appdir = require('./helpers/appdir');
|
var appdir = require('./helpers/appdir');
|
||||||
|
@ -171,7 +171,7 @@ describe('executor', function() {
|
||||||
};
|
};
|
||||||
builtinModel.definition.redefined = true;
|
builtinModel.definition.redefined = true;
|
||||||
|
|
||||||
boot.execute(app, someInstructions({ models: [ builtinModel ] }));
|
boot.execute(app, someInstructions({ models: [builtinModel] }));
|
||||||
|
|
||||||
expect(app.models.User.settings.redefined, 'redefined').to.not.equal(true);
|
expect(app.models.User.settings.redefined, 'redefined').to.not.equal(true);
|
||||||
});
|
});
|
||||||
|
@ -266,7 +266,7 @@ describe('executor', function() {
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should prioritize sources', function() {
|
it('should prioritize sources', function() {
|
||||||
/*jshint camelcase:false */
|
// jscs:disable requireCamelCaseOrUpperCaseIdentifiers
|
||||||
process.env.npm_config_host = randomHost();
|
process.env.npm_config_host = randomHost();
|
||||||
process.env.OPENSHIFT_SLS_IP = randomHost();
|
process.env.OPENSHIFT_SLS_IP = randomHost();
|
||||||
process.env.OPENSHIFT_NODEJS_IP = randomHost();
|
process.env.OPENSHIFT_NODEJS_IP = randomHost();
|
||||||
|
@ -323,12 +323,11 @@ describe('executor', function() {
|
||||||
'module.exports = function(app) { app.fnCalled = true; };');
|
'module.exports = function(app) { app.fnCalled = true; };');
|
||||||
|
|
||||||
delete app.fnCalled;
|
delete app.fnCalled;
|
||||||
boot.execute(app, someInstructions({ files: { boot: [ file ] } }));
|
boot.execute(app, someInstructions({ files: { boot: [file] } }));
|
||||||
expect(app.fnCalled, 'exported fn was called').to.be.true();
|
expect(app.fnCalled, 'exported fn was called').to.be.true();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
function assertValidDataSource(dataSource) {
|
function assertValidDataSource(dataSource) {
|
||||||
// has methods
|
// has methods
|
||||||
assert.isFunc(dataSource, 'createModel');
|
assert.isFunc(dataSource, 'createModel');
|
||||||
|
@ -340,7 +339,7 @@ function assertValidDataSource(dataSource) {
|
||||||
assert.isFunc(dataSource, 'operations');
|
assert.isFunc(dataSource, 'operations');
|
||||||
}
|
}
|
||||||
|
|
||||||
assert.isFunc = function (obj, name) {
|
assert.isFunc = function(obj, name) {
|
||||||
assert(obj, 'cannot assert function ' + name +
|
assert(obj, 'cannot assert function ' + name +
|
||||||
' on object that does not exist');
|
' on object that does not exist');
|
||||||
assert(typeof obj[name] === 'function', name + ' is not a function');
|
assert(typeof obj[name] === 'function', name + ' is not a function');
|
||||||
|
|
|
@ -2,4 +2,3 @@ process.bootFlags.push('barSyncLoaded');
|
||||||
module.exports = function(app) {
|
module.exports = function(app) {
|
||||||
process.bootFlags.push('barSyncExecuted');
|
process.bootFlags.push('barSyncExecuted');
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
process.bootFlags.push('fooLoaded');
|
process.bootFlags.push('fooLoaded');
|
||||||
|
|
Loading…
Reference in New Issue